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()
669 mod_timer(&ndlp->nlp_delayfunc, in lpfc_rcv_logo()
672 ndlp->nlp_flag |= NLP_DELAY_TMO; in lpfc_rcv_logo()
674 ndlp->nlp_last_elscmd = ELS_CMD_FDISC; in lpfc_rcv_logo()
682 } else if ((!(ndlp->nlp_type & NLP_FABRIC) && in lpfc_rcv_logo()
683 ((ndlp->nlp_type & NLP_FCP_TARGET) || in lpfc_rcv_logo()
684 !(ndlp->nlp_type & NLP_FCP_INITIATOR))) || in lpfc_rcv_logo()
685 (ndlp->nlp_state == NLP_STE_ADISC_ISSUE)) { in lpfc_rcv_logo()
687 mod_timer(&ndlp->nlp_delayfunc, in lpfc_rcv_logo()
690 ndlp->nlp_flag |= NLP_DELAY_TMO; in lpfc_rcv_logo()
693 ndlp->nlp_last_elscmd = ELS_CMD_PLOGI; in lpfc_rcv_logo()
696 ndlp->nlp_prev_state = ndlp->nlp_state; in lpfc_rcv_logo()
697 lpfc_nlp_set_state(vport, ndlp, NLP_STE_NPR_NODE); in lpfc_rcv_logo()
700 ndlp->nlp_flag &= ~NLP_NPR_ADISC; in lpfc_rcv_logo()
711 lpfc_rcv_prli(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_rcv_prli() argument
717 struct fc_rport *rport = ndlp->rport; in lpfc_rcv_prli()
724 ndlp->nlp_type &= ~(NLP_FCP_TARGET | NLP_FCP_INITIATOR); in lpfc_rcv_prli()
725 ndlp->nlp_fcp_info &= ~NLP_FCP_2_DEVICE; in lpfc_rcv_prli()
726 ndlp->nlp_flag &= ~NLP_FIRSTBURST; in lpfc_rcv_prli()
729 ndlp->nlp_type |= NLP_FCP_INITIATOR; in lpfc_rcv_prli()
731 ndlp->nlp_type |= NLP_FCP_TARGET; in lpfc_rcv_prli()
733 ndlp->nlp_flag |= NLP_FIRSTBURST; in lpfc_rcv_prli()
736 ndlp->nlp_fcp_info |= NLP_FCP_2_DEVICE; in lpfc_rcv_prli()
741 if (ndlp->nlp_type & NLP_FCP_INITIATOR) in lpfc_rcv_prli()
743 if (ndlp->nlp_type & NLP_FCP_TARGET) in lpfc_rcv_prli()
748 roles, ndlp->nlp_DID, ndlp->nlp_flag); in lpfc_rcv_prli()
755 lpfc_disc_set_adisc(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp) in lpfc_disc_set_adisc() argument
759 if (!(ndlp->nlp_flag & NLP_RPI_REGISTERED)) { in lpfc_disc_set_adisc()
760 ndlp->nlp_flag &= ~NLP_NPR_ADISC; in lpfc_disc_set_adisc()
767 ((ndlp->nlp_fcp_info & NLP_FCP_2_DEVICE) && in lpfc_disc_set_adisc()
768 (ndlp->nlp_type & NLP_FCP_TARGET))) { in lpfc_disc_set_adisc()
770 ndlp->nlp_flag |= NLP_NPR_ADISC; in lpfc_disc_set_adisc()
775 ndlp->nlp_flag &= ~NLP_NPR_ADISC; in lpfc_disc_set_adisc()
776 lpfc_unreg_rpi(vport, ndlp); in lpfc_disc_set_adisc()
812 lpfc_disc_illegal(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_disc_illegal() argument
832 ndlp->nlp_DID, evt, ndlp->nlp_state, ndlp->nlp_rpi, in lpfc_disc_illegal()
833 ndlp->nlp_flag); in lpfc_disc_illegal()
834 return ndlp->nlp_state; in lpfc_disc_illegal()
838 lpfc_cmpl_plogi_illegal(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_cmpl_plogi_illegal() argument
846 if (!(ndlp->nlp_flag & NLP_RCV_PLOGI)) { in lpfc_cmpl_plogi_illegal()
850 ndlp->nlp_DID, evt, ndlp->nlp_state, ndlp->nlp_rpi, in lpfc_cmpl_plogi_illegal()
851 ndlp->nlp_flag); in lpfc_cmpl_plogi_illegal()
853 return ndlp->nlp_state; in lpfc_cmpl_plogi_illegal()
859 lpfc_rcv_plogi_unused_node(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_rcv_plogi_unused_node() argument
866 if (lpfc_rcv_plogi(vport, ndlp, cmdiocb)) { in lpfc_rcv_plogi_unused_node()
867 return ndlp->nlp_state; in lpfc_rcv_plogi_unused_node()
873 lpfc_rcv_els_unused_node(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_rcv_els_unused_node() argument
876 lpfc_issue_els_logo(vport, ndlp, 0); in lpfc_rcv_els_unused_node()
877 return ndlp->nlp_state; in lpfc_rcv_els_unused_node()
881 lpfc_rcv_logo_unused_node(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_rcv_logo_unused_node() argument
888 ndlp->nlp_flag |= NLP_LOGO_ACC; in lpfc_rcv_logo_unused_node()
890 lpfc_els_rsp_acc(vport, ELS_CMD_ACC, cmdiocb, ndlp, NULL); in lpfc_rcv_logo_unused_node()
892 return ndlp->nlp_state; in lpfc_rcv_logo_unused_node()
896 lpfc_cmpl_logo_unused_node(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_cmpl_logo_unused_node() argument
903 lpfc_device_rm_unused_node(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_device_rm_unused_node() argument
911 struct lpfc_nodelist *ndlp, in lpfc_device_recov_unused_node() argument
914 return ndlp->nlp_state; in lpfc_device_recov_unused_node()
918 lpfc_rcv_plogi_plogi_issue(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_rcv_plogi_plogi_issue() argument
944 lpfc_els_rsp_reject(vport, stat.un.lsRjtError, cmdiocb, ndlp, in lpfc_rcv_plogi_plogi_issue()
947 if (lpfc_rcv_plogi(vport, ndlp, cmdiocb) && in lpfc_rcv_plogi_plogi_issue()
948 (ndlp->nlp_flag & NLP_NPR_2B_DISC) && in lpfc_rcv_plogi_plogi_issue()
951 ndlp->nlp_flag &= ~NLP_NPR_2B_DISC; in lpfc_rcv_plogi_plogi_issue()
965 return ndlp->nlp_state; in lpfc_rcv_plogi_plogi_issue()
969 lpfc_rcv_prli_plogi_issue(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_rcv_prli_plogi_issue() argument
978 lpfc_els_rsp_reject(vport, stat.un.lsRjtError, cmdiocb, ndlp, NULL); in lpfc_rcv_prli_plogi_issue()
979 return ndlp->nlp_state; in lpfc_rcv_prli_plogi_issue()
983 lpfc_rcv_logo_plogi_issue(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_rcv_logo_plogi_issue() argument
989 lpfc_els_abort(vport->phba, ndlp); in lpfc_rcv_logo_plogi_issue()
991 lpfc_rcv_logo(vport, ndlp, cmdiocb, ELS_CMD_LOGO); in lpfc_rcv_logo_plogi_issue()
992 return ndlp->nlp_state; in lpfc_rcv_logo_plogi_issue()
996 lpfc_rcv_els_plogi_issue(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_rcv_els_plogi_issue() argument
1004 lpfc_els_abort(phba, ndlp); in lpfc_rcv_els_plogi_issue()
1007 lpfc_els_rsp_acc(vport, ELS_CMD_ACC, cmdiocb, ndlp, NULL); in lpfc_rcv_els_plogi_issue()
1009 lpfc_issue_els_logo(vport, ndlp, 0); in lpfc_rcv_els_plogi_issue()
1013 mod_timer(&ndlp->nlp_delayfunc, jiffies + msecs_to_jiffies(1000 * 1)); in lpfc_rcv_els_plogi_issue()
1015 ndlp->nlp_flag |= NLP_DELAY_TMO; in lpfc_rcv_els_plogi_issue()
1017 ndlp->nlp_last_elscmd = ELS_CMD_PLOGI; in lpfc_rcv_els_plogi_issue()
1018 ndlp->nlp_prev_state = NLP_STE_PLOGI_ISSUE; in lpfc_rcv_els_plogi_issue()
1019 lpfc_nlp_set_state(vport, ndlp, NLP_STE_NPR_NODE); in lpfc_rcv_els_plogi_issue()
1021 return ndlp->nlp_state; in lpfc_rcv_els_plogi_issue()
1026 struct lpfc_nodelist *ndlp, in lpfc_cmpl_plogi_plogi_issue() argument
1042 if (ndlp->nlp_flag & NLP_ACC_REGLOGIN) { in lpfc_cmpl_plogi_plogi_issue()
1044 return ndlp->nlp_state; in lpfc_cmpl_plogi_plogi_issue()
1062 if ((ndlp->nlp_DID != FDMI_DID) && in lpfc_cmpl_plogi_plogi_issue()
1069 if (!lpfc_check_sparm(vport, ndlp, sp, CLASS3, 0)) in lpfc_cmpl_plogi_plogi_issue()
1074 ndlp->nlp_DID, ndlp->nlp_state, in lpfc_cmpl_plogi_plogi_issue()
1075 ndlp->nlp_flag, ndlp->nlp_rpi); in lpfc_cmpl_plogi_plogi_issue()
1077 ndlp->nlp_fcp_info |= CLASS2; in lpfc_cmpl_plogi_plogi_issue()
1079 ndlp->nlp_fcp_info |= CLASS3; in lpfc_cmpl_plogi_plogi_issue()
1081 ndlp->nlp_class_sup = 0; in lpfc_cmpl_plogi_plogi_issue()
1083 ndlp->nlp_class_sup |= FC_COS_CLASS1; in lpfc_cmpl_plogi_plogi_issue()
1085 ndlp->nlp_class_sup |= FC_COS_CLASS2; in lpfc_cmpl_plogi_plogi_issue()
1087 ndlp->nlp_class_sup |= FC_COS_CLASS3; in lpfc_cmpl_plogi_plogi_issue()
1089 ndlp->nlp_class_sup |= FC_COS_CLASS4; in lpfc_cmpl_plogi_plogi_issue()
1090 ndlp->nlp_maxframe = in lpfc_cmpl_plogi_plogi_issue()
1098 ndlp->nlp_DID, ndlp->nlp_state, in lpfc_cmpl_plogi_plogi_issue()
1099 ndlp->nlp_flag, ndlp->nlp_rpi); in lpfc_cmpl_plogi_plogi_issue()
1103 lpfc_unreg_rpi(vport, ndlp); in lpfc_cmpl_plogi_plogi_issue()
1106 (uint8_t *) sp, mbox, ndlp->nlp_rpi) == 0) { in lpfc_cmpl_plogi_plogi_issue()
1107 switch (ndlp->nlp_DID) { in lpfc_cmpl_plogi_plogi_issue()
1115 ndlp->nlp_flag |= NLP_REG_LOGIN_SEND; in lpfc_cmpl_plogi_plogi_issue()
1118 mbox->context2 = lpfc_nlp_get(ndlp); in lpfc_cmpl_plogi_plogi_issue()
1122 lpfc_nlp_set_state(vport, ndlp, in lpfc_cmpl_plogi_plogi_issue()
1124 return ndlp->nlp_state; in lpfc_cmpl_plogi_plogi_issue()
1126 if (ndlp->nlp_flag & NLP_REG_LOGIN_SEND) in lpfc_cmpl_plogi_plogi_issue()
1127 ndlp->nlp_flag &= ~NLP_REG_LOGIN_SEND; in lpfc_cmpl_plogi_plogi_issue()
1131 lpfc_nlp_put(ndlp); in lpfc_cmpl_plogi_plogi_issue()
1140 ndlp->nlp_DID, ndlp->nlp_state, in lpfc_cmpl_plogi_plogi_issue()
1141 ndlp->nlp_flag, ndlp->nlp_rpi); in lpfc_cmpl_plogi_plogi_issue()
1148 ndlp->nlp_DID, ndlp->nlp_state, in lpfc_cmpl_plogi_plogi_issue()
1149 ndlp->nlp_flag, ndlp->nlp_rpi); in lpfc_cmpl_plogi_plogi_issue()
1154 if (ndlp->nlp_DID == NameServer_DID) { in lpfc_cmpl_plogi_plogi_issue()
1165 ndlp->nlp_prev_state = ndlp->nlp_state; in lpfc_cmpl_plogi_plogi_issue()
1166 lpfc_nlp_set_state(vport, ndlp, NLP_STE_NPR_NODE); in lpfc_cmpl_plogi_plogi_issue()
1168 ndlp->nlp_flag |= NLP_DEFER_RM; in lpfc_cmpl_plogi_plogi_issue()
1174 lpfc_cmpl_logo_plogi_issue(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_cmpl_logo_plogi_issue() argument
1177 return ndlp->nlp_state; in lpfc_cmpl_logo_plogi_issue()
1182 struct lpfc_nodelist *ndlp, void *arg, uint32_t evt) in lpfc_cmpl_reglogin_plogi_issue() argument
1196 return ndlp->nlp_state; in lpfc_cmpl_reglogin_plogi_issue()
1200 lpfc_device_rm_plogi_issue(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_device_rm_plogi_issue() argument
1205 if (ndlp->nlp_flag & NLP_NPR_2B_DISC) { in lpfc_device_rm_plogi_issue()
1207 ndlp->nlp_flag |= NLP_NODEV_REMOVE; in lpfc_device_rm_plogi_issue()
1209 return ndlp->nlp_state; in lpfc_device_rm_plogi_issue()
1212 lpfc_els_abort(vport->phba, ndlp); in lpfc_device_rm_plogi_issue()
1214 lpfc_drop_node(vport, ndlp); in lpfc_device_rm_plogi_issue()
1221 struct lpfc_nodelist *ndlp, in lpfc_device_recov_plogi_issue() argument
1232 return ndlp->nlp_state; in lpfc_device_recov_plogi_issue()
1235 lpfc_els_abort(phba, ndlp); in lpfc_device_recov_plogi_issue()
1237 ndlp->nlp_prev_state = NLP_STE_PLOGI_ISSUE; in lpfc_device_recov_plogi_issue()
1238 lpfc_nlp_set_state(vport, ndlp, NLP_STE_NPR_NODE); in lpfc_device_recov_plogi_issue()
1240 ndlp->nlp_flag &= ~(NLP_NODEV_REMOVE | NLP_NPR_2B_DISC); in lpfc_device_recov_plogi_issue()
1243 return ndlp->nlp_state; in lpfc_device_recov_plogi_issue()
1247 lpfc_rcv_plogi_adisc_issue(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_rcv_plogi_adisc_issue() argument
1255 lpfc_els_abort(phba, ndlp); in lpfc_rcv_plogi_adisc_issue()
1259 if (lpfc_rcv_plogi(vport, ndlp, cmdiocb)) { in lpfc_rcv_plogi_adisc_issue()
1260 if (ndlp->nlp_flag & NLP_NPR_2B_DISC) { in lpfc_rcv_plogi_adisc_issue()
1262 ndlp->nlp_flag &= ~NLP_NPR_2B_DISC; in lpfc_rcv_plogi_adisc_issue()
1267 return ndlp->nlp_state; in lpfc_rcv_plogi_adisc_issue()
1269 ndlp->nlp_prev_state = NLP_STE_ADISC_ISSUE; in lpfc_rcv_plogi_adisc_issue()
1270 lpfc_issue_els_plogi(vport, ndlp->nlp_DID, 0); in lpfc_rcv_plogi_adisc_issue()
1271 lpfc_nlp_set_state(vport, ndlp, NLP_STE_PLOGI_ISSUE); in lpfc_rcv_plogi_adisc_issue()
1273 return ndlp->nlp_state; in lpfc_rcv_plogi_adisc_issue()
1277 lpfc_rcv_prli_adisc_issue(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_rcv_prli_adisc_issue() argument
1282 lpfc_els_rsp_prli_acc(vport, cmdiocb, ndlp); in lpfc_rcv_prli_adisc_issue()
1283 return ndlp->nlp_state; in lpfc_rcv_prli_adisc_issue()
1287 lpfc_rcv_logo_adisc_issue(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_rcv_logo_adisc_issue() argument
1296 lpfc_els_abort(phba, ndlp); in lpfc_rcv_logo_adisc_issue()
1298 lpfc_rcv_logo(vport, ndlp, cmdiocb, ELS_CMD_LOGO); in lpfc_rcv_logo_adisc_issue()
1299 return ndlp->nlp_state; in lpfc_rcv_logo_adisc_issue()
1304 struct lpfc_nodelist *ndlp, in lpfc_rcv_padisc_adisc_issue() argument
1311 lpfc_rcv_padisc(vport, ndlp, cmdiocb); in lpfc_rcv_padisc_adisc_issue()
1312 return ndlp->nlp_state; in lpfc_rcv_padisc_adisc_issue()
1316 lpfc_rcv_prlo_adisc_issue(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_rcv_prlo_adisc_issue() argument
1324 lpfc_rcv_logo(vport, ndlp, cmdiocb, ELS_CMD_PRLO); in lpfc_rcv_prlo_adisc_issue()
1325 return ndlp->nlp_state; in lpfc_rcv_prlo_adisc_issue()
1330 struct lpfc_nodelist *ndlp, in lpfc_cmpl_adisc_adisc_issue() argument
1347 (!lpfc_check_adisc(vport, ndlp, &ap->nodeName, &ap->portName))) { in lpfc_cmpl_adisc_adisc_issue()
1349 mod_timer(&ndlp->nlp_delayfunc, in lpfc_cmpl_adisc_adisc_issue()
1352 ndlp->nlp_flag |= NLP_DELAY_TMO; in lpfc_cmpl_adisc_adisc_issue()
1354 ndlp->nlp_last_elscmd = ELS_CMD_PLOGI; in lpfc_cmpl_adisc_adisc_issue()
1356 memset(&ndlp->nlp_nodename, 0, sizeof(struct lpfc_name)); in lpfc_cmpl_adisc_adisc_issue()
1357 memset(&ndlp->nlp_portname, 0, sizeof(struct lpfc_name)); in lpfc_cmpl_adisc_adisc_issue()
1359 ndlp->nlp_prev_state = NLP_STE_ADISC_ISSUE; in lpfc_cmpl_adisc_adisc_issue()
1360 lpfc_nlp_set_state(vport, ndlp, NLP_STE_NPR_NODE); in lpfc_cmpl_adisc_adisc_issue()
1361 lpfc_unreg_rpi(vport, ndlp); in lpfc_cmpl_adisc_adisc_issue()
1362 return ndlp->nlp_state; in lpfc_cmpl_adisc_adisc_issue()
1366 rc = lpfc_sli4_resume_rpi(ndlp, NULL, NULL); in lpfc_cmpl_adisc_adisc_issue()
1369 ndlp->nlp_prev_state = NLP_STE_ADISC_ISSUE; in lpfc_cmpl_adisc_adisc_issue()
1370 return ndlp->nlp_state; in lpfc_cmpl_adisc_adisc_issue()
1374 if (ndlp->nlp_type & NLP_FCP_TARGET) { in lpfc_cmpl_adisc_adisc_issue()
1375 ndlp->nlp_prev_state = NLP_STE_ADISC_ISSUE; in lpfc_cmpl_adisc_adisc_issue()
1376 lpfc_nlp_set_state(vport, ndlp, NLP_STE_MAPPED_NODE); in lpfc_cmpl_adisc_adisc_issue()
1378 ndlp->nlp_prev_state = NLP_STE_ADISC_ISSUE; in lpfc_cmpl_adisc_adisc_issue()
1379 lpfc_nlp_set_state(vport, ndlp, NLP_STE_UNMAPPED_NODE); in lpfc_cmpl_adisc_adisc_issue()
1382 return ndlp->nlp_state; in lpfc_cmpl_adisc_adisc_issue()
1386 lpfc_device_rm_adisc_issue(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_device_rm_adisc_issue() argument
1391 if (ndlp->nlp_flag & NLP_NPR_2B_DISC) { in lpfc_device_rm_adisc_issue()
1393 ndlp->nlp_flag |= NLP_NODEV_REMOVE; in lpfc_device_rm_adisc_issue()
1395 return ndlp->nlp_state; in lpfc_device_rm_adisc_issue()
1398 lpfc_els_abort(vport->phba, ndlp); in lpfc_device_rm_adisc_issue()
1400 lpfc_drop_node(vport, ndlp); in lpfc_device_rm_adisc_issue()
1407 struct lpfc_nodelist *ndlp, in lpfc_device_recov_adisc_issue() argument
1418 return ndlp->nlp_state; in lpfc_device_recov_adisc_issue()
1421 lpfc_els_abort(phba, ndlp); in lpfc_device_recov_adisc_issue()
1423 ndlp->nlp_prev_state = NLP_STE_ADISC_ISSUE; in lpfc_device_recov_adisc_issue()
1424 lpfc_nlp_set_state(vport, ndlp, NLP_STE_NPR_NODE); in lpfc_device_recov_adisc_issue()
1426 ndlp->nlp_flag &= ~(NLP_NODEV_REMOVE | NLP_NPR_2B_DISC); in lpfc_device_recov_adisc_issue()
1428 lpfc_disc_set_adisc(vport, ndlp); in lpfc_device_recov_adisc_issue()
1429 return ndlp->nlp_state; in lpfc_device_recov_adisc_issue()
1434 struct lpfc_nodelist *ndlp, in lpfc_rcv_plogi_reglogin_issue() argument
1440 lpfc_rcv_plogi(vport, ndlp, cmdiocb); in lpfc_rcv_plogi_reglogin_issue()
1441 return ndlp->nlp_state; in lpfc_rcv_plogi_reglogin_issue()
1446 struct lpfc_nodelist *ndlp, in lpfc_rcv_prli_reglogin_issue() argument
1452 lpfc_els_rsp_prli_acc(vport, cmdiocb, ndlp); in lpfc_rcv_prli_reglogin_issue()
1453 return ndlp->nlp_state; in lpfc_rcv_prli_reglogin_issue()
1458 struct lpfc_nodelist *ndlp, in lpfc_rcv_logo_reglogin_issue() argument
1473 (ndlp == (struct lpfc_nodelist *) mb->context2)) { in lpfc_rcv_logo_reglogin_issue()
1474 lpfc_nlp_put(ndlp); in lpfc_rcv_logo_reglogin_issue()
1483 (ndlp == (struct lpfc_nodelist *) mb->context2)) { in lpfc_rcv_logo_reglogin_issue()
1489 lpfc_nlp_put(ndlp); in lpfc_rcv_logo_reglogin_issue()
1497 lpfc_rcv_logo(vport, ndlp, cmdiocb, ELS_CMD_LOGO); in lpfc_rcv_logo_reglogin_issue()
1498 return ndlp->nlp_state; in lpfc_rcv_logo_reglogin_issue()
1503 struct lpfc_nodelist *ndlp, in lpfc_rcv_padisc_reglogin_issue() argument
1509 lpfc_rcv_padisc(vport, ndlp, cmdiocb); in lpfc_rcv_padisc_reglogin_issue()
1510 return ndlp->nlp_state; in lpfc_rcv_padisc_reglogin_issue()
1515 struct lpfc_nodelist *ndlp, in lpfc_rcv_prlo_reglogin_issue() argument
1522 lpfc_els_rsp_acc(vport, ELS_CMD_PRLO, cmdiocb, ndlp, NULL); in lpfc_rcv_prlo_reglogin_issue()
1523 return ndlp->nlp_state; in lpfc_rcv_prlo_reglogin_issue()
1528 struct lpfc_nodelist *ndlp, in lpfc_cmpl_reglogin_reglogin_issue() argument
1550 ndlp->nlp_prev_state = NLP_STE_REG_LOGIN_ISSUE; in lpfc_cmpl_reglogin_reglogin_issue()
1551 lpfc_nlp_set_state(vport, ndlp, NLP_STE_NPR_NODE); in lpfc_cmpl_reglogin_reglogin_issue()
1552 return ndlp->nlp_state; in lpfc_cmpl_reglogin_reglogin_issue()
1556 mod_timer(&ndlp->nlp_delayfunc, in lpfc_cmpl_reglogin_reglogin_issue()
1559 ndlp->nlp_flag |= NLP_DELAY_TMO; in lpfc_cmpl_reglogin_reglogin_issue()
1561 ndlp->nlp_last_elscmd = ELS_CMD_PLOGI; in lpfc_cmpl_reglogin_reglogin_issue()
1563 lpfc_issue_els_logo(vport, ndlp, 0); in lpfc_cmpl_reglogin_reglogin_issue()
1564 ndlp->nlp_prev_state = NLP_STE_REG_LOGIN_ISSUE; in lpfc_cmpl_reglogin_reglogin_issue()
1565 lpfc_nlp_set_state(vport, ndlp, NLP_STE_NPR_NODE); in lpfc_cmpl_reglogin_reglogin_issue()
1566 return ndlp->nlp_state; in lpfc_cmpl_reglogin_reglogin_issue()
1571 ndlp->nlp_rpi = mb->un.varWords[0]; in lpfc_cmpl_reglogin_reglogin_issue()
1573 ndlp->nlp_flag |= NLP_RPI_REGISTERED; in lpfc_cmpl_reglogin_reglogin_issue()
1576 if (!(ndlp->nlp_type & NLP_FABRIC)) { in lpfc_cmpl_reglogin_reglogin_issue()
1577 ndlp->nlp_prev_state = NLP_STE_REG_LOGIN_ISSUE; in lpfc_cmpl_reglogin_reglogin_issue()
1578 lpfc_nlp_set_state(vport, ndlp, NLP_STE_PRLI_ISSUE); in lpfc_cmpl_reglogin_reglogin_issue()
1579 lpfc_issue_els_prli(vport, ndlp, 0); 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_UNMAPPED_NODE); in lpfc_cmpl_reglogin_reglogin_issue()
1584 return ndlp->nlp_state; in lpfc_cmpl_reglogin_reglogin_issue()
1589 struct lpfc_nodelist *ndlp, in lpfc_device_rm_reglogin_issue() argument
1595 if (ndlp->nlp_flag & NLP_NPR_2B_DISC) { in lpfc_device_rm_reglogin_issue()
1597 ndlp->nlp_flag |= NLP_NODEV_REMOVE; in lpfc_device_rm_reglogin_issue()
1599 return ndlp->nlp_state; in lpfc_device_rm_reglogin_issue()
1601 lpfc_drop_node(vport, ndlp); in lpfc_device_rm_reglogin_issue()
1608 struct lpfc_nodelist *ndlp, in lpfc_device_recov_reglogin_issue() argument
1618 return ndlp->nlp_state; in lpfc_device_recov_reglogin_issue()
1620 ndlp->nlp_prev_state = NLP_STE_REG_LOGIN_ISSUE; in lpfc_device_recov_reglogin_issue()
1621 lpfc_nlp_set_state(vport, ndlp, NLP_STE_NPR_NODE); in lpfc_device_recov_reglogin_issue()
1623 ndlp->nlp_flag |= NLP_IGNR_REG_CMPL; in lpfc_device_recov_reglogin_issue()
1624 ndlp->nlp_flag &= ~(NLP_NODEV_REMOVE | NLP_NPR_2B_DISC); in lpfc_device_recov_reglogin_issue()
1626 lpfc_disc_set_adisc(vport, ndlp); in lpfc_device_recov_reglogin_issue()
1627 return ndlp->nlp_state; in lpfc_device_recov_reglogin_issue()
1631 lpfc_rcv_plogi_prli_issue(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_rcv_plogi_prli_issue() argument
1638 lpfc_rcv_plogi(vport, ndlp, cmdiocb); in lpfc_rcv_plogi_prli_issue()
1639 return ndlp->nlp_state; in lpfc_rcv_plogi_prli_issue()
1643 lpfc_rcv_prli_prli_issue(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_rcv_prli_prli_issue() argument
1648 lpfc_els_rsp_prli_acc(vport, cmdiocb, ndlp); in lpfc_rcv_prli_prli_issue()
1649 return ndlp->nlp_state; in lpfc_rcv_prli_prli_issue()
1653 lpfc_rcv_logo_prli_issue(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_rcv_logo_prli_issue() argument
1659 lpfc_els_abort(vport->phba, ndlp); in lpfc_rcv_logo_prli_issue()
1661 lpfc_rcv_logo(vport, ndlp, cmdiocb, ELS_CMD_LOGO); in lpfc_rcv_logo_prli_issue()
1662 return ndlp->nlp_state; in lpfc_rcv_logo_prli_issue()
1666 lpfc_rcv_padisc_prli_issue(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_rcv_padisc_prli_issue() argument
1671 lpfc_rcv_padisc(vport, ndlp, cmdiocb); in lpfc_rcv_padisc_prli_issue()
1672 return ndlp->nlp_state; in lpfc_rcv_padisc_prli_issue()
1681 lpfc_rcv_prlo_prli_issue(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_rcv_prlo_prli_issue() argument
1686 lpfc_els_rsp_acc(vport, ELS_CMD_PRLO, cmdiocb, ndlp, NULL); in lpfc_rcv_prlo_prli_issue()
1687 return ndlp->nlp_state; in lpfc_rcv_prlo_prli_issue()
1691 lpfc_cmpl_prli_prli_issue(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_cmpl_prli_prli_issue() argument
1710 ndlp->nlp_prev_state = NLP_STE_PRLI_ISSUE; in lpfc_cmpl_prli_prli_issue()
1711 lpfc_nlp_set_state(vport, ndlp, NLP_STE_UNMAPPED_NODE); in lpfc_cmpl_prli_prli_issue()
1712 return ndlp->nlp_state; in lpfc_cmpl_prli_prli_issue()
1716 ndlp->nlp_type &= ~(NLP_FCP_TARGET | NLP_FCP_INITIATOR); in lpfc_cmpl_prli_prli_issue()
1717 ndlp->nlp_fcp_info &= ~NLP_FCP_2_DEVICE; in lpfc_cmpl_prli_prli_issue()
1718 ndlp->nlp_flag &= ~NLP_FIRSTBURST; in lpfc_cmpl_prli_prli_issue()
1722 ndlp->nlp_type |= NLP_FCP_INITIATOR; in lpfc_cmpl_prli_prli_issue()
1724 ndlp->nlp_type |= NLP_FCP_TARGET; in lpfc_cmpl_prli_prli_issue()
1726 ndlp->nlp_flag |= NLP_FIRSTBURST; in lpfc_cmpl_prli_prli_issue()
1729 ndlp->nlp_fcp_info |= NLP_FCP_2_DEVICE; in lpfc_cmpl_prli_prli_issue()
1731 if (!(ndlp->nlp_type & NLP_FCP_TARGET) && in lpfc_cmpl_prli_prli_issue()
1736 ndlp->nlp_flag |= NLP_TARGET_REMOVE; in lpfc_cmpl_prli_prli_issue()
1738 lpfc_issue_els_logo(vport, ndlp, 0); in lpfc_cmpl_prli_prli_issue()
1740 ndlp->nlp_prev_state = NLP_STE_PRLI_ISSUE; in lpfc_cmpl_prli_prli_issue()
1741 lpfc_nlp_set_state(vport, ndlp, NLP_STE_NPR_NODE); in lpfc_cmpl_prli_prli_issue()
1742 return ndlp->nlp_state; in lpfc_cmpl_prli_prli_issue()
1745 ndlp->nlp_prev_state = NLP_STE_PRLI_ISSUE; in lpfc_cmpl_prli_prli_issue()
1746 if (ndlp->nlp_type & NLP_FCP_TARGET) in lpfc_cmpl_prli_prli_issue()
1747 lpfc_nlp_set_state(vport, ndlp, NLP_STE_MAPPED_NODE); in lpfc_cmpl_prli_prli_issue()
1749 lpfc_nlp_set_state(vport, ndlp, NLP_STE_UNMAPPED_NODE); in lpfc_cmpl_prli_prli_issue()
1750 return ndlp->nlp_state; in lpfc_cmpl_prli_prli_issue()
1772 lpfc_device_rm_prli_issue(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_device_rm_prli_issue() argument
1777 if (ndlp->nlp_flag & NLP_NPR_2B_DISC) { in lpfc_device_rm_prli_issue()
1779 ndlp->nlp_flag |= NLP_NODEV_REMOVE; in lpfc_device_rm_prli_issue()
1781 return ndlp->nlp_state; in lpfc_device_rm_prli_issue()
1784 lpfc_els_abort(vport->phba, ndlp); in lpfc_device_rm_prli_issue()
1786 lpfc_drop_node(vport, ndlp); in lpfc_device_rm_prli_issue()
1810 struct lpfc_nodelist *ndlp, in lpfc_device_recov_prli_issue() argument
1821 return ndlp->nlp_state; in lpfc_device_recov_prli_issue()
1824 lpfc_els_abort(phba, ndlp); in lpfc_device_recov_prli_issue()
1826 ndlp->nlp_prev_state = NLP_STE_PRLI_ISSUE; in lpfc_device_recov_prli_issue()
1827 lpfc_nlp_set_state(vport, ndlp, NLP_STE_NPR_NODE); in lpfc_device_recov_prli_issue()
1829 ndlp->nlp_flag &= ~(NLP_NODEV_REMOVE | NLP_NPR_2B_DISC); in lpfc_device_recov_prli_issue()
1831 lpfc_disc_set_adisc(vport, ndlp); in lpfc_device_recov_prli_issue()
1832 return ndlp->nlp_state; in lpfc_device_recov_prli_issue()
1836 lpfc_rcv_plogi_logo_issue(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_rcv_plogi_logo_issue() argument
1845 lpfc_els_rsp_reject(vport, stat.un.lsRjtError, cmdiocb, ndlp, NULL); in lpfc_rcv_plogi_logo_issue()
1846 return ndlp->nlp_state; in lpfc_rcv_plogi_logo_issue()
1850 lpfc_rcv_prli_logo_issue(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_rcv_prli_logo_issue() argument
1859 lpfc_els_rsp_reject(vport, stat.un.lsRjtError, cmdiocb, ndlp, NULL); in lpfc_rcv_prli_logo_issue()
1860 return ndlp->nlp_state; in lpfc_rcv_prli_logo_issue()
1864 lpfc_rcv_logo_logo_issue(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_rcv_logo_logo_issue() argument
1871 ndlp->nlp_flag &= NLP_LOGO_ACC; in lpfc_rcv_logo_logo_issue()
1873 lpfc_els_rsp_acc(vport, ELS_CMD_ACC, cmdiocb, ndlp, NULL); in lpfc_rcv_logo_logo_issue()
1874 return ndlp->nlp_state; in lpfc_rcv_logo_logo_issue()
1878 lpfc_rcv_padisc_logo_issue(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_rcv_padisc_logo_issue() argument
1887 lpfc_els_rsp_reject(vport, stat.un.lsRjtError, cmdiocb, ndlp, NULL); in lpfc_rcv_padisc_logo_issue()
1888 return ndlp->nlp_state; in lpfc_rcv_padisc_logo_issue()
1892 lpfc_rcv_prlo_logo_issue(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_rcv_prlo_logo_issue() argument
1901 lpfc_els_rsp_reject(vport, stat.un.lsRjtError, cmdiocb, ndlp, NULL); in lpfc_rcv_prlo_logo_issue()
1902 return ndlp->nlp_state; in lpfc_rcv_prlo_logo_issue()
1906 lpfc_cmpl_logo_logo_issue(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_cmpl_logo_logo_issue() argument
1911 ndlp->nlp_prev_state = NLP_STE_LOGO_ISSUE; in lpfc_cmpl_logo_logo_issue()
1912 lpfc_nlp_set_state(vport, ndlp, NLP_STE_NPR_NODE); in lpfc_cmpl_logo_logo_issue()
1914 ndlp->nlp_flag &= ~(NLP_NODEV_REMOVE | NLP_NPR_2B_DISC); in lpfc_cmpl_logo_logo_issue()
1916 lpfc_disc_set_adisc(vport, ndlp); in lpfc_cmpl_logo_logo_issue()
1917 return ndlp->nlp_state; in lpfc_cmpl_logo_logo_issue()
1921 lpfc_device_rm_logo_issue(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_device_rm_logo_issue() argument
1930 return ndlp->nlp_state; in lpfc_device_rm_logo_issue()
1935 struct lpfc_nodelist *ndlp, in lpfc_device_recov_logo_issue() argument
1943 return ndlp->nlp_state; in lpfc_device_recov_logo_issue()
1947 lpfc_rcv_plogi_unmap_node(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_rcv_plogi_unmap_node() argument
1952 lpfc_rcv_plogi(vport, ndlp, cmdiocb); in lpfc_rcv_plogi_unmap_node()
1953 return ndlp->nlp_state; in lpfc_rcv_plogi_unmap_node()
1957 lpfc_rcv_prli_unmap_node(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_rcv_prli_unmap_node() argument
1962 lpfc_rcv_prli(vport, ndlp, cmdiocb); in lpfc_rcv_prli_unmap_node()
1963 lpfc_els_rsp_prli_acc(vport, cmdiocb, ndlp); in lpfc_rcv_prli_unmap_node()
1964 return ndlp->nlp_state; in lpfc_rcv_prli_unmap_node()
1968 lpfc_rcv_logo_unmap_node(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_rcv_logo_unmap_node() argument
1973 lpfc_rcv_logo(vport, ndlp, cmdiocb, ELS_CMD_LOGO); in lpfc_rcv_logo_unmap_node()
1974 return ndlp->nlp_state; in lpfc_rcv_logo_unmap_node()
1978 lpfc_rcv_padisc_unmap_node(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_rcv_padisc_unmap_node() argument
1983 lpfc_rcv_padisc(vport, ndlp, cmdiocb); in lpfc_rcv_padisc_unmap_node()
1984 return ndlp->nlp_state; in lpfc_rcv_padisc_unmap_node()
1988 lpfc_rcv_prlo_unmap_node(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_rcv_prlo_unmap_node() argument
1993 lpfc_els_rsp_acc(vport, ELS_CMD_PRLO, cmdiocb, ndlp, NULL); in lpfc_rcv_prlo_unmap_node()
1994 return ndlp->nlp_state; in lpfc_rcv_prlo_unmap_node()
1999 struct lpfc_nodelist *ndlp, in lpfc_device_recov_unmap_node() argument
2005 ndlp->nlp_prev_state = NLP_STE_UNMAPPED_NODE; in lpfc_device_recov_unmap_node()
2006 lpfc_nlp_set_state(vport, ndlp, NLP_STE_NPR_NODE); in lpfc_device_recov_unmap_node()
2008 ndlp->nlp_flag &= ~(NLP_NODEV_REMOVE | NLP_NPR_2B_DISC); in lpfc_device_recov_unmap_node()
2010 lpfc_disc_set_adisc(vport, ndlp); in lpfc_device_recov_unmap_node()
2012 return ndlp->nlp_state; in lpfc_device_recov_unmap_node()
2016 lpfc_rcv_plogi_mapped_node(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_rcv_plogi_mapped_node() argument
2021 lpfc_rcv_plogi(vport, ndlp, cmdiocb); in lpfc_rcv_plogi_mapped_node()
2022 return ndlp->nlp_state; in lpfc_rcv_plogi_mapped_node()
2026 lpfc_rcv_prli_mapped_node(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_rcv_prli_mapped_node() argument
2031 lpfc_els_rsp_prli_acc(vport, cmdiocb, ndlp); in lpfc_rcv_prli_mapped_node()
2032 return ndlp->nlp_state; in lpfc_rcv_prli_mapped_node()
2036 lpfc_rcv_logo_mapped_node(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_rcv_logo_mapped_node() argument
2041 lpfc_rcv_logo(vport, ndlp, cmdiocb, ELS_CMD_LOGO); in lpfc_rcv_logo_mapped_node()
2042 return ndlp->nlp_state; in lpfc_rcv_logo_mapped_node()
2047 struct lpfc_nodelist *ndlp, in lpfc_rcv_padisc_mapped_node() argument
2052 lpfc_rcv_padisc(vport, ndlp, cmdiocb); in lpfc_rcv_padisc_mapped_node()
2053 return ndlp->nlp_state; in lpfc_rcv_padisc_mapped_node()
2057 lpfc_rcv_prlo_mapped_node(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_rcv_prlo_mapped_node() argument
2065 ndlp->nlp_sid, 0, LPFC_CTX_TGT); in lpfc_rcv_prlo_mapped_node()
2068 lpfc_rcv_logo(vport, ndlp, cmdiocb, ELS_CMD_PRLO); in lpfc_rcv_prlo_mapped_node()
2069 return ndlp->nlp_state; in lpfc_rcv_prlo_mapped_node()
2074 struct lpfc_nodelist *ndlp, in lpfc_device_recov_mapped_node() argument
2080 ndlp->nlp_prev_state = NLP_STE_MAPPED_NODE; in lpfc_device_recov_mapped_node()
2081 lpfc_nlp_set_state(vport, ndlp, NLP_STE_NPR_NODE); in lpfc_device_recov_mapped_node()
2083 ndlp->nlp_flag &= ~(NLP_NODEV_REMOVE | NLP_NPR_2B_DISC); in lpfc_device_recov_mapped_node()
2085 lpfc_disc_set_adisc(vport, ndlp); in lpfc_device_recov_mapped_node()
2086 return ndlp->nlp_state; in lpfc_device_recov_mapped_node()
2090 lpfc_rcv_plogi_npr_node(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_rcv_plogi_npr_node() argument
2097 if (ndlp->nlp_flag & (NLP_LOGO_SND | NLP_LOGO_ACC)) in lpfc_rcv_plogi_npr_node()
2098 return ndlp->nlp_state; in lpfc_rcv_plogi_npr_node()
2099 if (lpfc_rcv_plogi(vport, ndlp, cmdiocb)) { in lpfc_rcv_plogi_npr_node()
2100 lpfc_cancel_retry_delay_tmo(vport, ndlp); in lpfc_rcv_plogi_npr_node()
2102 ndlp->nlp_flag &= ~(NLP_NPR_ADISC | NLP_NPR_2B_DISC); in lpfc_rcv_plogi_npr_node()
2104 } else if (!(ndlp->nlp_flag & NLP_NPR_2B_DISC)) { in lpfc_rcv_plogi_npr_node()
2106 if (!(ndlp->nlp_flag & NLP_DELAY_TMO)) { in lpfc_rcv_plogi_npr_node()
2107 ndlp->nlp_prev_state = NLP_STE_NPR_NODE; in lpfc_rcv_plogi_npr_node()
2108 lpfc_nlp_set_state(vport, ndlp, NLP_STE_PLOGI_ISSUE); in lpfc_rcv_plogi_npr_node()
2109 lpfc_issue_els_plogi(vport, ndlp->nlp_DID, 0); in lpfc_rcv_plogi_npr_node()
2112 return ndlp->nlp_state; in lpfc_rcv_plogi_npr_node()
2116 lpfc_rcv_prli_npr_node(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_rcv_prli_npr_node() argument
2126 lpfc_els_rsp_reject(vport, stat.un.lsRjtError, cmdiocb, ndlp, NULL); in lpfc_rcv_prli_npr_node()
2128 if (!(ndlp->nlp_flag & NLP_DELAY_TMO)) { in lpfc_rcv_prli_npr_node()
2129 if (ndlp->nlp_flag & NLP_NPR_ADISC) { in lpfc_rcv_prli_npr_node()
2131 ndlp->nlp_flag &= ~NLP_NPR_ADISC; in lpfc_rcv_prli_npr_node()
2132 ndlp->nlp_prev_state = NLP_STE_NPR_NODE; in lpfc_rcv_prli_npr_node()
2134 lpfc_nlp_set_state(vport, ndlp, NLP_STE_ADISC_ISSUE); in lpfc_rcv_prli_npr_node()
2135 lpfc_issue_els_adisc(vport, ndlp, 0); in lpfc_rcv_prli_npr_node()
2137 ndlp->nlp_prev_state = NLP_STE_NPR_NODE; in lpfc_rcv_prli_npr_node()
2138 lpfc_nlp_set_state(vport, ndlp, NLP_STE_PLOGI_ISSUE); in lpfc_rcv_prli_npr_node()
2139 lpfc_issue_els_plogi(vport, ndlp->nlp_DID, 0); in lpfc_rcv_prli_npr_node()
2142 return ndlp->nlp_state; in lpfc_rcv_prli_npr_node()
2146 lpfc_rcv_logo_npr_node(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_rcv_logo_npr_node() argument
2151 lpfc_rcv_logo(vport, ndlp, cmdiocb, ELS_CMD_LOGO); in lpfc_rcv_logo_npr_node()
2152 return ndlp->nlp_state; in lpfc_rcv_logo_npr_node()
2156 lpfc_rcv_padisc_npr_node(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_rcv_padisc_npr_node() argument
2161 lpfc_rcv_padisc(vport, ndlp, cmdiocb); in lpfc_rcv_padisc_npr_node()
2167 if (!(ndlp->nlp_flag & NLP_DELAY_TMO) && in lpfc_rcv_padisc_npr_node()
2168 !(ndlp->nlp_flag & NLP_NPR_2B_DISC)) { in lpfc_rcv_padisc_npr_node()
2169 if (ndlp->nlp_flag & NLP_NPR_ADISC) { in lpfc_rcv_padisc_npr_node()
2170 ndlp->nlp_flag &= ~NLP_NPR_ADISC; in lpfc_rcv_padisc_npr_node()
2171 ndlp->nlp_prev_state = NLP_STE_NPR_NODE; in lpfc_rcv_padisc_npr_node()
2172 lpfc_nlp_set_state(vport, ndlp, NLP_STE_ADISC_ISSUE); in lpfc_rcv_padisc_npr_node()
2173 lpfc_issue_els_adisc(vport, ndlp, 0); 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_PLOGI_ISSUE); in lpfc_rcv_padisc_npr_node()
2177 lpfc_issue_els_plogi(vport, ndlp->nlp_DID, 0); in lpfc_rcv_padisc_npr_node()
2180 return ndlp->nlp_state; in lpfc_rcv_padisc_npr_node()
2184 lpfc_rcv_prlo_npr_node(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_rcv_prlo_npr_node() argument
2191 ndlp->nlp_flag |= NLP_LOGO_ACC; in lpfc_rcv_prlo_npr_node()
2194 lpfc_els_rsp_acc(vport, ELS_CMD_ACC, cmdiocb, ndlp, NULL); in lpfc_rcv_prlo_npr_node()
2196 if ((ndlp->nlp_flag & NLP_DELAY_TMO) == 0) { in lpfc_rcv_prlo_npr_node()
2197 mod_timer(&ndlp->nlp_delayfunc, in lpfc_rcv_prlo_npr_node()
2200 ndlp->nlp_flag |= NLP_DELAY_TMO; in lpfc_rcv_prlo_npr_node()
2201 ndlp->nlp_flag &= ~NLP_NPR_ADISC; in lpfc_rcv_prlo_npr_node()
2203 ndlp->nlp_last_elscmd = ELS_CMD_PLOGI; in lpfc_rcv_prlo_npr_node()
2206 ndlp->nlp_flag &= ~NLP_NPR_ADISC; in lpfc_rcv_prlo_npr_node()
2209 return ndlp->nlp_state; in lpfc_rcv_prlo_npr_node()
2213 lpfc_cmpl_plogi_npr_node(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_cmpl_plogi_npr_node() argument
2226 ndlp->nlp_flag |= NLP_DEFER_RM; in lpfc_cmpl_plogi_npr_node()
2230 return ndlp->nlp_state; in lpfc_cmpl_plogi_npr_node()
2234 lpfc_cmpl_prli_npr_node(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_cmpl_prli_npr_node() argument
2244 if (irsp->ulpStatus && (ndlp->nlp_flag & NLP_NODEV_REMOVE)) { in lpfc_cmpl_prli_npr_node()
2245 lpfc_drop_node(vport, ndlp); in lpfc_cmpl_prli_npr_node()
2248 return ndlp->nlp_state; in lpfc_cmpl_prli_npr_node()
2252 lpfc_cmpl_logo_npr_node(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_cmpl_logo_npr_node() argument
2258 if (ndlp->nlp_DID == Fabric_DID) { in lpfc_cmpl_logo_npr_node()
2263 lpfc_unreg_rpi(vport, ndlp); in lpfc_cmpl_logo_npr_node()
2264 return ndlp->nlp_state; in lpfc_cmpl_logo_npr_node()
2268 lpfc_cmpl_adisc_npr_node(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_cmpl_adisc_npr_node() argument
2278 if (irsp->ulpStatus && (ndlp->nlp_flag & NLP_NODEV_REMOVE)) { in lpfc_cmpl_adisc_npr_node()
2279 lpfc_drop_node(vport, ndlp); in lpfc_cmpl_adisc_npr_node()
2282 return ndlp->nlp_state; in lpfc_cmpl_adisc_npr_node()
2287 struct lpfc_nodelist *ndlp, in lpfc_cmpl_reglogin_npr_node() argument
2296 ndlp->nlp_rpi = mb->un.varWords[0]; in lpfc_cmpl_reglogin_npr_node()
2297 ndlp->nlp_flag |= NLP_RPI_REGISTERED; in lpfc_cmpl_reglogin_npr_node()
2299 if (ndlp->nlp_flag & NLP_NODEV_REMOVE) { in lpfc_cmpl_reglogin_npr_node()
2300 lpfc_drop_node(vport, ndlp); in lpfc_cmpl_reglogin_npr_node()
2304 return ndlp->nlp_state; in lpfc_cmpl_reglogin_npr_node()
2308 lpfc_device_rm_npr_node(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_device_rm_npr_node() argument
2313 if (ndlp->nlp_flag & NLP_NPR_2B_DISC) { in lpfc_device_rm_npr_node()
2315 ndlp->nlp_flag |= NLP_NODEV_REMOVE; in lpfc_device_rm_npr_node()
2317 return ndlp->nlp_state; in lpfc_device_rm_npr_node()
2319 lpfc_drop_node(vport, ndlp); in lpfc_device_rm_npr_node()
2324 lpfc_device_recov_npr_node(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_device_recov_npr_node() argument
2333 return ndlp->nlp_state; in lpfc_device_recov_npr_node()
2335 lpfc_cancel_retry_delay_tmo(vport, ndlp); in lpfc_device_recov_npr_node()
2337 ndlp->nlp_flag &= ~(NLP_NODEV_REMOVE | NLP_NPR_2B_DISC); in lpfc_device_recov_npr_node()
2339 return ndlp->nlp_state; in lpfc_device_recov_npr_node()
2530 lpfc_disc_state_machine(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, in lpfc_disc_state_machine() argument
2538 if (lpfc_nlp_get(ndlp)) in lpfc_disc_state_machine()
2541 cur_state = ndlp->nlp_state; in lpfc_disc_state_machine()
2547 evt, ndlp->nlp_DID, cur_state, ndlp->nlp_flag); in lpfc_disc_state_machine()
2551 evt, cur_state, ndlp->nlp_DID); in lpfc_disc_state_machine()
2554 rc = (func) (vport, ndlp, arg, evt); in lpfc_disc_state_machine()
2560 rc, ndlp->nlp_DID, ndlp->nlp_flag); in lpfc_disc_state_machine()
2564 rc, ndlp->nlp_DID, ndlp->nlp_flag); in lpfc_disc_state_machine()
2566 lpfc_nlp_put(ndlp); in lpfc_disc_state_machine()