Lines Matching refs:tgt

425 static void ibmvfc_set_tgt_action(struct ibmvfc_target *tgt,  in ibmvfc_set_tgt_action()  argument
428 switch (tgt->action) { in ibmvfc_set_tgt_action()
431 tgt->action = action; in ibmvfc_set_tgt_action()
436 tgt->add_rport = 0; in ibmvfc_set_tgt_action()
437 tgt->action = action; in ibmvfc_set_tgt_action()
556 struct ibmvfc_target *tgt; in ibmvfc_link_down() local
560 list_for_each_entry(tgt, &vhost->targets, queue) in ibmvfc_link_down()
561 ibmvfc_set_tgt_action(tgt, IBMVFC_TGT_ACTION_DEL_RPORT); in ibmvfc_link_down()
578 struct ibmvfc_target *tgt; in ibmvfc_init_host() local
593 list_for_each_entry(tgt, &vhost->targets, queue) in ibmvfc_init_host()
594 ibmvfc_set_tgt_action(tgt, IBMVFC_TGT_ACTION_DEL_RPORT); in ibmvfc_init_host()
915 struct ibmvfc_target *tgt; in __ibmvfc_get_target() local
917 list_for_each_entry(tgt, &vhost->targets, queue) in __ibmvfc_get_target()
918 if (tgt->target_id == starget->id) { in __ibmvfc_get_target()
919 kref_get(&tgt->kref); in __ibmvfc_get_target()
920 return tgt; in __ibmvfc_get_target()
935 struct ibmvfc_target *tgt; in ibmvfc_get_target() local
939 tgt = __ibmvfc_get_target(starget); in ibmvfc_get_target()
941 return tgt; in ibmvfc_get_target()
1050 struct ibmvfc_target *tgt = container_of(kref, struct ibmvfc_target, kref); in ibmvfc_release_tgt() local
1051 kfree(tgt); in ibmvfc_release_tgt()
1063 struct ibmvfc_target *tgt = ibmvfc_get_target(starget); in ibmvfc_get_starget_node_name() local
1064 fc_starget_port_name(starget) = tgt ? tgt->ids.node_name : 0; in ibmvfc_get_starget_node_name()
1065 if (tgt) in ibmvfc_get_starget_node_name()
1066 kref_put(&tgt->kref, ibmvfc_release_tgt); in ibmvfc_get_starget_node_name()
1078 struct ibmvfc_target *tgt = ibmvfc_get_target(starget); in ibmvfc_get_starget_port_name() local
1079 fc_starget_port_name(starget) = tgt ? tgt->ids.port_name : 0; in ibmvfc_get_starget_port_name()
1080 if (tgt) in ibmvfc_get_starget_port_name()
1081 kref_put(&tgt->kref, ibmvfc_release_tgt); in ibmvfc_get_starget_port_name()
1093 struct ibmvfc_target *tgt = ibmvfc_get_target(starget); in ibmvfc_get_starget_port_id() local
1094 fc_starget_port_id(starget) = tgt ? tgt->scsi_id : -1; in ibmvfc_get_starget_port_id()
1095 if (tgt) in ibmvfc_get_starget_port_id()
1096 kref_put(&tgt->kref, ibmvfc_release_tgt); in ibmvfc_get_starget_port_id()
1506 struct ibmvfc_target *tgt; in ibmvfc_relogin() local
1508 list_for_each_entry(tgt, &vhost->targets, queue) { in ibmvfc_relogin()
1509 if (rport == tgt->rport) { in ibmvfc_relogin()
1510 ibmvfc_set_tgt_action(tgt, IBMVFC_TGT_ACTION_DEL_RPORT); in ibmvfc_relogin()
1759 struct ibmvfc_target *tgt; in ibmvfc_bsg_plogi() local
1767 list_for_each_entry(tgt, &vhost->targets, queue) { in ibmvfc_bsg_plogi()
1768 if (tgt->scsi_id == port_id) { in ibmvfc_bsg_plogi()
2636 struct ibmvfc_target *tgt; in ibmvfc_handle_async() local
2682 list_for_each_entry(tgt, &vhost->targets, queue) { in ibmvfc_handle_async()
2685 if (crq->scsi_id && cpu_to_be64(tgt->scsi_id) != crq->scsi_id) in ibmvfc_handle_async()
2687 if (crq->wwpn && cpu_to_be64(tgt->ids.port_name) != crq->wwpn) in ibmvfc_handle_async()
2689 if (crq->node_name && cpu_to_be64(tgt->ids.node_name) != crq->node_name) in ibmvfc_handle_async()
2691 if (tgt->need_login && be64_to_cpu(crq->event) == IBMVFC_AE_ELS_LOGO) in ibmvfc_handle_async()
2692 tgt->logo_rcvd = 1; in ibmvfc_handle_async()
2693 if (!tgt->need_login || be64_to_cpu(crq->event) == IBMVFC_AE_ELS_PLOGI) { in ibmvfc_handle_async()
2694 ibmvfc_set_tgt_action(tgt, IBMVFC_TGT_ACTION_DEL_RPORT); in ibmvfc_handle_async()
3224 static void ibmvfc_init_tgt(struct ibmvfc_target *tgt, in ibmvfc_init_tgt() argument
3227 ibmvfc_set_tgt_action(tgt, IBMVFC_TGT_ACTION_INIT); in ibmvfc_init_tgt()
3228 tgt->job_step = job_step; in ibmvfc_init_tgt()
3229 wake_up(&tgt->vhost->work_wait_q); in ibmvfc_init_tgt()
3240 static int ibmvfc_retry_tgt_init(struct ibmvfc_target *tgt, in ibmvfc_retry_tgt_init() argument
3243 if (++tgt->init_retries > IBMVFC_MAX_TGT_INIT_RETRIES) { in ibmvfc_retry_tgt_init()
3244 ibmvfc_set_tgt_action(tgt, IBMVFC_TGT_ACTION_DEL_RPORT); in ibmvfc_retry_tgt_init()
3245 wake_up(&tgt->vhost->work_wait_q); in ibmvfc_retry_tgt_init()
3248 ibmvfc_init_tgt(tgt, job_step); in ibmvfc_retry_tgt_init()
3293 struct ibmvfc_target *tgt = evt->tgt; in ibmvfc_tgt_prli_done() local
3301 ibmvfc_set_tgt_action(tgt, IBMVFC_TGT_ACTION_NONE); in ibmvfc_tgt_prli_done()
3304 tgt_dbg(tgt, "Process Login succeeded: %X %02X %04X\n", in ibmvfc_tgt_prli_done()
3311 tgt->need_login = 0; in ibmvfc_tgt_prli_done()
3312 tgt->ids.roles = 0; in ibmvfc_tgt_prli_done()
3314 tgt->ids.roles |= FC_PORT_ROLE_FCP_TARGET; in ibmvfc_tgt_prli_done()
3316 tgt->ids.roles |= FC_PORT_ROLE_FCP_INITIATOR; in ibmvfc_tgt_prli_done()
3317 tgt->add_rport = 1; in ibmvfc_tgt_prli_done()
3319 ibmvfc_set_tgt_action(tgt, IBMVFC_TGT_ACTION_DEL_RPORT); in ibmvfc_tgt_prli_done()
3321 ibmvfc_retry_tgt_init(tgt, ibmvfc_tgt_send_prli); in ibmvfc_tgt_prli_done()
3323 ibmvfc_set_tgt_action(tgt, IBMVFC_TGT_ACTION_DEL_RPORT); in ibmvfc_tgt_prli_done()
3325 ibmvfc_set_tgt_action(tgt, IBMVFC_TGT_ACTION_DEL_RPORT); in ibmvfc_tgt_prli_done()
3330 ibmvfc_retry_tgt_init(tgt, ibmvfc_tgt_send_prli); in ibmvfc_tgt_prli_done()
3336 level += ibmvfc_retry_tgt_init(tgt, ibmvfc_tgt_send_plogi); in ibmvfc_tgt_prli_done()
3337 else if (tgt->logo_rcvd) in ibmvfc_tgt_prli_done()
3338 level += ibmvfc_retry_tgt_init(tgt, ibmvfc_tgt_send_plogi); in ibmvfc_tgt_prli_done()
3340 level += ibmvfc_retry_tgt_init(tgt, ibmvfc_tgt_send_prli); in ibmvfc_tgt_prli_done()
3342 ibmvfc_set_tgt_action(tgt, IBMVFC_TGT_ACTION_DEL_RPORT); in ibmvfc_tgt_prli_done()
3344 tgt_log(tgt, level, "Process Login failed: %s (%x:%x) rc=0x%02X\n", in ibmvfc_tgt_prli_done()
3350 kref_put(&tgt->kref, ibmvfc_release_tgt); in ibmvfc_tgt_prli_done()
3360 static void ibmvfc_tgt_send_prli(struct ibmvfc_target *tgt) in ibmvfc_tgt_send_prli() argument
3363 struct ibmvfc_host *vhost = tgt->vhost; in ibmvfc_tgt_send_prli()
3369 kref_get(&tgt->kref); in ibmvfc_tgt_send_prli()
3373 evt->tgt = tgt; in ibmvfc_tgt_send_prli()
3379 prli->scsi_id = cpu_to_be64(tgt->scsi_id); in ibmvfc_tgt_send_prli()
3385 ibmvfc_set_tgt_action(tgt, IBMVFC_TGT_ACTION_INIT_WAIT); in ibmvfc_tgt_send_prli()
3388 ibmvfc_set_tgt_action(tgt, IBMVFC_TGT_ACTION_NONE); in ibmvfc_tgt_send_prli()
3389 kref_put(&tgt->kref, ibmvfc_release_tgt); in ibmvfc_tgt_send_prli()
3391 tgt_dbg(tgt, "Sent process login\n"); in ibmvfc_tgt_send_prli()
3401 struct ibmvfc_target *tgt = evt->tgt; in ibmvfc_tgt_plogi_done() local
3408 ibmvfc_set_tgt_action(tgt, IBMVFC_TGT_ACTION_NONE); in ibmvfc_tgt_plogi_done()
3411 tgt_dbg(tgt, "Port Login succeeded\n"); in ibmvfc_tgt_plogi_done()
3412 if (tgt->ids.port_name && in ibmvfc_tgt_plogi_done()
3413 tgt->ids.port_name != wwn_to_u64(rsp->service_parms.port_name)) { in ibmvfc_tgt_plogi_done()
3415 tgt_dbg(tgt, "Port re-init required\n"); in ibmvfc_tgt_plogi_done()
3418 tgt->ids.node_name = wwn_to_u64(rsp->service_parms.node_name); in ibmvfc_tgt_plogi_done()
3419 tgt->ids.port_name = wwn_to_u64(rsp->service_parms.port_name); in ibmvfc_tgt_plogi_done()
3420 tgt->ids.port_id = tgt->scsi_id; in ibmvfc_tgt_plogi_done()
3421 memcpy(&tgt->service_parms, &rsp->service_parms, in ibmvfc_tgt_plogi_done()
3422 sizeof(tgt->service_parms)); in ibmvfc_tgt_plogi_done()
3423 memcpy(&tgt->service_parms_change, &rsp->service_parms_change, in ibmvfc_tgt_plogi_done()
3424 sizeof(tgt->service_parms_change)); in ibmvfc_tgt_plogi_done()
3425 ibmvfc_init_tgt(tgt, ibmvfc_tgt_send_prli); in ibmvfc_tgt_plogi_done()
3430 ibmvfc_retry_tgt_init(tgt, ibmvfc_tgt_send_plogi); in ibmvfc_tgt_plogi_done()
3435 level += ibmvfc_retry_tgt_init(tgt, ibmvfc_tgt_send_plogi); in ibmvfc_tgt_plogi_done()
3437 ibmvfc_set_tgt_action(tgt, IBMVFC_TGT_ACTION_DEL_RPORT); in ibmvfc_tgt_plogi_done()
3439 tgt_log(tgt, level, "Port Login failed: %s (%x:%x) %s (%x) %s (%x) rc=0x%02X\n", in ibmvfc_tgt_plogi_done()
3446 kref_put(&tgt->kref, ibmvfc_release_tgt); in ibmvfc_tgt_plogi_done()
3456 static void ibmvfc_tgt_send_plogi(struct ibmvfc_target *tgt) in ibmvfc_tgt_send_plogi() argument
3459 struct ibmvfc_host *vhost = tgt->vhost; in ibmvfc_tgt_send_plogi()
3465 kref_get(&tgt->kref); in ibmvfc_tgt_send_plogi()
3466 tgt->logo_rcvd = 0; in ibmvfc_tgt_send_plogi()
3469 ibmvfc_set_tgt_action(tgt, IBMVFC_TGT_ACTION_INIT_WAIT); in ibmvfc_tgt_send_plogi()
3471 evt->tgt = tgt; in ibmvfc_tgt_send_plogi()
3477 plogi->scsi_id = cpu_to_be64(tgt->scsi_id); in ibmvfc_tgt_send_plogi()
3481 ibmvfc_set_tgt_action(tgt, IBMVFC_TGT_ACTION_NONE); in ibmvfc_tgt_send_plogi()
3482 kref_put(&tgt->kref, ibmvfc_release_tgt); in ibmvfc_tgt_send_plogi()
3484 tgt_dbg(tgt, "Sent port login\n"); in ibmvfc_tgt_send_plogi()
3494 struct ibmvfc_target *tgt = evt->tgt; in ibmvfc_tgt_implicit_logout_done() local
3501 ibmvfc_set_tgt_action(tgt, IBMVFC_TGT_ACTION_NONE); in ibmvfc_tgt_implicit_logout_done()
3505 tgt_dbg(tgt, "Implicit Logout succeeded\n"); in ibmvfc_tgt_implicit_logout_done()
3508 kref_put(&tgt->kref, ibmvfc_release_tgt); in ibmvfc_tgt_implicit_logout_done()
3513 tgt_err(tgt, "Implicit Logout failed: rc=0x%02X\n", status); in ibmvfc_tgt_implicit_logout_done()
3518 ibmvfc_init_tgt(tgt, ibmvfc_tgt_send_plogi); in ibmvfc_tgt_implicit_logout_done()
3520 tgt->scsi_id != tgt->new_scsi_id) in ibmvfc_tgt_implicit_logout_done()
3521 ibmvfc_set_tgt_action(tgt, IBMVFC_TGT_ACTION_DEL_RPORT); in ibmvfc_tgt_implicit_logout_done()
3522 kref_put(&tgt->kref, ibmvfc_release_tgt); in ibmvfc_tgt_implicit_logout_done()
3531 static void ibmvfc_tgt_implicit_logout(struct ibmvfc_target *tgt) in ibmvfc_tgt_implicit_logout() argument
3534 struct ibmvfc_host *vhost = tgt->vhost; in ibmvfc_tgt_implicit_logout()
3540 kref_get(&tgt->kref); in ibmvfc_tgt_implicit_logout()
3544 evt->tgt = tgt; in ibmvfc_tgt_implicit_logout()
3550 mad->old_scsi_id = cpu_to_be64(tgt->scsi_id); in ibmvfc_tgt_implicit_logout()
3552 ibmvfc_set_tgt_action(tgt, IBMVFC_TGT_ACTION_INIT_WAIT); in ibmvfc_tgt_implicit_logout()
3555 ibmvfc_set_tgt_action(tgt, IBMVFC_TGT_ACTION_NONE); in ibmvfc_tgt_implicit_logout()
3556 kref_put(&tgt->kref, ibmvfc_release_tgt); in ibmvfc_tgt_implicit_logout()
3558 tgt_dbg(tgt, "Sent Implicit Logout\n"); in ibmvfc_tgt_implicit_logout()
3570 struct ibmvfc_target *tgt) in ibmvfc_adisc_needs_plogi() argument
3572 if (memcmp(&mad->fc_iu.response[2], &tgt->ids.port_name, in ibmvfc_adisc_needs_plogi()
3573 sizeof(tgt->ids.port_name))) in ibmvfc_adisc_needs_plogi()
3575 if (memcmp(&mad->fc_iu.response[4], &tgt->ids.node_name, in ibmvfc_adisc_needs_plogi()
3576 sizeof(tgt->ids.node_name))) in ibmvfc_adisc_needs_plogi()
3578 if (be32_to_cpu(mad->fc_iu.response[6]) != tgt->scsi_id) in ibmvfc_adisc_needs_plogi()
3590 struct ibmvfc_target *tgt = evt->tgt; in ibmvfc_tgt_adisc_done() local
3597 ibmvfc_set_tgt_action(tgt, IBMVFC_TGT_ACTION_NONE); in ibmvfc_tgt_adisc_done()
3598 del_timer(&tgt->timer); in ibmvfc_tgt_adisc_done()
3602 tgt_dbg(tgt, "ADISC succeeded\n"); in ibmvfc_tgt_adisc_done()
3603 if (ibmvfc_adisc_needs_plogi(mad, tgt)) in ibmvfc_tgt_adisc_done()
3604 ibmvfc_set_tgt_action(tgt, IBMVFC_TGT_ACTION_DEL_RPORT); in ibmvfc_tgt_adisc_done()
3610 ibmvfc_set_tgt_action(tgt, IBMVFC_TGT_ACTION_DEL_RPORT); in ibmvfc_tgt_adisc_done()
3613 tgt_info(tgt, "ADISC failed: %s (%x:%x) %s (%x) %s (%x) rc=0x%02X\n", in ibmvfc_tgt_adisc_done()
3621 kref_put(&tgt->kref, ibmvfc_release_tgt); in ibmvfc_tgt_adisc_done()
3667 struct ibmvfc_target *tgt = evt->tgt; in ibmvfc_tgt_adisc_cancel_done() local
3669 tgt_dbg(tgt, "ADISC cancel complete\n"); in ibmvfc_tgt_adisc_cancel_done()
3672 kref_put(&tgt->kref, ibmvfc_release_tgt); in ibmvfc_tgt_adisc_cancel_done()
3684 static void ibmvfc_adisc_timeout(struct ibmvfc_target *tgt) in ibmvfc_adisc_timeout() argument
3686 struct ibmvfc_host *vhost = tgt->vhost; in ibmvfc_adisc_timeout()
3692 tgt_dbg(tgt, "ADISC timeout\n"); in ibmvfc_adisc_timeout()
3695 tgt->action != IBMVFC_TGT_ACTION_INIT_WAIT || in ibmvfc_adisc_timeout()
3703 kref_get(&tgt->kref); in ibmvfc_adisc_timeout()
3707 evt->tgt = tgt; in ibmvfc_adisc_timeout()
3713 tmf->scsi_id = cpu_to_be64(tgt->scsi_id); in ibmvfc_adisc_timeout()
3714 tmf->cancel_key = cpu_to_be32(tgt->cancel_key); in ibmvfc_adisc_timeout()
3719 tgt_err(tgt, "Failed to send cancel event for ADISC. rc=%d\n", rc); in ibmvfc_adisc_timeout()
3721 kref_put(&tgt->kref, ibmvfc_release_tgt); in ibmvfc_adisc_timeout()
3724 tgt_dbg(tgt, "Attempting to cancel ADISC\n"); in ibmvfc_adisc_timeout()
3739 static void ibmvfc_tgt_adisc(struct ibmvfc_target *tgt) in ibmvfc_tgt_adisc() argument
3742 struct ibmvfc_host *vhost = tgt->vhost; in ibmvfc_tgt_adisc()
3748 kref_get(&tgt->kref); in ibmvfc_tgt_adisc()
3752 evt->tgt = tgt; in ibmvfc_tgt_adisc()
3757 mad->iu.scsi_id = cpu_to_be64(tgt->scsi_id); in ibmvfc_tgt_adisc()
3758 mad->iu.cancel_key = cpu_to_be32(tgt->cancel_key); in ibmvfc_tgt_adisc()
3767 if (timer_pending(&tgt->timer)) in ibmvfc_tgt_adisc()
3768 mod_timer(&tgt->timer, jiffies + (IBMVFC_ADISC_TIMEOUT * HZ)); in ibmvfc_tgt_adisc()
3770 tgt->timer.data = (unsigned long) tgt; in ibmvfc_tgt_adisc()
3771 tgt->timer.expires = jiffies + (IBMVFC_ADISC_TIMEOUT * HZ); in ibmvfc_tgt_adisc()
3772 tgt->timer.function = (void (*)(unsigned long))ibmvfc_adisc_timeout; in ibmvfc_tgt_adisc()
3773 add_timer(&tgt->timer); in ibmvfc_tgt_adisc()
3776 ibmvfc_set_tgt_action(tgt, IBMVFC_TGT_ACTION_INIT_WAIT); in ibmvfc_tgt_adisc()
3779 del_timer(&tgt->timer); in ibmvfc_tgt_adisc()
3780 ibmvfc_set_tgt_action(tgt, IBMVFC_TGT_ACTION_NONE); in ibmvfc_tgt_adisc()
3781 kref_put(&tgt->kref, ibmvfc_release_tgt); in ibmvfc_tgt_adisc()
3783 tgt_dbg(tgt, "Sent ADISC\n"); in ibmvfc_tgt_adisc()
3793 struct ibmvfc_target *tgt = evt->tgt; in ibmvfc_tgt_query_target_done() local
3800 ibmvfc_set_tgt_action(tgt, IBMVFC_TGT_ACTION_NONE); in ibmvfc_tgt_query_target_done()
3803 tgt_dbg(tgt, "Query Target succeeded\n"); in ibmvfc_tgt_query_target_done()
3804 tgt->new_scsi_id = be64_to_cpu(rsp->scsi_id); in ibmvfc_tgt_query_target_done()
3805 if (be64_to_cpu(rsp->scsi_id) != tgt->scsi_id) in ibmvfc_tgt_query_target_done()
3806 ibmvfc_init_tgt(tgt, ibmvfc_tgt_implicit_logout); in ibmvfc_tgt_query_target_done()
3808 ibmvfc_init_tgt(tgt, ibmvfc_tgt_adisc); in ibmvfc_tgt_query_target_done()
3813 ibmvfc_retry_tgt_init(tgt, ibmvfc_tgt_query_target); in ibmvfc_tgt_query_target_done()
3820 ibmvfc_set_tgt_action(tgt, IBMVFC_TGT_ACTION_DEL_RPORT); in ibmvfc_tgt_query_target_done()
3822 level += ibmvfc_retry_tgt_init(tgt, ibmvfc_tgt_query_target); in ibmvfc_tgt_query_target_done()
3824 ibmvfc_set_tgt_action(tgt, IBMVFC_TGT_ACTION_DEL_RPORT); in ibmvfc_tgt_query_target_done()
3826 tgt_log(tgt, level, "Query Target failed: %s (%x:%x) %s (%x) %s (%x) rc=0x%02X\n", in ibmvfc_tgt_query_target_done()
3834 kref_put(&tgt->kref, ibmvfc_release_tgt); in ibmvfc_tgt_query_target_done()
3844 static void ibmvfc_tgt_query_target(struct ibmvfc_target *tgt) in ibmvfc_tgt_query_target() argument
3847 struct ibmvfc_host *vhost = tgt->vhost; in ibmvfc_tgt_query_target()
3853 kref_get(&tgt->kref); in ibmvfc_tgt_query_target()
3856 evt->tgt = tgt; in ibmvfc_tgt_query_target()
3863 query_tgt->wwpn = cpu_to_be64(tgt->ids.port_name); in ibmvfc_tgt_query_target()
3865 ibmvfc_set_tgt_action(tgt, IBMVFC_TGT_ACTION_INIT_WAIT); in ibmvfc_tgt_query_target()
3868 ibmvfc_set_tgt_action(tgt, IBMVFC_TGT_ACTION_NONE); in ibmvfc_tgt_query_target()
3869 kref_put(&tgt->kref, ibmvfc_release_tgt); in ibmvfc_tgt_query_target()
3871 tgt_dbg(tgt, "Sent Query Target\n"); in ibmvfc_tgt_query_target()
3884 struct ibmvfc_target *tgt; in ibmvfc_alloc_target() local
3888 list_for_each_entry(tgt, &vhost->targets, queue) { in ibmvfc_alloc_target()
3889 if (tgt->scsi_id == scsi_id) { in ibmvfc_alloc_target()
3890 if (tgt->need_login) in ibmvfc_alloc_target()
3891 ibmvfc_init_tgt(tgt, ibmvfc_tgt_implicit_logout); in ibmvfc_alloc_target()
3897 tgt = mempool_alloc(vhost->tgt_pool, GFP_NOIO); in ibmvfc_alloc_target()
3898 if (!tgt) { in ibmvfc_alloc_target()
3904 memset(tgt, 0, sizeof(*tgt)); in ibmvfc_alloc_target()
3905 tgt->scsi_id = scsi_id; in ibmvfc_alloc_target()
3906 tgt->new_scsi_id = scsi_id; in ibmvfc_alloc_target()
3907 tgt->vhost = vhost; in ibmvfc_alloc_target()
3908 tgt->need_login = 1; in ibmvfc_alloc_target()
3909 tgt->cancel_key = vhost->task_set++; in ibmvfc_alloc_target()
3910 init_timer(&tgt->timer); in ibmvfc_alloc_target()
3911 kref_init(&tgt->kref); in ibmvfc_alloc_target()
3912 ibmvfc_init_tgt(tgt, ibmvfc_tgt_implicit_logout); in ibmvfc_alloc_target()
3914 list_add_tail(&tgt->queue, &vhost->targets); in ibmvfc_alloc_target()
4186 struct ibmvfc_target *tgt; in ibmvfc_dev_init_to_do() local
4188 list_for_each_entry(tgt, &vhost->targets, queue) { in ibmvfc_dev_init_to_do()
4189 if (tgt->action == IBMVFC_TGT_ACTION_INIT || in ibmvfc_dev_init_to_do()
4190 tgt->action == IBMVFC_TGT_ACTION_INIT_WAIT) in ibmvfc_dev_init_to_do()
4206 struct ibmvfc_target *tgt; in __ibmvfc_work_to_do() local
4219 list_for_each_entry(tgt, &vhost->targets, queue) in __ibmvfc_work_to_do()
4220 if (tgt->action == IBMVFC_TGT_ACTION_INIT) in __ibmvfc_work_to_do()
4222 list_for_each_entry(tgt, &vhost->targets, queue) in __ibmvfc_work_to_do()
4223 if (tgt->action == IBMVFC_TGT_ACTION_INIT_WAIT) in __ibmvfc_work_to_do()
4282 static void ibmvfc_tgt_add_rport(struct ibmvfc_target *tgt) in ibmvfc_tgt_add_rport() argument
4284 struct ibmvfc_host *vhost = tgt->vhost; in ibmvfc_tgt_add_rport()
4288 tgt_dbg(tgt, "Adding rport\n"); in ibmvfc_tgt_add_rport()
4289 rport = fc_remote_port_add(vhost->host, 0, &tgt->ids); in ibmvfc_tgt_add_rport()
4292 if (rport && tgt->action == IBMVFC_TGT_ACTION_DEL_RPORT) { in ibmvfc_tgt_add_rport()
4293 tgt_dbg(tgt, "Deleting rport\n"); in ibmvfc_tgt_add_rport()
4294 list_del(&tgt->queue); in ibmvfc_tgt_add_rport()
4295 ibmvfc_set_tgt_action(tgt, IBMVFC_TGT_ACTION_DELETED_RPORT); in ibmvfc_tgt_add_rport()
4298 del_timer_sync(&tgt->timer); in ibmvfc_tgt_add_rport()
4299 kref_put(&tgt->kref, ibmvfc_release_tgt); in ibmvfc_tgt_add_rport()
4301 } else if (rport && tgt->action == IBMVFC_TGT_ACTION_DELETED_RPORT) { in ibmvfc_tgt_add_rport()
4307 tgt_dbg(tgt, "rport add succeeded\n"); in ibmvfc_tgt_add_rport()
4308 tgt->rport = rport; in ibmvfc_tgt_add_rport()
4309 rport->maxframe_size = be16_to_cpu(tgt->service_parms.common.bb_rcv_sz) & 0x0fff; in ibmvfc_tgt_add_rport()
4311 tgt->target_id = rport->scsi_target_id; in ibmvfc_tgt_add_rport()
4312 if (be32_to_cpu(tgt->service_parms.class1_parms[0]) & 0x80000000) in ibmvfc_tgt_add_rport()
4314 if (be32_to_cpu(tgt->service_parms.class2_parms[0]) & 0x80000000) in ibmvfc_tgt_add_rport()
4316 if (be32_to_cpu(tgt->service_parms.class3_parms[0]) & 0x80000000) in ibmvfc_tgt_add_rport()
4321 tgt_dbg(tgt, "rport add failed\n"); in ibmvfc_tgt_add_rport()
4332 struct ibmvfc_target *tgt; in ibmvfc_do_work() local
4382 list_for_each_entry(tgt, &vhost->targets, queue) in ibmvfc_do_work()
4383 ibmvfc_init_tgt(tgt, ibmvfc_tgt_query_target); in ibmvfc_do_work()
4387 list_for_each_entry(tgt, &vhost->targets, queue) { in ibmvfc_do_work()
4388 if (tgt->action == IBMVFC_TGT_ACTION_INIT) { in ibmvfc_do_work()
4389 tgt->job_step(tgt); in ibmvfc_do_work()
4399 list_for_each_entry(tgt, &vhost->targets, queue) { in ibmvfc_do_work()
4400 if (tgt->action == IBMVFC_TGT_ACTION_DEL_RPORT) { in ibmvfc_do_work()
4401 tgt_dbg(tgt, "Deleting rport\n"); in ibmvfc_do_work()
4402 rport = tgt->rport; in ibmvfc_do_work()
4403 tgt->rport = NULL; in ibmvfc_do_work()
4404 list_del(&tgt->queue); in ibmvfc_do_work()
4405 ibmvfc_set_tgt_action(tgt, IBMVFC_TGT_ACTION_DELETED_RPORT); in ibmvfc_do_work()
4409 del_timer_sync(&tgt->timer); in ibmvfc_do_work()
4410 kref_put(&tgt->kref, ibmvfc_release_tgt); in ibmvfc_do_work()
4452 list_for_each_entry(tgt, &vhost->targets, queue) { in ibmvfc_do_work()
4453 if (tgt->action == IBMVFC_TGT_ACTION_INIT) { in ibmvfc_do_work()
4454 tgt->job_step(tgt); in ibmvfc_do_work()
4699 struct ibmvfc_target *tgt; in ibmvfc_rport_add_thread() local
4711 list_for_each_entry(tgt, &vhost->targets, queue) { in ibmvfc_rport_add_thread()
4712 if (tgt->add_rport) { in ibmvfc_rport_add_thread()
4714 tgt->add_rport = 0; in ibmvfc_rport_add_thread()
4715 kref_get(&tgt->kref); in ibmvfc_rport_add_thread()
4716 rport = tgt->rport; in ibmvfc_rport_add_thread()
4719 ibmvfc_tgt_add_rport(tgt); in ibmvfc_rport_add_thread()
4722 tgt_dbg(tgt, "Setting rport roles\n"); in ibmvfc_rport_add_thread()
4723 fc_remote_port_rolechg(rport, tgt->ids.roles); in ibmvfc_rport_add_thread()
4727 kref_put(&tgt->kref, ibmvfc_release_tgt); in ibmvfc_rport_add_thread()