scsi: lpfc: Fix sg_seg_cnt for HBAs that don't support NVME
authorJames Smart <jsmart2021@gmail.com>
Wed, 14 Aug 2019 23:56:49 +0000 (16:56 -0700)
committerMartin K. Petersen <martin.petersen@oracle.com>
Tue, 20 Aug 2019 02:41:10 +0000 (22:41 -0400)
On an SLI-3 adapter which does not support NVMe, but with the driver global
attribute to enable nvme on any adapter if it does support NVMe
(e.g. module parameter lpfc_enable_fc4_type=3), the SGL and total SGE
values are being munged by the protocol enablement when it shouldn't be.

Correct by changing the location of where the NVME sgl information is being
applied, which will avoid any SLI-3-based adapter.

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

index b527cc60e939109a5133733ed71b4a8b416b2b5a..7bfebecf03bb45dae1a98ef5b2513cae18a806ff 100644 (file)
@@ -7181,16 +7181,6 @@ lpfc_get_cfgparam(struct lpfc_hba *phba)
        lpfc_ras_fwlog_level_init(phba, lpfc_ras_fwlog_level);
        lpfc_ras_fwlog_func_init(phba, lpfc_ras_fwlog_func);
 
-
-       /* If the NVME FC4 type is enabled, scale the sg_seg_cnt to
-        * accommodate 512K and 1M IOs in a single nvme buf and supply
-        * enough NVME LS iocb buffers for larger connectivity counts.
-        */
-       if (phba->cfg_enable_fc4_type & LPFC_ENABLE_NVME) {
-               phba->cfg_sg_seg_cnt = LPFC_MAX_NVME_SEG_CNT;
-               phba->cfg_iocb_cnt = 5;
-       }
-
        return;
 }
 
index 8e889ea2620303fa08cd584b2ce638cc9edcb1e7..8429de65d4906bd839af507259884d14daccec99 100644 (file)
@@ -11681,6 +11681,15 @@ fcponly:
                }
        }
 
+       /* If the NVME FC4 type is enabled, scale the sg_seg_cnt to
+        * accommodate 512K and 1M IOs in a single nvme buf and supply
+        * enough NVME LS iocb buffers for larger connectivity counts.
+        */
+       if (phba->cfg_enable_fc4_type & LPFC_ENABLE_NVME) {
+               phba->cfg_sg_seg_cnt = LPFC_MAX_NVME_SEG_CNT;
+               phba->cfg_iocb_cnt = 5;
+       }
+
        /* Only embed PBDE for if_type 6, PBDE support requires xib be set */
        if ((bf_get(lpfc_sli_intf_if_type, &phba->sli4_hba.sli_intf) !=
            LPFC_SLI_INTF_IF_TYPE_6) || (!bf_get(cfg_xib, mbx_sli4_parameters)))