scsi: lpfc: Fix "Unexpected timeout" error in direct attach topology
authorJames Smart <jsmart2021@gmail.com>
Fri, 14 May 2021 19:55:51 +0000 (12:55 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 20 Jul 2021 14:21:11 +0000 (16:21 +0200)
[ Upstream commit e30d55137edef47434c40d7570276a0846fe922c ]

An 'unexpected timeout' message may be seen in a point-2-point topology.
The message occurs when a PLOGI is received before the driver is notified
of FLOGI completion. The FLOGI completion failure causes discovery to be
triggered for a second time. The discovery timer is restarted but no new
discovery activity is initiated, thus the timeout message eventually
appears.

In point-2-point, when discovery has progressed before the FLOGI completion
is processed, it is not a failure. Add code to FLOGI completion to detect
that discovery has progressed and exit the FLOGI handling (noop'ing it).

Link: https://lore.kernel.org/r/20210514195559.119853-4-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>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/scsi/lpfc/lpfc_els.c

index 7d4a5bb916062f146c68e98abeabeb7b8ec19f03..f17adfe1326b87578c6ea5960b095e495c032524 100644 (file)
@@ -1159,6 +1159,15 @@ lpfc_cmpl_els_flogi(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb,
                        phba->fcf.fcf_redisc_attempted = 0; /* reset */
                        goto out;
                }
+       } else if (vport->port_state > LPFC_FLOGI &&
+                  vport->fc_flag & FC_PT2PT) {
+               /*
+                * In a p2p topology, it is possible that discovery has
+                * already progressed, and this completion can be ignored.
+                * Recheck the indicated topology.
+                */
+               if (!sp->cmn.fPort)
+                       goto out;
        }
 
 flogifail: