aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/lpfc/lpfc_nportdisc.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/scsi/lpfc/lpfc_nportdisc.c')
-rw-r--r--drivers/scsi/lpfc/lpfc_nportdisc.c16
1 files changed, 5 insertions, 11 deletions
diff --git a/drivers/scsi/lpfc/lpfc_nportdisc.c b/drivers/scsi/lpfc/lpfc_nportdisc.c
index bccc9c66fa3..d85a7423a69 100644
--- a/drivers/scsi/lpfc/lpfc_nportdisc.c
+++ b/drivers/scsi/lpfc/lpfc_nportdisc.c
@@ -386,7 +386,7 @@ lpfc_rcv_plogi(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp,
386 goto out; 386 goto out;
387 387
388 rc = lpfc_reg_rpi(phba, vport->vpi, icmd->un.rcvels.remoteID, 388 rc = lpfc_reg_rpi(phba, vport->vpi, icmd->un.rcvels.remoteID,
389 (uint8_t *) sp, mbox, 0); 389 (uint8_t *) sp, mbox, ndlp->nlp_rpi);
390 if (rc) { 390 if (rc) {
391 mempool_free(mbox, phba->mbox_mem_pool); 391 mempool_free(mbox, phba->mbox_mem_pool);
392 goto out; 392 goto out;
@@ -632,7 +632,7 @@ lpfc_disc_set_adisc(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp)
632{ 632{
633 struct Scsi_Host *shost = lpfc_shost_from_vport(vport); 633 struct Scsi_Host *shost = lpfc_shost_from_vport(vport);
634 634
635 if (!(ndlp->nlp_flag & NLP_RPI_VALID)) { 635 if (!(ndlp->nlp_flag & NLP_RPI_REGISTERED)) {
636 ndlp->nlp_flag &= ~NLP_NPR_ADISC; 636 ndlp->nlp_flag &= ~NLP_NPR_ADISC;
637 return 0; 637 return 0;
638 } 638 }
@@ -968,7 +968,7 @@ lpfc_cmpl_plogi_plogi_issue(struct lpfc_vport *vport,
968 lpfc_unreg_rpi(vport, ndlp); 968 lpfc_unreg_rpi(vport, ndlp);
969 969
970 if (lpfc_reg_rpi(phba, vport->vpi, irsp->un.elsreq64.remoteID, 970 if (lpfc_reg_rpi(phba, vport->vpi, irsp->un.elsreq64.remoteID,
971 (uint8_t *) sp, mbox, 0) == 0) { 971 (uint8_t *) sp, mbox, ndlp->nlp_rpi) == 0) {
972 switch (ndlp->nlp_DID) { 972 switch (ndlp->nlp_DID) {
973 case NameServer_DID: 973 case NameServer_DID:
974 mbox->mbox_cmpl = lpfc_mbx_cmpl_ns_reg_login; 974 mbox->mbox_cmpl = lpfc_mbx_cmpl_ns_reg_login;
@@ -1338,12 +1338,6 @@ lpfc_rcv_logo_reglogin_issue(struct lpfc_vport *vport,
1338 list_for_each_entry_safe(mb, nextmb, &phba->sli.mboxq, list) { 1338 list_for_each_entry_safe(mb, nextmb, &phba->sli.mboxq, list) {
1339 if ((mb->u.mb.mbxCommand == MBX_REG_LOGIN64) && 1339 if ((mb->u.mb.mbxCommand == MBX_REG_LOGIN64) &&
1340 (ndlp == (struct lpfc_nodelist *) mb->context2)) { 1340 (ndlp == (struct lpfc_nodelist *) mb->context2)) {
1341 if (phba->sli_rev == LPFC_SLI_REV4) {
1342 spin_unlock_irq(&phba->hbalock);
1343 lpfc_sli4_free_rpi(phba,
1344 mb->u.mb.un.varRegLogin.rpi);
1345 spin_lock_irq(&phba->hbalock);
1346 }
1347 mp = (struct lpfc_dmabuf *) (mb->context1); 1341 mp = (struct lpfc_dmabuf *) (mb->context1);
1348 if (mp) { 1342 if (mp) {
1349 __lpfc_mbuf_free(phba, mp->virt, mp->phys); 1343 __lpfc_mbuf_free(phba, mp->virt, mp->phys);
@@ -1426,7 +1420,7 @@ lpfc_cmpl_reglogin_reglogin_issue(struct lpfc_vport *vport,
1426 } 1420 }
1427 1421
1428 ndlp->nlp_rpi = mb->un.varWords[0]; 1422 ndlp->nlp_rpi = mb->un.varWords[0];
1429 ndlp->nlp_flag |= NLP_RPI_VALID; 1423 ndlp->nlp_flag |= NLP_RPI_REGISTERED;
1430 1424
1431 /* Only if we are not a fabric nport do we issue PRLI */ 1425 /* Only if we are not a fabric nport do we issue PRLI */
1432 if (!(ndlp->nlp_type & NLP_FABRIC)) { 1426 if (!(ndlp->nlp_type & NLP_FABRIC)) {
@@ -2027,7 +2021,7 @@ lpfc_cmpl_reglogin_npr_node(struct lpfc_vport *vport,
2027 2021
2028 if (!mb->mbxStatus) { 2022 if (!mb->mbxStatus) {
2029 ndlp->nlp_rpi = mb->un.varWords[0]; 2023 ndlp->nlp_rpi = mb->un.varWords[0];
2030 ndlp->nlp_flag |= NLP_RPI_VALID; 2024 ndlp->nlp_flag |= NLP_RPI_REGISTERED;
2031 } else { 2025 } else {
2032 if (ndlp->nlp_flag & NLP_NODEV_REMOVE) { 2026 if (ndlp->nlp_flag & NLP_NODEV_REMOVE) {
2033 lpfc_drop_node(vport, ndlp); 2027 lpfc_drop_node(vport, ndlp);