]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
scsi: lpfc: Correct topology type reporting on G7 adapters
authorJames Smart <jsmart2021@gmail.com>
Fri, 30 Nov 2018 00:09:38 +0000 (16:09 -0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 17 Dec 2019 19:35:30 +0000 (20:35 +0100)
[ Upstream commit 76558b25733140a0c6bd53ea8af04b2811c92ec3 ]

Driver missed classifying the chip type for G7 when reporting supported
topologies. This resulted in loop being shown as supported on FC links that
are not supported per the standard.

Add the chip classifications to the topology checks in the driver.

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>
drivers/scsi/lpfc/lpfc_attr.c
drivers/scsi/lpfc/lpfc_mbox.c

index 1e9002138d31cbc03acf6f99395b44a28bfe7d37..fe084d47ed9e54b5ba405e8ed31d7e16b6450d9c 100644 (file)
@@ -3849,8 +3849,9 @@ lpfc_topology_store(struct device *dev, struct device_attribute *attr,
                                val);
                        return -EINVAL;
                }
-               if (phba->pcidev->device == PCI_DEVICE_ID_LANCER_G6_FC &&
-                       val == 4) {
+               if ((phba->pcidev->device == PCI_DEVICE_ID_LANCER_G6_FC ||
+                    phba->pcidev->device == PCI_DEVICE_ID_LANCER_G7_FC) &&
+                   val == 4) {
                        lpfc_printf_vlog(vport, KERN_ERR, LOG_INIT,
                                "3114 Loop mode not supported\n");
                        return -EINVAL;
index deb094fdbb793ecc21b09989a8144ca0f6a0322b..e6bf5e8bc76700eb00531e53ba7136f9a5633b22 100644 (file)
@@ -513,9 +513,9 @@ lpfc_init_link(struct lpfc_hba * phba,
                break;
        }
 
-       if (phba->pcidev->device == PCI_DEVICE_ID_LANCER_G6_FC &&
-               mb->un.varInitLnk.link_flags & FLAGS_TOPOLOGY_MODE_LOOP) {
-               /* Failover is not tried for Lancer G6 */
+       if ((phba->pcidev->device == PCI_DEVICE_ID_LANCER_G6_FC ||
+            phba->pcidev->device == PCI_DEVICE_ID_LANCER_G7_FC) &&
+           mb->un.varInitLnk.link_flags & FLAGS_TOPOLOGY_MODE_LOOP) {
                mb->un.varInitLnk.link_flags = FLAGS_TOPOLOGY_MODE_PT_PT;
                phba->cfg_topology = FLAGS_TOPOLOGY_MODE_PT_PT;
        }