Lines Matching refs:ndlp
48 lpfc_check_adisc(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_check_adisc() argument
52 if (!(ndlp->nlp_flag & NLP_RPI_REGISTERED)) in lpfc_check_adisc()
58 if (memcmp(nn, &ndlp->nlp_nodename, sizeof (struct lpfc_name))) in lpfc_check_adisc()
61 if (memcmp(pn, &ndlp->nlp_portname, sizeof (struct lpfc_name))) in lpfc_check_adisc()
69 lpfc_check_sparm(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_check_sparm() argument
147 memcpy(&ndlp->nlp_nodename, &sp->nodeName, sizeof (struct lpfc_name)); in lpfc_check_sparm()
148 memcpy(&ndlp->nlp_portname, &sp->portName, sizeof (struct lpfc_name)); in lpfc_check_sparm()
155 ndlp->nlp_DID, in lpfc_check_sparm()
204 lpfc_els_abort(struct lpfc_hba *phba, struct lpfc_nodelist *ndlp) in lpfc_els_abort() argument
212 lpfc_printf_vlog(ndlp->vport, KERN_INFO, LOG_DISCOVERY, in lpfc_els_abort()
215 ndlp->nlp_DID, ndlp->nlp_flag, ndlp->nlp_state, in lpfc_els_abort()
216 ndlp->nlp_rpi); in lpfc_els_abort()
218 lpfc_fabric_abort_nport(ndlp); in lpfc_els_abort()
230 if (lpfc_check_sli_ndlp(phba, pring, iocb, ndlp)) in lpfc_els_abort()
254 if (lpfc_check_sli_ndlp(phba, pring, iocb, ndlp)) { in lpfc_els_abort()
268 lpfc_cancel_retry_delay_tmo(phba->pport, ndlp); in lpfc_els_abort()
273 lpfc_rcv_plogi(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_rcv_plogi() argument
311 ndlp, NULL); in lpfc_rcv_plogi()
323 lpfc_els_rsp_reject(vport, stat.un.lsRjtError, cmdiocb, ndlp, in lpfc_rcv_plogi()
332 lpfc_els_rsp_reject(vport, stat.un.lsRjtError, cmdiocb, ndlp, in lpfc_rcv_plogi()
337 nlp_portwwn = wwn_to_u64(ndlp->nlp_portname.u.wwn); in lpfc_rcv_plogi()
338 if ((lpfc_check_sparm(vport, ndlp, sp, CLASS3, 0) == 0)) { in lpfc_rcv_plogi()
342 lpfc_els_rsp_reject(vport, stat.un.lsRjtError, cmdiocb, ndlp, in lpfc_rcv_plogi()
352 ndlp->nlp_DID, ndlp->nlp_state, ndlp->nlp_flag, in lpfc_rcv_plogi()
353 ndlp->nlp_rpi, vport->port_state, in lpfc_rcv_plogi()
357 ndlp->nlp_fcp_info |= CLASS2; in lpfc_rcv_plogi()
359 ndlp->nlp_fcp_info |= CLASS3; in lpfc_rcv_plogi()
361 ndlp->nlp_class_sup = 0; in lpfc_rcv_plogi()
363 ndlp->nlp_class_sup |= FC_COS_CLASS1; in lpfc_rcv_plogi()
365 ndlp->nlp_class_sup |= FC_COS_CLASS2; in lpfc_rcv_plogi()
367 ndlp->nlp_class_sup |= FC_COS_CLASS3; in lpfc_rcv_plogi()
369 ndlp->nlp_class_sup |= FC_COS_CLASS4; in lpfc_rcv_plogi()
370 ndlp->nlp_maxframe = in lpfc_rcv_plogi()
374 switch (ndlp->nlp_state) { in lpfc_rcv_plogi()
376 if (!(ndlp->nlp_flag & NLP_NPR_ADISC)) in lpfc_rcv_plogi()
383 if (!(ndlp->nlp_type & NLP_FABRIC)) { in lpfc_rcv_plogi()
385 ndlp, NULL); in lpfc_rcv_plogi()
393 ndlp->nlp_DID, in lpfc_rcv_plogi()
398 ndlp->nlp_prev_state = ndlp->nlp_state; in lpfc_rcv_plogi()
400 lpfc_nlp_set_state(vport, ndlp, NLP_STE_NPR_NODE); in lpfc_rcv_plogi()
437 lpfc_unreg_rpi(vport, ndlp); in lpfc_rcv_plogi()
440 (uint8_t *) sp, mbox, ndlp->nlp_rpi); in lpfc_rcv_plogi()
456 ndlp->nlp_flag |= (NLP_ACC_REGLOGIN | NLP_RCV_PLOGI); in lpfc_rcv_plogi()
468 if (ndlp->nlp_state == NLP_STE_PLOGI_ISSUE) { in lpfc_rcv_plogi()
470 lpfc_els_abort(phba, ndlp); in lpfc_rcv_plogi()
482 ndlp->nlp_flag |= NLP_RM_DFLT_RPI; in lpfc_rcv_plogi()
487 ndlp, mbox); in lpfc_rcv_plogi()
492 rc = lpfc_els_rsp_acc(vport, ELS_CMD_PLOGI, cmdiocb, ndlp, mbox); in lpfc_rcv_plogi()
499 lpfc_els_rsp_reject(vport, stat.un.lsRjtError, cmdiocb, ndlp, NULL); in lpfc_rcv_plogi()
516 struct lpfc_nodelist *ndlp; in lpfc_mbx_cmpl_resume_rpi() local
520 ndlp = (struct lpfc_nodelist *) mboxq->context2; in lpfc_mbx_cmpl_resume_rpi()
525 lpfc_els_rsp_adisc_acc(vport, elsiocb, ndlp); in lpfc_mbx_cmpl_resume_rpi()
528 ndlp, NULL); in lpfc_mbx_cmpl_resume_rpi()
535 lpfc_rcv_padisc(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_rcv_padisc() argument
564 if (icmd->ulpStatus == 0 && lpfc_check_adisc(vport, ndlp, pnn, ppn)) { in lpfc_rcv_padisc()
583 lpfc_sli4_resume_rpi(ndlp, in lpfc_rcv_padisc()
590 lpfc_els_rsp_adisc_acc(vport, cmdiocb, ndlp); in lpfc_rcv_padisc()
593 ndlp, NULL); in lpfc_rcv_padisc()
597 if (ndlp->nlp_type & NLP_FCP_TARGET) in lpfc_rcv_padisc()
598 lpfc_nlp_set_state(vport, ndlp, NLP_STE_MAPPED_NODE); in lpfc_rcv_padisc()
600 lpfc_nlp_set_state(vport, ndlp, NLP_STE_UNMAPPED_NODE); in lpfc_rcv_padisc()
609 lpfc_els_rsp_reject(vport, stat.un.lsRjtError, cmdiocb, ndlp, NULL); in lpfc_rcv_padisc()
612 mod_timer(&ndlp->nlp_delayfunc, jiffies + msecs_to_jiffies(1000)); in lpfc_rcv_padisc()
615 ndlp->nlp_flag |= NLP_DELAY_TMO; in lpfc_rcv_padisc()
617 ndlp->nlp_last_elscmd = ELS_CMD_PLOGI; in lpfc_rcv_padisc()
618 ndlp->nlp_prev_state = ndlp->nlp_state; in lpfc_rcv_padisc()
619 lpfc_nlp_set_state(vport, ndlp, NLP_STE_NPR_NODE); in lpfc_rcv_padisc()
624 lpfc_rcv_logo(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_rcv_logo() argument
637 ndlp->nlp_flag |= NLP_LOGO_ACC; in lpfc_rcv_logo()
640 lpfc_els_rsp_acc(vport, ELS_CMD_PRLO, cmdiocb, ndlp, NULL); in lpfc_rcv_logo()
642 lpfc_els_rsp_acc(vport, ELS_CMD_ACC, cmdiocb, ndlp, NULL); in lpfc_rcv_logo()
643 if (ndlp->nlp_DID == Fabric_DID) { in lpfc_rcv_logo()
675 mod_timer(&ndlp->nlp_delayfunc, in lpfc_rcv_logo()
678 ndlp->nlp_flag |= NLP_DELAY_TMO; in lpfc_rcv_logo()
680 ndlp->nlp_last_elscmd = ELS_CMD_FDISC; in lpfc_rcv_logo()
688 } else if ((!(ndlp->nlp_type & NLP_FABRIC) && in lpfc_rcv_logo()
689 ((ndlp->nlp_type & NLP_FCP_TARGET) || in lpfc_rcv_logo()
690 !(ndlp->nlp_type & NLP_FCP_INITIATOR))) || in lpfc_rcv_logo()
691 (ndlp->nlp_state == NLP_STE_ADISC_ISSUE)) { in lpfc_rcv_logo()
693 mod_timer(&ndlp->nlp_delayfunc, in lpfc_rcv_logo()
696 ndlp->nlp_flag |= NLP_DELAY_TMO; in lpfc_rcv_logo()
699 ndlp->nlp_last_elscmd = ELS_CMD_PLOGI; in lpfc_rcv_logo()
702 ndlp->nlp_prev_state = ndlp->nlp_state; in lpfc_rcv_logo()
703 lpfc_nlp_set_state(vport, ndlp, NLP_STE_NPR_NODE); in lpfc_rcv_logo()
706 ndlp->nlp_flag &= ~NLP_NPR_ADISC; in lpfc_rcv_logo()
717 lpfc_rcv_prli(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_rcv_prli() argument
723 struct fc_rport *rport = ndlp->rport; in lpfc_rcv_prli()
730 ndlp->nlp_type &= ~(NLP_FCP_TARGET | NLP_FCP_INITIATOR); in lpfc_rcv_prli()
731 ndlp->nlp_fcp_info &= ~NLP_FCP_2_DEVICE; in lpfc_rcv_prli()
732 ndlp->nlp_flag &= ~NLP_FIRSTBURST; in lpfc_rcv_prli()
735 ndlp->nlp_type |= NLP_FCP_INITIATOR; in lpfc_rcv_prli()
737 ndlp->nlp_type |= NLP_FCP_TARGET; in lpfc_rcv_prli()
739 ndlp->nlp_flag |= NLP_FIRSTBURST; in lpfc_rcv_prli()
742 ndlp->nlp_fcp_info |= NLP_FCP_2_DEVICE; in lpfc_rcv_prli()
747 if (ndlp->nlp_type & NLP_FCP_INITIATOR) in lpfc_rcv_prli()
749 if (ndlp->nlp_type & NLP_FCP_TARGET) in lpfc_rcv_prli()
754 roles, ndlp->nlp_DID, ndlp->nlp_flag); in lpfc_rcv_prli()
761 lpfc_disc_set_adisc(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp) in lpfc_disc_set_adisc() argument
765 if (!(ndlp->nlp_flag & NLP_RPI_REGISTERED)) { in lpfc_disc_set_adisc()
766 ndlp->nlp_flag &= ~NLP_NPR_ADISC; in lpfc_disc_set_adisc()
773 ((ndlp->nlp_fcp_info & NLP_FCP_2_DEVICE) && in lpfc_disc_set_adisc()
774 (ndlp->nlp_type & NLP_FCP_TARGET))) { in lpfc_disc_set_adisc()
776 ndlp->nlp_flag |= NLP_NPR_ADISC; in lpfc_disc_set_adisc()
781 ndlp->nlp_flag &= ~NLP_NPR_ADISC; in lpfc_disc_set_adisc()
782 lpfc_unreg_rpi(vport, ndlp); in lpfc_disc_set_adisc()
818 lpfc_disc_illegal(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_disc_illegal() argument
836 ndlp->nlp_DID, evt, ndlp->nlp_state, ndlp->nlp_rpi, in lpfc_disc_illegal()
837 ndlp->nlp_flag); in lpfc_disc_illegal()
838 return ndlp->nlp_state; in lpfc_disc_illegal()
842 lpfc_cmpl_plogi_illegal(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_cmpl_plogi_illegal() argument
850 if (!(ndlp->nlp_flag & NLP_RCV_PLOGI)) { in lpfc_cmpl_plogi_illegal()
854 ndlp->nlp_DID, evt, ndlp->nlp_state, ndlp->nlp_rpi, in lpfc_cmpl_plogi_illegal()
855 ndlp->nlp_flag); in lpfc_cmpl_plogi_illegal()
857 return ndlp->nlp_state; in lpfc_cmpl_plogi_illegal()
863 lpfc_rcv_plogi_unused_node(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_rcv_plogi_unused_node() argument
870 if (lpfc_rcv_plogi(vport, ndlp, cmdiocb)) { in lpfc_rcv_plogi_unused_node()
871 return ndlp->nlp_state; in lpfc_rcv_plogi_unused_node()
877 lpfc_rcv_els_unused_node(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_rcv_els_unused_node() argument
880 lpfc_issue_els_logo(vport, ndlp, 0); in lpfc_rcv_els_unused_node()
881 return ndlp->nlp_state; in lpfc_rcv_els_unused_node()
885 lpfc_rcv_logo_unused_node(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_rcv_logo_unused_node() argument
892 ndlp->nlp_flag |= NLP_LOGO_ACC; in lpfc_rcv_logo_unused_node()
894 lpfc_els_rsp_acc(vport, ELS_CMD_ACC, cmdiocb, ndlp, NULL); in lpfc_rcv_logo_unused_node()
896 return ndlp->nlp_state; in lpfc_rcv_logo_unused_node()
900 lpfc_cmpl_logo_unused_node(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_cmpl_logo_unused_node() argument
907 lpfc_device_rm_unused_node(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_device_rm_unused_node() argument
915 struct lpfc_nodelist *ndlp, in lpfc_device_recov_unused_node() argument
918 return ndlp->nlp_state; in lpfc_device_recov_unused_node()
922 lpfc_rcv_plogi_plogi_issue(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_rcv_plogi_plogi_issue() argument
948 lpfc_els_rsp_reject(vport, stat.un.lsRjtError, cmdiocb, ndlp, in lpfc_rcv_plogi_plogi_issue()
951 if (lpfc_rcv_plogi(vport, ndlp, cmdiocb) && in lpfc_rcv_plogi_plogi_issue()
952 (ndlp->nlp_flag & NLP_NPR_2B_DISC) && in lpfc_rcv_plogi_plogi_issue()
955 ndlp->nlp_flag &= ~NLP_NPR_2B_DISC; in lpfc_rcv_plogi_plogi_issue()
969 return ndlp->nlp_state; in lpfc_rcv_plogi_plogi_issue()
973 lpfc_rcv_prli_plogi_issue(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_rcv_prli_plogi_issue() argument
982 lpfc_els_rsp_reject(vport, stat.un.lsRjtError, cmdiocb, ndlp, NULL); in lpfc_rcv_prli_plogi_issue()
983 return ndlp->nlp_state; in lpfc_rcv_prli_plogi_issue()
987 lpfc_rcv_logo_plogi_issue(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_rcv_logo_plogi_issue() argument
993 lpfc_els_abort(vport->phba, ndlp); in lpfc_rcv_logo_plogi_issue()
995 lpfc_rcv_logo(vport, ndlp, cmdiocb, ELS_CMD_LOGO); in lpfc_rcv_logo_plogi_issue()
996 return ndlp->nlp_state; in lpfc_rcv_logo_plogi_issue()
1000 lpfc_rcv_els_plogi_issue(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_rcv_els_plogi_issue() argument
1008 lpfc_els_abort(phba, ndlp); in lpfc_rcv_els_plogi_issue()
1011 lpfc_els_rsp_acc(vport, ELS_CMD_ACC, cmdiocb, ndlp, NULL); in lpfc_rcv_els_plogi_issue()
1013 lpfc_issue_els_logo(vport, ndlp, 0); in lpfc_rcv_els_plogi_issue()
1017 mod_timer(&ndlp->nlp_delayfunc, jiffies + msecs_to_jiffies(1000 * 1)); in lpfc_rcv_els_plogi_issue()
1019 ndlp->nlp_flag |= NLP_DELAY_TMO; in lpfc_rcv_els_plogi_issue()
1021 ndlp->nlp_last_elscmd = ELS_CMD_PLOGI; in lpfc_rcv_els_plogi_issue()
1022 ndlp->nlp_prev_state = NLP_STE_PLOGI_ISSUE; in lpfc_rcv_els_plogi_issue()
1023 lpfc_nlp_set_state(vport, ndlp, NLP_STE_NPR_NODE); in lpfc_rcv_els_plogi_issue()
1025 return ndlp->nlp_state; in lpfc_rcv_els_plogi_issue()
1030 struct lpfc_nodelist *ndlp, in lpfc_cmpl_plogi_plogi_issue() argument
1046 if (ndlp->nlp_flag & NLP_ACC_REGLOGIN) { in lpfc_cmpl_plogi_plogi_issue()
1048 return ndlp->nlp_state; in lpfc_cmpl_plogi_plogi_issue()
1066 if ((ndlp->nlp_DID != FDMI_DID) && in lpfc_cmpl_plogi_plogi_issue()
1073 if (!lpfc_check_sparm(vport, ndlp, sp, CLASS3, 0)) in lpfc_cmpl_plogi_plogi_issue()
1078 ndlp->nlp_DID, ndlp->nlp_state, in lpfc_cmpl_plogi_plogi_issue()
1079 ndlp->nlp_flag, ndlp->nlp_rpi); in lpfc_cmpl_plogi_plogi_issue()
1081 ndlp->nlp_fcp_info |= CLASS2; in lpfc_cmpl_plogi_plogi_issue()
1083 ndlp->nlp_fcp_info |= CLASS3; in lpfc_cmpl_plogi_plogi_issue()
1085 ndlp->nlp_class_sup = 0; in lpfc_cmpl_plogi_plogi_issue()
1087 ndlp->nlp_class_sup |= FC_COS_CLASS1; in lpfc_cmpl_plogi_plogi_issue()
1089 ndlp->nlp_class_sup |= FC_COS_CLASS2; in lpfc_cmpl_plogi_plogi_issue()
1091 ndlp->nlp_class_sup |= FC_COS_CLASS3; in lpfc_cmpl_plogi_plogi_issue()
1093 ndlp->nlp_class_sup |= FC_COS_CLASS4; in lpfc_cmpl_plogi_plogi_issue()
1094 ndlp->nlp_maxframe = in lpfc_cmpl_plogi_plogi_issue()
1102 ndlp->nlp_DID, ndlp->nlp_state, in lpfc_cmpl_plogi_plogi_issue()
1103 ndlp->nlp_flag, ndlp->nlp_rpi); in lpfc_cmpl_plogi_plogi_issue()
1107 lpfc_unreg_rpi(vport, ndlp); in lpfc_cmpl_plogi_plogi_issue()
1110 (uint8_t *) sp, mbox, ndlp->nlp_rpi) == 0) { in lpfc_cmpl_plogi_plogi_issue()
1111 switch (ndlp->nlp_DID) { in lpfc_cmpl_plogi_plogi_issue()
1119 ndlp->nlp_flag |= NLP_REG_LOGIN_SEND; in lpfc_cmpl_plogi_plogi_issue()
1122 mbox->context2 = lpfc_nlp_get(ndlp); in lpfc_cmpl_plogi_plogi_issue()
1126 lpfc_nlp_set_state(vport, ndlp, in lpfc_cmpl_plogi_plogi_issue()
1128 return ndlp->nlp_state; in lpfc_cmpl_plogi_plogi_issue()
1130 if (ndlp->nlp_flag & NLP_REG_LOGIN_SEND) in lpfc_cmpl_plogi_plogi_issue()
1131 ndlp->nlp_flag &= ~NLP_REG_LOGIN_SEND; in lpfc_cmpl_plogi_plogi_issue()
1135 lpfc_nlp_put(ndlp); in lpfc_cmpl_plogi_plogi_issue()
1144 ndlp->nlp_DID, ndlp->nlp_state, in lpfc_cmpl_plogi_plogi_issue()
1145 ndlp->nlp_flag, ndlp->nlp_rpi); in lpfc_cmpl_plogi_plogi_issue()
1152 ndlp->nlp_DID, ndlp->nlp_state, in lpfc_cmpl_plogi_plogi_issue()
1153 ndlp->nlp_flag, ndlp->nlp_rpi); in lpfc_cmpl_plogi_plogi_issue()
1158 if (ndlp->nlp_DID == NameServer_DID) { in lpfc_cmpl_plogi_plogi_issue()
1169 ndlp->nlp_prev_state = ndlp->nlp_state; in lpfc_cmpl_plogi_plogi_issue()
1170 lpfc_nlp_set_state(vport, ndlp, NLP_STE_NPR_NODE); in lpfc_cmpl_plogi_plogi_issue()
1172 ndlp->nlp_flag |= NLP_DEFER_RM; in lpfc_cmpl_plogi_plogi_issue()
1178 lpfc_cmpl_logo_plogi_issue(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_cmpl_logo_plogi_issue() argument
1181 return ndlp->nlp_state; in lpfc_cmpl_logo_plogi_issue()
1186 struct lpfc_nodelist *ndlp, void *arg, uint32_t evt) in lpfc_cmpl_reglogin_plogi_issue() argument
1200 return ndlp->nlp_state; in lpfc_cmpl_reglogin_plogi_issue()
1204 lpfc_device_rm_plogi_issue(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_device_rm_plogi_issue() argument
1209 if (ndlp->nlp_flag & NLP_NPR_2B_DISC) { in lpfc_device_rm_plogi_issue()
1211 ndlp->nlp_flag |= NLP_NODEV_REMOVE; in lpfc_device_rm_plogi_issue()
1213 return ndlp->nlp_state; in lpfc_device_rm_plogi_issue()
1216 lpfc_els_abort(vport->phba, ndlp); in lpfc_device_rm_plogi_issue()
1218 lpfc_drop_node(vport, ndlp); in lpfc_device_rm_plogi_issue()
1225 struct lpfc_nodelist *ndlp, in lpfc_device_recov_plogi_issue() argument
1236 return ndlp->nlp_state; in lpfc_device_recov_plogi_issue()
1239 lpfc_els_abort(phba, ndlp); in lpfc_device_recov_plogi_issue()
1241 ndlp->nlp_prev_state = NLP_STE_PLOGI_ISSUE; in lpfc_device_recov_plogi_issue()
1242 lpfc_nlp_set_state(vport, ndlp, NLP_STE_NPR_NODE); in lpfc_device_recov_plogi_issue()
1244 ndlp->nlp_flag &= ~(NLP_NODEV_REMOVE | NLP_NPR_2B_DISC); in lpfc_device_recov_plogi_issue()
1247 return ndlp->nlp_state; in lpfc_device_recov_plogi_issue()
1251 lpfc_rcv_plogi_adisc_issue(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_rcv_plogi_adisc_issue() argument
1259 lpfc_els_abort(phba, ndlp); in lpfc_rcv_plogi_adisc_issue()
1263 if (lpfc_rcv_plogi(vport, ndlp, cmdiocb)) { in lpfc_rcv_plogi_adisc_issue()
1264 if (ndlp->nlp_flag & NLP_NPR_2B_DISC) { in lpfc_rcv_plogi_adisc_issue()
1266 ndlp->nlp_flag &= ~NLP_NPR_2B_DISC; in lpfc_rcv_plogi_adisc_issue()
1271 return ndlp->nlp_state; in lpfc_rcv_plogi_adisc_issue()
1273 ndlp->nlp_prev_state = NLP_STE_ADISC_ISSUE; in lpfc_rcv_plogi_adisc_issue()
1274 lpfc_issue_els_plogi(vport, ndlp->nlp_DID, 0); in lpfc_rcv_plogi_adisc_issue()
1275 lpfc_nlp_set_state(vport, ndlp, NLP_STE_PLOGI_ISSUE); in lpfc_rcv_plogi_adisc_issue()
1277 return ndlp->nlp_state; in lpfc_rcv_plogi_adisc_issue()
1281 lpfc_rcv_prli_adisc_issue(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_rcv_prli_adisc_issue() argument
1286 lpfc_els_rsp_prli_acc(vport, cmdiocb, ndlp); in lpfc_rcv_prli_adisc_issue()
1287 return ndlp->nlp_state; in lpfc_rcv_prli_adisc_issue()
1291 lpfc_rcv_logo_adisc_issue(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_rcv_logo_adisc_issue() argument
1300 lpfc_els_abort(phba, ndlp); in lpfc_rcv_logo_adisc_issue()
1302 lpfc_rcv_logo(vport, ndlp, cmdiocb, ELS_CMD_LOGO); in lpfc_rcv_logo_adisc_issue()
1303 return ndlp->nlp_state; in lpfc_rcv_logo_adisc_issue()
1308 struct lpfc_nodelist *ndlp, in lpfc_rcv_padisc_adisc_issue() argument
1315 lpfc_rcv_padisc(vport, ndlp, cmdiocb); in lpfc_rcv_padisc_adisc_issue()
1316 return ndlp->nlp_state; in lpfc_rcv_padisc_adisc_issue()
1320 lpfc_rcv_prlo_adisc_issue(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_rcv_prlo_adisc_issue() argument
1328 lpfc_rcv_logo(vport, ndlp, cmdiocb, ELS_CMD_PRLO); in lpfc_rcv_prlo_adisc_issue()
1329 return ndlp->nlp_state; in lpfc_rcv_prlo_adisc_issue()
1334 struct lpfc_nodelist *ndlp, in lpfc_cmpl_adisc_adisc_issue() argument
1351 (!lpfc_check_adisc(vport, ndlp, &ap->nodeName, &ap->portName))) { in lpfc_cmpl_adisc_adisc_issue()
1353 mod_timer(&ndlp->nlp_delayfunc, in lpfc_cmpl_adisc_adisc_issue()
1356 ndlp->nlp_flag |= NLP_DELAY_TMO; in lpfc_cmpl_adisc_adisc_issue()
1358 ndlp->nlp_last_elscmd = ELS_CMD_PLOGI; in lpfc_cmpl_adisc_adisc_issue()
1360 memset(&ndlp->nlp_nodename, 0, sizeof(struct lpfc_name)); in lpfc_cmpl_adisc_adisc_issue()
1361 memset(&ndlp->nlp_portname, 0, sizeof(struct lpfc_name)); in lpfc_cmpl_adisc_adisc_issue()
1363 ndlp->nlp_prev_state = NLP_STE_ADISC_ISSUE; in lpfc_cmpl_adisc_adisc_issue()
1364 lpfc_nlp_set_state(vport, ndlp, NLP_STE_NPR_NODE); in lpfc_cmpl_adisc_adisc_issue()
1365 lpfc_unreg_rpi(vport, ndlp); in lpfc_cmpl_adisc_adisc_issue()
1366 return ndlp->nlp_state; in lpfc_cmpl_adisc_adisc_issue()
1370 rc = lpfc_sli4_resume_rpi(ndlp, NULL, NULL); in lpfc_cmpl_adisc_adisc_issue()
1373 ndlp->nlp_prev_state = NLP_STE_ADISC_ISSUE; in lpfc_cmpl_adisc_adisc_issue()
1374 return ndlp->nlp_state; in lpfc_cmpl_adisc_adisc_issue()
1378 if (ndlp->nlp_type & NLP_FCP_TARGET) { in lpfc_cmpl_adisc_adisc_issue()
1379 ndlp->nlp_prev_state = NLP_STE_ADISC_ISSUE; in lpfc_cmpl_adisc_adisc_issue()
1380 lpfc_nlp_set_state(vport, ndlp, NLP_STE_MAPPED_NODE); in lpfc_cmpl_adisc_adisc_issue()
1382 ndlp->nlp_prev_state = NLP_STE_ADISC_ISSUE; in lpfc_cmpl_adisc_adisc_issue()
1383 lpfc_nlp_set_state(vport, ndlp, NLP_STE_UNMAPPED_NODE); in lpfc_cmpl_adisc_adisc_issue()
1386 return ndlp->nlp_state; in lpfc_cmpl_adisc_adisc_issue()
1390 lpfc_device_rm_adisc_issue(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_device_rm_adisc_issue() argument
1395 if (ndlp->nlp_flag & NLP_NPR_2B_DISC) { in lpfc_device_rm_adisc_issue()
1397 ndlp->nlp_flag |= NLP_NODEV_REMOVE; in lpfc_device_rm_adisc_issue()
1399 return ndlp->nlp_state; in lpfc_device_rm_adisc_issue()
1402 lpfc_els_abort(vport->phba, ndlp); in lpfc_device_rm_adisc_issue()
1404 lpfc_drop_node(vport, ndlp); in lpfc_device_rm_adisc_issue()
1411 struct lpfc_nodelist *ndlp, in lpfc_device_recov_adisc_issue() argument
1422 return ndlp->nlp_state; in lpfc_device_recov_adisc_issue()
1425 lpfc_els_abort(phba, ndlp); in lpfc_device_recov_adisc_issue()
1427 ndlp->nlp_prev_state = NLP_STE_ADISC_ISSUE; in lpfc_device_recov_adisc_issue()
1428 lpfc_nlp_set_state(vport, ndlp, NLP_STE_NPR_NODE); in lpfc_device_recov_adisc_issue()
1430 ndlp->nlp_flag &= ~(NLP_NODEV_REMOVE | NLP_NPR_2B_DISC); in lpfc_device_recov_adisc_issue()
1432 lpfc_disc_set_adisc(vport, ndlp); in lpfc_device_recov_adisc_issue()
1433 return ndlp->nlp_state; in lpfc_device_recov_adisc_issue()
1438 struct lpfc_nodelist *ndlp, in lpfc_rcv_plogi_reglogin_issue() argument
1444 lpfc_rcv_plogi(vport, ndlp, cmdiocb); in lpfc_rcv_plogi_reglogin_issue()
1445 return ndlp->nlp_state; in lpfc_rcv_plogi_reglogin_issue()
1450 struct lpfc_nodelist *ndlp, in lpfc_rcv_prli_reglogin_issue() argument
1456 lpfc_els_rsp_prli_acc(vport, cmdiocb, ndlp); in lpfc_rcv_prli_reglogin_issue()
1457 return ndlp->nlp_state; in lpfc_rcv_prli_reglogin_issue()
1462 struct lpfc_nodelist *ndlp, in lpfc_rcv_logo_reglogin_issue() argument
1477 (ndlp == (struct lpfc_nodelist *) mb->context2)) { in lpfc_rcv_logo_reglogin_issue()
1478 lpfc_nlp_put(ndlp); in lpfc_rcv_logo_reglogin_issue()
1487 (ndlp == (struct lpfc_nodelist *) mb->context2)) { in lpfc_rcv_logo_reglogin_issue()
1493 lpfc_nlp_put(ndlp); in lpfc_rcv_logo_reglogin_issue()
1501 lpfc_rcv_logo(vport, ndlp, cmdiocb, ELS_CMD_LOGO); in lpfc_rcv_logo_reglogin_issue()
1502 return ndlp->nlp_state; in lpfc_rcv_logo_reglogin_issue()
1507 struct lpfc_nodelist *ndlp, in lpfc_rcv_padisc_reglogin_issue() argument
1513 lpfc_rcv_padisc(vport, ndlp, cmdiocb); in lpfc_rcv_padisc_reglogin_issue()
1514 return ndlp->nlp_state; in lpfc_rcv_padisc_reglogin_issue()
1519 struct lpfc_nodelist *ndlp, in lpfc_rcv_prlo_reglogin_issue() argument
1526 lpfc_els_rsp_acc(vport, ELS_CMD_PRLO, cmdiocb, ndlp, NULL); in lpfc_rcv_prlo_reglogin_issue()
1527 return ndlp->nlp_state; in lpfc_rcv_prlo_reglogin_issue()
1532 struct lpfc_nodelist *ndlp, in lpfc_cmpl_reglogin_reglogin_issue() argument
1554 ndlp->nlp_prev_state = NLP_STE_REG_LOGIN_ISSUE; in lpfc_cmpl_reglogin_reglogin_issue()
1555 lpfc_nlp_set_state(vport, ndlp, NLP_STE_NPR_NODE); in lpfc_cmpl_reglogin_reglogin_issue()
1556 return ndlp->nlp_state; in lpfc_cmpl_reglogin_reglogin_issue()
1560 mod_timer(&ndlp->nlp_delayfunc, in lpfc_cmpl_reglogin_reglogin_issue()
1563 ndlp->nlp_flag |= NLP_DELAY_TMO; in lpfc_cmpl_reglogin_reglogin_issue()
1565 ndlp->nlp_last_elscmd = ELS_CMD_PLOGI; in lpfc_cmpl_reglogin_reglogin_issue()
1567 lpfc_issue_els_logo(vport, ndlp, 0); in lpfc_cmpl_reglogin_reglogin_issue()
1568 ndlp->nlp_prev_state = NLP_STE_REG_LOGIN_ISSUE; in lpfc_cmpl_reglogin_reglogin_issue()
1569 lpfc_nlp_set_state(vport, ndlp, NLP_STE_NPR_NODE); in lpfc_cmpl_reglogin_reglogin_issue()
1570 return ndlp->nlp_state; in lpfc_cmpl_reglogin_reglogin_issue()
1575 ndlp->nlp_rpi = mb->un.varWords[0]; in lpfc_cmpl_reglogin_reglogin_issue()
1577 ndlp->nlp_flag |= NLP_RPI_REGISTERED; in lpfc_cmpl_reglogin_reglogin_issue()
1580 if (!(ndlp->nlp_type & NLP_FABRIC)) { in lpfc_cmpl_reglogin_reglogin_issue()
1581 ndlp->nlp_prev_state = NLP_STE_REG_LOGIN_ISSUE; in lpfc_cmpl_reglogin_reglogin_issue()
1582 lpfc_nlp_set_state(vport, ndlp, NLP_STE_PRLI_ISSUE); in lpfc_cmpl_reglogin_reglogin_issue()
1583 lpfc_issue_els_prli(vport, ndlp, 0); in lpfc_cmpl_reglogin_reglogin_issue()
1585 ndlp->nlp_prev_state = NLP_STE_REG_LOGIN_ISSUE; in lpfc_cmpl_reglogin_reglogin_issue()
1586 lpfc_nlp_set_state(vport, ndlp, NLP_STE_UNMAPPED_NODE); in lpfc_cmpl_reglogin_reglogin_issue()
1588 return ndlp->nlp_state; in lpfc_cmpl_reglogin_reglogin_issue()
1593 struct lpfc_nodelist *ndlp, in lpfc_device_rm_reglogin_issue() argument
1599 if (ndlp->nlp_flag & NLP_NPR_2B_DISC) { in lpfc_device_rm_reglogin_issue()
1601 ndlp->nlp_flag |= NLP_NODEV_REMOVE; in lpfc_device_rm_reglogin_issue()
1603 return ndlp->nlp_state; in lpfc_device_rm_reglogin_issue()
1605 lpfc_drop_node(vport, ndlp); in lpfc_device_rm_reglogin_issue()
1612 struct lpfc_nodelist *ndlp, in lpfc_device_recov_reglogin_issue() argument
1622 return ndlp->nlp_state; in lpfc_device_recov_reglogin_issue()
1624 ndlp->nlp_prev_state = NLP_STE_REG_LOGIN_ISSUE; in lpfc_device_recov_reglogin_issue()
1625 lpfc_nlp_set_state(vport, ndlp, NLP_STE_NPR_NODE); in lpfc_device_recov_reglogin_issue()
1627 ndlp->nlp_flag |= NLP_IGNR_REG_CMPL; in lpfc_device_recov_reglogin_issue()
1628 ndlp->nlp_flag &= ~(NLP_NODEV_REMOVE | NLP_NPR_2B_DISC); in lpfc_device_recov_reglogin_issue()
1630 lpfc_disc_set_adisc(vport, ndlp); in lpfc_device_recov_reglogin_issue()
1631 return ndlp->nlp_state; in lpfc_device_recov_reglogin_issue()
1635 lpfc_rcv_plogi_prli_issue(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_rcv_plogi_prli_issue() argument
1642 lpfc_rcv_plogi(vport, ndlp, cmdiocb); in lpfc_rcv_plogi_prli_issue()
1643 return ndlp->nlp_state; in lpfc_rcv_plogi_prli_issue()
1647 lpfc_rcv_prli_prli_issue(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_rcv_prli_prli_issue() argument
1652 lpfc_els_rsp_prli_acc(vport, cmdiocb, ndlp); in lpfc_rcv_prli_prli_issue()
1653 return ndlp->nlp_state; in lpfc_rcv_prli_prli_issue()
1657 lpfc_rcv_logo_prli_issue(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_rcv_logo_prli_issue() argument
1663 lpfc_els_abort(vport->phba, ndlp); in lpfc_rcv_logo_prli_issue()
1665 lpfc_rcv_logo(vport, ndlp, cmdiocb, ELS_CMD_LOGO); in lpfc_rcv_logo_prli_issue()
1666 return ndlp->nlp_state; in lpfc_rcv_logo_prli_issue()
1670 lpfc_rcv_padisc_prli_issue(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_rcv_padisc_prli_issue() argument
1675 lpfc_rcv_padisc(vport, ndlp, cmdiocb); in lpfc_rcv_padisc_prli_issue()
1676 return ndlp->nlp_state; in lpfc_rcv_padisc_prli_issue()
1685 lpfc_rcv_prlo_prli_issue(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_rcv_prlo_prli_issue() argument
1690 lpfc_els_rsp_acc(vport, ELS_CMD_PRLO, cmdiocb, ndlp, NULL); in lpfc_rcv_prlo_prli_issue()
1691 return ndlp->nlp_state; in lpfc_rcv_prlo_prli_issue()
1695 lpfc_cmpl_prli_prli_issue(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_cmpl_prli_prli_issue() argument
1714 ndlp->nlp_prev_state = NLP_STE_PRLI_ISSUE; in lpfc_cmpl_prli_prli_issue()
1715 lpfc_nlp_set_state(vport, ndlp, NLP_STE_UNMAPPED_NODE); in lpfc_cmpl_prli_prli_issue()
1716 return ndlp->nlp_state; in lpfc_cmpl_prli_prli_issue()
1720 ndlp->nlp_type &= ~(NLP_FCP_TARGET | NLP_FCP_INITIATOR); in lpfc_cmpl_prli_prli_issue()
1721 ndlp->nlp_fcp_info &= ~NLP_FCP_2_DEVICE; in lpfc_cmpl_prli_prli_issue()
1722 ndlp->nlp_flag &= ~NLP_FIRSTBURST; in lpfc_cmpl_prli_prli_issue()
1726 ndlp->nlp_type |= NLP_FCP_INITIATOR; in lpfc_cmpl_prli_prli_issue()
1728 ndlp->nlp_type |= NLP_FCP_TARGET; in lpfc_cmpl_prli_prli_issue()
1730 ndlp->nlp_flag |= NLP_FIRSTBURST; in lpfc_cmpl_prli_prli_issue()
1733 ndlp->nlp_fcp_info |= NLP_FCP_2_DEVICE; in lpfc_cmpl_prli_prli_issue()
1735 if (!(ndlp->nlp_type & NLP_FCP_TARGET) && in lpfc_cmpl_prli_prli_issue()
1740 ndlp->nlp_flag |= NLP_TARGET_REMOVE; in lpfc_cmpl_prli_prli_issue()
1742 lpfc_issue_els_logo(vport, ndlp, 0); in lpfc_cmpl_prli_prli_issue()
1744 ndlp->nlp_prev_state = NLP_STE_PRLI_ISSUE; in lpfc_cmpl_prli_prli_issue()
1745 lpfc_nlp_set_state(vport, ndlp, NLP_STE_NPR_NODE); in lpfc_cmpl_prli_prli_issue()
1746 return ndlp->nlp_state; in lpfc_cmpl_prli_prli_issue()
1749 ndlp->nlp_prev_state = NLP_STE_PRLI_ISSUE; in lpfc_cmpl_prli_prli_issue()
1750 if (ndlp->nlp_type & NLP_FCP_TARGET) in lpfc_cmpl_prli_prli_issue()
1751 lpfc_nlp_set_state(vport, ndlp, NLP_STE_MAPPED_NODE); in lpfc_cmpl_prli_prli_issue()
1753 lpfc_nlp_set_state(vport, ndlp, NLP_STE_UNMAPPED_NODE); in lpfc_cmpl_prli_prli_issue()
1754 return ndlp->nlp_state; in lpfc_cmpl_prli_prli_issue()
1776 lpfc_device_rm_prli_issue(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_device_rm_prli_issue() argument
1781 if (ndlp->nlp_flag & NLP_NPR_2B_DISC) { in lpfc_device_rm_prli_issue()
1783 ndlp->nlp_flag |= NLP_NODEV_REMOVE; in lpfc_device_rm_prli_issue()
1785 return ndlp->nlp_state; in lpfc_device_rm_prli_issue()
1788 lpfc_els_abort(vport->phba, ndlp); in lpfc_device_rm_prli_issue()
1790 lpfc_drop_node(vport, ndlp); in lpfc_device_rm_prli_issue()
1814 struct lpfc_nodelist *ndlp, in lpfc_device_recov_prli_issue() argument
1825 return ndlp->nlp_state; in lpfc_device_recov_prli_issue()
1828 lpfc_els_abort(phba, ndlp); in lpfc_device_recov_prli_issue()
1830 ndlp->nlp_prev_state = NLP_STE_PRLI_ISSUE; in lpfc_device_recov_prli_issue()
1831 lpfc_nlp_set_state(vport, ndlp, NLP_STE_NPR_NODE); in lpfc_device_recov_prli_issue()
1833 ndlp->nlp_flag &= ~(NLP_NODEV_REMOVE | NLP_NPR_2B_DISC); in lpfc_device_recov_prli_issue()
1835 lpfc_disc_set_adisc(vport, ndlp); in lpfc_device_recov_prli_issue()
1836 return ndlp->nlp_state; in lpfc_device_recov_prli_issue()
1840 lpfc_rcv_plogi_logo_issue(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_rcv_plogi_logo_issue() argument
1849 lpfc_els_rsp_reject(vport, stat.un.lsRjtError, cmdiocb, ndlp, NULL); in lpfc_rcv_plogi_logo_issue()
1850 return ndlp->nlp_state; in lpfc_rcv_plogi_logo_issue()
1854 lpfc_rcv_prli_logo_issue(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_rcv_prli_logo_issue() argument
1863 lpfc_els_rsp_reject(vport, stat.un.lsRjtError, cmdiocb, ndlp, NULL); in lpfc_rcv_prli_logo_issue()
1864 return ndlp->nlp_state; in lpfc_rcv_prli_logo_issue()
1868 lpfc_rcv_logo_logo_issue(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_rcv_logo_logo_issue() argument
1875 ndlp->nlp_flag |= NLP_LOGO_ACC; in lpfc_rcv_logo_logo_issue()
1877 lpfc_els_rsp_acc(vport, ELS_CMD_ACC, cmdiocb, ndlp, NULL); in lpfc_rcv_logo_logo_issue()
1878 return ndlp->nlp_state; in lpfc_rcv_logo_logo_issue()
1882 lpfc_rcv_padisc_logo_issue(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_rcv_padisc_logo_issue() argument
1891 lpfc_els_rsp_reject(vport, stat.un.lsRjtError, cmdiocb, ndlp, NULL); in lpfc_rcv_padisc_logo_issue()
1892 return ndlp->nlp_state; in lpfc_rcv_padisc_logo_issue()
1896 lpfc_rcv_prlo_logo_issue(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_rcv_prlo_logo_issue() argument
1905 lpfc_els_rsp_reject(vport, stat.un.lsRjtError, cmdiocb, ndlp, NULL); in lpfc_rcv_prlo_logo_issue()
1906 return ndlp->nlp_state; in lpfc_rcv_prlo_logo_issue()
1910 lpfc_cmpl_logo_logo_issue(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_cmpl_logo_logo_issue() argument
1915 ndlp->nlp_prev_state = NLP_STE_LOGO_ISSUE; in lpfc_cmpl_logo_logo_issue()
1916 lpfc_nlp_set_state(vport, ndlp, NLP_STE_NPR_NODE); in lpfc_cmpl_logo_logo_issue()
1918 ndlp->nlp_flag &= ~(NLP_NODEV_REMOVE | NLP_NPR_2B_DISC); in lpfc_cmpl_logo_logo_issue()
1920 lpfc_disc_set_adisc(vport, ndlp); in lpfc_cmpl_logo_logo_issue()
1921 return ndlp->nlp_state; in lpfc_cmpl_logo_logo_issue()
1925 lpfc_device_rm_logo_issue(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_device_rm_logo_issue() argument
1934 return ndlp->nlp_state; in lpfc_device_rm_logo_issue()
1939 struct lpfc_nodelist *ndlp, in lpfc_device_recov_logo_issue() argument
1947 return ndlp->nlp_state; in lpfc_device_recov_logo_issue()
1951 lpfc_rcv_plogi_unmap_node(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_rcv_plogi_unmap_node() argument
1956 lpfc_rcv_plogi(vport, ndlp, cmdiocb); in lpfc_rcv_plogi_unmap_node()
1957 return ndlp->nlp_state; in lpfc_rcv_plogi_unmap_node()
1961 lpfc_rcv_prli_unmap_node(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_rcv_prli_unmap_node() argument
1966 lpfc_rcv_prli(vport, ndlp, cmdiocb); in lpfc_rcv_prli_unmap_node()
1967 lpfc_els_rsp_prli_acc(vport, cmdiocb, ndlp); in lpfc_rcv_prli_unmap_node()
1968 return ndlp->nlp_state; in lpfc_rcv_prli_unmap_node()
1972 lpfc_rcv_logo_unmap_node(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_rcv_logo_unmap_node() argument
1977 lpfc_rcv_logo(vport, ndlp, cmdiocb, ELS_CMD_LOGO); in lpfc_rcv_logo_unmap_node()
1978 return ndlp->nlp_state; in lpfc_rcv_logo_unmap_node()
1982 lpfc_rcv_padisc_unmap_node(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_rcv_padisc_unmap_node() argument
1987 lpfc_rcv_padisc(vport, ndlp, cmdiocb); in lpfc_rcv_padisc_unmap_node()
1988 return ndlp->nlp_state; in lpfc_rcv_padisc_unmap_node()
1992 lpfc_rcv_prlo_unmap_node(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_rcv_prlo_unmap_node() argument
1997 lpfc_els_rsp_acc(vport, ELS_CMD_PRLO, cmdiocb, ndlp, NULL); in lpfc_rcv_prlo_unmap_node()
1998 return ndlp->nlp_state; in lpfc_rcv_prlo_unmap_node()
2003 struct lpfc_nodelist *ndlp, in lpfc_device_recov_unmap_node() argument
2009 ndlp->nlp_prev_state = NLP_STE_UNMAPPED_NODE; in lpfc_device_recov_unmap_node()
2010 lpfc_nlp_set_state(vport, ndlp, NLP_STE_NPR_NODE); in lpfc_device_recov_unmap_node()
2012 ndlp->nlp_flag &= ~(NLP_NODEV_REMOVE | NLP_NPR_2B_DISC); in lpfc_device_recov_unmap_node()
2014 lpfc_disc_set_adisc(vport, ndlp); in lpfc_device_recov_unmap_node()
2016 return ndlp->nlp_state; in lpfc_device_recov_unmap_node()
2020 lpfc_rcv_plogi_mapped_node(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_rcv_plogi_mapped_node() argument
2025 lpfc_rcv_plogi(vport, ndlp, cmdiocb); in lpfc_rcv_plogi_mapped_node()
2026 return ndlp->nlp_state; in lpfc_rcv_plogi_mapped_node()
2030 lpfc_rcv_prli_mapped_node(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_rcv_prli_mapped_node() argument
2035 lpfc_els_rsp_prli_acc(vport, cmdiocb, ndlp); in lpfc_rcv_prli_mapped_node()
2036 return ndlp->nlp_state; in lpfc_rcv_prli_mapped_node()
2040 lpfc_rcv_logo_mapped_node(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_rcv_logo_mapped_node() argument
2045 lpfc_rcv_logo(vport, ndlp, cmdiocb, ELS_CMD_LOGO); in lpfc_rcv_logo_mapped_node()
2046 return ndlp->nlp_state; in lpfc_rcv_logo_mapped_node()
2051 struct lpfc_nodelist *ndlp, in lpfc_rcv_padisc_mapped_node() argument
2056 lpfc_rcv_padisc(vport, ndlp, cmdiocb); in lpfc_rcv_padisc_mapped_node()
2057 return ndlp->nlp_state; in lpfc_rcv_padisc_mapped_node()
2061 lpfc_rcv_prlo_mapped_node(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_rcv_prlo_mapped_node() argument
2069 ndlp->nlp_sid, 0, LPFC_CTX_TGT); in lpfc_rcv_prlo_mapped_node()
2072 lpfc_rcv_logo(vport, ndlp, cmdiocb, ELS_CMD_PRLO); in lpfc_rcv_prlo_mapped_node()
2073 return ndlp->nlp_state; in lpfc_rcv_prlo_mapped_node()
2078 struct lpfc_nodelist *ndlp, in lpfc_device_recov_mapped_node() argument
2084 ndlp->nlp_prev_state = NLP_STE_MAPPED_NODE; in lpfc_device_recov_mapped_node()
2085 lpfc_nlp_set_state(vport, ndlp, NLP_STE_NPR_NODE); in lpfc_device_recov_mapped_node()
2087 ndlp->nlp_flag &= ~(NLP_NODEV_REMOVE | NLP_NPR_2B_DISC); in lpfc_device_recov_mapped_node()
2089 lpfc_disc_set_adisc(vport, ndlp); in lpfc_device_recov_mapped_node()
2090 return ndlp->nlp_state; in lpfc_device_recov_mapped_node()
2094 lpfc_rcv_plogi_npr_node(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_rcv_plogi_npr_node() argument
2101 if (ndlp->nlp_flag & (NLP_LOGO_SND | NLP_LOGO_ACC)) in lpfc_rcv_plogi_npr_node()
2102 return ndlp->nlp_state; in lpfc_rcv_plogi_npr_node()
2103 if (lpfc_rcv_plogi(vport, ndlp, cmdiocb)) { in lpfc_rcv_plogi_npr_node()
2104 lpfc_cancel_retry_delay_tmo(vport, ndlp); in lpfc_rcv_plogi_npr_node()
2106 ndlp->nlp_flag &= ~(NLP_NPR_ADISC | NLP_NPR_2B_DISC); in lpfc_rcv_plogi_npr_node()
2108 } else if (!(ndlp->nlp_flag & NLP_NPR_2B_DISC)) { in lpfc_rcv_plogi_npr_node()
2110 if (!(ndlp->nlp_flag & NLP_DELAY_TMO)) { in lpfc_rcv_plogi_npr_node()
2111 ndlp->nlp_prev_state = NLP_STE_NPR_NODE; in lpfc_rcv_plogi_npr_node()
2112 lpfc_nlp_set_state(vport, ndlp, NLP_STE_PLOGI_ISSUE); in lpfc_rcv_plogi_npr_node()
2113 lpfc_issue_els_plogi(vport, ndlp->nlp_DID, 0); in lpfc_rcv_plogi_npr_node()
2116 return ndlp->nlp_state; in lpfc_rcv_plogi_npr_node()
2120 lpfc_rcv_prli_npr_node(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_rcv_prli_npr_node() argument
2130 lpfc_els_rsp_reject(vport, stat.un.lsRjtError, cmdiocb, ndlp, NULL); in lpfc_rcv_prli_npr_node()
2132 if (!(ndlp->nlp_flag & NLP_DELAY_TMO)) { in lpfc_rcv_prli_npr_node()
2133 if (ndlp->nlp_flag & NLP_NPR_ADISC) { in lpfc_rcv_prli_npr_node()
2135 ndlp->nlp_flag &= ~NLP_NPR_ADISC; in lpfc_rcv_prli_npr_node()
2136 ndlp->nlp_prev_state = NLP_STE_NPR_NODE; in lpfc_rcv_prli_npr_node()
2138 lpfc_nlp_set_state(vport, ndlp, NLP_STE_ADISC_ISSUE); in lpfc_rcv_prli_npr_node()
2139 lpfc_issue_els_adisc(vport, ndlp, 0); in lpfc_rcv_prli_npr_node()
2141 ndlp->nlp_prev_state = NLP_STE_NPR_NODE; in lpfc_rcv_prli_npr_node()
2142 lpfc_nlp_set_state(vport, ndlp, NLP_STE_PLOGI_ISSUE); in lpfc_rcv_prli_npr_node()
2143 lpfc_issue_els_plogi(vport, ndlp->nlp_DID, 0); in lpfc_rcv_prli_npr_node()
2146 return ndlp->nlp_state; in lpfc_rcv_prli_npr_node()
2150 lpfc_rcv_logo_npr_node(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_rcv_logo_npr_node() argument
2155 lpfc_rcv_logo(vport, ndlp, cmdiocb, ELS_CMD_LOGO); in lpfc_rcv_logo_npr_node()
2156 return ndlp->nlp_state; in lpfc_rcv_logo_npr_node()
2160 lpfc_rcv_padisc_npr_node(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_rcv_padisc_npr_node() argument
2165 lpfc_rcv_padisc(vport, ndlp, cmdiocb); in lpfc_rcv_padisc_npr_node()
2171 if (!(ndlp->nlp_flag & NLP_DELAY_TMO) && in lpfc_rcv_padisc_npr_node()
2172 !(ndlp->nlp_flag & NLP_NPR_2B_DISC)) { in lpfc_rcv_padisc_npr_node()
2173 if (ndlp->nlp_flag & NLP_NPR_ADISC) { in lpfc_rcv_padisc_npr_node()
2174 ndlp->nlp_flag &= ~NLP_NPR_ADISC; in lpfc_rcv_padisc_npr_node()
2175 ndlp->nlp_prev_state = NLP_STE_NPR_NODE; in lpfc_rcv_padisc_npr_node()
2176 lpfc_nlp_set_state(vport, ndlp, NLP_STE_ADISC_ISSUE); in lpfc_rcv_padisc_npr_node()
2177 lpfc_issue_els_adisc(vport, ndlp, 0); in lpfc_rcv_padisc_npr_node()
2179 ndlp->nlp_prev_state = NLP_STE_NPR_NODE; in lpfc_rcv_padisc_npr_node()
2180 lpfc_nlp_set_state(vport, ndlp, NLP_STE_PLOGI_ISSUE); in lpfc_rcv_padisc_npr_node()
2181 lpfc_issue_els_plogi(vport, ndlp->nlp_DID, 0); in lpfc_rcv_padisc_npr_node()
2184 return ndlp->nlp_state; in lpfc_rcv_padisc_npr_node()
2188 lpfc_rcv_prlo_npr_node(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_rcv_prlo_npr_node() argument
2195 ndlp->nlp_flag |= NLP_LOGO_ACC; in lpfc_rcv_prlo_npr_node()
2198 lpfc_els_rsp_acc(vport, ELS_CMD_ACC, cmdiocb, ndlp, NULL); in lpfc_rcv_prlo_npr_node()
2200 if ((ndlp->nlp_flag & NLP_DELAY_TMO) == 0) { in lpfc_rcv_prlo_npr_node()
2201 mod_timer(&ndlp->nlp_delayfunc, in lpfc_rcv_prlo_npr_node()
2204 ndlp->nlp_flag |= NLP_DELAY_TMO; in lpfc_rcv_prlo_npr_node()
2205 ndlp->nlp_flag &= ~NLP_NPR_ADISC; in lpfc_rcv_prlo_npr_node()
2207 ndlp->nlp_last_elscmd = ELS_CMD_PLOGI; in lpfc_rcv_prlo_npr_node()
2210 ndlp->nlp_flag &= ~NLP_NPR_ADISC; in lpfc_rcv_prlo_npr_node()
2213 return ndlp->nlp_state; in lpfc_rcv_prlo_npr_node()
2217 lpfc_cmpl_plogi_npr_node(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_cmpl_plogi_npr_node() argument
2230 ndlp->nlp_flag |= NLP_DEFER_RM; in lpfc_cmpl_plogi_npr_node()
2234 return ndlp->nlp_state; in lpfc_cmpl_plogi_npr_node()
2238 lpfc_cmpl_prli_npr_node(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_cmpl_prli_npr_node() argument
2248 if (irsp->ulpStatus && (ndlp->nlp_flag & NLP_NODEV_REMOVE)) { in lpfc_cmpl_prli_npr_node()
2249 lpfc_drop_node(vport, ndlp); in lpfc_cmpl_prli_npr_node()
2252 return ndlp->nlp_state; in lpfc_cmpl_prli_npr_node()
2256 lpfc_cmpl_logo_npr_node(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_cmpl_logo_npr_node() argument
2262 if (ndlp->nlp_DID == Fabric_DID) { in lpfc_cmpl_logo_npr_node()
2267 lpfc_unreg_rpi(vport, ndlp); in lpfc_cmpl_logo_npr_node()
2268 return ndlp->nlp_state; in lpfc_cmpl_logo_npr_node()
2272 lpfc_cmpl_adisc_npr_node(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_cmpl_adisc_npr_node() argument
2282 if (irsp->ulpStatus && (ndlp->nlp_flag & NLP_NODEV_REMOVE)) { in lpfc_cmpl_adisc_npr_node()
2283 lpfc_drop_node(vport, ndlp); in lpfc_cmpl_adisc_npr_node()
2286 return ndlp->nlp_state; in lpfc_cmpl_adisc_npr_node()
2291 struct lpfc_nodelist *ndlp, in lpfc_cmpl_reglogin_npr_node() argument
2300 ndlp->nlp_rpi = mb->un.varWords[0]; in lpfc_cmpl_reglogin_npr_node()
2301 ndlp->nlp_flag |= NLP_RPI_REGISTERED; in lpfc_cmpl_reglogin_npr_node()
2303 if (ndlp->nlp_flag & NLP_NODEV_REMOVE) { in lpfc_cmpl_reglogin_npr_node()
2304 lpfc_drop_node(vport, ndlp); in lpfc_cmpl_reglogin_npr_node()
2308 return ndlp->nlp_state; in lpfc_cmpl_reglogin_npr_node()
2312 lpfc_device_rm_npr_node(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_device_rm_npr_node() argument
2317 if (ndlp->nlp_flag & NLP_NPR_2B_DISC) { in lpfc_device_rm_npr_node()
2319 ndlp->nlp_flag |= NLP_NODEV_REMOVE; in lpfc_device_rm_npr_node()
2321 return ndlp->nlp_state; in lpfc_device_rm_npr_node()
2323 lpfc_drop_node(vport, ndlp); in lpfc_device_rm_npr_node()
2328 lpfc_device_recov_npr_node(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_device_recov_npr_node() argument
2337 return ndlp->nlp_state; in lpfc_device_recov_npr_node()
2339 lpfc_cancel_retry_delay_tmo(vport, ndlp); in lpfc_device_recov_npr_node()
2341 ndlp->nlp_flag &= ~(NLP_NODEV_REMOVE | NLP_NPR_2B_DISC); in lpfc_device_recov_npr_node()
2343 return ndlp->nlp_state; in lpfc_device_recov_npr_node()
2534 lpfc_disc_state_machine(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_disc_state_machine() argument
2542 if (lpfc_nlp_get(ndlp)) in lpfc_disc_state_machine()
2545 cur_state = ndlp->nlp_state; in lpfc_disc_state_machine()
2551 evt, ndlp->nlp_DID, cur_state, ndlp->nlp_flag); in lpfc_disc_state_machine()
2555 evt, cur_state, ndlp->nlp_DID); in lpfc_disc_state_machine()
2558 rc = (func) (vport, ndlp, arg, evt); in lpfc_disc_state_machine()
2564 rc, ndlp->nlp_DID, ndlp->nlp_flag); in lpfc_disc_state_machine()
2568 rc, ndlp->nlp_DID, ndlp->nlp_flag); in lpfc_disc_state_machine()
2570 lpfc_nlp_put(ndlp); in lpfc_disc_state_machine()