|
|
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 |
|