]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/commitdiff
scsi: lpfc: Fix SLI3 hba in loop mode not discovering devices
authorJames Smart <jsmart2021@gmail.com>
Fri, 18 Oct 2019 21:18:20 +0000 (14:18 -0700)
committerKhalid Elmously <khalid.elmously@canonical.com>
Wed, 29 Jan 2020 04:47:27 +0000 (23:47 -0500)
BugLink: https://bugs.launchpad.net/bugs/1860602
[ Upstream commit feff8b3d84d3d9570f893b4d83e5eab6693d6a52 ]

When operating in private loop mode, PLOGI exchanges are racing and the
driver tries to abort it's PLOGI. But the PLOGI abort ends up terminating
the login with the other end causing the other end to abort its PLOGI as
well. Discovery never fully completes.

Fix by disabling the PLOGI abort when private loop and letting the state
machine play out.

Link: https://lore.kernel.org/r/20191018211832.7917-5-jsmart2021@gmail.com
Signed-off-by: Dick Kennedy <dick.kennedy@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>
Signed-off-by: Kamal Mostafa <kamal@canonical.com>
Signed-off-by: Khalid Elmously <khalid.elmously@canonical.com>
drivers/scsi/lpfc/lpfc_nportdisc.c

index d317a158d55f1686b664e39c1a09c40b1c5d9ead..01e3c43b240979c9615a62dcb44237a39d30a2f6 100644 (file)
@@ -483,8 +483,10 @@ lpfc_rcv_plogi(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp,
         * single discovery thread, this will cause a huge delay in
         * discovery. Also this will cause multiple state machines
         * running in parallel for this node.
+        * This only applies to a fabric environment.
         */
-       if (ndlp->nlp_state == NLP_STE_PLOGI_ISSUE) {
+       if ((ndlp->nlp_state == NLP_STE_PLOGI_ISSUE) &&
+           (vport->fc_flag & FC_FABRIC)) {
                /* software abort outstanding PLOGI */
                lpfc_els_abort(phba, ndlp);
        }