Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c26c265b authored by James Smart's avatar James Smart Committed by Martin K. Petersen
Browse files

scsi: lpfc: Fix sg_seg_cnt for HBAs that don't support NVME



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: default avatarDick Kennedy <dick.kennedy@broadcom.com>
Signed-off-by: default avatarJames Smart <jsmart2021@gmail.com>
Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
parent a643c6de
Loading
Loading
Loading
Loading
+0 −10
Original line number Diff line number Diff line
@@ -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;
}

+9 −0
Original line number Diff line number Diff line
@@ -11681,6 +11681,15 @@ lpfc_get_sli4_parameters(struct lpfc_hba *phba, LPFC_MBOXQ_t *mboxq)
		}
	}

	/* 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)))