Lines Matching defs:shost
29 static int fc_vport_setup(struct Scsi_Host *shost, int channel,
379 struct Scsi_Host *shost = dev_to_shost(dev);
380 struct fc_host_attrs *fc_host = shost_to_fc_host(shost);
434 "fc_wq_%d", shost->host_no);
442 "fc_dl_%d", shost->host_no);
451 fc_bsg_hostadd(shost, fc_host);
460 struct Scsi_Host *shost = dev_to_shost(dev);
461 struct fc_host_attrs *fc_host = shost_to_fc_host(shost);
517 * @shost: host the event occurred on
528 fc_host_post_fc_event(struct Scsi_Host *shost, u32 event_number,
566 event->host_no = shost->host_no;
583 __func__, shost->host_no,
592 * @shost: host the event occurred on
601 fc_host_post_event(struct Scsi_Host *shost, u32 event_number,
604 fc_host_post_fc_event(shost, event_number, event_code,
613 * @shost: host the event occurred on
623 fc_host_post_vendor_event(struct Scsi_Host *shost, u32 event_number,
626 fc_host_post_fc_event(shost, event_number, FCH_EVT_VENDOR_UNIQUE,
633 * @shost: host the FPIN was received on
641 fc_host_fpin_rcv(struct Scsi_Host *shost, u32 fpin_len, char *fpin_buf)
643 fc_host_post_fc_event(shost, fc_get_event_number(),
696 struct Scsi_Host *shost = rport_to_shost(rport); \
697 struct fc_internal *i = to_fc_internal(shost->transportt); \
714 struct Scsi_Host *shost = rport_to_shost(rport); \
715 struct fc_internal *i = to_fc_internal(shost->transportt); \
857 struct Scsi_Host *shost = rport_to_shost(rport);
858 struct fc_internal *i = to_fc_internal(shost->transportt);
1011 struct Scsi_Host *shost = dev_to_shost(starget->dev.parent); \
1012 struct fc_internal *i = to_fc_internal(shost->transportt); \
1066 struct Scsi_Host *shost = vport_to_shost(vport); \
1067 struct fc_internal *i = to_fc_internal(shost->transportt); \
1082 struct Scsi_Host *shost = vport_to_shost(vport); \
1083 struct fc_internal *i = to_fc_internal(shost->transportt); \
1101 struct Scsi_Host *shost = vport_to_shost(vport); \
1102 struct fc_internal *i = to_fc_internal(shost->transportt); \
1274 struct Scsi_Host *shost = vport_to_shost(vport);
1277 spin_lock_irqsave(shost->host_lock, flags);
1279 spin_unlock_irqrestore(shost->host_lock, flags);
1283 spin_unlock_irqrestore(shost->host_lock, flags);
1285 fc_queue_work(shost, &vport->vport_delete_work);
1302 struct Scsi_Host *shost = vport_to_shost(vport);
1303 struct fc_internal *i = to_fc_internal(shost->transportt);
1334 struct Scsi_Host *shost = transport_class_to_shost(dev); \
1335 struct fc_internal *i = to_fc_internal(shost->transportt); \
1337 i->f->get_host_##field(shost); \
1338 return snprintf(buf, sz, format_string, cast fc_host_##field(shost)); \
1348 struct Scsi_Host *shost = transport_class_to_shost(dev); \
1349 struct fc_internal *i = to_fc_internal(shost->transportt); \
1355 i->f->set_host_##field(shost, val); \
1365 struct Scsi_Host *shost = transport_class_to_shost(dev); \
1366 struct fc_internal *i = to_fc_internal(shost->transportt); \
1374 memcpy(fc_host_##field(shost), buf, cnt); \
1375 i->f->set_host_##field(shost); \
1401 struct Scsi_Host *shost = transport_class_to_shost(dev); \
1402 struct fc_internal *i = to_fc_internal(shost->transportt); \
1405 i->f->get_host_##title(shost); \
1406 name = get_fc_##title##_name(fc_host_##title(shost)); \
1444 struct Scsi_Host *shost = transport_class_to_shost(dev); \
1445 return snprintf(buf, sz, format_string, cast fc_host_##field(shost)); \
1479 struct Scsi_Host *shost = transport_class_to_shost(dev);
1481 if (fc_host_supported_classes(shost) == FC_COS_UNSPECIFIED)
1484 return get_fc_cos_names(fc_host_supported_classes(shost), buf);
1493 struct Scsi_Host *shost = transport_class_to_shost(dev);
1494 return (ssize_t)show_fc_fc4s(buf, fc_host_supported_fc4s(shost));
1503 struct Scsi_Host *shost = transport_class_to_shost(dev);
1505 if (fc_host_supported_speeds(shost) == FC_PORTSPEED_UNKNOWN)
1508 return get_fc_port_speed_names(fc_host_supported_speeds(shost), buf);
1536 struct Scsi_Host *shost = transport_class_to_shost(dev);
1537 struct fc_internal *i = to_fc_internal(shost->transportt);
1540 i->f->get_host_active_fc4s(shost);
1542 return (ssize_t)show_fc_fc4s(buf, fc_host_active_fc4s(shost));
1551 struct Scsi_Host *shost = transport_class_to_shost(dev);
1552 struct fc_internal *i = to_fc_internal(shost->transportt);
1555 i->f->get_host_speed(shost);
1557 if (fc_host_speed(shost) == FC_PORTSPEED_UNKNOWN)
1560 return get_fc_port_speed_names(fc_host_speed(shost), buf);
1585 struct Scsi_Host *shost = transport_class_to_shost(dev);
1588 name = get_fc_tgtid_bind_type_name(fc_host_tgtid_bind_type(shost));
1601 struct Scsi_Host *shost = transport_class_to_shost(dev);
1610 if (val != fc_host_tgtid_bind_type(shost)) {
1611 spin_lock_irqsave(shost->host_lock, flags);
1612 while (!list_empty(&fc_host_rport_bindings(shost))) {
1614 &fc_host_rport_bindings(shost), peers);
1617 fc_queue_work(shost, &rport->rport_delete_work);
1619 spin_unlock_irqrestore(shost->host_lock, flags);
1622 fc_host_tgtid_bind_type(shost) = val;
1634 struct Scsi_Host *shost = transport_class_to_shost(dev);
1635 struct fc_internal *i = to_fc_internal(shost->transportt);
1640 ret = i->f->issue_fc_host_lip(shost);
1655 struct Scsi_Host *shost = transport_class_to_shost(dev);
1656 struct fc_host_attrs *fc_host = shost_to_fc_host(shost);
1665 fc_host_dev_loss_tmo(shost) = val;
1666 spin_lock_irqsave(shost->host_lock, flags);
1669 spin_unlock_irqrestore(shost->host_lock, flags);
1688 struct Scsi_Host *shost = transport_class_to_shost(dev);
1689 struct fc_internal *i = to_fc_internal(shost->transportt);
1698 stats = (i->f->get_fc_host_stats)(shost);
1752 struct Scsi_Host *shost = transport_class_to_shost(dev);
1753 struct fc_internal *i = to_fc_internal(shost->transportt);
1757 i->f->reset_fc_host_stats(shost);
1847 struct Scsi_Host *shost = transport_class_to_shost(dev);
1877 stat = fc_vport_setup(shost, 0, &shost->shost_gendev, &vid, &vport);
1894 struct Scsi_Host *shost = transport_class_to_shost(dev);
1895 struct fc_host_attrs *fc_host = shost_to_fc_host(shost);
1918 spin_lock_irqsave(shost->host_lock, flags);
1931 spin_unlock_irqrestore(shost->host_lock, flags);
1946 struct Scsi_Host *shost;
1952 shost = dev_to_shost(dev);
1953 if (!shost->transportt || shost->transportt->host_attrs.ac.class
1957 i = to_fc_internal(shost->transportt);
1965 struct Scsi_Host *shost;
1971 shost = dev_to_shost(dev->parent);
1972 if (!shost->transportt || shost->transportt->host_attrs.ac.class
1976 i = to_fc_internal(shost->transportt);
1997 struct Scsi_Host *shost;
2003 shost = dev_to_shost(dev->parent);
2004 if (!shost->transportt || shost->transportt->host_attrs.ac.class
2008 i = to_fc_internal(shost->transportt);
2030 struct Scsi_Host *shost;
2037 shost = vport_to_shost(vport);
2038 if (!shost->transportt || shost->transportt->host_attrs.ac.class
2042 i = to_fc_internal(shost->transportt);
2082 * Called by fc_user_scan to locate an rport on the shost that
2087 fc_user_scan_tgt(struct Scsi_Host *shost, uint channel, uint id, u64 lun)
2092 spin_lock_irqsave(shost->host_lock, flags);
2094 list_for_each_entry(rport, &fc_host_rports(shost), peers) {
2103 spin_unlock_irqrestore(shost->host_lock, flags);
2110 spin_unlock_irqrestore(shost->host_lock, flags);
2120 fc_user_scan(struct Scsi_Host *shost, uint channel, uint id, u64 lun)
2125 if (((channel != SCAN_WILD_CARD) && (channel > shost->max_channel)) ||
2126 ((id != SCAN_WILD_CARD) && (id >= shost->max_id)) ||
2127 ((lun != SCAN_WILD_CARD) && (lun > shost->max_lun)))
2132 chhi = shost->max_channel + 1;
2140 tgthi = shost->max_id;
2148 fc_user_scan_tgt(shost, chlo, tgtlo, lun);
2189 /* Transport uses the shost workq for scsi scanning */
2310 * @shost: Pointer to Scsi_Host bound to fc_host.
2319 fc_queue_work(struct Scsi_Host *shost, struct work_struct *work)
2321 if (unlikely(!fc_host_work_q(shost))) {
2324 "when no workqueue created.\n", shost->hostt->name);
2330 return queue_work(fc_host_work_q(shost), work);
2335 * @shost: Pointer to Scsi_Host bound to fc_host.
2338 fc_flush_work(struct Scsi_Host *shost)
2340 if (!fc_host_work_q(shost)) {
2343 "when no workqueue created.\n", shost->hostt->name);
2348 flush_workqueue(fc_host_work_q(shost));
2353 * @shost: Pointer to Scsi_Host bound to fc_host.
2361 fc_queue_devloss_work(struct Scsi_Host *shost, struct delayed_work *work,
2364 if (unlikely(!fc_host_devloss_work_q(shost))) {
2367 "when no workqueue created.\n", shost->hostt->name);
2373 return queue_delayed_work(fc_host_devloss_work_q(shost), work, delay);
2378 * @shost: Pointer to Scsi_Host bound to fc_host.
2381 fc_flush_devloss(struct Scsi_Host *shost)
2383 if (!fc_host_devloss_work_q(shost)) {
2386 "when no workqueue created.\n", shost->hostt->name);
2391 flush_workqueue(fc_host_devloss_work_q(shost));
2397 * @shost: Which &Scsi_Host
2411 fc_remove_host(struct Scsi_Host *shost)
2416 struct fc_host_attrs *fc_host = shost_to_fc_host(shost);
2419 spin_lock_irqsave(shost->host_lock, flags);
2424 fc_queue_work(shost, &vport->vport_delete_work);
2432 fc_queue_work(shost, &rport->rport_delete_work);
2439 fc_queue_work(shost, &rport->rport_delete_work);
2442 spin_unlock_irqrestore(shost->host_lock, flags);
2445 scsi_flush_work(shost);
2465 struct Scsi_Host *shost = rport_to_shost(rport);
2466 struct fc_internal *i = to_fc_internal(shost->transportt);
2505 struct Scsi_Host *shost = rport_to_shost(rport);
2506 struct fc_internal *i = to_fc_internal(shost->transportt);
2517 scsi_flush_work(shost);
2524 spin_lock_irqsave(shost->host_lock, flags);
2526 spin_unlock_irqrestore(shost->host_lock, flags);
2528 fc_flush_devloss(shost);
2530 fc_flush_devloss(shost);
2532 spin_lock_irqsave(shost->host_lock, flags);
2535 spin_unlock_irqrestore(shost->host_lock, flags);
2548 spin_lock_irqsave(shost->host_lock, flags);
2554 spin_unlock_irqrestore(shost->host_lock, flags);
2564 scsi_host_put(shost); /* for fc_host->rport list */
2571 * @shost: scsi host the remote port is connected to.
2572 * @channel: Channel on shost port connected to.
2583 fc_remote_port_create(struct Scsi_Host *shost, int channel,
2586 struct fc_host_attrs *fc_host = shost_to_fc_host(shost);
2587 struct fc_internal *fci = to_fc_internal(shost->transportt);
2620 spin_lock_irqsave(shost->host_lock, flags);
2629 scsi_host_get(shost); /* for fc_host->rport list */
2631 spin_unlock_irqrestore(shost->host_lock, flags);
2635 dev->parent = get_device(&shost->shost_gendev); /* parent reference */
2638 shost->host_no, channel, rport->number);
2649 fc_bsg_rportadd(shost, rport);
2655 scsi_queue_work(shost, &rport->scan_work);
2662 spin_lock_irqsave(shost->host_lock, flags);
2664 scsi_host_put(shost); /* for fc_host->rport list */
2665 spin_unlock_irqrestore(shost->host_lock, flags);
2673 * @shost: scsi host the remote port is connected to.
2674 * @channel: Channel on shost port connected to.
2710 fc_remote_port_add(struct Scsi_Host *shost, int channel,
2713 struct fc_internal *fci = to_fc_internal(shost->transportt);
2714 struct fc_host_attrs *fc_host = shost_to_fc_host(shost);
2720 fc_flush_work(shost);
2727 spin_lock_irqsave(shost->host_lock, flags);
2762 spin_unlock_irqrestore(shost->host_lock, flags);
2795 fc_flush_devloss(shost);
2797 fc_flush_devloss(shost);
2799 spin_lock_irqsave(shost->host_lock, flags);
2805 spin_unlock_irqrestore(shost->host_lock, flags);
2811 spin_lock_irqsave(shost->host_lock,
2814 scsi_queue_work(shost,
2816 spin_unlock_irqrestore(shost->host_lock,
2875 spin_unlock_irqrestore(shost->host_lock, flags);
2882 spin_unlock_irqrestore(shost->host_lock, flags);
2885 rport = fc_remote_port_create(shost, channel, ids);
2947 struct Scsi_Host *shost = rport_to_shost(rport);
2959 spin_lock_irqsave(shost->host_lock, flags);
2962 spin_unlock_irqrestore(shost->host_lock, flags);
2983 spin_unlock_irqrestore(shost->host_lock, flags);
2990 fc_queue_devloss_work(shost, &rport->fail_io_work,
2994 fc_queue_devloss_work(shost, &rport->dev_loss_work, timeout * HZ);
3021 struct Scsi_Host *shost = rport_to_shost(rport);
3022 struct fc_host_attrs *fc_host = shost_to_fc_host(shost);
3026 spin_lock_irqsave(shost->host_lock, flags);
3037 spin_unlock_irqrestore(shost->host_lock, flags);
3053 fc_flush_devloss(shost);
3055 fc_flush_devloss(shost);
3057 spin_lock_irqsave(shost->host_lock, flags);
3061 spin_unlock_irqrestore(shost->host_lock, flags);
3064 fc_flush_work(shost);
3068 spin_lock_irqsave(shost->host_lock, flags);
3070 scsi_queue_work(shost, &rport->scan_work);
3071 spin_unlock_irqrestore(shost->host_lock, flags);
3088 struct Scsi_Host *shost = rport_to_shost(rport);
3089 struct fc_internal *i = to_fc_internal(shost->transportt);
3090 struct fc_host_attrs *fc_host = shost_to_fc_host(shost);
3094 spin_lock_irqsave(shost->host_lock, flags);
3109 spin_unlock_irqrestore(shost->host_lock, flags);
3111 fc_queue_work(shost, &rport->stgt_delete_work);
3117 spin_unlock_irqrestore(shost->host_lock, flags);
3133 fc_queue_work(shost, &rport->rport_delete_work);
3134 spin_unlock_irqrestore(shost->host_lock, flags);
3164 spin_unlock_irqrestore(shost->host_lock, flags);
3167 spin_lock_irqsave(shost->host_lock, flags);
3195 fc_queue_work(shost, &rport->stgt_delete_work);
3200 spin_unlock_irqrestore(shost->host_lock, flags);
3242 struct Scsi_Host *shost = rport_to_shost(rport);
3243 struct fc_internal *i = to_fc_internal(shost->transportt);
3254 spin_lock_irqsave(shost->host_lock, flags);
3256 spin_unlock_irqrestore(shost->host_lock, flags);
3275 struct Scsi_Host *shost = rport_to_shost(rport);
3278 spin_lock_irqsave(shost->host_lock, flags);
3281 spin_unlock_irqrestore(shost->host_lock, flags);
3283 spin_lock_irqsave(shost->host_lock, flags);
3285 spin_unlock_irqrestore(shost->host_lock, flags);
3321 * @shost: scsi host the virtual port is connected to.
3322 * @channel: Channel on shost port connected to.
3335 fc_vport_setup(struct Scsi_Host *shost, int channel, struct device *pdev,
3338 struct fc_host_attrs *fc_host = shost_to_fc_host(shost);
3339 struct fc_internal *fci = to_fc_internal(shost->transportt);
3366 vport->shost = shost;
3371 spin_lock_irqsave(shost->host_lock, flags);
3374 spin_unlock_irqrestore(shost->host_lock, flags);
3381 scsi_host_get(shost); /* for fc_host->vport list */
3383 spin_unlock_irqrestore(shost->host_lock, flags);
3390 shost->host_no, channel, vport->number);
3411 if (pdev != &shost->shost_gendev) {
3412 error = sysfs_create_link(&shost->shost_gendev.kobj,
3420 spin_lock_irqsave(shost->host_lock, flags);
3422 spin_unlock_irqrestore(shost->host_lock, flags);
3425 "%s created via shost%d channel %d\n", dev_name(dev),
3426 shost->host_no, channel);
3437 spin_lock_irqsave(shost->host_lock, flags);
3439 scsi_host_put(shost); /* for fc_host->vport list */
3441 spin_unlock_irqrestore(shost->host_lock, flags);
3450 * @shost: scsi host the virtual port is connected to.
3451 * @channel: channel on shost port connected to.
3459 fc_vport_create(struct Scsi_Host *shost, int channel,
3465 stat = fc_vport_setup(shost, channel, &shost->shost_gendev,
3476 * the vport from the shost and object tree.
3484 struct Scsi_Host *shost = vport_to_shost(vport);
3485 struct fc_host_attrs *fc_host = shost_to_fc_host(shost);
3486 struct fc_internal *i = to_fc_internal(shost->transportt);
3496 spin_lock_irqsave(shost->host_lock, flags);
3502 scsi_host_put(shost); /* for fc_host->vport list */
3504 spin_unlock_irqrestore(shost->host_lock, flags);
3509 if (dev->parent != &shost->shost_gendev)
3510 sysfs_remove_link(&shost->shost_gendev.kobj, dev_name(dev));
3541 "shost%d channel %d - error %d\n", __func__,
3542 dev_name(&vport->dev), vport->shost->host_no,
3559 struct Scsi_Host *shost = fc_bsg_to_shost(job);
3561 struct fc_internal *i = to_fc_internal(shost->transportt);
3588 * @shost: scsi host rport attached to
3591 static int fc_bsg_host_dispatch(struct Scsi_Host *shost, struct bsg_job *job)
3593 struct fc_internal *i = to_fc_internal(shost->transportt);
3637 if ((shost->hostt->vendor_id == 0L) ||
3639 shost->hostt->vendor_id)) {
3681 * @shost: scsi host rport attached to
3684 static int fc_bsg_rport_dispatch(struct Scsi_Host *shost, struct bsg_job *job)
3686 struct fc_internal *i = to_fc_internal(shost->transportt);
3736 struct Scsi_Host *shost = fc_bsg_to_shost(job);
3739 return fc_bsg_rport_dispatch(shost, job);
3741 return fc_bsg_host_dispatch(shost, job);
3777 * @shost: shost for fc_host
3781 fc_bsg_hostadd(struct Scsi_Host *shost, struct fc_host_attrs *fc_host)
3783 struct device *dev = &shost->shost_gendev;
3784 struct fc_internal *i = to_fc_internal(shost->transportt);
3794 "fc_host%d", shost->host_no);
3801 shost->host_no);
3804 __scsi_init_queue(shost, q);
3812 * @shost: shost that rport is attached to
3816 fc_bsg_rportadd(struct Scsi_Host *shost, struct fc_rport *rport)
3819 struct fc_internal *i = to_fc_internal(shost->transportt);
3833 __scsi_init_queue(shost, q);