Blob Blame History Raw
From: James Smart <jsmart2021@gmail.com>
Date: Thu, 18 Aug 2022 18:17:30 -0700
Subject: scsi: lpfc: Fix unsolicited FLOGI receive handling during PT2PT
 discovery
Patch-mainline: v6.1-rc1
Git-commit: 439b93293ff202dae9661937a73af03374ec0ed0
References: bsc#1203063

During a stress offline/online test in PT2PT topology, target rediscovery
can fail with a specific target vendor array.

When the HBA transitions to online mode it is possible to receive an
unsolicited FLOGI before processing the Link Up event. The received FLOGI
will set the defer_flogi_acc_flag, which instructs the driver to wait until
it transmits its own FLOGI before ACKing the received FLOGI.  In this
failure scenario, the link up processing clears the set
defer_flogi_acc_flag before we have sent out the FLOGI.  As the target has
the higher WWPN and is responsible for sending the PLOGI, the target is
stuck waiting for its FLOGI_ACC that the driver will never send.

Remove the clear of defer_flogi_acc_flag from Link Up event processing.  In
this stress test case, the defer_flogi_acc_flag is cleared during the Link
Down event processing anyways.

Link: https://lore.kernel.org/r/20220819011736.14141-2-jsmart2021@gmail.com
Co-developed-by: Justin Tee <justin.tee@broadcom.com>
Signed-off-by: Justin Tee <justin.tee@broadcom.com>
Signed-off-by: James Smart <jsmart2021@gmail.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Acked-by: Daniel Wagner <dwagner@suse.de>
---
 drivers/scsi/lpfc/lpfc_hbadisc.c |    1 -
 1 file changed, 1 deletion(-)

--- a/drivers/scsi/lpfc/lpfc_hbadisc.c
+++ b/drivers/scsi/lpfc/lpfc_hbadisc.c
@@ -1392,7 +1392,6 @@ lpfc_linkup(struct lpfc_hba *phba)
 
 	/* reinitialize initial HBA flag */
 	phba->hba_flag &= ~(HBA_FLOGI_ISSUED | HBA_RHBA_CMPL);
-	phba->defer_flogi_acc_flag = false;
 
 	return 0;
 }