Lines Matching refs:ndlp
80 struct lpfc_nodelist * ndlp; in lpfc_terminate_rport_io() local
84 ndlp = rdata->pnode; in lpfc_terminate_rport_io()
86 if (!ndlp || !NLP_CHK_NODE_ACT(ndlp)) { in lpfc_terminate_rport_io()
94 phba = ndlp->phba; in lpfc_terminate_rport_io()
96 lpfc_debugfs_disc_trc(ndlp->vport, LPFC_DISC_TRC_RPORT, in lpfc_terminate_rport_io()
98 ndlp->nlp_sid, ndlp->nlp_DID, ndlp->nlp_flag); in lpfc_terminate_rport_io()
100 if (ndlp->nlp_sid != NLP_NO_SID) { in lpfc_terminate_rport_io()
101 lpfc_sli_abort_iocb(ndlp->vport, in lpfc_terminate_rport_io()
103 ndlp->nlp_sid, 0, LPFC_CTX_TGT); in lpfc_terminate_rport_io()
114 struct lpfc_nodelist * ndlp; in lpfc_dev_loss_tmo_callbk() local
124 ndlp = rdata->pnode; in lpfc_dev_loss_tmo_callbk()
125 if (!ndlp || !NLP_CHK_NODE_ACT(ndlp)) in lpfc_dev_loss_tmo_callbk()
128 vport = ndlp->vport; in lpfc_dev_loss_tmo_callbk()
133 ndlp->nlp_sid, ndlp->nlp_DID, ndlp->nlp_flag); in lpfc_dev_loss_tmo_callbk()
135 lpfc_printf_vlog(ndlp->vport, KERN_INFO, LOG_NODE, in lpfc_dev_loss_tmo_callbk()
137 ndlp->nlp_DID, ndlp->rport, ndlp->nlp_flag); in lpfc_dev_loss_tmo_callbk()
145 put_rport = ndlp->rport != NULL; in lpfc_dev_loss_tmo_callbk()
147 ndlp->rport = NULL; in lpfc_dev_loss_tmo_callbk()
149 lpfc_nlp_put(ndlp); in lpfc_dev_loss_tmo_callbk()
155 if (ndlp->nlp_state == NLP_STE_MAPPED_NODE) in lpfc_dev_loss_tmo_callbk()
158 if (rport->port_name != wwn_to_u64(ndlp->nlp_portname.u.wwn)) in lpfc_dev_loss_tmo_callbk()
162 wwn_to_u64(ndlp->nlp_portname.u.wwn)); in lpfc_dev_loss_tmo_callbk()
164 evtp = &ndlp->dev_loss_evt; in lpfc_dev_loss_tmo_callbk()
175 ndlp->nlp_flag |= NLP_IN_DEV_LOSS; in lpfc_dev_loss_tmo_callbk()
181 evtp->evt_arg1 = lpfc_nlp_get(ndlp); in lpfc_dev_loss_tmo_callbk()
205 lpfc_dev_loss_tmo_handler(struct lpfc_nodelist *ndlp) in lpfc_dev_loss_tmo_handler() argument
218 rport = ndlp->rport; in lpfc_dev_loss_tmo_handler()
219 vport = ndlp->vport; in lpfc_dev_loss_tmo_handler()
223 ndlp->nlp_flag &= ~NLP_IN_DEV_LOSS; in lpfc_dev_loss_tmo_handler()
229 name = (uint8_t *) &ndlp->nlp_portname; in lpfc_dev_loss_tmo_handler()
237 ndlp->nlp_DID, ndlp->nlp_type, rport->scsi_target_id); in lpfc_dev_loss_tmo_handler()
239 lpfc_printf_vlog(ndlp->vport, KERN_INFO, LOG_NODE, in lpfc_dev_loss_tmo_handler()
241 ndlp->nlp_DID, ndlp->rport, ndlp->nlp_flag); in lpfc_dev_loss_tmo_handler()
255 if (ndlp->nlp_sid != NLP_NO_SID) { in lpfc_dev_loss_tmo_handler()
259 ndlp->nlp_sid, 0, LPFC_CTX_TGT); in lpfc_dev_loss_tmo_handler()
263 ndlp->rport = NULL; in lpfc_dev_loss_tmo_handler()
265 lpfc_nlp_put(ndlp); in lpfc_dev_loss_tmo_handler()
271 if (ndlp->nlp_state == NLP_STE_MAPPED_NODE) { in lpfc_dev_loss_tmo_handler()
278 ndlp->nlp_DID); in lpfc_dev_loss_tmo_handler()
284 ndlp->rport = NULL; in lpfc_dev_loss_tmo_handler()
286 lpfc_nlp_put(ndlp); in lpfc_dev_loss_tmo_handler()
289 if (ndlp->nlp_type & NLP_FABRIC) in lpfc_dev_loss_tmo_handler()
292 if (ndlp->nlp_sid != NLP_NO_SID) { in lpfc_dev_loss_tmo_handler()
295 ndlp->nlp_sid, 0, LPFC_CTX_TGT); in lpfc_dev_loss_tmo_handler()
305 ndlp->nlp_DID, ndlp->nlp_flag, in lpfc_dev_loss_tmo_handler()
306 ndlp->nlp_state, ndlp->nlp_rpi); in lpfc_dev_loss_tmo_handler()
314 ndlp->nlp_DID, ndlp->nlp_flag, in lpfc_dev_loss_tmo_handler()
315 ndlp->nlp_state, ndlp->nlp_rpi); in lpfc_dev_loss_tmo_handler()
318 if (!(ndlp->nlp_flag & NLP_DELAY_TMO) && in lpfc_dev_loss_tmo_handler()
319 !(ndlp->nlp_flag & NLP_NPR_2B_DISC) && in lpfc_dev_loss_tmo_handler()
320 (ndlp->nlp_state != NLP_STE_UNMAPPED_NODE) && in lpfc_dev_loss_tmo_handler()
321 (ndlp->nlp_state != NLP_STE_REG_LOGIN_ISSUE) && in lpfc_dev_loss_tmo_handler()
322 (ndlp->nlp_state != NLP_STE_PRLI_ISSUE)) in lpfc_dev_loss_tmo_handler()
323 lpfc_disc_state_machine(vport, ndlp, NULL, NLP_EVT_DEVICE_RM); in lpfc_dev_loss_tmo_handler()
520 struct lpfc_nodelist *ndlp; in lpfc_work_list_done() local
533 ndlp = (struct lpfc_nodelist *) (evtp->evt_arg1); in lpfc_work_list_done()
534 lpfc_els_retry_delay_handler(ndlp); in lpfc_work_list_done()
539 lpfc_nlp_put(ndlp); in lpfc_work_list_done()
542 ndlp = (struct lpfc_nodelist *)(evtp->evt_arg1); in lpfc_work_list_done()
543 fcf_inuse = lpfc_dev_loss_tmo_handler(ndlp); in lpfc_work_list_done()
548 nlp_did = ndlp->nlp_DID; in lpfc_work_list_done()
549 lpfc_nlp_put(ndlp); in lpfc_work_list_done()
556 ndlp = (struct lpfc_nodelist *)(evtp->evt_arg1); in lpfc_work_list_done()
557 lpfc_sli_abts_recover_port(ndlp->vport, ndlp); in lpfc_work_list_done()
562 lpfc_nlp_put(ndlp); in lpfc_work_list_done()
826 struct lpfc_nodelist *ndlp, *next_ndlp; in lpfc_cleanup_rpis() local
828 list_for_each_entry_safe(ndlp, next_ndlp, &vport->fc_nodes, nlp_listp) { in lpfc_cleanup_rpis()
829 if (!NLP_CHK_NODE_ACT(ndlp)) in lpfc_cleanup_rpis()
831 if (ndlp->nlp_state == NLP_STE_UNUSED_NODE) in lpfc_cleanup_rpis()
835 (ndlp->nlp_DID == NameServer_DID))) in lpfc_cleanup_rpis()
836 lpfc_unreg_rpi(vport, ndlp); in lpfc_cleanup_rpis()
840 (!remove && ndlp->nlp_type & NLP_FABRIC)) in lpfc_cleanup_rpis()
845 ndlp->nlp_state == NLP_STE_UNMAPPED_NODE) in lpfc_cleanup_rpis()
846 lpfc_nvmet_invalidate_host(phba, ndlp); in lpfc_cleanup_rpis()
848 lpfc_disc_state_machine(vport, ndlp, NULL, in lpfc_cleanup_rpis()
997 struct lpfc_nodelist *ndlp; in lpfc_linkup_cleanup_nodes() local
999 list_for_each_entry(ndlp, &vport->fc_nodes, nlp_listp) { in lpfc_linkup_cleanup_nodes()
1000 ndlp->nlp_fc4_type &= ~(NLP_FC4_FCP | NLP_FC4_NVME); in lpfc_linkup_cleanup_nodes()
1001 if (!NLP_CHK_NODE_ACT(ndlp)) in lpfc_linkup_cleanup_nodes()
1003 if (ndlp->nlp_state == NLP_STE_UNUSED_NODE) in lpfc_linkup_cleanup_nodes()
1005 if (ndlp->nlp_type & NLP_FABRIC) { in lpfc_linkup_cleanup_nodes()
1009 if (ndlp->nlp_DID != Fabric_DID) in lpfc_linkup_cleanup_nodes()
1010 lpfc_unreg_rpi(vport, ndlp); in lpfc_linkup_cleanup_nodes()
1011 lpfc_nlp_set_state(vport, ndlp, NLP_STE_NPR_NODE); in lpfc_linkup_cleanup_nodes()
1012 } else if (!(ndlp->nlp_flag & NLP_NPR_ADISC)) { in lpfc_linkup_cleanup_nodes()
1016 lpfc_unreg_rpi(vport, ndlp); in lpfc_linkup_cleanup_nodes()
2883 struct lpfc_nodelist *ndlp; in lpfc_init_vpi_cmpl() local
2900 ndlp = lpfc_findnode_did(vport, Fabric_DID); in lpfc_init_vpi_cmpl()
2901 if (!ndlp) in lpfc_init_vpi_cmpl()
2907 lpfc_register_new_vport(phba, vport, ndlp); in lpfc_init_vpi_cmpl()
3595 struct lpfc_nodelist *ndlp = (struct lpfc_nodelist *)pmb->ctx_ndlp; in lpfc_mbx_cmpl_reg_login() local
3603 ndlp->nlp_rpi, ndlp->nlp_DID, ndlp->nlp_flag, in lpfc_mbx_cmpl_reg_login()
3604 kref_read(&ndlp->kref), in lpfc_mbx_cmpl_reg_login()
3605 ndlp->nlp_usg_map, ndlp); in lpfc_mbx_cmpl_reg_login()
3606 if (ndlp->nlp_flag & NLP_REG_LOGIN_SEND) in lpfc_mbx_cmpl_reg_login()
3607 ndlp->nlp_flag &= ~NLP_REG_LOGIN_SEND; in lpfc_mbx_cmpl_reg_login()
3609 if (ndlp->nlp_flag & NLP_IGNR_REG_CMPL || in lpfc_mbx_cmpl_reg_login()
3610 ndlp->nlp_state != NLP_STE_REG_LOGIN_ISSUE) { in lpfc_mbx_cmpl_reg_login()
3620 ndlp->nlp_flag &= ~NLP_IGNR_REG_CMPL; in lpfc_mbx_cmpl_reg_login()
3628 ndlp->nlp_flag |= NLP_RPI_REGISTERED; in lpfc_mbx_cmpl_reg_login()
3629 lpfc_unreg_rpi(vport, ndlp); in lpfc_mbx_cmpl_reg_login()
3633 lpfc_disc_state_machine(vport, ndlp, pmb, NLP_EVT_CMPL_REG_LOGIN); in lpfc_mbx_cmpl_reg_login()
3641 lpfc_nlp_put(ndlp); in lpfc_mbx_cmpl_reg_login()
3919 struct lpfc_nodelist *ndlp; in lpfc_mbx_cmpl_fabric_reg_login() local
3922 ndlp = (struct lpfc_nodelist *)pmb->ctx_ndlp; in lpfc_mbx_cmpl_fabric_reg_login()
3943 lpfc_nlp_put(ndlp); in lpfc_mbx_cmpl_fabric_reg_login()
3951 lpfc_nlp_put(ndlp); in lpfc_mbx_cmpl_fabric_reg_login()
3956 ndlp->nlp_rpi = mb->un.varWords[0]; in lpfc_mbx_cmpl_fabric_reg_login()
3957 ndlp->nlp_flag |= NLP_RPI_REGISTERED; in lpfc_mbx_cmpl_fabric_reg_login()
3958 ndlp->nlp_type |= NLP_FABRIC; in lpfc_mbx_cmpl_fabric_reg_login()
3959 lpfc_nlp_set_state(vport, ndlp, NLP_STE_UNMAPPED_NODE); in lpfc_mbx_cmpl_fabric_reg_login()
3982 lpfc_nlp_put(ndlp); in lpfc_mbx_cmpl_fabric_reg_login()
4072 struct lpfc_nodelist *ndlp = (struct lpfc_nodelist *)pmb->ctx_ndlp; in lpfc_mbx_cmpl_ns_reg_login() local
4088 lpfc_nlp_put(ndlp); in lpfc_mbx_cmpl_ns_reg_login()
4094 lpfc_nlp_not_used(ndlp); in lpfc_mbx_cmpl_ns_reg_login()
4112 ndlp->nlp_rpi = mb->un.varWords[0]; in lpfc_mbx_cmpl_ns_reg_login()
4113 ndlp->nlp_flag |= NLP_RPI_REGISTERED; in lpfc_mbx_cmpl_ns_reg_login()
4114 ndlp->nlp_type |= NLP_FABRIC; in lpfc_mbx_cmpl_ns_reg_login()
4115 lpfc_nlp_set_state(vport, ndlp, NLP_STE_UNMAPPED_NODE); in lpfc_mbx_cmpl_ns_reg_login()
4118 ndlp->nlp_rpi, ndlp->nlp_DID, ndlp->nlp_flag, in lpfc_mbx_cmpl_ns_reg_login()
4119 kref_read(&ndlp->kref), in lpfc_mbx_cmpl_ns_reg_login()
4120 ndlp->nlp_usg_map, ndlp); in lpfc_mbx_cmpl_ns_reg_login()
4155 lpfc_nlp_put(ndlp); in lpfc_mbx_cmpl_ns_reg_login()
4164 lpfc_register_remote_port(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp) in lpfc_register_remote_port() argument
4176 rport_ids.node_name = wwn_to_u64(ndlp->nlp_nodename.u.wwn); in lpfc_register_remote_port()
4177 rport_ids.port_name = wwn_to_u64(ndlp->nlp_portname.u.wwn); in lpfc_register_remote_port()
4178 rport_ids.port_id = ndlp->nlp_DID; in lpfc_register_remote_port()
4188 rport = ndlp->rport; in lpfc_register_remote_port()
4192 ndlp->rport = NULL; in lpfc_register_remote_port()
4194 if (rdata->pnode == ndlp) in lpfc_register_remote_port()
4195 lpfc_nlp_put(ndlp); in lpfc_register_remote_port()
4204 ndlp->nlp_DID, ndlp->nlp_flag, ndlp->nlp_type); in lpfc_register_remote_port()
4210 ndlp->rport = rport = fc_remote_port_add(shost, 0, &rport_ids); in lpfc_register_remote_port()
4218 rport->maxframe_size = ndlp->nlp_maxframe; in lpfc_register_remote_port()
4219 rport->supported_classes = ndlp->nlp_class_sup; in lpfc_register_remote_port()
4221 rdata->pnode = lpfc_nlp_get(ndlp); in lpfc_register_remote_port()
4223 if (ndlp->nlp_type & NLP_FCP_TARGET) in lpfc_register_remote_port()
4225 if (ndlp->nlp_type & NLP_FCP_INITIATOR) in lpfc_register_remote_port()
4227 if (ndlp->nlp_type & NLP_NVME_INITIATOR) in lpfc_register_remote_port()
4229 if (ndlp->nlp_type & NLP_NVME_TARGET) in lpfc_register_remote_port()
4231 if (ndlp->nlp_type & NLP_NVME_DISCOVERY) in lpfc_register_remote_port()
4237 lpfc_printf_vlog(ndlp->vport, KERN_INFO, LOG_NODE, in lpfc_register_remote_port()
4239 ndlp->nlp_DID, rport, rport_ids.roles); in lpfc_register_remote_port()
4243 ndlp->nlp_sid = rport->scsi_target_id; in lpfc_register_remote_port()
4249 lpfc_unregister_remote_port(struct lpfc_nodelist *ndlp) in lpfc_unregister_remote_port() argument
4251 struct fc_rport *rport = ndlp->rport; in lpfc_unregister_remote_port()
4252 struct lpfc_vport *vport = ndlp->vport; in lpfc_unregister_remote_port()
4259 ndlp->nlp_DID, ndlp->nlp_flag, ndlp->nlp_type); in lpfc_unregister_remote_port()
4263 ndlp->nlp_DID, rport); in lpfc_unregister_remote_port()
4310 lpfc_nlp_state_cleanup(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_nlp_state_cleanup() argument
4316 ndlp->nlp_flag &= ~NLP_NODEV_REMOVE; in lpfc_nlp_state_cleanup()
4317 ndlp->nlp_type |= NLP_FC_NODE; in lpfc_nlp_state_cleanup()
4320 ndlp->nlp_flag &= ~NLP_NODEV_REMOVE; in lpfc_nlp_state_cleanup()
4322 ndlp->nlp_flag &= ~NLP_RCV_PLOGI; in lpfc_nlp_state_cleanup()
4327 if (ndlp->rport) { in lpfc_nlp_state_cleanup()
4329 lpfc_unregister_remote_port(ndlp); in lpfc_nlp_state_cleanup()
4332 if (ndlp->nlp_fc4_type & NLP_FC4_NVME) { in lpfc_nlp_state_cleanup()
4336 if (ndlp->nlp_type & NLP_NVME_TARGET) in lpfc_nlp_state_cleanup()
4337 lpfc_nvme_unregister_port(vport, ndlp); in lpfc_nlp_state_cleanup()
4340 lpfc_nlp_put(ndlp); in lpfc_nlp_state_cleanup()
4349 if (ndlp->nlp_fc4_type || in lpfc_nlp_state_cleanup()
4350 ndlp->nlp_DID == Fabric_DID || in lpfc_nlp_state_cleanup()
4351 ndlp->nlp_DID == NameServer_DID || in lpfc_nlp_state_cleanup()
4352 ndlp->nlp_DID == FDMI_DID) { in lpfc_nlp_state_cleanup()
4358 lpfc_register_remote_port(vport, ndlp); in lpfc_nlp_state_cleanup()
4362 ndlp->nlp_fc4_type & NLP_FC4_NVME) { in lpfc_nlp_state_cleanup()
4368 if (ndlp->nlp_type & NLP_NVME_TARGET) { in lpfc_nlp_state_cleanup()
4370 lpfc_nvme_register_port(vport, ndlp); in lpfc_nlp_state_cleanup()
4376 lpfc_nlp_get(ndlp); in lpfc_nlp_state_cleanup()
4387 ndlp->lat_data = kcalloc(LPFC_MAX_BUCKET_COUNT, in lpfc_nlp_state_cleanup()
4391 if (!ndlp->lat_data) in lpfc_nlp_state_cleanup()
4395 "0x%x\n", ndlp->nlp_DID); in lpfc_nlp_state_cleanup()
4404 (ndlp->nlp_type & NLP_FCP_TARGET) && in lpfc_nlp_state_cleanup()
4405 (!ndlp->rport || in lpfc_nlp_state_cleanup()
4406 ndlp->rport->scsi_target_id == -1 || in lpfc_nlp_state_cleanup()
4407 ndlp->rport->scsi_target_id >= LPFC_MAX_TARGET)) { in lpfc_nlp_state_cleanup()
4409 ndlp->nlp_flag |= NLP_TGT_NO_SCSIID; in lpfc_nlp_state_cleanup()
4411 lpfc_nlp_set_state(vport, ndlp, NLP_STE_UNMAPPED_NODE); in lpfc_nlp_state_cleanup()
4438 lpfc_nlp_set_state(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_nlp_set_state() argument
4442 int old_state = ndlp->nlp_state; in lpfc_nlp_set_state()
4447 ndlp->nlp_DID, in lpfc_nlp_set_state()
4453 ndlp->nlp_DID, old_state, state); in lpfc_nlp_set_state()
4457 lpfc_cancel_retry_delay_tmo(vport, ndlp); in lpfc_nlp_set_state()
4459 ndlp->nlp_flag &= ~NLP_TGT_NO_SCSIID; in lpfc_nlp_set_state()
4460 ndlp->nlp_type &= ~NLP_FC_NODE; in lpfc_nlp_set_state()
4463 if (list_empty(&ndlp->nlp_listp)) { in lpfc_nlp_set_state()
4465 list_add_tail(&ndlp->nlp_listp, &vport->fc_nodes); in lpfc_nlp_set_state()
4470 ndlp->nlp_state = state; in lpfc_nlp_set_state()
4472 lpfc_nlp_state_cleanup(vport, ndlp, old_state, state); in lpfc_nlp_set_state()
4476 lpfc_enqueue_node(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp) in lpfc_enqueue_node() argument
4480 if (list_empty(&ndlp->nlp_listp)) { in lpfc_enqueue_node()
4482 list_add_tail(&ndlp->nlp_listp, &vport->fc_nodes); in lpfc_enqueue_node()
4488 lpfc_dequeue_node(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp) in lpfc_dequeue_node() argument
4492 lpfc_cancel_retry_delay_tmo(vport, ndlp); in lpfc_dequeue_node()
4493 if (ndlp->nlp_state && !list_empty(&ndlp->nlp_listp)) in lpfc_dequeue_node()
4494 lpfc_nlp_counters(vport, ndlp->nlp_state, -1); in lpfc_dequeue_node()
4496 list_del_init(&ndlp->nlp_listp); in lpfc_dequeue_node()
4498 lpfc_nlp_state_cleanup(vport, ndlp, ndlp->nlp_state, in lpfc_dequeue_node()
4503 lpfc_disable_node(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp) in lpfc_disable_node() argument
4505 lpfc_cancel_retry_delay_tmo(vport, ndlp); in lpfc_disable_node()
4506 if (ndlp->nlp_state && !list_empty(&ndlp->nlp_listp)) in lpfc_disable_node()
4507 lpfc_nlp_counters(vport, ndlp->nlp_state, -1); in lpfc_disable_node()
4508 lpfc_nlp_state_cleanup(vport, ndlp, ndlp->nlp_state, in lpfc_disable_node()
4526 lpfc_initialize_node(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_initialize_node() argument
4529 INIT_LIST_HEAD(&ndlp->els_retry_evt.evt_listp); in lpfc_initialize_node()
4530 INIT_LIST_HEAD(&ndlp->dev_loss_evt.evt_listp); in lpfc_initialize_node()
4531 timer_setup(&ndlp->nlp_delayfunc, lpfc_els_retry_delay, 0); in lpfc_initialize_node()
4532 INIT_LIST_HEAD(&ndlp->recovery_evt.evt_listp); in lpfc_initialize_node()
4534 ndlp->nlp_DID = did; in lpfc_initialize_node()
4535 ndlp->vport = vport; in lpfc_initialize_node()
4536 ndlp->phba = vport->phba; in lpfc_initialize_node()
4537 ndlp->nlp_sid = NLP_NO_SID; in lpfc_initialize_node()
4538 ndlp->nlp_fc4_type = NLP_FC4_NONE; in lpfc_initialize_node()
4539 kref_init(&ndlp->kref); in lpfc_initialize_node()
4540 NLP_INT_NODE_ACT(ndlp); in lpfc_initialize_node()
4541 atomic_set(&ndlp->cmd_pending, 0); in lpfc_initialize_node()
4542 ndlp->cmd_qdepth = vport->cfg_tgt_queue_depth; in lpfc_initialize_node()
4543 ndlp->nlp_defer_did = NLP_EVT_NOTHING_PENDING; in lpfc_initialize_node()
4547 lpfc_enable_node(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_enable_node() argument
4557 if (!ndlp) in lpfc_enable_node()
4561 if (ndlp->nlp_rpi == LPFC_RPI_ALLOC_ERROR) in lpfc_enable_node()
4564 rpi = ndlp->nlp_rpi; in lpfc_enable_node()
4572 (void *)ndlp, ndlp->nlp_usg_map, in lpfc_enable_node()
4573 kref_read(&ndlp->kref)); in lpfc_enable_node()
4580 if (NLP_CHK_FREE_REQ(ndlp)) { in lpfc_enable_node()
4585 __func__, (void *)ndlp, ndlp->nlp_usg_map, in lpfc_enable_node()
4586 kref_read(&ndlp->kref)); in lpfc_enable_node()
4590 if (NLP_CHK_NODE_ACT(ndlp)) { in lpfc_enable_node()
4595 __func__, (void *)ndlp, ndlp->nlp_usg_map, in lpfc_enable_node()
4596 kref_read(&ndlp->kref)); in lpfc_enable_node()
4601 did = ndlp->nlp_DID; in lpfc_enable_node()
4602 flag = (ndlp->nlp_flag & NLP_UNREG_INP); in lpfc_enable_node()
4604 defer_did = ndlp->nlp_defer_did; in lpfc_enable_node()
4606 active_rrqs_xri_bitmap = ndlp->active_rrqs_xri_bitmap; in lpfc_enable_node()
4609 memset((((char *)ndlp) + sizeof (struct list_head)), 0, in lpfc_enable_node()
4613 lpfc_initialize_node(vport, ndlp, did); in lpfc_enable_node()
4614 ndlp->nlp_flag |= flag; in lpfc_enable_node()
4616 ndlp->nlp_defer_did = defer_did; in lpfc_enable_node()
4618 ndlp->active_rrqs_xri_bitmap = active_rrqs_xri_bitmap; in lpfc_enable_node()
4622 ndlp->nlp_rpi = rpi; in lpfc_enable_node()
4625 "map:%x x%px\n", ndlp->nlp_rpi, ndlp->nlp_DID, in lpfc_enable_node()
4626 ndlp->nlp_flag, in lpfc_enable_node()
4627 kref_read(&ndlp->kref), in lpfc_enable_node()
4628 ndlp->nlp_usg_map, ndlp); in lpfc_enable_node()
4633 lpfc_nlp_set_state(vport, ndlp, state); in lpfc_enable_node()
4638 ndlp->nlp_rpi, ndlp->nlp_DID, in lpfc_enable_node()
4639 ndlp->nlp_flag, in lpfc_enable_node()
4640 kref_read(&ndlp->kref), in lpfc_enable_node()
4641 ndlp->nlp_usg_map, ndlp); in lpfc_enable_node()
4645 ndlp->nlp_DID, 0, 0); in lpfc_enable_node()
4646 return ndlp; in lpfc_enable_node()
4651 ndlp->nlp_rpi = LPFC_RPI_ALLOC_ERROR; in lpfc_enable_node()
4657 lpfc_drop_node(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp) in lpfc_drop_node() argument
4666 if (ndlp->nlp_state == NLP_STE_UNUSED_NODE) in lpfc_drop_node()
4668 lpfc_nlp_set_state(vport, ndlp, NLP_STE_UNUSED_NODE); in lpfc_drop_node()
4670 lpfc_cleanup_vports_rrqs(vport, ndlp); in lpfc_drop_node()
4671 lpfc_unreg_rpi(vport, ndlp); in lpfc_drop_node()
4674 lpfc_nlp_put(ndlp); in lpfc_drop_node()
4762 struct lpfc_nodelist *ndlp) in lpfc_check_sli_ndlp() argument
4765 struct lpfc_vport *vport = ndlp->vport; in lpfc_check_sli_ndlp()
4773 if (iocb->context_un.ndlp == ndlp) in lpfc_check_sli_ndlp()
4777 if (icmd->un.elsreq64.remoteID == ndlp->nlp_DID) in lpfc_check_sli_ndlp()
4781 if (iocb->context1 == (uint8_t *) ndlp) in lpfc_check_sli_ndlp()
4786 if ((ndlp->nlp_type & NLP_FCP_TARGET) && in lpfc_check_sli_ndlp()
4787 (ndlp->nlp_flag & NLP_DELAY_TMO)) { in lpfc_check_sli_ndlp()
4790 if (icmd->ulpContext == (volatile ushort)ndlp->nlp_rpi) { in lpfc_check_sli_ndlp()
4799 struct lpfc_nodelist *ndlp, struct lpfc_sli_ring *pring, in __lpfc_dequeue_nport_iocbs() argument
4806 if (lpfc_check_sli_ndlp(phba, pring, iocb, ndlp)) in __lpfc_dequeue_nport_iocbs()
4814 struct lpfc_nodelist *ndlp, struct list_head *dequeue_list) in lpfc_sli3_dequeue_nport_iocbs() argument
4821 __lpfc_dequeue_nport_iocbs(phba, ndlp, &psli->sli3_ring[i], in lpfc_sli3_dequeue_nport_iocbs()
4828 struct lpfc_nodelist *ndlp, struct list_head *dequeue_list) in lpfc_sli4_dequeue_nport_iocbs() argument
4839 __lpfc_dequeue_nport_iocbs(phba, ndlp, pring, dequeue_list); in lpfc_sli4_dequeue_nport_iocbs()
4850 lpfc_no_rpi(struct lpfc_hba *phba, struct lpfc_nodelist *ndlp) in lpfc_no_rpi() argument
4854 lpfc_fabric_abort_nport(ndlp); in lpfc_no_rpi()
4860 if (ndlp->nlp_flag & NLP_RPI_REGISTERED) { in lpfc_no_rpi()
4862 lpfc_sli3_dequeue_nport_iocbs(phba, ndlp, &completions); in lpfc_no_rpi()
4864 lpfc_sli4_dequeue_nport_iocbs(phba, ndlp, &completions); in lpfc_no_rpi()
4886 struct lpfc_nodelist *ndlp; in lpfc_nlp_logo_unreg() local
4888 ndlp = (struct lpfc_nodelist *)(pmb->ctx_ndlp); in lpfc_nlp_logo_unreg()
4889 if (!ndlp) in lpfc_nlp_logo_unreg()
4891 lpfc_issue_els_logo(vport, ndlp, 0); in lpfc_nlp_logo_unreg()
4895 if ((ndlp->nlp_flag & NLP_UNREG_INP) && in lpfc_nlp_logo_unreg()
4896 (ndlp->nlp_defer_did != NLP_EVT_NOTHING_PENDING)) { in lpfc_nlp_logo_unreg()
4900 ndlp->nlp_rpi, ndlp->nlp_DID, in lpfc_nlp_logo_unreg()
4901 ndlp->nlp_defer_did, ndlp); in lpfc_nlp_logo_unreg()
4903 ndlp->nlp_flag &= ~NLP_UNREG_INP; in lpfc_nlp_logo_unreg()
4904 ndlp->nlp_defer_did = NLP_EVT_NOTHING_PENDING; in lpfc_nlp_logo_unreg()
4905 lpfc_issue_els_plogi(vport, ndlp->nlp_DID, 0); in lpfc_nlp_logo_unreg()
4907 if (ndlp->nlp_flag & NLP_RELEASE_RPI) { in lpfc_nlp_logo_unreg()
4908 lpfc_sli4_free_rpi(vport->phba, ndlp->nlp_rpi); in lpfc_nlp_logo_unreg()
4909 ndlp->nlp_flag &= ~NLP_RELEASE_RPI; in lpfc_nlp_logo_unreg()
4910 ndlp->nlp_rpi = LPFC_RPI_ALLOC_ERROR; in lpfc_nlp_logo_unreg()
4912 ndlp->nlp_flag &= ~NLP_UNREG_INP; in lpfc_nlp_logo_unreg()
4923 struct lpfc_nodelist *ndlp, LPFC_MBOXQ_t *mbox) in lpfc_set_unreg_login_mbx_cmpl() argument
4927 if (ndlp->nlp_flag & NLP_ISSUE_LOGO) { in lpfc_set_unreg_login_mbx_cmpl()
4928 mbox->ctx_ndlp = ndlp; in lpfc_set_unreg_login_mbx_cmpl()
4935 (kref_read(&ndlp->kref) > 0)) { in lpfc_set_unreg_login_mbx_cmpl()
4936 mbox->ctx_ndlp = lpfc_nlp_get(ndlp); in lpfc_set_unreg_login_mbx_cmpl()
4943 ndlp->nlp_flag |= NLP_RELEASE_RPI; in lpfc_set_unreg_login_mbx_cmpl()
4947 lpfc_nlp_get(ndlp); in lpfc_set_unreg_login_mbx_cmpl()
4949 mbox->ctx_ndlp = ndlp; in lpfc_set_unreg_login_mbx_cmpl()
4964 lpfc_unreg_rpi(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp) in lpfc_unreg_rpi() argument
4971 if (ndlp->nlp_flag & NLP_RPI_REGISTERED || in lpfc_unreg_rpi()
4972 ndlp->nlp_flag & NLP_REG_LOGIN_SEND) { in lpfc_unreg_rpi()
4973 if (ndlp->nlp_flag & NLP_REG_LOGIN_SEND) in lpfc_unreg_rpi()
4979 ndlp->nlp_rpi, ndlp->nlp_flag, in lpfc_unreg_rpi()
4980 ndlp->nlp_DID); in lpfc_unreg_rpi()
4985 if (ndlp->nlp_flag & NLP_UNREG_INP) { in lpfc_unreg_rpi()
4991 ndlp->nlp_rpi, ndlp->nlp_DID, in lpfc_unreg_rpi()
4992 ndlp->nlp_defer_did, in lpfc_unreg_rpi()
4993 ndlp->nlp_flag, ndlp); in lpfc_unreg_rpi()
5000 rpi = ndlp->nlp_rpi; in lpfc_unreg_rpi()
5002 rpi = phba->sli4_hba.rpi_ids[ndlp->nlp_rpi]; in lpfc_unreg_rpi()
5006 lpfc_set_unreg_login_mbx_cmpl(phba, vport, ndlp, mbox); in lpfc_unreg_rpi()
5012 if (((ndlp->nlp_DID & Fabric_DID_MASK) != in lpfc_unreg_rpi()
5015 ndlp->nlp_flag |= NLP_UNREG_INP; in lpfc_unreg_rpi()
5022 ndlp->nlp_rpi, ndlp->nlp_DID, in lpfc_unreg_rpi()
5023 ndlp->nlp_flag, ndlp); in lpfc_unreg_rpi()
5037 ndlp->nlp_rpi, ndlp->nlp_DID, in lpfc_unreg_rpi()
5038 ndlp->nlp_flag, ndlp); in lpfc_unreg_rpi()
5045 ndlp->nlp_flag &= ~NLP_UNREG_INP; in lpfc_unreg_rpi()
5046 lpfc_issue_els_logo(vport, ndlp, 0); in lpfc_unreg_rpi()
5047 ndlp->nlp_prev_state = ndlp->nlp_state; in lpfc_unreg_rpi()
5048 lpfc_nlp_set_state(vport, ndlp, in lpfc_unreg_rpi()
5054 lpfc_no_rpi(phba, ndlp); in lpfc_unreg_rpi()
5057 ndlp->nlp_rpi = 0; in lpfc_unreg_rpi()
5058 ndlp->nlp_flag &= ~NLP_RPI_REGISTERED; in lpfc_unreg_rpi()
5059 ndlp->nlp_flag &= ~NLP_NPR_ADISC; in lpfc_unreg_rpi()
5061 ndlp->nlp_flag &= ~NLP_LOGO_ACC; in lpfc_unreg_rpi()
5064 ndlp->nlp_flag &= ~NLP_LOGO_ACC; in lpfc_unreg_rpi()
5079 struct lpfc_nodelist *ndlp; in lpfc_unreg_hba_rpis() local
5092 list_for_each_entry(ndlp, &vports[i]->fc_nodes, nlp_listp) { in lpfc_unreg_hba_rpis()
5093 if (ndlp->nlp_flag & NLP_RPI_REGISTERED) { in lpfc_unreg_hba_rpis()
5096 lpfc_unreg_rpi(vports[i], ndlp); in lpfc_unreg_hba_rpis()
5171 lpfc_cleanup_node(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp) in lpfc_cleanup_node() argument
5183 ndlp->nlp_DID, ndlp->nlp_flag, in lpfc_cleanup_node()
5184 ndlp->nlp_state, ndlp->nlp_rpi); in lpfc_cleanup_node()
5185 if (NLP_CHK_FREE_REQ(ndlp)) { in lpfc_cleanup_node()
5189 __func__, (void *)ndlp, ndlp->nlp_usg_map, in lpfc_cleanup_node()
5190 kref_read(&ndlp->kref)); in lpfc_cleanup_node()
5191 lpfc_dequeue_node(vport, ndlp); in lpfc_cleanup_node()
5196 __func__, (void *)ndlp, ndlp->nlp_usg_map, in lpfc_cleanup_node()
5197 kref_read(&ndlp->kref)); in lpfc_cleanup_node()
5198 lpfc_disable_node(vport, ndlp); in lpfc_cleanup_node()
5208 (ndlp == (struct lpfc_nodelist *)mb->ctx_ndlp)) { in lpfc_cleanup_node()
5219 (ndlp != (struct lpfc_nodelist *)mb->ctx_ndlp)) in lpfc_cleanup_node()
5229 (ndlp == (struct lpfc_nodelist *)mb->ctx_ndlp)) { in lpfc_cleanup_node()
5245 lpfc_els_abort(phba, ndlp); in lpfc_cleanup_node()
5248 ndlp->nlp_flag &= ~NLP_DELAY_TMO; in lpfc_cleanup_node()
5251 ndlp->nlp_last_elscmd = 0; in lpfc_cleanup_node()
5252 del_timer_sync(&ndlp->nlp_delayfunc); in lpfc_cleanup_node()
5254 list_del_init(&ndlp->els_retry_evt.evt_listp); in lpfc_cleanup_node()
5255 list_del_init(&ndlp->dev_loss_evt.evt_listp); in lpfc_cleanup_node()
5256 list_del_init(&ndlp->recovery_evt.evt_listp); in lpfc_cleanup_node()
5257 lpfc_cleanup_vports_rrqs(vport, ndlp); in lpfc_cleanup_node()
5259 ndlp->nlp_flag |= NLP_RELEASE_RPI; in lpfc_cleanup_node()
5260 if (!lpfc_unreg_rpi(vport, ndlp)) { in lpfc_cleanup_node()
5262 if ((ndlp->nlp_flag & NLP_RELEASE_RPI) && in lpfc_cleanup_node()
5263 !(ndlp->nlp_rpi == LPFC_RPI_ALLOC_ERROR)) { in lpfc_cleanup_node()
5265 ndlp->nlp_rpi); in lpfc_cleanup_node()
5268 ndlp->nlp_flag &= ~NLP_RELEASE_RPI; in lpfc_cleanup_node()
5269 ndlp->nlp_rpi = LPFC_RPI_ALLOC_ERROR; in lpfc_cleanup_node()
5283 lpfc_nlp_remove(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp) in lpfc_nlp_remove() argument
5291 lpfc_cancel_retry_delay_tmo(vport, ndlp); in lpfc_nlp_remove()
5292 if ((ndlp->nlp_flag & NLP_DEFER_RM) && in lpfc_nlp_remove()
5293 !(ndlp->nlp_flag & NLP_REG_LOGIN_SEND) && in lpfc_nlp_remove()
5294 !(ndlp->nlp_flag & NLP_RPI_REGISTERED) && in lpfc_nlp_remove()
5303 ndlp->nlp_rpi, ndlp->nlp_DID, ndlp->nlp_flag, in lpfc_nlp_remove()
5304 kref_read(&ndlp->kref), in lpfc_nlp_remove()
5305 ndlp->nlp_usg_map, ndlp); in lpfc_nlp_remove()
5308 rc = lpfc_reg_rpi(phba, vport->vpi, ndlp->nlp_DID, in lpfc_nlp_remove()
5309 (uint8_t *) &vport->fc_sparam, mbox, ndlp->nlp_rpi); in lpfc_nlp_remove()
5317 mbox->ctx_ndlp = ndlp; in lpfc_nlp_remove()
5325 lpfc_cleanup_node(vport, ndlp); in lpfc_nlp_remove()
5332 if (ndlp->rport) { in lpfc_nlp_remove()
5340 ndlp, ndlp->nlp_DID, ndlp->nlp_rpi, in lpfc_nlp_remove()
5341 ndlp->rport); in lpfc_nlp_remove()
5342 rport = ndlp->rport; in lpfc_nlp_remove()
5345 ndlp->rport = NULL; in lpfc_nlp_remove()
5351 lpfc_matchdid(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_matchdid() argument
5360 if (ndlp->nlp_DID == did) in lpfc_matchdid()
5370 ndlpdid.un.word = ndlp->nlp_DID; in lpfc_matchdid()
5392 matchdid.un.word = ndlp->nlp_DID; in lpfc_matchdid()
5409 struct lpfc_nodelist *ndlp; in __lpfc_findnode_did() local
5412 list_for_each_entry(ndlp, &vport->fc_nodes, nlp_listp) { in __lpfc_findnode_did()
5413 if (lpfc_matchdid(vport, ndlp, did)) { in __lpfc_findnode_did()
5414 data1 = (((uint32_t)ndlp->nlp_state << 24) | in __lpfc_findnode_did()
5415 ((uint32_t)ndlp->nlp_xri << 16) | in __lpfc_findnode_did()
5416 ((uint32_t)ndlp->nlp_type << 8) | in __lpfc_findnode_did()
5417 ((uint32_t)ndlp->nlp_usg_map & 0xff)); in __lpfc_findnode_did()
5421 ndlp, ndlp->nlp_DID, in __lpfc_findnode_did()
5422 ndlp->nlp_flag, data1, ndlp->nlp_rpi, in __lpfc_findnode_did()
5423 ndlp->active_rrqs_xri_bitmap); in __lpfc_findnode_did()
5424 return ndlp; in __lpfc_findnode_did()
5438 struct lpfc_nodelist *ndlp; in lpfc_findnode_did() local
5442 ndlp = __lpfc_findnode_did(vport, did); in lpfc_findnode_did()
5444 return ndlp; in lpfc_findnode_did()
5451 struct lpfc_nodelist *ndlp; in lpfc_findnode_mapped() local
5457 list_for_each_entry(ndlp, &vport->fc_nodes, nlp_listp) { in lpfc_findnode_mapped()
5458 if (ndlp->nlp_state == NLP_STE_UNMAPPED_NODE || in lpfc_findnode_mapped()
5459 ndlp->nlp_state == NLP_STE_MAPPED_NODE) { in lpfc_findnode_mapped()
5460 data1 = (((uint32_t)ndlp->nlp_state << 24) | in lpfc_findnode_mapped()
5461 ((uint32_t)ndlp->nlp_xri << 16) | in lpfc_findnode_mapped()
5462 ((uint32_t)ndlp->nlp_type << 8) | in lpfc_findnode_mapped()
5463 ((uint32_t)ndlp->nlp_rpi & 0xff)); in lpfc_findnode_mapped()
5468 ndlp, ndlp->nlp_DID, in lpfc_findnode_mapped()
5469 ndlp->nlp_flag, data1, in lpfc_findnode_mapped()
5470 ndlp->active_rrqs_xri_bitmap); in lpfc_findnode_mapped()
5471 return ndlp; in lpfc_findnode_mapped()
5486 struct lpfc_nodelist *ndlp; in lpfc_setup_disc_node() local
5488 ndlp = lpfc_findnode_did(vport, did); in lpfc_setup_disc_node()
5489 if (!ndlp) { in lpfc_setup_disc_node()
5495 ndlp = lpfc_nlp_init(vport, did); in lpfc_setup_disc_node()
5496 if (!ndlp) in lpfc_setup_disc_node()
5498 lpfc_nlp_set_state(vport, ndlp, NLP_STE_NPR_NODE); in lpfc_setup_disc_node()
5503 ndlp->nlp_DID, ndlp->nlp_flag, in lpfc_setup_disc_node()
5504 ndlp->nlp_state, vport->fc_flag); in lpfc_setup_disc_node()
5507 ndlp->nlp_flag |= NLP_NPR_2B_DISC; in lpfc_setup_disc_node()
5509 return ndlp; in lpfc_setup_disc_node()
5510 } else if (!NLP_CHK_NODE_ACT(ndlp)) { in lpfc_setup_disc_node()
5513 ndlp = lpfc_enable_node(vport, ndlp, NLP_STE_NPR_NODE); in lpfc_setup_disc_node()
5514 if (!ndlp) { in lpfc_setup_disc_node()
5522 ndlp->nlp_DID, ndlp->nlp_flag, in lpfc_setup_disc_node()
5523 ndlp->nlp_state, vport->fc_flag); in lpfc_setup_disc_node()
5526 ndlp->nlp_flag |= NLP_NPR_2B_DISC; in lpfc_setup_disc_node()
5528 return ndlp; in lpfc_setup_disc_node()
5542 lpfc_cancel_retry_delay_tmo(vport, ndlp); in lpfc_setup_disc_node()
5547 ndlp->nlp_DID, ndlp->nlp_flag, in lpfc_setup_disc_node()
5548 ndlp->nlp_state, vport->fc_flag); in lpfc_setup_disc_node()
5556 return ndlp; in lpfc_setup_disc_node()
5561 if (ndlp->nlp_flag & NLP_RCV_PLOGI && in lpfc_setup_disc_node()
5562 !(ndlp->nlp_type & in lpfc_setup_disc_node()
5566 ndlp->nlp_prev_state = ndlp->nlp_state; in lpfc_setup_disc_node()
5567 lpfc_nlp_set_state(vport, ndlp, NLP_STE_NPR_NODE); in lpfc_setup_disc_node()
5570 ndlp->nlp_flag |= NLP_NPR_2B_DISC; in lpfc_setup_disc_node()
5576 ndlp->nlp_DID, ndlp->nlp_flag, in lpfc_setup_disc_node()
5577 ndlp->nlp_state, vport->fc_flag); in lpfc_setup_disc_node()
5578 ndlp = NULL; in lpfc_setup_disc_node()
5584 ndlp->nlp_DID, ndlp->nlp_flag, in lpfc_setup_disc_node()
5585 ndlp->nlp_state, vport->fc_flag); in lpfc_setup_disc_node()
5591 if (ndlp->nlp_state == NLP_STE_ADISC_ISSUE || in lpfc_setup_disc_node()
5592 ndlp->nlp_state == NLP_STE_PLOGI_ISSUE || in lpfc_setup_disc_node()
5594 ndlp->nlp_flag & NLP_RCV_PLOGI)) in lpfc_setup_disc_node()
5598 return ndlp; in lpfc_setup_disc_node()
5603 lpfc_nlp_set_state(vport, ndlp, NLP_STE_NPR_NODE); in lpfc_setup_disc_node()
5606 ndlp->nlp_flag |= NLP_NPR_2B_DISC; in lpfc_setup_disc_node()
5609 return ndlp; in lpfc_setup_disc_node()
5810 lpfc_free_tx(struct lpfc_hba *phba, struct lpfc_nodelist *ndlp) in lpfc_free_tx() argument
5826 if (iocb->context1 != ndlp) { in lpfc_free_tx()
5839 if (iocb->context1 != ndlp) { in lpfc_free_tx()
5858 struct lpfc_nodelist *ndlp, *next_ndlp; in lpfc_disc_flush_list() local
5862 list_for_each_entry_safe(ndlp, next_ndlp, &vport->fc_nodes, in lpfc_disc_flush_list()
5864 if (!NLP_CHK_NODE_ACT(ndlp)) in lpfc_disc_flush_list()
5866 if (ndlp->nlp_state == NLP_STE_PLOGI_ISSUE || in lpfc_disc_flush_list()
5867 ndlp->nlp_state == NLP_STE_ADISC_ISSUE) { in lpfc_disc_flush_list()
5868 lpfc_free_tx(phba, ndlp); in lpfc_disc_flush_list()
5925 struct lpfc_nodelist *ndlp, *next_ndlp; in lpfc_disc_timeout_handler() local
5951 list_for_each_entry_safe(ndlp, next_ndlp, &vport->fc_nodes, in lpfc_disc_timeout_handler()
5953 if (!NLP_CHK_NODE_ACT(ndlp)) in lpfc_disc_timeout_handler()
5955 if (ndlp->nlp_state != NLP_STE_NPR_NODE) in lpfc_disc_timeout_handler()
5957 if (ndlp->nlp_type & NLP_FABRIC) { in lpfc_disc_timeout_handler()
5959 lpfc_drop_node(vport, ndlp); in lpfc_disc_timeout_handler()
5961 } else if (!(ndlp->nlp_flag & NLP_NPR_ADISC)) { in lpfc_disc_timeout_handler()
5965 lpfc_unreg_rpi(vport, ndlp); in lpfc_disc_timeout_handler()
6005 ndlp = lpfc_findnode_did(vport, NameServer_DID); in lpfc_disc_timeout_handler()
6006 if (ndlp && NLP_CHK_NODE_ACT(ndlp)) in lpfc_disc_timeout_handler()
6007 lpfc_els_abort(phba, ndlp); in lpfc_disc_timeout_handler()
6167 struct lpfc_nodelist *ndlp = (struct lpfc_nodelist *)pmb->ctx_ndlp; in lpfc_mbx_cmpl_fdmi_reg_login() local
6174 ndlp->nlp_rpi = mb->un.varWords[0]; in lpfc_mbx_cmpl_fdmi_reg_login()
6175 ndlp->nlp_flag |= NLP_RPI_REGISTERED; in lpfc_mbx_cmpl_fdmi_reg_login()
6176 ndlp->nlp_type |= NLP_FABRIC; in lpfc_mbx_cmpl_fdmi_reg_login()
6177 lpfc_nlp_set_state(vport, ndlp, NLP_STE_UNMAPPED_NODE); in lpfc_mbx_cmpl_fdmi_reg_login()
6180 ndlp->nlp_rpi, ndlp->nlp_DID, ndlp->nlp_flag, in lpfc_mbx_cmpl_fdmi_reg_login()
6181 kref_read(&ndlp->kref), in lpfc_mbx_cmpl_fdmi_reg_login()
6182 ndlp->nlp_usg_map, ndlp); in lpfc_mbx_cmpl_fdmi_reg_login()
6190 lpfc_fdmi_cmd(vport, ndlp, SLI_MGMT_DHBA, 0); in lpfc_mbx_cmpl_fdmi_reg_login()
6192 lpfc_fdmi_cmd(vport, ndlp, SLI_MGMT_DPRT, 0); in lpfc_mbx_cmpl_fdmi_reg_login()
6198 lpfc_nlp_put(ndlp); in lpfc_mbx_cmpl_fdmi_reg_login()
6207 lpfc_filter_by_rpi(struct lpfc_nodelist *ndlp, void *param) in lpfc_filter_by_rpi() argument
6212 if (!NLP_CHK_NODE_ACT(ndlp)) in lpfc_filter_by_rpi()
6215 return ndlp->nlp_rpi == *rpi; in lpfc_filter_by_rpi()
6219 lpfc_filter_by_wwpn(struct lpfc_nodelist *ndlp, void *param) in lpfc_filter_by_wwpn() argument
6221 return memcmp(&ndlp->nlp_portname, param, in lpfc_filter_by_wwpn()
6222 sizeof(ndlp->nlp_portname)) == 0; in lpfc_filter_by_wwpn()
6228 struct lpfc_nodelist *ndlp; in __lpfc_find_node() local
6230 list_for_each_entry(ndlp, &vport->fc_nodes, nlp_listp) { in __lpfc_find_node()
6231 if (filter(ndlp, param)) { in __lpfc_find_node()
6236 filter, ndlp, ndlp->nlp_DID, in __lpfc_find_node()
6237 ndlp->nlp_flag, ndlp->nlp_state, in __lpfc_find_node()
6238 ndlp->nlp_xri, ndlp->nlp_type, in __lpfc_find_node()
6239 ndlp->nlp_rpi); in __lpfc_find_node()
6240 return ndlp; in __lpfc_find_node()
6266 struct lpfc_nodelist *ndlp; in lpfc_findnode_wwpn() local
6269 ndlp = __lpfc_find_node(vport, lpfc_filter_by_wwpn, wwpn); in lpfc_findnode_wwpn()
6271 return ndlp; in lpfc_findnode_wwpn()
6283 struct lpfc_nodelist *ndlp; in lpfc_findnode_rpi() local
6287 ndlp = __lpfc_findnode_rpi(vport, rpi); in lpfc_findnode_rpi()
6289 return ndlp; in lpfc_findnode_rpi()
6345 struct lpfc_nodelist *ndlp; in lpfc_nlp_init() local
6354 ndlp = mempool_alloc(vport->phba->nlp_mem_pool, GFP_KERNEL); in lpfc_nlp_init()
6355 if (!ndlp) { in lpfc_nlp_init()
6361 memset(ndlp, 0, sizeof (struct lpfc_nodelist)); in lpfc_nlp_init()
6363 lpfc_initialize_node(vport, ndlp, did); in lpfc_nlp_init()
6364 INIT_LIST_HEAD(&ndlp->nlp_listp); in lpfc_nlp_init()
6366 ndlp->nlp_rpi = rpi; in lpfc_nlp_init()
6370 ndlp, ndlp->nlp_rpi, ndlp->nlp_DID, in lpfc_nlp_init()
6371 ndlp->nlp_flag, kref_read(&ndlp->kref), in lpfc_nlp_init()
6372 ndlp->nlp_usg_map); in lpfc_nlp_init()
6374 ndlp->active_rrqs_xri_bitmap = in lpfc_nlp_init()
6377 if (ndlp->active_rrqs_xri_bitmap) in lpfc_nlp_init()
6378 memset(ndlp->active_rrqs_xri_bitmap, 0, in lpfc_nlp_init()
6379 ndlp->phba->cfg_rrq_xri_bitmap_sz); in lpfc_nlp_init()
6386 ndlp->nlp_DID, 0, 0); in lpfc_nlp_init()
6388 return ndlp; in lpfc_nlp_init()
6399 struct lpfc_nodelist *ndlp = container_of(kref, struct lpfc_nodelist, in lpfc_nlp_release() local
6402 lpfc_debugfs_disc_trc(ndlp->vport, LPFC_DISC_TRC_NODE, in lpfc_nlp_release()
6404 ndlp->nlp_DID, ndlp->nlp_flag, ndlp->nlp_type); in lpfc_nlp_release()
6406 lpfc_printf_vlog(ndlp->vport, KERN_INFO, LOG_NODE, in lpfc_nlp_release()
6410 (void *)ndlp, ndlp->nlp_DID, ndlp->nlp_usg_map, in lpfc_nlp_release()
6411 kref_read(&ndlp->kref), ndlp->nlp_rpi); in lpfc_nlp_release()
6414 lpfc_nlp_remove(ndlp->vport, ndlp); in lpfc_nlp_release()
6417 phba = ndlp->phba; in lpfc_nlp_release()
6419 NLP_CLR_NODE_ACT(ndlp); in lpfc_nlp_release()
6423 if (NLP_CHK_FREE_REQ(ndlp)) { in lpfc_nlp_release()
6424 kfree(ndlp->lat_data); in lpfc_nlp_release()
6426 mempool_free(ndlp->active_rrqs_xri_bitmap, in lpfc_nlp_release()
6427 ndlp->phba->active_rrq_pool); in lpfc_nlp_release()
6428 mempool_free(ndlp, ndlp->phba->nlp_mem_pool); in lpfc_nlp_release()
6437 lpfc_nlp_get(struct lpfc_nodelist *ndlp) in lpfc_nlp_get() argument
6442 if (ndlp) { in lpfc_nlp_get()
6443 lpfc_debugfs_disc_trc(ndlp->vport, LPFC_DISC_TRC_NODE, in lpfc_nlp_get()
6445 ndlp->nlp_DID, ndlp->nlp_flag, in lpfc_nlp_get()
6446 kref_read(&ndlp->kref)); in lpfc_nlp_get()
6451 phba = ndlp->phba; in lpfc_nlp_get()
6453 if (!NLP_CHK_NODE_ACT(ndlp) || NLP_CHK_FREE_ACK(ndlp)) { in lpfc_nlp_get()
6455 lpfc_printf_vlog(ndlp->vport, KERN_WARNING, LOG_NODE, in lpfc_nlp_get()
6458 __func__, (void *)ndlp, ndlp->nlp_usg_map, in lpfc_nlp_get()
6459 kref_read(&ndlp->kref)); in lpfc_nlp_get()
6462 kref_get(&ndlp->kref); in lpfc_nlp_get()
6465 return ndlp; in lpfc_nlp_get()
6475 lpfc_nlp_put(struct lpfc_nodelist *ndlp) in lpfc_nlp_put() argument
6480 if (!ndlp) in lpfc_nlp_put()
6483 lpfc_debugfs_disc_trc(ndlp->vport, LPFC_DISC_TRC_NODE, in lpfc_nlp_put()
6485 ndlp->nlp_DID, ndlp->nlp_flag, in lpfc_nlp_put()
6486 kref_read(&ndlp->kref)); in lpfc_nlp_put()
6487 phba = ndlp->phba; in lpfc_nlp_put()
6493 if (NLP_CHK_FREE_ACK(ndlp)) { in lpfc_nlp_put()
6495 lpfc_printf_vlog(ndlp->vport, KERN_WARNING, LOG_NODE, in lpfc_nlp_put()
6498 __func__, (void *)ndlp, ndlp->nlp_usg_map, in lpfc_nlp_put()
6499 kref_read(&ndlp->kref)); in lpfc_nlp_put()
6506 if (NLP_CHK_IACT_REQ(ndlp)) { in lpfc_nlp_put()
6508 lpfc_printf_vlog(ndlp->vport, KERN_WARNING, LOG_NODE, in lpfc_nlp_put()
6511 __func__, (void *)ndlp, ndlp->nlp_usg_map, in lpfc_nlp_put()
6512 kref_read(&ndlp->kref)); in lpfc_nlp_put()
6520 if (kref_read(&ndlp->kref) == 1) { in lpfc_nlp_put()
6522 NLP_SET_IACT_REQ(ndlp); in lpfc_nlp_put()
6524 if (NLP_CHK_FREE_REQ(ndlp)) in lpfc_nlp_put()
6525 NLP_SET_FREE_ACK(ndlp); in lpfc_nlp_put()
6534 return kref_put(&ndlp->kref, lpfc_nlp_release); in lpfc_nlp_put()
6543 lpfc_nlp_not_used(struct lpfc_nodelist *ndlp) in lpfc_nlp_not_used() argument
6545 lpfc_debugfs_disc_trc(ndlp->vport, LPFC_DISC_TRC_NODE, in lpfc_nlp_not_used()
6547 ndlp->nlp_DID, ndlp->nlp_flag, in lpfc_nlp_not_used()
6548 kref_read(&ndlp->kref)); in lpfc_nlp_not_used()
6549 if (kref_read(&ndlp->kref) == 1) in lpfc_nlp_not_used()
6550 if (lpfc_nlp_put(ndlp)) in lpfc_nlp_not_used()
6570 struct lpfc_nodelist *ndlp; in lpfc_fcf_inuse() local
6593 list_for_each_entry(ndlp, &vports[i]->fc_nodes, nlp_listp) { in lpfc_fcf_inuse()
6594 if (NLP_CHK_NODE_ACT(ndlp) && ndlp->rport && in lpfc_fcf_inuse()
6595 (ndlp->rport->roles & FC_RPORT_ROLE_FCP_TARGET)) { in lpfc_fcf_inuse()
6599 } else if (ndlp->nlp_flag & NLP_RPI_REGISTERED) { in lpfc_fcf_inuse()
6605 ndlp->nlp_rpi, ndlp->nlp_DID, in lpfc_fcf_inuse()
6606 ndlp->nlp_flag); in lpfc_fcf_inuse()
6676 struct lpfc_nodelist *ndlp; in lpfc_unregister_fcf_prep() local
6692 ndlp = lpfc_findnode_did(vports[i], Fabric_DID); in lpfc_unregister_fcf_prep()
6693 if (ndlp) in lpfc_unregister_fcf_prep()
6694 lpfc_cancel_retry_delay_tmo(vports[i], ndlp); in lpfc_unregister_fcf_prep()
6707 ndlp = lpfc_findnode_did(phba->pport, Fabric_DID); in lpfc_unregister_fcf_prep()
6708 if (ndlp) in lpfc_unregister_fcf_prep()
6709 lpfc_cancel_retry_delay_tmo(phba->pport, ndlp); in lpfc_unregister_fcf_prep()