Message ID | 20211123165646.62740-1-jsmart2021@gmail.com (mailing list archive) |
---|---|
State | Accepted |
Headers | show |
Series | lpfc: Fix nonrecovery of remote ports following an unsolicited LOGO | expand |
On Tue, 23 Nov 2021 08:56:46 -0800, James Smart wrote: > A commit introduced formal regstration of all Fabric nodes to the SCSI > transport as well as REG/UNREG RPI mailbox requests. The commit > introduced the NLP_RELEASE_RPI flag for rports set in the > lpfc_cmpl_els_logo_acc() routine to help clean up the RPIs. This new > code caused the driver to release the RPI value used for the remote port > and marked the RPI invalid. When the driver later attempted to re-login, > it would use the invalid RPI and the adapter rejected the PLOGI request. > As no login occurred, the devloss timer on the rport expired and > connectivity was lost. > > [...] Applied to 5.16/scsi-fixes, thanks! [1/1] lpfc: Fix nonrecovery of remote ports following an unsolicited LOGO https://git.kernel.org/mkp/scsi/c/0956ba63bd94
diff --git a/drivers/scsi/lpfc/lpfc_els.c b/drivers/scsi/lpfc/lpfc_els.c index b940e0268f96..e83453bea2ae 100644 --- a/drivers/scsi/lpfc/lpfc_els.c +++ b/drivers/scsi/lpfc/lpfc_els.c @@ -5095,14 +5095,9 @@ lpfc_cmpl_els_logo_acc(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb, /* NPort Recovery mode or node is just allocated */ if (!lpfc_nlp_not_used(ndlp)) { /* A LOGO is completing and the node is in NPR state. - * If this a fabric node that cleared its transport - * registration, release the rpi. + * Just unregister the RPI because the node is still + * required. */ - spin_lock_irq(&ndlp->lock); - ndlp->nlp_flag &= ~NLP_NPR_2B_DISC; - if (phba->sli_rev == LPFC_SLI_REV4) - ndlp->nlp_flag |= NLP_RELEASE_RPI; - spin_unlock_irq(&ndlp->lock); lpfc_unreg_rpi(vport, ndlp); } else { /* Indicate the node has already released, should