Lines Matching refs:shost

30 static int fc_vport_setup(struct Scsi_Host *shost, int channel,
389 struct Scsi_Host *shost = dev_to_shost(dev);
390 struct fc_host_attrs *fc_host = shost_to_fc_host(shost);
445 "fc_wq_%d", shost->host_no);
453 "fc_dl_%d", shost->host_no);
462 fc_bsg_hostadd(shost, fc_host);
471 struct Scsi_Host *shost = dev_to_shost(dev);
472 struct fc_host_attrs *fc_host = shost_to_fc_host(shost);
528 * @shost: host the event occurred on
539 fc_host_post_fc_event(struct Scsi_Host *shost, u32 event_number,
577 event->host_no = shost->host_no;
596 __func__, shost->host_no,
605 * @shost: host the event occurred on
614 fc_host_post_event(struct Scsi_Host *shost, u32 event_number,
617 fc_host_post_fc_event(shost, event_number, event_code,
626 * @shost: host the event occurred on
636 fc_host_post_vendor_event(struct Scsi_Host *shost, u32 event_number,
639 fc_host_post_fc_event(shost, event_number, FCH_EVT_VENDOR_UNIQUE,
646 * @shost: host the fc_rport is associated with
653 fc_find_rport_by_wwpn(struct Scsi_Host *shost, u64 wwpn)
658 spin_lock_irqsave(shost->host_lock, flags);
660 list_for_each_entry(rport, &fc_host_rports(shost), peers) {
665 spin_unlock_irqrestore(shost->host_lock, flags);
670 spin_unlock_irqrestore(shost->host_lock, flags);
753 * @shost: host the FPIN was received on
758 fc_fpin_li_stats_update(struct Scsi_Host *shost, struct fc_tlv_desc *tlv)
763 struct fc_host_attrs *fc_host = shost_to_fc_host(shost);
768 rport = fc_find_rport_by_wwpn(shost,
782 rport = fc_find_rport_by_wwpn(shost, wwpn);
801 * @shost: host the FPIN was received on
806 fc_fpin_delivery_stats_update(struct Scsi_Host *shost,
811 struct fc_host_attrs *fc_host = shost_to_fc_host(shost);
815 rport = fc_find_rport_by_wwpn(shost,
832 * @shost: host the FPIN was received on
837 fc_fpin_peer_congn_stats_update(struct Scsi_Host *shost,
848 rport = fc_find_rport_by_wwpn(shost,
862 rport = fc_find_rport_by_wwpn(shost, wwpn);
878 * @shost: host the FPIN was received on
883 fc_fpin_congn_stats_update(struct Scsi_Host *shost,
886 struct fc_host_attrs *fc_host = shost_to_fc_host(shost);
895 * @shost: host the FPIN was received on
903 fc_host_fpin_rcv(struct Scsi_Host *shost, u32 fpin_len, char *fpin_buf,
923 fc_fpin_li_stats_update(shost, tlv);
926 fc_fpin_delivery_stats_update(shost, tlv);
929 fc_fpin_peer_congn_stats_update(shost, tlv);
932 fc_fpin_congn_stats_update(shost, tlv);
939 fc_host_post_fc_event(shost, fc_get_event_number(),
992 struct Scsi_Host *shost = rport_to_shost(rport); \
993 struct fc_internal *i = to_fc_internal(shost->transportt); \
1010 struct Scsi_Host *shost = rport_to_shost(rport); \
1011 struct fc_internal *i = to_fc_internal(shost->transportt); \
1153 struct Scsi_Host *shost = rport_to_shost(rport);
1154 struct fc_internal *i = to_fc_internal(shost->transportt);
1420 struct Scsi_Host *shost = dev_to_shost(starget->dev.parent); \
1421 struct fc_internal *i = to_fc_internal(shost->transportt); \
1475 struct Scsi_Host *shost = vport_to_shost(vport); \
1476 struct fc_internal *i = to_fc_internal(shost->transportt); \
1491 struct Scsi_Host *shost = vport_to_shost(vport); \
1492 struct fc_internal *i = to_fc_internal(shost->transportt); \
1510 struct Scsi_Host *shost = vport_to_shost(vport); \
1511 struct fc_internal *i = to_fc_internal(shost->transportt); \
1683 struct Scsi_Host *shost = vport_to_shost(vport);
1686 spin_lock_irqsave(shost->host_lock, flags);
1688 spin_unlock_irqrestore(shost->host_lock, flags);
1692 spin_unlock_irqrestore(shost->host_lock, flags);
1694 fc_queue_work(shost, &vport->vport_delete_work);
1711 struct Scsi_Host *shost = vport_to_shost(vport);
1712 struct fc_internal *i = to_fc_internal(shost->transportt);
1743 struct Scsi_Host *shost = transport_class_to_shost(dev); \
1744 struct fc_internal *i = to_fc_internal(shost->transportt); \
1746 i->f->get_host_##field(shost); \
1747 return snprintf(buf, sz, format_string, cast fc_host_##field(shost)); \
1757 struct Scsi_Host *shost = transport_class_to_shost(dev); \
1758 struct fc_internal *i = to_fc_internal(shost->transportt); \
1764 i->f->set_host_##field(shost, val); \
1774 struct Scsi_Host *shost = transport_class_to_shost(dev); \
1775 struct fc_internal *i = to_fc_internal(shost->transportt); \
1783 memcpy(fc_host_##field(shost), buf, cnt); \
1784 i->f->set_host_##field(shost); \
1810 struct Scsi_Host *shost = transport_class_to_shost(dev); \
1811 struct fc_internal *i = to_fc_internal(shost->transportt); \
1814 i->f->get_host_##title(shost); \
1815 name = get_fc_##title##_name(fc_host_##title(shost)); \
1853 struct Scsi_Host *shost = transport_class_to_shost(dev); \
1854 return snprintf(buf, sz, format_string, cast fc_host_##field(shost)); \
1888 struct Scsi_Host *shost = transport_class_to_shost(dev);
1890 if (fc_host_supported_classes(shost) == FC_COS_UNSPECIFIED)
1893 return get_fc_cos_names(fc_host_supported_classes(shost), buf);
1902 struct Scsi_Host *shost = transport_class_to_shost(dev);
1903 return (ssize_t)show_fc_fc4s(buf, fc_host_supported_fc4s(shost));
1912 struct Scsi_Host *shost = transport_class_to_shost(dev);
1914 if (fc_host_supported_speeds(shost) == FC_PORTSPEED_UNKNOWN)
1917 return get_fc_port_speed_names(fc_host_supported_speeds(shost), buf);
1945 struct Scsi_Host *shost = transport_class_to_shost(dev);
1946 struct fc_internal *i = to_fc_internal(shost->transportt);
1949 i->f->get_host_active_fc4s(shost);
1951 return (ssize_t)show_fc_fc4s(buf, fc_host_active_fc4s(shost));
1960 struct Scsi_Host *shost = transport_class_to_shost(dev);
1961 struct fc_internal *i = to_fc_internal(shost->transportt);
1964 i->f->get_host_speed(shost);
1966 if (fc_host_speed(shost) == FC_PORTSPEED_UNKNOWN)
1969 return get_fc_port_speed_names(fc_host_speed(shost), buf);
1994 struct Scsi_Host *shost = transport_class_to_shost(dev);
1997 name = get_fc_tgtid_bind_type_name(fc_host_tgtid_bind_type(shost));
2010 struct Scsi_Host *shost = transport_class_to_shost(dev);
2019 if (val != fc_host_tgtid_bind_type(shost)) {
2020 spin_lock_irqsave(shost->host_lock, flags);
2021 while (!list_empty(&fc_host_rport_bindings(shost))) {
2023 &fc_host_rport_bindings(shost), peers);
2026 fc_queue_work(shost, &rport->rport_delete_work);
2028 spin_unlock_irqrestore(shost->host_lock, flags);
2031 fc_host_tgtid_bind_type(shost) = val;
2043 struct Scsi_Host *shost = transport_class_to_shost(dev);
2044 struct fc_internal *i = to_fc_internal(shost->transportt);
2049 ret = i->f->issue_fc_host_lip(shost);
2064 struct Scsi_Host *shost = transport_class_to_shost(dev);
2065 struct fc_host_attrs *fc_host = shost_to_fc_host(shost);
2074 fc_host_dev_loss_tmo(shost) = val;
2075 spin_lock_irqsave(shost->host_lock, flags);
2078 spin_unlock_irqrestore(shost->host_lock, flags);
2097 struct Scsi_Host *shost = transport_class_to_shost(dev);
2098 struct fc_internal *i = to_fc_internal(shost->transportt);
2107 stats = (i->f->get_fc_host_stats)(shost);
2165 struct Scsi_Host *shost = transport_class_to_shost(cd); \
2166 struct fc_host_attrs *fc_host = shost_to_fc_host(shost); \
2197 struct Scsi_Host *shost = transport_class_to_shost(dev);
2198 struct fc_internal *i = to_fc_internal(shost->transportt);
2202 i->f->reset_fc_host_stats(shost);
2314 struct Scsi_Host *shost = transport_class_to_shost(dev);
2344 stat = fc_vport_setup(shost, 0, &shost->shost_gendev, &vid, &vport);
2361 struct Scsi_Host *shost = transport_class_to_shost(dev);
2362 struct fc_host_attrs *fc_host = shost_to_fc_host(shost);
2385 spin_lock_irqsave(shost->host_lock, flags);
2398 spin_unlock_irqrestore(shost->host_lock, flags);
2413 struct Scsi_Host *shost;
2419 shost = dev_to_shost(dev);
2420 if (!shost->transportt || shost->transportt->host_attrs.ac.class
2424 i = to_fc_internal(shost->transportt);
2432 struct Scsi_Host *shost;
2438 shost = dev_to_shost(dev->parent);
2439 if (!shost->transportt || shost->transportt->host_attrs.ac.class
2443 i = to_fc_internal(shost->transportt);
2464 struct Scsi_Host *shost;
2470 shost = dev_to_shost(dev->parent);
2471 if (!shost->transportt || shost->transportt->host_attrs.ac.class
2475 i = to_fc_internal(shost->transportt);
2497 struct Scsi_Host *shost;
2504 shost = vport_to_shost(vport);
2505 if (!shost->transportt || shost->transportt->host_attrs.ac.class
2509 i = to_fc_internal(shost->transportt);
2548 * Called by fc_user_scan to locate an rport on the shost that
2553 fc_user_scan_tgt(struct Scsi_Host *shost, uint channel, uint id, u64 lun)
2558 spin_lock_irqsave(shost->host_lock, flags);
2560 list_for_each_entry(rport, &fc_host_rports(shost), peers) {
2570 spin_unlock_irqrestore(shost->host_lock, flags);
2577 spin_unlock_irqrestore(shost->host_lock, flags);
2587 fc_user_scan(struct Scsi_Host *shost, uint channel, uint id, u64 lun)
2592 if (((channel != SCAN_WILD_CARD) && (channel > shost->max_channel)) ||
2593 ((id != SCAN_WILD_CARD) && (id >= shost->max_id)) ||
2594 ((lun != SCAN_WILD_CARD) && (lun > shost->max_lun)))
2599 chhi = shost->max_channel + 1;
2607 tgthi = shost->max_id;
2615 fc_user_scan_tgt(shost, chlo, tgtlo, lun);
2657 /* Transport uses the shost workq for scsi scanning */
2778 * @shost: Pointer to Scsi_Host bound to fc_host.
2787 fc_queue_work(struct Scsi_Host *shost, struct work_struct *work)
2789 if (unlikely(!fc_host_work_q(shost))) {
2792 "when no workqueue created.\n", shost->hostt->name);
2798 return queue_work(fc_host_work_q(shost), work);
2803 * @shost: Pointer to Scsi_Host bound to fc_host.
2806 fc_flush_work(struct Scsi_Host *shost)
2808 if (!fc_host_work_q(shost)) {
2811 "when no workqueue created.\n", shost->hostt->name);
2816 flush_workqueue(fc_host_work_q(shost));
2821 * @shost: Pointer to Scsi_Host bound to fc_host.
2829 fc_queue_devloss_work(struct Scsi_Host *shost, struct delayed_work *work,
2832 if (unlikely(!fc_host_devloss_work_q(shost))) {
2835 "when no workqueue created.\n", shost->hostt->name);
2841 return queue_delayed_work(fc_host_devloss_work_q(shost), work, delay);
2846 * @shost: Pointer to Scsi_Host bound to fc_host.
2849 fc_flush_devloss(struct Scsi_Host *shost)
2851 if (!fc_host_devloss_work_q(shost)) {
2854 "when no workqueue created.\n", shost->hostt->name);
2859 flush_workqueue(fc_host_devloss_work_q(shost));
2865 * @shost: Which &Scsi_Host
2879 fc_remove_host(struct Scsi_Host *shost)
2884 struct fc_host_attrs *fc_host = shost_to_fc_host(shost);
2887 spin_lock_irqsave(shost->host_lock, flags);
2892 fc_queue_work(shost, &vport->vport_delete_work);
2900 fc_queue_work(shost, &rport->rport_delete_work);
2907 fc_queue_work(shost, &rport->rport_delete_work);
2910 spin_unlock_irqrestore(shost->host_lock, flags);
2913 scsi_flush_work(shost);
2933 struct Scsi_Host *shost = rport_to_shost(rport);
2934 struct fc_internal *i = to_fc_internal(shost->transportt);
2973 struct Scsi_Host *shost = rport_to_shost(rport);
2974 struct fc_internal *i = to_fc_internal(shost->transportt);
2985 scsi_flush_work(shost);
2992 spin_lock_irqsave(shost->host_lock, flags);
2994 spin_unlock_irqrestore(shost->host_lock, flags);
2996 fc_flush_devloss(shost);
2998 fc_flush_devloss(shost);
3000 spin_lock_irqsave(shost->host_lock, flags);
3003 spin_unlock_irqrestore(shost->host_lock, flags);
3016 spin_lock_irqsave(shost->host_lock, flags);
3022 spin_unlock_irqrestore(shost->host_lock, flags);
3032 scsi_host_put(shost); /* for fc_host->rport list */
3039 * @shost: scsi host the remote port is connected to.
3040 * @channel: Channel on shost port connected to.
3051 fc_remote_port_create(struct Scsi_Host *shost, int channel,
3054 struct fc_host_attrs *fc_host = shost_to_fc_host(shost);
3055 struct fc_internal *fci = to_fc_internal(shost->transportt);
3088 spin_lock_irqsave(shost->host_lock, flags);
3097 scsi_host_get(shost); /* for fc_host->rport list */
3099 spin_unlock_irqrestore(shost->host_lock, flags);
3103 dev->parent = get_device(&shost->shost_gendev); /* parent reference */
3106 shost->host_no, channel, rport->number);
3117 fc_bsg_rportadd(shost, rport);
3123 scsi_queue_work(shost, &rport->scan_work);
3130 spin_lock_irqsave(shost->host_lock, flags);
3132 scsi_host_put(shost); /* for fc_host->rport list */
3133 spin_unlock_irqrestore(shost->host_lock, flags);
3141 * @shost: scsi host the remote port is connected to.
3142 * @channel: Channel on shost port connected to.
3178 fc_remote_port_add(struct Scsi_Host *shost, int channel,
3181 struct fc_internal *fci = to_fc_internal(shost->transportt);
3182 struct fc_host_attrs *fc_host = shost_to_fc_host(shost);
3188 fc_flush_work(shost);
3195 spin_lock_irqsave(shost->host_lock, flags);
3230 spin_unlock_irqrestore(shost->host_lock, flags);
3263 fc_flush_devloss(shost);
3265 fc_flush_devloss(shost);
3267 spin_lock_irqsave(shost->host_lock, flags);
3273 spin_unlock_irqrestore(shost->host_lock, flags);
3279 spin_lock_irqsave(shost->host_lock,
3282 scsi_queue_work(shost,
3284 spin_unlock_irqrestore(shost->host_lock,
3343 spin_unlock_irqrestore(shost->host_lock, flags);
3350 spin_unlock_irqrestore(shost->host_lock, flags);
3353 rport = fc_remote_port_create(shost, channel, ids);
3415 struct Scsi_Host *shost = rport_to_shost(rport);
3427 spin_lock_irqsave(shost->host_lock, flags);
3431 spin_unlock_irqrestore(shost->host_lock, flags);
3452 spin_unlock_irqrestore(shost->host_lock, flags);
3454 scsi_block_targets(shost, &rport->dev);
3459 fc_queue_devloss_work(shost, &rport->fail_io_work,
3463 fc_queue_devloss_work(shost, &rport->dev_loss_work, timeout * HZ);
3490 struct Scsi_Host *shost = rport_to_shost(rport);
3491 struct fc_host_attrs *fc_host = shost_to_fc_host(shost);
3495 spin_lock_irqsave(shost->host_lock, flags);
3506 spin_unlock_irqrestore(shost->host_lock, flags);
3522 fc_flush_devloss(shost);
3524 fc_flush_devloss(shost);
3526 spin_lock_irqsave(shost->host_lock, flags);
3530 spin_unlock_irqrestore(shost->host_lock, flags);
3533 fc_flush_work(shost);
3537 spin_lock_irqsave(shost->host_lock, flags);
3539 scsi_queue_work(shost, &rport->scan_work);
3540 spin_unlock_irqrestore(shost->host_lock, flags);
3557 struct Scsi_Host *shost = rport_to_shost(rport);
3558 struct fc_internal *i = to_fc_internal(shost->transportt);
3559 struct fc_host_attrs *fc_host = shost_to_fc_host(shost);
3563 spin_lock_irqsave(shost->host_lock, flags);
3579 spin_unlock_irqrestore(shost->host_lock, flags);
3581 fc_queue_work(shost, &rport->stgt_delete_work);
3587 spin_unlock_irqrestore(shost->host_lock, flags);
3603 fc_queue_work(shost, &rport->rport_delete_work);
3604 spin_unlock_irqrestore(shost->host_lock, flags);
3634 spin_unlock_irqrestore(shost->host_lock, flags);
3637 spin_lock_irqsave(shost->host_lock, flags);
3665 fc_queue_work(shost, &rport->stgt_delete_work);
3670 spin_unlock_irqrestore(shost->host_lock, flags);
3712 struct Scsi_Host *shost = rport_to_shost(rport);
3713 struct fc_internal *i = to_fc_internal(shost->transportt);
3725 spin_lock_irqsave(shost->host_lock, flags);
3727 spin_unlock_irqrestore(shost->host_lock, flags);
3746 struct Scsi_Host *shost = rport_to_shost(rport);
3749 spin_lock_irqsave(shost->host_lock, flags);
3752 spin_unlock_irqrestore(shost->host_lock, flags);
3754 spin_lock_irqsave(shost->host_lock, flags);
3756 spin_unlock_irqrestore(shost->host_lock, flags);
3814 * @shost: scsi host the virtual port is connected to.
3815 * @channel: Channel on shost port connected to.
3828 fc_vport_setup(struct Scsi_Host *shost, int channel, struct device *pdev,
3831 struct fc_host_attrs *fc_host = shost_to_fc_host(shost);
3832 struct fc_internal *fci = to_fc_internal(shost->transportt);
3859 vport->shost = shost;
3864 spin_lock_irqsave(shost->host_lock, flags);
3867 spin_unlock_irqrestore(shost->host_lock, flags);
3874 scsi_host_get(shost); /* for fc_host->vport list */
3876 spin_unlock_irqrestore(shost->host_lock, flags);
3883 shost->host_no, channel, vport->number);
3904 if (pdev != &shost->shost_gendev) {
3905 error = sysfs_create_link(&shost->shost_gendev.kobj,
3913 spin_lock_irqsave(shost->host_lock, flags);
3915 spin_unlock_irqrestore(shost->host_lock, flags);
3918 "%s created via shost%d channel %d\n", dev_name(dev),
3919 shost->host_no, channel);
3930 spin_lock_irqsave(shost->host_lock, flags);
3932 scsi_host_put(shost); /* for fc_host->vport list */
3934 spin_unlock_irqrestore(shost->host_lock, flags);
3943 * @shost: scsi host the virtual port is connected to.
3944 * @channel: channel on shost port connected to.
3952 fc_vport_create(struct Scsi_Host *shost, int channel,
3958 stat = fc_vport_setup(shost, channel, &shost->shost_gendev,
3969 * the vport from the shost and object tree.
3977 struct Scsi_Host *shost = vport_to_shost(vport);
3978 struct fc_host_attrs *fc_host = shost_to_fc_host(shost);
3979 struct fc_internal *i = to_fc_internal(shost->transportt);
3989 spin_lock_irqsave(shost->host_lock, flags);
3995 scsi_host_put(shost); /* for fc_host->vport list */
3997 spin_unlock_irqrestore(shost->host_lock, flags);
4002 if (dev->parent != &shost->shost_gendev)
4003 sysfs_remove_link(&shost->shost_gendev.kobj, dev_name(dev));
4034 "shost%d channel %d - error %d\n", __func__,
4035 dev_name(&vport->dev), vport->shost->host_no,
4052 struct Scsi_Host *shost = fc_bsg_to_shost(job);
4054 struct fc_internal *i = to_fc_internal(shost->transportt);
4081 * @shost: scsi host rport attached to
4084 static int fc_bsg_host_dispatch(struct Scsi_Host *shost, struct bsg_job *job)
4086 struct fc_internal *i = to_fc_internal(shost->transportt);
4130 if ((shost->hostt->vendor_id == 0L) ||
4132 shost->hostt->vendor_id)) {
4174 * @shost: scsi host rport attached to
4177 static int fc_bsg_rport_dispatch(struct Scsi_Host *shost, struct bsg_job *job)
4179 struct fc_internal *i = to_fc_internal(shost->transportt);
4229 struct Scsi_Host *shost = fc_bsg_to_shost(job);
4232 return fc_bsg_rport_dispatch(shost, job);
4234 return fc_bsg_host_dispatch(shost, job);
4271 * @shost: shost for fc_host
4275 fc_bsg_hostadd(struct Scsi_Host *shost, struct fc_host_attrs *fc_host)
4277 struct device *dev = &shost->shost_gendev;
4278 struct fc_internal *i = to_fc_internal(shost->transportt);
4288 "fc_host%d", shost->host_no);
4295 shost->host_no);
4298 __scsi_init_queue(shost, q);
4306 * @shost: shost that rport is attached to
4310 fc_bsg_rportadd(struct Scsi_Host *shost, struct fc_rport *rport)
4313 struct fc_internal *i = to_fc_internal(shost->transportt);
4327 __scsi_init_queue(shost, q);