diff options
Diffstat (limited to 'drivers/scsi/lpfc/lpfc_nportdisc.c')
-rw-r--r-- | drivers/scsi/lpfc/lpfc_nportdisc.c | 16 |
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); |