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()
3223 static void ibmvfc_init_tgt(struct ibmvfc_target *tgt, in ibmvfc_init_tgt() argument
3226 ibmvfc_set_tgt_action(tgt, IBMVFC_TGT_ACTION_INIT); in ibmvfc_init_tgt()
3227 tgt->job_step = job_step; in ibmvfc_init_tgt()
3228 wake_up(&tgt->vhost->work_wait_q); in ibmvfc_init_tgt()
3239 static int ibmvfc_retry_tgt_init(struct ibmvfc_target *tgt, in ibmvfc_retry_tgt_init() argument
3242 if (++tgt->init_retries > IBMVFC_MAX_TGT_INIT_RETRIES) { in ibmvfc_retry_tgt_init()
3243 ibmvfc_set_tgt_action(tgt, IBMVFC_TGT_ACTION_DEL_RPORT); in ibmvfc_retry_tgt_init()
3244 wake_up(&tgt->vhost->work_wait_q); in ibmvfc_retry_tgt_init()
3247 ibmvfc_init_tgt(tgt, job_step); in ibmvfc_retry_tgt_init()
3292 struct ibmvfc_target *tgt = evt->tgt; in ibmvfc_tgt_prli_done() local
3300 ibmvfc_set_tgt_action(tgt, IBMVFC_TGT_ACTION_NONE); in ibmvfc_tgt_prli_done()
3303 tgt_dbg(tgt, "Process Login succeeded: %X %02X %04X\n", in ibmvfc_tgt_prli_done()
3310 tgt->need_login = 0; in ibmvfc_tgt_prli_done()
3311 tgt->ids.roles = 0; in ibmvfc_tgt_prli_done()
3313 tgt->ids.roles |= FC_PORT_ROLE_FCP_TARGET; in ibmvfc_tgt_prli_done()
3315 tgt->ids.roles |= FC_PORT_ROLE_FCP_INITIATOR; in ibmvfc_tgt_prli_done()
3316 tgt->add_rport = 1; in ibmvfc_tgt_prli_done()
3318 ibmvfc_set_tgt_action(tgt, IBMVFC_TGT_ACTION_DEL_RPORT); in ibmvfc_tgt_prli_done()
3320 ibmvfc_retry_tgt_init(tgt, ibmvfc_tgt_send_prli); in ibmvfc_tgt_prli_done()
3322 ibmvfc_set_tgt_action(tgt, IBMVFC_TGT_ACTION_DEL_RPORT); in ibmvfc_tgt_prli_done()
3324 ibmvfc_set_tgt_action(tgt, IBMVFC_TGT_ACTION_DEL_RPORT); in ibmvfc_tgt_prli_done()
3329 ibmvfc_retry_tgt_init(tgt, ibmvfc_tgt_send_prli); in ibmvfc_tgt_prli_done()
3335 level += ibmvfc_retry_tgt_init(tgt, ibmvfc_tgt_send_plogi); in ibmvfc_tgt_prli_done()
3336 else if (tgt->logo_rcvd) in ibmvfc_tgt_prli_done()
3337 level += ibmvfc_retry_tgt_init(tgt, ibmvfc_tgt_send_plogi); in ibmvfc_tgt_prli_done()
3339 level += ibmvfc_retry_tgt_init(tgt, ibmvfc_tgt_send_prli); in ibmvfc_tgt_prli_done()
3341 ibmvfc_set_tgt_action(tgt, IBMVFC_TGT_ACTION_DEL_RPORT); in ibmvfc_tgt_prli_done()
3343 tgt_log(tgt, level, "Process Login failed: %s (%x:%x) rc=0x%02X\n", in ibmvfc_tgt_prli_done()
3349 kref_put(&tgt->kref, ibmvfc_release_tgt); in ibmvfc_tgt_prli_done()
3359 static void ibmvfc_tgt_send_prli(struct ibmvfc_target *tgt) in ibmvfc_tgt_send_prli() argument
3362 struct ibmvfc_host *vhost = tgt->vhost; in ibmvfc_tgt_send_prli()
3368 kref_get(&tgt->kref); in ibmvfc_tgt_send_prli()
3372 evt->tgt = tgt; in ibmvfc_tgt_send_prli()
3378 prli->scsi_id = cpu_to_be64(tgt->scsi_id); in ibmvfc_tgt_send_prli()
3384 ibmvfc_set_tgt_action(tgt, IBMVFC_TGT_ACTION_INIT_WAIT); in ibmvfc_tgt_send_prli()
3387 ibmvfc_set_tgt_action(tgt, IBMVFC_TGT_ACTION_NONE); in ibmvfc_tgt_send_prli()
3388 kref_put(&tgt->kref, ibmvfc_release_tgt); in ibmvfc_tgt_send_prli()
3390 tgt_dbg(tgt, "Sent process login\n"); in ibmvfc_tgt_send_prli()
3400 struct ibmvfc_target *tgt = evt->tgt; in ibmvfc_tgt_plogi_done() local
3407 ibmvfc_set_tgt_action(tgt, IBMVFC_TGT_ACTION_NONE); in ibmvfc_tgt_plogi_done()
3410 tgt_dbg(tgt, "Port Login succeeded\n"); in ibmvfc_tgt_plogi_done()
3411 if (tgt->ids.port_name && in ibmvfc_tgt_plogi_done()
3412 tgt->ids.port_name != wwn_to_u64(rsp->service_parms.port_name)) { in ibmvfc_tgt_plogi_done()
3414 tgt_dbg(tgt, "Port re-init required\n"); in ibmvfc_tgt_plogi_done()
3417 tgt->ids.node_name = wwn_to_u64(rsp->service_parms.node_name); in ibmvfc_tgt_plogi_done()
3418 tgt->ids.port_name = wwn_to_u64(rsp->service_parms.port_name); in ibmvfc_tgt_plogi_done()
3419 tgt->ids.port_id = tgt->scsi_id; in ibmvfc_tgt_plogi_done()
3420 memcpy(&tgt->service_parms, &rsp->service_parms, in ibmvfc_tgt_plogi_done()
3421 sizeof(tgt->service_parms)); in ibmvfc_tgt_plogi_done()
3422 memcpy(&tgt->service_parms_change, &rsp->service_parms_change, in ibmvfc_tgt_plogi_done()
3423 sizeof(tgt->service_parms_change)); in ibmvfc_tgt_plogi_done()
3424 ibmvfc_init_tgt(tgt, ibmvfc_tgt_send_prli); in ibmvfc_tgt_plogi_done()
3429 ibmvfc_retry_tgt_init(tgt, ibmvfc_tgt_send_plogi); in ibmvfc_tgt_plogi_done()
3434 level += ibmvfc_retry_tgt_init(tgt, ibmvfc_tgt_send_plogi); in ibmvfc_tgt_plogi_done()
3436 ibmvfc_set_tgt_action(tgt, IBMVFC_TGT_ACTION_DEL_RPORT); in ibmvfc_tgt_plogi_done()
3438 tgt_log(tgt, level, "Port Login failed: %s (%x:%x) %s (%x) %s (%x) rc=0x%02X\n", in ibmvfc_tgt_plogi_done()
3445 kref_put(&tgt->kref, ibmvfc_release_tgt); in ibmvfc_tgt_plogi_done()
3455 static void ibmvfc_tgt_send_plogi(struct ibmvfc_target *tgt) in ibmvfc_tgt_send_plogi() argument
3458 struct ibmvfc_host *vhost = tgt->vhost; in ibmvfc_tgt_send_plogi()
3464 kref_get(&tgt->kref); in ibmvfc_tgt_send_plogi()
3465 tgt->logo_rcvd = 0; in ibmvfc_tgt_send_plogi()
3468 ibmvfc_set_tgt_action(tgt, IBMVFC_TGT_ACTION_INIT_WAIT); in ibmvfc_tgt_send_plogi()
3470 evt->tgt = tgt; in ibmvfc_tgt_send_plogi()
3476 plogi->scsi_id = cpu_to_be64(tgt->scsi_id); in ibmvfc_tgt_send_plogi()
3480 ibmvfc_set_tgt_action(tgt, IBMVFC_TGT_ACTION_NONE); in ibmvfc_tgt_send_plogi()
3481 kref_put(&tgt->kref, ibmvfc_release_tgt); in ibmvfc_tgt_send_plogi()
3483 tgt_dbg(tgt, "Sent port login\n"); in ibmvfc_tgt_send_plogi()
3493 struct ibmvfc_target *tgt = evt->tgt; in ibmvfc_tgt_implicit_logout_done() local
3500 ibmvfc_set_tgt_action(tgt, IBMVFC_TGT_ACTION_NONE); in ibmvfc_tgt_implicit_logout_done()
3504 tgt_dbg(tgt, "Implicit Logout succeeded\n"); in ibmvfc_tgt_implicit_logout_done()
3507 kref_put(&tgt->kref, ibmvfc_release_tgt); in ibmvfc_tgt_implicit_logout_done()
3512 tgt_err(tgt, "Implicit Logout failed: rc=0x%02X\n", status); in ibmvfc_tgt_implicit_logout_done()
3517 ibmvfc_init_tgt(tgt, ibmvfc_tgt_send_plogi); in ibmvfc_tgt_implicit_logout_done()
3519 tgt->scsi_id != tgt->new_scsi_id) in ibmvfc_tgt_implicit_logout_done()
3520 ibmvfc_set_tgt_action(tgt, IBMVFC_TGT_ACTION_DEL_RPORT); in ibmvfc_tgt_implicit_logout_done()
3521 kref_put(&tgt->kref, ibmvfc_release_tgt); in ibmvfc_tgt_implicit_logout_done()
3530 static void ibmvfc_tgt_implicit_logout(struct ibmvfc_target *tgt) in ibmvfc_tgt_implicit_logout() argument
3533 struct ibmvfc_host *vhost = tgt->vhost; in ibmvfc_tgt_implicit_logout()
3539 kref_get(&tgt->kref); in ibmvfc_tgt_implicit_logout()
3543 evt->tgt = tgt; in ibmvfc_tgt_implicit_logout()
3549 mad->old_scsi_id = cpu_to_be64(tgt->scsi_id); in ibmvfc_tgt_implicit_logout()
3551 ibmvfc_set_tgt_action(tgt, IBMVFC_TGT_ACTION_INIT_WAIT); in ibmvfc_tgt_implicit_logout()
3554 ibmvfc_set_tgt_action(tgt, IBMVFC_TGT_ACTION_NONE); in ibmvfc_tgt_implicit_logout()
3555 kref_put(&tgt->kref, ibmvfc_release_tgt); in ibmvfc_tgt_implicit_logout()
3557 tgt_dbg(tgt, "Sent Implicit Logout\n"); in ibmvfc_tgt_implicit_logout()
3569 struct ibmvfc_target *tgt) in ibmvfc_adisc_needs_plogi() argument
3571 if (memcmp(&mad->fc_iu.response[2], &tgt->ids.port_name, in ibmvfc_adisc_needs_plogi()
3572 sizeof(tgt->ids.port_name))) in ibmvfc_adisc_needs_plogi()
3574 if (memcmp(&mad->fc_iu.response[4], &tgt->ids.node_name, in ibmvfc_adisc_needs_plogi()
3575 sizeof(tgt->ids.node_name))) in ibmvfc_adisc_needs_plogi()
3577 if (be32_to_cpu(mad->fc_iu.response[6]) != tgt->scsi_id) in ibmvfc_adisc_needs_plogi()
3589 struct ibmvfc_target *tgt = evt->tgt; in ibmvfc_tgt_adisc_done() local
3596 ibmvfc_set_tgt_action(tgt, IBMVFC_TGT_ACTION_NONE); in ibmvfc_tgt_adisc_done()
3597 del_timer(&tgt->timer); in ibmvfc_tgt_adisc_done()
3601 tgt_dbg(tgt, "ADISC succeeded\n"); in ibmvfc_tgt_adisc_done()
3602 if (ibmvfc_adisc_needs_plogi(mad, tgt)) in ibmvfc_tgt_adisc_done()
3603 ibmvfc_set_tgt_action(tgt, IBMVFC_TGT_ACTION_DEL_RPORT); in ibmvfc_tgt_adisc_done()
3609 ibmvfc_set_tgt_action(tgt, IBMVFC_TGT_ACTION_DEL_RPORT); in ibmvfc_tgt_adisc_done()
3612 tgt_info(tgt, "ADISC failed: %s (%x:%x) %s (%x) %s (%x) rc=0x%02X\n", in ibmvfc_tgt_adisc_done()
3620 kref_put(&tgt->kref, ibmvfc_release_tgt); in ibmvfc_tgt_adisc_done()
3666 struct ibmvfc_target *tgt = evt->tgt; in ibmvfc_tgt_adisc_cancel_done() local
3668 tgt_dbg(tgt, "ADISC cancel complete\n"); in ibmvfc_tgt_adisc_cancel_done()
3671 kref_put(&tgt->kref, ibmvfc_release_tgt); in ibmvfc_tgt_adisc_cancel_done()
3683 static void ibmvfc_adisc_timeout(struct ibmvfc_target *tgt) in ibmvfc_adisc_timeout() argument
3685 struct ibmvfc_host *vhost = tgt->vhost; in ibmvfc_adisc_timeout()
3691 tgt_dbg(tgt, "ADISC timeout\n"); in ibmvfc_adisc_timeout()
3694 tgt->action != IBMVFC_TGT_ACTION_INIT_WAIT || in ibmvfc_adisc_timeout()
3702 kref_get(&tgt->kref); in ibmvfc_adisc_timeout()
3706 evt->tgt = tgt; in ibmvfc_adisc_timeout()
3712 tmf->scsi_id = cpu_to_be64(tgt->scsi_id); in ibmvfc_adisc_timeout()
3713 tmf->cancel_key = cpu_to_be32(tgt->cancel_key); in ibmvfc_adisc_timeout()
3718 tgt_err(tgt, "Failed to send cancel event for ADISC. rc=%d\n", rc); in ibmvfc_adisc_timeout()
3720 kref_put(&tgt->kref, ibmvfc_release_tgt); in ibmvfc_adisc_timeout()
3723 tgt_dbg(tgt, "Attempting to cancel ADISC\n"); in ibmvfc_adisc_timeout()
3738 static void ibmvfc_tgt_adisc(struct ibmvfc_target *tgt) in ibmvfc_tgt_adisc() argument
3741 struct ibmvfc_host *vhost = tgt->vhost; in ibmvfc_tgt_adisc()
3747 kref_get(&tgt->kref); in ibmvfc_tgt_adisc()
3751 evt->tgt = tgt; in ibmvfc_tgt_adisc()
3756 mad->iu.scsi_id = cpu_to_be64(tgt->scsi_id); in ibmvfc_tgt_adisc()
3757 mad->iu.cancel_key = cpu_to_be32(tgt->cancel_key); in ibmvfc_tgt_adisc()
3766 if (timer_pending(&tgt->timer)) in ibmvfc_tgt_adisc()
3767 mod_timer(&tgt->timer, jiffies + (IBMVFC_ADISC_TIMEOUT * HZ)); in ibmvfc_tgt_adisc()
3769 tgt->timer.data = (unsigned long) tgt; in ibmvfc_tgt_adisc()
3770 tgt->timer.expires = jiffies + (IBMVFC_ADISC_TIMEOUT * HZ); in ibmvfc_tgt_adisc()
3771 tgt->timer.function = (void (*)(unsigned long))ibmvfc_adisc_timeout; in ibmvfc_tgt_adisc()
3772 add_timer(&tgt->timer); in ibmvfc_tgt_adisc()
3775 ibmvfc_set_tgt_action(tgt, IBMVFC_TGT_ACTION_INIT_WAIT); in ibmvfc_tgt_adisc()
3778 del_timer(&tgt->timer); in ibmvfc_tgt_adisc()
3779 ibmvfc_set_tgt_action(tgt, IBMVFC_TGT_ACTION_NONE); in ibmvfc_tgt_adisc()
3780 kref_put(&tgt->kref, ibmvfc_release_tgt); in ibmvfc_tgt_adisc()
3782 tgt_dbg(tgt, "Sent ADISC\n"); in ibmvfc_tgt_adisc()
3792 struct ibmvfc_target *tgt = evt->tgt; in ibmvfc_tgt_query_target_done() local
3799 ibmvfc_set_tgt_action(tgt, IBMVFC_TGT_ACTION_NONE); in ibmvfc_tgt_query_target_done()
3802 tgt_dbg(tgt, "Query Target succeeded\n"); in ibmvfc_tgt_query_target_done()
3803 tgt->new_scsi_id = be64_to_cpu(rsp->scsi_id); in ibmvfc_tgt_query_target_done()
3804 if (be64_to_cpu(rsp->scsi_id) != tgt->scsi_id) in ibmvfc_tgt_query_target_done()
3805 ibmvfc_init_tgt(tgt, ibmvfc_tgt_implicit_logout); in ibmvfc_tgt_query_target_done()
3807 ibmvfc_init_tgt(tgt, ibmvfc_tgt_adisc); in ibmvfc_tgt_query_target_done()
3812 ibmvfc_retry_tgt_init(tgt, ibmvfc_tgt_query_target); in ibmvfc_tgt_query_target_done()
3819 ibmvfc_set_tgt_action(tgt, IBMVFC_TGT_ACTION_DEL_RPORT); in ibmvfc_tgt_query_target_done()
3821 level += ibmvfc_retry_tgt_init(tgt, ibmvfc_tgt_query_target); in ibmvfc_tgt_query_target_done()
3823 ibmvfc_set_tgt_action(tgt, IBMVFC_TGT_ACTION_DEL_RPORT); in ibmvfc_tgt_query_target_done()
3825 tgt_log(tgt, level, "Query Target failed: %s (%x:%x) %s (%x) %s (%x) rc=0x%02X\n", in ibmvfc_tgt_query_target_done()
3833 kref_put(&tgt->kref, ibmvfc_release_tgt); in ibmvfc_tgt_query_target_done()
3843 static void ibmvfc_tgt_query_target(struct ibmvfc_target *tgt) in ibmvfc_tgt_query_target() argument
3846 struct ibmvfc_host *vhost = tgt->vhost; in ibmvfc_tgt_query_target()
3852 kref_get(&tgt->kref); in ibmvfc_tgt_query_target()
3855 evt->tgt = tgt; in ibmvfc_tgt_query_target()
3862 query_tgt->wwpn = cpu_to_be64(tgt->ids.port_name); in ibmvfc_tgt_query_target()
3864 ibmvfc_set_tgt_action(tgt, IBMVFC_TGT_ACTION_INIT_WAIT); in ibmvfc_tgt_query_target()
3867 ibmvfc_set_tgt_action(tgt, IBMVFC_TGT_ACTION_NONE); in ibmvfc_tgt_query_target()
3868 kref_put(&tgt->kref, ibmvfc_release_tgt); in ibmvfc_tgt_query_target()
3870 tgt_dbg(tgt, "Sent Query Target\n"); in ibmvfc_tgt_query_target()
3883 struct ibmvfc_target *tgt; in ibmvfc_alloc_target() local
3887 list_for_each_entry(tgt, &vhost->targets, queue) { in ibmvfc_alloc_target()
3888 if (tgt->scsi_id == scsi_id) { in ibmvfc_alloc_target()
3889 if (tgt->need_login) in ibmvfc_alloc_target()
3890 ibmvfc_init_tgt(tgt, ibmvfc_tgt_implicit_logout); in ibmvfc_alloc_target()
3896 tgt = mempool_alloc(vhost->tgt_pool, GFP_NOIO); in ibmvfc_alloc_target()
3897 if (!tgt) { in ibmvfc_alloc_target()
3903 memset(tgt, 0, sizeof(*tgt)); in ibmvfc_alloc_target()
3904 tgt->scsi_id = scsi_id; in ibmvfc_alloc_target()
3905 tgt->new_scsi_id = scsi_id; in ibmvfc_alloc_target()
3906 tgt->vhost = vhost; in ibmvfc_alloc_target()
3907 tgt->need_login = 1; in ibmvfc_alloc_target()
3908 tgt->cancel_key = vhost->task_set++; in ibmvfc_alloc_target()
3909 init_timer(&tgt->timer); in ibmvfc_alloc_target()
3910 kref_init(&tgt->kref); in ibmvfc_alloc_target()
3911 ibmvfc_init_tgt(tgt, ibmvfc_tgt_implicit_logout); in ibmvfc_alloc_target()
3913 list_add_tail(&tgt->queue, &vhost->targets); in ibmvfc_alloc_target()
4185 struct ibmvfc_target *tgt; in ibmvfc_dev_init_to_do() local
4187 list_for_each_entry(tgt, &vhost->targets, queue) { in ibmvfc_dev_init_to_do()
4188 if (tgt->action == IBMVFC_TGT_ACTION_INIT || in ibmvfc_dev_init_to_do()
4189 tgt->action == IBMVFC_TGT_ACTION_INIT_WAIT) in ibmvfc_dev_init_to_do()
4205 struct ibmvfc_target *tgt; in __ibmvfc_work_to_do() local
4218 list_for_each_entry(tgt, &vhost->targets, queue) in __ibmvfc_work_to_do()
4219 if (tgt->action == IBMVFC_TGT_ACTION_INIT) in __ibmvfc_work_to_do()
4221 list_for_each_entry(tgt, &vhost->targets, queue) in __ibmvfc_work_to_do()
4222 if (tgt->action == IBMVFC_TGT_ACTION_INIT_WAIT) in __ibmvfc_work_to_do()
4281 static void ibmvfc_tgt_add_rport(struct ibmvfc_target *tgt) in ibmvfc_tgt_add_rport() argument
4283 struct ibmvfc_host *vhost = tgt->vhost; in ibmvfc_tgt_add_rport()
4287 tgt_dbg(tgt, "Adding rport\n"); in ibmvfc_tgt_add_rport()
4288 rport = fc_remote_port_add(vhost->host, 0, &tgt->ids); in ibmvfc_tgt_add_rport()
4291 if (rport && tgt->action == IBMVFC_TGT_ACTION_DEL_RPORT) { in ibmvfc_tgt_add_rport()
4292 tgt_dbg(tgt, "Deleting rport\n"); in ibmvfc_tgt_add_rport()
4293 list_del(&tgt->queue); in ibmvfc_tgt_add_rport()
4294 ibmvfc_set_tgt_action(tgt, IBMVFC_TGT_ACTION_DELETED_RPORT); in ibmvfc_tgt_add_rport()
4297 del_timer_sync(&tgt->timer); in ibmvfc_tgt_add_rport()
4298 kref_put(&tgt->kref, ibmvfc_release_tgt); in ibmvfc_tgt_add_rport()
4300 } else if (rport && tgt->action == IBMVFC_TGT_ACTION_DELETED_RPORT) { in ibmvfc_tgt_add_rport()
4306 tgt_dbg(tgt, "rport add succeeded\n"); in ibmvfc_tgt_add_rport()
4307 tgt->rport = rport; in ibmvfc_tgt_add_rport()
4308 rport->maxframe_size = be16_to_cpu(tgt->service_parms.common.bb_rcv_sz) & 0x0fff; in ibmvfc_tgt_add_rport()
4310 tgt->target_id = rport->scsi_target_id; in ibmvfc_tgt_add_rport()
4311 if (be32_to_cpu(tgt->service_parms.class1_parms[0]) & 0x80000000) in ibmvfc_tgt_add_rport()
4313 if (be32_to_cpu(tgt->service_parms.class2_parms[0]) & 0x80000000) in ibmvfc_tgt_add_rport()
4315 if (be32_to_cpu(tgt->service_parms.class3_parms[0]) & 0x80000000) in ibmvfc_tgt_add_rport()
4320 tgt_dbg(tgt, "rport add failed\n"); in ibmvfc_tgt_add_rport()
4331 struct ibmvfc_target *tgt; in ibmvfc_do_work() local
4381 list_for_each_entry(tgt, &vhost->targets, queue) in ibmvfc_do_work()
4382 ibmvfc_init_tgt(tgt, ibmvfc_tgt_query_target); in ibmvfc_do_work()
4386 list_for_each_entry(tgt, &vhost->targets, queue) { in ibmvfc_do_work()
4387 if (tgt->action == IBMVFC_TGT_ACTION_INIT) { in ibmvfc_do_work()
4388 tgt->job_step(tgt); in ibmvfc_do_work()
4398 list_for_each_entry(tgt, &vhost->targets, queue) { in ibmvfc_do_work()
4399 if (tgt->action == IBMVFC_TGT_ACTION_DEL_RPORT) { in ibmvfc_do_work()
4400 tgt_dbg(tgt, "Deleting rport\n"); in ibmvfc_do_work()
4401 rport = tgt->rport; in ibmvfc_do_work()
4402 tgt->rport = NULL; in ibmvfc_do_work()
4403 list_del(&tgt->queue); in ibmvfc_do_work()
4404 ibmvfc_set_tgt_action(tgt, IBMVFC_TGT_ACTION_DELETED_RPORT); in ibmvfc_do_work()
4408 del_timer_sync(&tgt->timer); in ibmvfc_do_work()
4409 kref_put(&tgt->kref, ibmvfc_release_tgt); in ibmvfc_do_work()
4451 list_for_each_entry(tgt, &vhost->targets, queue) { in ibmvfc_do_work()
4452 if (tgt->action == IBMVFC_TGT_ACTION_INIT) { in ibmvfc_do_work()
4453 tgt->job_step(tgt); in ibmvfc_do_work()
4698 struct ibmvfc_target *tgt; in ibmvfc_rport_add_thread() local
4710 list_for_each_entry(tgt, &vhost->targets, queue) { in ibmvfc_rport_add_thread()
4711 if (tgt->add_rport) { in ibmvfc_rport_add_thread()
4713 tgt->add_rport = 0; in ibmvfc_rport_add_thread()
4714 kref_get(&tgt->kref); in ibmvfc_rport_add_thread()
4715 rport = tgt->rport; in ibmvfc_rport_add_thread()
4718 ibmvfc_tgt_add_rport(tgt); in ibmvfc_rport_add_thread()
4721 tgt_dbg(tgt, "Setting rport roles\n"); in ibmvfc_rport_add_thread()
4722 fc_remote_port_rolechg(rport, tgt->ids.roles); in ibmvfc_rport_add_thread()
4726 kref_put(&tgt->kref, ibmvfc_release_tgt); in ibmvfc_rport_add_thread()