Blame SOURCES/0001-scsi-scsi-qla2xxx-Add-protection-mask-module-paramet.patch

3c6e85
From 54e80945f8828a3f55d548d64690713eddb0935a Mon Sep 17 00:00:00 2001
3c6e85
From: Himanshu Madhani <hmadhani@redhat.com>
3c6e85
Date: Thu, 1 Aug 2019 15:54:21 -0400
3c6e85
Subject: [PATCH 001/124] [scsi] scsi: qla2xxx: Add protection mask module
3c6e85
 parameters
3c6e85
3c6e85
Message-id: <20190801155618.12650-2-hmadhani@redhat.com>
3c6e85
Patchwork-id: 267795
3c6e85
O-Subject: [RHEL 7.8 e-stor PATCH 001/118] scsi: qla2xxx: Add protection mask module parameters
3c6e85
Bugzilla: 1729270
3c6e85
RH-Acked-by: Jarod Wilson <jarod@redhat.com>
3c6e85
RH-Acked-by: Tony Camuso <tcamuso@redhat.com>
3c6e85
3c6e85
From: "Martin K. Petersen" <martin.petersen@oracle.com>
3c6e85
3c6e85
Bugzilla 1729270
3c6e85
3c6e85
Allow user to selectively enable/disable DIF/DIX protection
3c6e85
capabilities mask.
3c6e85
3c6e85
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
3c6e85
Signed-off-by: Himanshu Madhani <hmadhani@marvell.com>
3c6e85
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
3c6e85
(cherry picked from commit 7855d2ba1172d716d96a628af7c5bafa5725ac57)
3c6e85
Signed-off-by: Himanshu Madhani <hmadhani@redhat.com>
3c6e85
Signed-off-by: Jan Stancek <jstancek@redhat.com>
3c6e85
---
3c6e85
 drivers/scsi/qla2xxx/qla_os.c | 36 ++++++++++++++++++++++++++++--------
3c6e85
 1 file changed, 28 insertions(+), 8 deletions(-)
3c6e85
3c6e85
diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c
3c6e85
index e0c5af693a9e..83abed102cf4 100644
3c6e85
--- a/drivers/scsi/qla2xxx/qla_os.c
3c6e85
+++ b/drivers/scsi/qla2xxx/qla_os.c
3c6e85
@@ -284,6 +284,20 @@ MODULE_PARM_DESC(qla2xuseresexchforels,
3c6e85
 		 "Reserve 1/2 of emergency exchanges for ELS.\n"
3c6e85
 		 " 0 (default): disabled");
3c6e85
 
3c6e85
+int ql2xprotmask;
3c6e85
+module_param(ql2xprotmask, int, 0644);
3c6e85
+MODULE_PARM_DESC(ql2xprotmask,
3c6e85
+		 "Override DIF/DIX protection capabilities mask\n"
3c6e85
+		 "Default is 0 which sets protection mask based on "
3c6e85
+		 "capabilities reported by HBA firmware.\n");
3c6e85
+
3c6e85
+int ql2xprotguard;
3c6e85
+module_param(ql2xprotguard, int, 0644);
3c6e85
+MODULE_PARM_DESC(ql2xprotguard, "Override choice of DIX checksum\n"
3c6e85
+		 "  0 -- Let HBA firmware decide\n"
3c6e85
+		 "  1 -- Force T10 CRC\n"
3c6e85
+		 "  2 -- Force IP checksum\n");
3c6e85
+
3c6e85
 /*
3c6e85
  * SCSI host template entry points
3c6e85
  */
3c6e85
@@ -3425,13 +3439,16 @@ skip_dpc:
3c6e85
 			    "Registering for DIF/DIX type 1 and 3 protection.\n");
3c6e85
 			if (ql2xenabledif == 1)
3c6e85
 				prot = SHOST_DIX_TYPE0_PROTECTION;
3c6e85
-			scsi_host_set_prot(host,
3c6e85
-			    prot | SHOST_DIF_TYPE1_PROTECTION
3c6e85
-			    | SHOST_DIF_TYPE2_PROTECTION
3c6e85
-			    | SHOST_DIF_TYPE3_PROTECTION
3c6e85
-			    | SHOST_DIX_TYPE1_PROTECTION
3c6e85
-			    | SHOST_DIX_TYPE2_PROTECTION
3c6e85
-			    | SHOST_DIX_TYPE3_PROTECTION);
3c6e85
+			if (ql2xprotmask)
3c6e85
+				scsi_host_set_prot(host, ql2xprotmask);
3c6e85
+			else
3c6e85
+				scsi_host_set_prot(host,
3c6e85
+				    prot | SHOST_DIF_TYPE1_PROTECTION
3c6e85
+				    | SHOST_DIF_TYPE2_PROTECTION
3c6e85
+				    | SHOST_DIF_TYPE3_PROTECTION
3c6e85
+				    | SHOST_DIX_TYPE1_PROTECTION
3c6e85
+				    | SHOST_DIX_TYPE2_PROTECTION
3c6e85
+				    | SHOST_DIX_TYPE3_PROTECTION);
3c6e85
 
3c6e85
 			guard = SHOST_DIX_GUARD_CRC;
3c6e85
 
3c6e85
@@ -3439,7 +3456,10 @@ skip_dpc:
3c6e85
 			    (ql2xenabledif > 1 || IS_PI_DIFB_DIX0_CAPABLE(ha)))
3c6e85
 				guard |= SHOST_DIX_GUARD_IP;
3c6e85
 
3c6e85
-			scsi_host_set_guard(host, guard);
3c6e85
+			if (ql2xprotguard)
3c6e85
+				scsi_host_set_guard(host, ql2xprotguard);
3c6e85
+			else
3c6e85
+				scsi_host_set_guard(host, guard);
3c6e85
 		} else
3c6e85
 			base_vha->flags.difdix_supported = 0;
3c6e85
 	}
3c6e85
-- 
3c6e85
2.13.6
3c6e85