• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-WNDR4500v2-V1.0.0.60_1.0.38/src/linux/linux-2.6/drivers/scsi/lpfc/

Lines Matching refs:ndlp

42 lpfc_check_adisc(struct lpfc_hba * phba, struct lpfc_nodelist * ndlp,
48 if (memcmp(nn, &ndlp->nlp_nodename, sizeof (struct lpfc_name)) != 0)
51 if (memcmp(pn, &ndlp->nlp_portname, sizeof (struct lpfc_name)) != 0)
60 struct lpfc_nodelist * ndlp, struct serv_parm * sp,
125 memcpy(&ndlp->nlp_nodename, &sp->nodeName, sizeof (struct lpfc_name));
126 memcpy(&ndlp->nlp_portname, &sp->portName, sizeof (struct lpfc_name));
171 lpfc_els_abort(struct lpfc_hba * phba, struct lpfc_nodelist * ndlp)
183 phba->brd_no, ndlp->nlp_DID, ndlp->nlp_flag,
184 ndlp->nlp_state, ndlp->nlp_rpi);
194 if (lpfc_check_sli_ndlp(phba, pring, iocb, ndlp)) {
206 if (lpfc_check_sli_ndlp(phba, pring, iocb, ndlp))
225 if (ndlp->nlp_flag & NLP_DELAY_TMO)
226 lpfc_cancel_retry_delay_tmo(phba, ndlp);
232 struct lpfc_nodelist * ndlp,
268 ndlp);
275 if ((lpfc_check_sparm(phba, ndlp, sp, CLASS3) == 0)) {
279 lpfc_els_rsp_reject(phba, stat.un.lsRjtError, cmdiocb, ndlp);
290 ndlp->nlp_DID, ndlp->nlp_state, ndlp->nlp_flag,
291 ndlp->nlp_rpi);
295 ndlp->nlp_fcp_info |= CLASS2;
297 ndlp->nlp_fcp_info |= CLASS3;
299 ndlp->nlp_class_sup = 0;
301 ndlp->nlp_class_sup |= FC_COS_CLASS1;
303 ndlp->nlp_class_sup |= FC_COS_CLASS2;
305 ndlp->nlp_class_sup |= FC_COS_CLASS3;
307 ndlp->nlp_class_sup |= FC_COS_CLASS4;
308 ndlp->nlp_maxframe =
312 switch (ndlp->nlp_state) {
314 if (!(ndlp->nlp_flag & NLP_NPR_ADISC))
320 lpfc_els_rsp_acc(phba, ELS_CMD_PLOGI, cmdiocb, ndlp, NULL, 0);
357 * mbox->context2 = lpfc_nlp_get(ndlp) deferred until mailbox
360 ndlp->nlp_flag |= (NLP_ACC_REGLOGIN | NLP_RCV_PLOGI);
371 if (ndlp->nlp_state == NLP_STE_PLOGI_ISSUE) {
373 lpfc_els_abort(phba, ndlp);
376 lpfc_els_rsp_acc(phba, ELS_CMD_PLOGI, cmdiocb, ndlp, mbox, 0);
382 lpfc_els_rsp_reject(phba, stat.un.lsRjtError, cmdiocb, ndlp);
388 struct lpfc_nodelist * ndlp,
416 (lpfc_check_adisc(phba, ndlp, pnn, ppn))) {
418 lpfc_els_rsp_adisc_acc(phba, cmdiocb, ndlp);
420 lpfc_els_rsp_acc(phba, ELS_CMD_PLOGI, cmdiocb, ndlp,
430 lpfc_els_rsp_reject(phba, stat.un.lsRjtError, cmdiocb, ndlp);
433 mod_timer(&ndlp->nlp_delayfunc, jiffies + HZ);
436 ndlp->nlp_flag |= NLP_DELAY_TMO;
438 ndlp->nlp_last_elscmd = ELS_CMD_PLOGI;
439 ndlp->nlp_prev_state = ndlp->nlp_state;
440 lpfc_nlp_set_state(phba, ndlp, NLP_STE_NPR_NODE);
446 struct lpfc_nodelist * ndlp,
450 /* Put ndlp on NPR list with 1 sec timeout for plogi, ACC logo */
454 ndlp->nlp_flag |= NLP_LOGO_ACC;
456 lpfc_els_rsp_acc(phba, ELS_CMD_PRLO, cmdiocb, ndlp, NULL, 0);
458 lpfc_els_rsp_acc(phba, ELS_CMD_ACC, cmdiocb, ndlp, NULL, 0);
460 if (!(ndlp->nlp_type & NLP_FABRIC) ||
461 (ndlp->nlp_state == NLP_STE_ADISC_ISSUE)) {
463 mod_timer(&ndlp->nlp_delayfunc, jiffies + HZ * 1);
465 ndlp->nlp_flag |= NLP_DELAY_TMO;
468 ndlp->nlp_last_elscmd = ELS_CMD_PLOGI;
469 ndlp->nlp_prev_state = ndlp->nlp_state;
470 lpfc_nlp_set_state(phba, ndlp, NLP_STE_NPR_NODE);
472 ndlp->nlp_prev_state = ndlp->nlp_state;
473 lpfc_nlp_set_state(phba, ndlp, NLP_STE_UNUSED_NODE);
477 ndlp->nlp_flag &= ~NLP_NPR_ADISC;
489 struct lpfc_nodelist * ndlp,
495 struct fc_rport *rport = ndlp->rport;
502 ndlp->nlp_type &= ~(NLP_FCP_TARGET | NLP_FCP_INITIATOR);
503 ndlp->nlp_fcp_info &= ~NLP_FCP_2_DEVICE;
507 ndlp->nlp_type |= NLP_FCP_INITIATOR;
509 ndlp->nlp_type |= NLP_FCP_TARGET;
511 ndlp->nlp_fcp_info |= NLP_FCP_2_DEVICE;
516 if (ndlp->nlp_type & NLP_FCP_INITIATOR)
518 if (ndlp->nlp_type & NLP_FCP_TARGET)
526 struct lpfc_nodelist * ndlp)
531 if (!(ndlp->nlp_fcp_info & NLP_FCP_2_DEVICE))
535 ndlp->nlp_flag |= NLP_NPR_ADISC;
542 struct lpfc_nodelist * ndlp, void *arg, uint32_t evt)
550 ndlp->nlp_DID, evt, ndlp->nlp_state, ndlp->nlp_rpi,
551 ndlp->nlp_flag);
552 return ndlp->nlp_state;
559 struct lpfc_nodelist * ndlp, void *arg, uint32_t evt)
565 if (lpfc_rcv_plogi(phba, ndlp, cmdiocb)) {
566 ndlp->nlp_prev_state = NLP_STE_UNUSED_NODE;
567 lpfc_nlp_set_state(phba, ndlp, NLP_STE_UNUSED_NODE);
568 return ndlp->nlp_state;
570 lpfc_drop_node(phba, ndlp);
576 struct lpfc_nodelist * ndlp, void *arg, uint32_t evt)
578 lpfc_issue_els_logo(phba, ndlp, 0);
579 lpfc_nlp_set_state(phba, ndlp, NLP_STE_UNUSED_NODE);
580 return ndlp->nlp_state;
585 struct lpfc_nodelist * ndlp, void *arg, uint32_t evt)
592 ndlp->nlp_flag |= NLP_LOGO_ACC;
594 lpfc_els_rsp_acc(phba, ELS_CMD_ACC, cmdiocb, ndlp, NULL, 0);
595 lpfc_nlp_set_state(phba, ndlp, NLP_STE_UNUSED_NODE);
597 return ndlp->nlp_state;
602 struct lpfc_nodelist * ndlp, void *arg, uint32_t evt)
604 lpfc_drop_node(phba, ndlp);
610 struct lpfc_nodelist * ndlp, void *arg, uint32_t evt)
612 lpfc_drop_node(phba, ndlp);
617 lpfc_rcv_plogi_plogi_issue(struct lpfc_hba * phba, struct lpfc_nodelist * ndlp,
645 lpfc_els_rsp_reject(phba, stat.un.lsRjtError, cmdiocb, ndlp);
647 lpfc_rcv_plogi(phba, ndlp, cmdiocb);
650 return ndlp->nlp_state;
655 struct lpfc_nodelist * ndlp, void *arg, uint32_t evt)
662 lpfc_els_abort(phba, ndlp);
664 lpfc_rcv_logo(phba, ndlp, cmdiocb, ELS_CMD_LOGO);
665 return ndlp->nlp_state;
670 struct lpfc_nodelist * ndlp, void *arg, uint32_t evt)
677 lpfc_els_abort(phba, ndlp);
680 lpfc_els_rsp_acc(phba, ELS_CMD_ACC, cmdiocb, ndlp, NULL, 0);
682 lpfc_issue_els_logo(phba, ndlp, 0);
685 /* Put ndlp in npr list set plogi timer for 1 sec */
686 mod_timer(&ndlp->nlp_delayfunc, jiffies + HZ * 1);
688 ndlp->nlp_flag |= NLP_DELAY_TMO;
690 ndlp->nlp_last_elscmd = ELS_CMD_PLOGI;
691 ndlp->nlp_prev_state = NLP_STE_PLOGI_ISSUE;
692 lpfc_nlp_set_state(phba, ndlp, NLP_STE_NPR_NODE);
694 return ndlp->nlp_state;
699 struct lpfc_nodelist * ndlp, void *arg,
712 if (ndlp->nlp_flag & NLP_ACC_REGLOGIN) {
714 return ndlp->nlp_state;
730 if (!lpfc_check_sparm(phba, ndlp, sp, CLASS3))
740 ndlp->nlp_DID, ndlp->nlp_state,
741 ndlp->nlp_flag, ndlp->nlp_rpi);
745 ndlp->nlp_fcp_info |= CLASS2;
747 ndlp->nlp_fcp_info |= CLASS3;
749 ndlp->nlp_class_sup = 0;
751 ndlp->nlp_class_sup |= FC_COS_CLASS1;
753 ndlp->nlp_class_sup |= FC_COS_CLASS2;
755 ndlp->nlp_class_sup |= FC_COS_CLASS3;
757 ndlp->nlp_class_sup |= FC_COS_CLASS4;
758 ndlp->nlp_maxframe =
766 lpfc_unreg_rpi(phba, ndlp);
769 switch (ndlp->nlp_DID) {
779 mbox->context2 = lpfc_nlp_get(ndlp);
783 lpfc_nlp_set_state(phba, ndlp, NLP_STE_REG_LOGIN_ISSUE);
784 return ndlp->nlp_state;
786 lpfc_nlp_put(ndlp);
799 lpfc_drop_node(phba, ndlp);
805 struct lpfc_nodelist * ndlp, void *arg, uint32_t evt)
807 if(ndlp->nlp_flag & NLP_NPR_2B_DISC) {
808 ndlp->nlp_flag |= NLP_NODEV_REMOVE;
809 return ndlp->nlp_state;
813 lpfc_els_abort(phba, ndlp);
815 lpfc_drop_node(phba, ndlp);
822 struct lpfc_nodelist * ndlp, void *arg,
826 lpfc_els_abort(phba, ndlp);
828 ndlp->nlp_prev_state = NLP_STE_PLOGI_ISSUE;
829 lpfc_nlp_set_state(phba, ndlp, NLP_STE_NPR_NODE);
831 ndlp->nlp_flag &= ~(NLP_NODEV_REMOVE | NLP_NPR_2B_DISC);
834 return ndlp->nlp_state;
839 struct lpfc_nodelist * ndlp, void *arg,
845 lpfc_els_abort(phba, ndlp);
849 if (lpfc_rcv_plogi(phba, ndlp, cmdiocb)) {
850 return ndlp->nlp_state;
852 ndlp->nlp_prev_state = NLP_STE_ADISC_ISSUE;
853 lpfc_nlp_set_state(phba, ndlp, NLP_STE_PLOGI_ISSUE);
854 lpfc_issue_els_plogi(phba, ndlp->nlp_DID, 0);
856 return ndlp->nlp_state;
861 struct lpfc_nodelist * ndlp, void *arg,
868 lpfc_els_rsp_prli_acc(phba, cmdiocb, ndlp);
869 return ndlp->nlp_state;
874 struct lpfc_nodelist * ndlp, void *arg,
882 lpfc_els_abort(phba, ndlp);
884 lpfc_rcv_logo(phba, ndlp, cmdiocb, ELS_CMD_LOGO);
885 return ndlp->nlp_state;
890 struct lpfc_nodelist * ndlp, void *arg,
897 lpfc_rcv_padisc(phba, ndlp, cmdiocb);
898 return ndlp->nlp_state;
903 struct lpfc_nodelist * ndlp, void *arg,
911 lpfc_rcv_logo(phba, ndlp, cmdiocb, ELS_CMD_PRLO);
912 return ndlp->nlp_state;
917 struct lpfc_nodelist * ndlp, void *arg,
931 (!lpfc_check_adisc(phba, ndlp, &ap->nodeName, &ap->portName))) {
933 mod_timer(&ndlp->nlp_delayfunc, jiffies + HZ);
935 ndlp->nlp_flag |= NLP_DELAY_TMO;
937 ndlp->nlp_last_elscmd = ELS_CMD_PLOGI;
939 memset(&ndlp->nlp_nodename, 0, sizeof (struct lpfc_name));
940 memset(&ndlp->nlp_portname, 0, sizeof (struct lpfc_name));
942 ndlp->nlp_prev_state = NLP_STE_ADISC_ISSUE;
943 lpfc_nlp_set_state(phba, ndlp, NLP_STE_NPR_NODE);
944 lpfc_unreg_rpi(phba, ndlp);
945 return ndlp->nlp_state;
948 if (ndlp->nlp_type & NLP_FCP_TARGET) {
949 ndlp->nlp_prev_state = NLP_STE_ADISC_ISSUE;
950 lpfc_nlp_set_state(phba, ndlp, NLP_STE_MAPPED_NODE);
952 ndlp->nlp_prev_state = NLP_STE_ADISC_ISSUE;
953 lpfc_nlp_set_state(phba, ndlp, NLP_STE_UNMAPPED_NODE);
955 return ndlp->nlp_state;
960 struct lpfc_nodelist * ndlp, void *arg,
963 if(ndlp->nlp_flag & NLP_NPR_2B_DISC) {
964 ndlp->nlp_flag |= NLP_NODEV_REMOVE;
965 return ndlp->nlp_state;
969 lpfc_els_abort(phba, ndlp);
971 lpfc_drop_node(phba, ndlp);
978 struct lpfc_nodelist * ndlp, void *arg,
982 lpfc_els_abort(phba, ndlp);
984 ndlp->nlp_prev_state = NLP_STE_ADISC_ISSUE;
985 lpfc_nlp_set_state(phba, ndlp, NLP_STE_NPR_NODE);
987 ndlp->nlp_flag &= ~(NLP_NODEV_REMOVE | NLP_NPR_2B_DISC);
988 ndlp->nlp_flag |= NLP_NPR_ADISC;
991 return ndlp->nlp_state;
996 struct lpfc_nodelist * ndlp, void *arg,
1003 lpfc_rcv_plogi(phba, ndlp, cmdiocb);
1004 return ndlp->nlp_state;
1009 struct lpfc_nodelist * ndlp, void *arg,
1016 lpfc_els_rsp_prli_acc(phba, cmdiocb, ndlp);
1017 return ndlp->nlp_state;
1022 struct lpfc_nodelist * ndlp, void *arg,
1032 /* cleanup any ndlp on mbox q waiting for reglogin cmpl */
1035 (ndlp == (struct lpfc_nodelist *) mb->context2)) {
1044 (ndlp == (struct lpfc_nodelist *) mb->context2)) {
1056 lpfc_rcv_logo(phba, ndlp, cmdiocb, ELS_CMD_LOGO);
1057 return ndlp->nlp_state;
1062 struct lpfc_nodelist * ndlp, void *arg,
1069 lpfc_rcv_padisc(phba, ndlp, cmdiocb);
1070 return ndlp->nlp_state;
1075 struct lpfc_nodelist * ndlp, void *arg,
1081 lpfc_els_rsp_acc(phba, ELS_CMD_PRLO, cmdiocb, ndlp, NULL, 0);
1082 return ndlp->nlp_state;
1087 struct lpfc_nodelist * ndlp,
1111 ndlp->nlp_prev_state = NLP_STE_UNUSED_NODE;
1112 lpfc_nlp_set_state(phba, ndlp, NLP_STE_UNUSED_NODE);
1113 return ndlp->nlp_state;
1116 /* Put ndlp in npr list set plogi timer for 1 sec */
1117 mod_timer(&ndlp->nlp_delayfunc, jiffies + HZ * 1);
1119 ndlp->nlp_flag |= NLP_DELAY_TMO;
1121 ndlp->nlp_last_elscmd = ELS_CMD_PLOGI;
1123 lpfc_issue_els_logo(phba, ndlp, 0);
1124 ndlp->nlp_prev_state = NLP_STE_REG_LOGIN_ISSUE;
1125 lpfc_nlp_set_state(phba, ndlp, NLP_STE_NPR_NODE);
1126 return ndlp->nlp_state;
1129 ndlp->nlp_rpi = mb->un.varWords[0];
1132 if (!(ndlp->nlp_type & NLP_FABRIC)) {
1133 ndlp->nlp_prev_state = NLP_STE_REG_LOGIN_ISSUE;
1134 lpfc_nlp_set_state(phba, ndlp, NLP_STE_PRLI_ISSUE);
1135 lpfc_issue_els_prli(phba, ndlp, 0);
1137 ndlp->nlp_prev_state = NLP_STE_REG_LOGIN_ISSUE;
1138 lpfc_nlp_set_state(phba, ndlp, NLP_STE_UNMAPPED_NODE);
1140 return ndlp->nlp_state;
1145 struct lpfc_nodelist * ndlp, void *arg,
1148 if(ndlp->nlp_flag & NLP_NPR_2B_DISC) {
1149 ndlp->nlp_flag |= NLP_NODEV_REMOVE;
1150 return ndlp->nlp_state;
1153 lpfc_drop_node(phba, ndlp);
1160 struct lpfc_nodelist * ndlp, void *arg,
1163 ndlp->nlp_prev_state = NLP_STE_REG_LOGIN_ISSUE;
1164 lpfc_nlp_set_state(phba, ndlp, NLP_STE_NPR_NODE);
1166 ndlp->nlp_flag &= ~(NLP_NODEV_REMOVE | NLP_NPR_2B_DISC);
1168 return ndlp->nlp_state;
1173 struct lpfc_nodelist * ndlp, void *arg, uint32_t evt)
1179 lpfc_rcv_plogi(phba, ndlp, cmdiocb);
1180 return ndlp->nlp_state;
1185 struct lpfc_nodelist * ndlp, void *arg, uint32_t evt)
1191 lpfc_els_rsp_prli_acc(phba, cmdiocb, ndlp);
1192 return ndlp->nlp_state;
1197 struct lpfc_nodelist * ndlp, void *arg, uint32_t evt)
1204 lpfc_els_abort(phba, ndlp);
1206 lpfc_rcv_logo(phba, ndlp, cmdiocb, ELS_CMD_LOGO);
1207 return ndlp->nlp_state;
1212 struct lpfc_nodelist * ndlp, void *arg, uint32_t evt)
1218 lpfc_rcv_padisc(phba, ndlp, cmdiocb);
1219 return ndlp->nlp_state;
1229 struct lpfc_nodelist * ndlp, void *arg, uint32_t evt)
1234 lpfc_els_rsp_acc(phba, ELS_CMD_PRLO, cmdiocb, ndlp, NULL, 0);
1235 return ndlp->nlp_state;
1240 struct lpfc_nodelist * ndlp, void *arg, uint32_t evt)
1252 ndlp->nlp_prev_state = NLP_STE_PRLI_ISSUE;
1253 lpfc_nlp_set_state(phba, ndlp, NLP_STE_UNMAPPED_NODE);
1254 return ndlp->nlp_state;
1258 ndlp->nlp_type &= ~(NLP_FCP_TARGET | NLP_FCP_INITIATOR);
1259 ndlp->nlp_fcp_info &= ~NLP_FCP_2_DEVICE;
1263 ndlp->nlp_type |= NLP_FCP_INITIATOR;
1265 ndlp->nlp_type |= NLP_FCP_TARGET;
1267 ndlp->nlp_fcp_info |= NLP_FCP_2_DEVICE;
1270 ndlp->nlp_prev_state = NLP_STE_PRLI_ISSUE;
1271 lpfc_nlp_set_state(phba, ndlp, NLP_STE_MAPPED_NODE);
1272 return ndlp->nlp_state;
1280 * \param ndlp
1294 struct lpfc_nodelist * ndlp, void *arg, uint32_t evt)
1296 if(ndlp->nlp_flag & NLP_NPR_2B_DISC) {
1297 ndlp->nlp_flag |= NLP_NODEV_REMOVE;
1298 return ndlp->nlp_state;
1302 lpfc_els_abort(phba, ndlp);
1304 lpfc_drop_node(phba, ndlp);
1315 * \param ndlp
1328 struct lpfc_nodelist * ndlp, void *arg, uint32_t evt)
1331 lpfc_els_abort(phba, ndlp);
1333 ndlp->nlp_prev_state = NLP_STE_PRLI_ISSUE;
1334 lpfc_nlp_set_state(phba, ndlp, NLP_STE_NPR_NODE);
1336 ndlp->nlp_flag &= ~(NLP_NODEV_REMOVE | NLP_NPR_2B_DISC);
1338 return ndlp->nlp_state;
1343 struct lpfc_nodelist * ndlp, void *arg, uint32_t evt)
1349 lpfc_rcv_plogi(phba, ndlp, cmdiocb);
1350 return ndlp->nlp_state;
1355 struct lpfc_nodelist * ndlp, void *arg, uint32_t evt)
1361 lpfc_rcv_prli(phba, ndlp, cmdiocb);
1362 lpfc_els_rsp_prli_acc(phba, cmdiocb, ndlp);
1363 return ndlp->nlp_state;
1368 struct lpfc_nodelist * ndlp, void *arg, uint32_t evt)
1374 lpfc_rcv_logo(phba, ndlp, cmdiocb, ELS_CMD_LOGO);
1375 return ndlp->nlp_state;
1380 struct lpfc_nodelist * ndlp, void *arg, uint32_t evt)
1386 lpfc_rcv_padisc(phba, ndlp, cmdiocb);
1387 return ndlp->nlp_state;
1392 struct lpfc_nodelist * ndlp, void *arg, uint32_t evt)
1398 lpfc_els_rsp_acc(phba, ELS_CMD_PRLO, cmdiocb, ndlp, NULL, 0);
1399 return ndlp->nlp_state;
1404 struct lpfc_nodelist * ndlp, void *arg, uint32_t evt)
1406 ndlp->nlp_prev_state = NLP_STE_UNMAPPED_NODE;
1407 lpfc_nlp_set_state(phba, ndlp, NLP_STE_NPR_NODE);
1408 ndlp->nlp_flag &= ~(NLP_NODEV_REMOVE | NLP_NPR_2B_DISC);
1409 lpfc_disc_set_adisc(phba, ndlp);
1411 return ndlp->nlp_state;
1416 struct lpfc_nodelist * ndlp, void *arg, uint32_t evt)
1422 lpfc_rcv_plogi(phba, ndlp, cmdiocb);
1423 return ndlp->nlp_state;
1428 struct lpfc_nodelist * ndlp, void *arg, uint32_t evt)
1434 lpfc_els_rsp_prli_acc(phba, cmdiocb, ndlp);
1435 return ndlp->nlp_state;
1440 struct lpfc_nodelist * ndlp, void *arg, uint32_t evt)
1446 lpfc_rcv_logo(phba, ndlp, cmdiocb, ELS_CMD_LOGO);
1447 return ndlp->nlp_state;
1452 struct lpfc_nodelist * ndlp, void *arg,
1459 lpfc_rcv_padisc(phba, ndlp, cmdiocb);
1460 return ndlp->nlp_state;
1465 struct lpfc_nodelist * ndlp, void *arg, uint32_t evt)
1474 ndlp->nlp_sid, 0, 0, LPFC_CTX_TGT);
1478 lpfc_rcv_logo(phba, ndlp, cmdiocb, ELS_CMD_PRLO);
1479 return ndlp->nlp_state;
1484 struct lpfc_nodelist * ndlp, void *arg,
1487 ndlp->nlp_prev_state = NLP_STE_MAPPED_NODE;
1488 lpfc_nlp_set_state(phba, ndlp, NLP_STE_NPR_NODE);
1490 ndlp->nlp_flag &= ~(NLP_NODEV_REMOVE | NLP_NPR_2B_DISC);
1492 lpfc_disc_set_adisc(phba, ndlp);
1493 return ndlp->nlp_state;
1498 struct lpfc_nodelist * ndlp, void *arg,
1506 if (ndlp->nlp_flag & NLP_LOGO_SND) {
1507 return ndlp->nlp_state;
1510 if (lpfc_rcv_plogi(phba, ndlp, cmdiocb)) {
1512 ndlp->nlp_flag &= ~NLP_NPR_ADISC;
1514 return ndlp->nlp_state;
1518 if (!(ndlp->nlp_flag & NLP_DELAY_TMO)) {
1519 ndlp->nlp_prev_state = NLP_STE_NPR_NODE;
1520 lpfc_nlp_set_state(phba, ndlp, NLP_STE_PLOGI_ISSUE);
1521 lpfc_issue_els_plogi(phba, ndlp->nlp_DID, 0);
1524 return ndlp->nlp_state;
1529 struct lpfc_nodelist * ndlp, void *arg,
1540 lpfc_els_rsp_reject(phba, stat.un.lsRjtError, cmdiocb, ndlp);
1542 if (!(ndlp->nlp_flag & NLP_DELAY_TMO)) {
1543 if (ndlp->nlp_flag & NLP_NPR_ADISC) {
1545 ndlp->nlp_flag &= ~NLP_NPR_ADISC;
1547 ndlp->nlp_prev_state = NLP_STE_NPR_NODE;
1548 lpfc_nlp_set_state(phba, ndlp, NLP_STE_ADISC_ISSUE);
1549 lpfc_issue_els_adisc(phba, ndlp, 0);
1551 ndlp->nlp_prev_state = NLP_STE_NPR_NODE;
1552 lpfc_nlp_set_state(phba, ndlp, NLP_STE_PLOGI_ISSUE);
1553 lpfc_issue_els_plogi(phba, ndlp->nlp_DID, 0);
1556 return ndlp->nlp_state;
1561 struct lpfc_nodelist * ndlp, void *arg,
1568 lpfc_rcv_logo(phba, ndlp, cmdiocb, ELS_CMD_LOGO);
1569 return ndlp->nlp_state;
1574 struct lpfc_nodelist * ndlp, void *arg,
1581 lpfc_rcv_padisc(phba, ndlp, cmdiocb);
1588 if (!(ndlp->nlp_flag & NLP_DELAY_TMO) &&
1589 !(ndlp->nlp_flag & NLP_NPR_2B_DISC)){
1590 if (ndlp->nlp_flag & NLP_NPR_ADISC) {
1591 ndlp->nlp_prev_state = NLP_STE_NPR_NODE;
1592 lpfc_nlp_set_state(phba, ndlp, NLP_STE_ADISC_ISSUE);
1593 lpfc_issue_els_adisc(phba, ndlp, 0);
1595 ndlp->nlp_prev_state = NLP_STE_NPR_NODE;
1596 lpfc_nlp_set_state(phba, ndlp, NLP_STE_PLOGI_ISSUE);
1597 lpfc_issue_els_plogi(phba, ndlp->nlp_DID, 0);
1600 return ndlp->nlp_state;
1605 struct lpfc_nodelist * ndlp, void *arg,
1613 ndlp->nlp_flag |= NLP_LOGO_ACC;
1616 lpfc_els_rsp_acc(phba, ELS_CMD_ACC, cmdiocb, ndlp, NULL, 0);
1618 if (!(ndlp->nlp_flag & NLP_DELAY_TMO)) {
1619 mod_timer(&ndlp->nlp_delayfunc, jiffies + HZ * 1);
1621 ndlp->nlp_flag |= NLP_DELAY_TMO;
1622 ndlp->nlp_flag &= ~NLP_NPR_ADISC;
1624 ndlp->nlp_last_elscmd = ELS_CMD_PLOGI;
1627 ndlp->nlp_flag &= ~NLP_NPR_ADISC;
1630 return ndlp->nlp_state;
1635 struct lpfc_nodelist * ndlp, void *arg, uint32_t evt)
1645 lpfc_drop_node(phba, ndlp);
1648 return ndlp->nlp_state;
1653 struct lpfc_nodelist * ndlp, void *arg, uint32_t evt)
1662 if (irsp->ulpStatus && (ndlp->nlp_flag & NLP_NODEV_REMOVE)) {
1663 lpfc_drop_node(phba, ndlp);
1666 return ndlp->nlp_state;
1671 struct lpfc_nodelist * ndlp, void *arg, uint32_t evt)
1673 lpfc_unreg_rpi(phba, ndlp);
1675 return ndlp->nlp_state;
1680 struct lpfc_nodelist * ndlp, void *arg,
1690 if (irsp->ulpStatus && (ndlp->nlp_flag & NLP_NODEV_REMOVE)) {
1691 lpfc_drop_node(phba, ndlp);
1694 return ndlp->nlp_state;
1699 struct lpfc_nodelist * ndlp, void *arg,
1709 ndlp->nlp_rpi = mb->un.varWords[0];
1711 if (ndlp->nlp_flag & NLP_NODEV_REMOVE) {
1712 lpfc_drop_node(phba, ndlp);
1716 return ndlp->nlp_state;
1721 struct lpfc_nodelist * ndlp, void *arg,
1724 if (ndlp->nlp_flag & NLP_NPR_2B_DISC) {
1725 ndlp->nlp_flag |= NLP_NODEV_REMOVE;
1726 return ndlp->nlp_state;
1728 lpfc_drop_node(phba, ndlp);
1734 struct lpfc_nodelist * ndlp, void *arg,
1738 ndlp->nlp_flag &= ~(NLP_NODEV_REMOVE | NLP_NPR_2B_DISC);
1740 if (ndlp->nlp_flag & NLP_DELAY_TMO) {
1741 lpfc_cancel_retry_delay_tmo(phba, ndlp);
1743 return ndlp->nlp_state;
1921 struct lpfc_nodelist * ndlp, void *arg, uint32_t evt)
1927 lpfc_nlp_get(ndlp);
1928 cur_state = ndlp->nlp_state;
1937 evt, ndlp->nlp_DID, cur_state, ndlp->nlp_flag);
1940 rc = (func) (phba, ndlp, arg, evt);
1948 rc, ndlp->nlp_DID, ndlp->nlp_flag);
1950 lpfc_nlp_put(ndlp);