Daniel Wagner fc3d78
From: James Smart <jsmart2021@gmail.com>
Daniel Wagner fc3d78
Date: Mon, 7 Feb 2022 10:05:16 -0800
Daniel Wagner fc3d78
Subject: scsi: lpfc: Remove NVMe support if kernel has NVME_FC disabled
Daniel Wagner fc3d78
Patch-mainline: v5.17-rc4
Daniel Wagner fc3d78
Git-commit: c80b27cfd93ba9f5161383f798414609e84729f3
Daniel Wagner fc3d78
References: bsc#1197675
Daniel Wagner fc3d78
Daniel Wagner fc3d78
The driver is initiating NVMe PRLIs to determine device NVMe support.  This
Daniel Wagner fc3d78
should not be occurring if CONFIG_NVME_FC support is disabled.
Daniel Wagner fc3d78
Daniel Wagner fc3d78
Correct this by changing the default value for FC4 support. Currently it
Daniel Wagner fc3d78
defaults to FCP and NVMe. With change, when NVME_FC support is not enabled
Daniel Wagner fc3d78
in the kernel, the default value is just FCP.
Daniel Wagner fc3d78
Daniel Wagner fc3d78
Link: https://lore.kernel.org/r/20220207180516.73052-1-jsmart2021@gmail.com
Daniel Wagner fc3d78
Reviewed-by: Ewan D. Milne <emilne@redhat.com>
Daniel Wagner fc3d78
Signed-off-by: James Smart <jsmart2021@gmail.com>
Daniel Wagner fc3d78
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Daniel Wagner fc3d78
Acked-by: Daniel Wagner <dwagner@suse.de>
Daniel Wagner fc3d78
---
Daniel Wagner fc3d78
 drivers/scsi/lpfc/lpfc.h      |   13 ++++++++++---
Daniel Wagner fc3d78
 drivers/scsi/lpfc/lpfc_attr.c |    4 ++--
Daniel Wagner fc3d78
 2 files changed, 12 insertions(+), 5 deletions(-)
Daniel Wagner fc3d78
Daniel Wagner fc3d78
--- a/drivers/scsi/lpfc/lpfc.h
Daniel Wagner fc3d78
+++ b/drivers/scsi/lpfc/lpfc.h
Daniel Wagner fc3d78
@@ -1071,6 +1071,16 @@ struct lpfc_hba {
Daniel Wagner fc3d78
 	uint32_t cfg_hostmem_hgp;
Daniel Wagner fc3d78
 	uint32_t cfg_log_verbose;
Daniel Wagner fc3d78
 	uint32_t cfg_enable_fc4_type;
Daniel Wagner fc3d78
+#define LPFC_ENABLE_FCP  1
Daniel Wagner fc3d78
+#define LPFC_ENABLE_NVME 2
Daniel Wagner fc3d78
+#define LPFC_ENABLE_BOTH 3
Daniel Wagner fc3d78
+#if (IS_ENABLED(CONFIG_NVME_FC))
Daniel Wagner fc3d78
+#define LPFC_MAX_ENBL_FC4_TYPE LPFC_ENABLE_BOTH
Daniel Wagner fc3d78
+#define LPFC_DEF_ENBL_FC4_TYPE LPFC_ENABLE_BOTH
Daniel Wagner fc3d78
+#else
Daniel Wagner fc3d78
+#define LPFC_MAX_ENBL_FC4_TYPE LPFC_ENABLE_FCP
Daniel Wagner fc3d78
+#define LPFC_DEF_ENBL_FC4_TYPE LPFC_ENABLE_FCP
Daniel Wagner fc3d78
+#endif
Daniel Wagner fc3d78
 	uint32_t cfg_aer_support;
Daniel Wagner fc3d78
 	uint32_t cfg_sriov_nr_virtfn;
Daniel Wagner fc3d78
 	uint32_t cfg_request_firmware_upgrade;
Daniel Wagner fc3d78
@@ -1092,9 +1102,6 @@ struct lpfc_hba {
Daniel Wagner fc3d78
 	uint32_t cfg_ras_fwlog_func;
Daniel Wagner fc3d78
 	uint32_t cfg_enable_bbcr;	/* Enable BB Credit Recovery */
Daniel Wagner fc3d78
 	uint32_t cfg_enable_dpp;	/* Enable Direct Packet Push */
Daniel Wagner fc3d78
-#define LPFC_ENABLE_FCP  1
Daniel Wagner fc3d78
-#define LPFC_ENABLE_NVME 2
Daniel Wagner fc3d78
-#define LPFC_ENABLE_BOTH 3
Daniel Wagner fc3d78
 	uint32_t cfg_enable_pbde;
Daniel Wagner fc3d78
 	uint32_t cfg_enable_mi;
Daniel Wagner fc3d78
 	struct nvmet_fc_target_port *targetport;
Daniel Wagner fc3d78
--- a/drivers/scsi/lpfc/lpfc_attr.c
Daniel Wagner fc3d78
+++ b/drivers/scsi/lpfc/lpfc_attr.c
Daniel Wagner fc3d78
@@ -3987,8 +3987,8 @@ LPFC_ATTR_R(nvmet_mrq_post,
Daniel Wagner fc3d78
  *                    3 - register both FCP and NVME
Daniel Wagner fc3d78
  * Supported values are [1,3]. Default value is 3
Daniel Wagner fc3d78
  */
Daniel Wagner fc3d78
-LPFC_ATTR_R(enable_fc4_type, LPFC_ENABLE_BOTH,
Daniel Wagner fc3d78
-	    LPFC_ENABLE_FCP, LPFC_ENABLE_BOTH,
Daniel Wagner fc3d78
+LPFC_ATTR_R(enable_fc4_type, LPFC_DEF_ENBL_FC4_TYPE,
Daniel Wagner fc3d78
+	    LPFC_ENABLE_FCP, LPFC_MAX_ENBL_FC4_TYPE,
Daniel Wagner fc3d78
 	    "Enable FC4 Protocol support - FCP / NVME");
Daniel Wagner fc3d78
 
Daniel Wagner fc3d78
 /*