qla2xxx: Enable SLER conditionally in target mode.
authorArun Easi <arun.easi@qlogic.com>
Thu, 25 Sep 2014 10:14:48 +0000 (06:14 -0400)
committerChristoph Hellwig <hch@lst.de>
Thu, 25 Sep 2014 12:25:06 +0000 (14:25 +0200)
Sequence level error recovery (aka FC Tape) is not really required
for disk devices. On heavily loaded system, with slow turn around,
a bunch of status enquiries using REC puts additional burden to the
target, so just turn off SLER by default.

Signed-off-by: Arun Easi <arun.easi@qlogic.com>
Signed-off-by: Saurav Kashyap <saurav.kashyap@qlogic.com>
Signed-off-by: Christoph Hellwig <hch@lst.de>
drivers/scsi/qla2xxx/qla_target.c

index 1503cf4120cfa022b3ccf2697360fb59719896d2..85587fcd5a383932b8b3add44bf4ebc05eaa3b4c 100644 (file)
 #include "qla_def.h"
 #include "qla_target.h"
 
+static int ql2xtgt_tape_enable;
+module_param(ql2xtgt_tape_enable, int, S_IRUGO|S_IWUSR);
+MODULE_PARM_DESC(ql2xtgt_tape_enable,
+               "Enables Sequence level error recovery (aka FC Tape). Default is 0 - no SLER. 1 - Enable SLER.");
+
 static char *qlini_mode = QLA2XXX_INI_MODE_STR_ENABLED;
 module_param(qlini_mode, charp, S_IRUGO);
 MODULE_PARM_DESC(qlini_mode,
@@ -5172,8 +5177,13 @@ qlt_24xx_config_nvram_stage1(struct scsi_qla_host *vha, struct nvram_24xx *nv)
                nv->firmware_options_1 &= __constant_cpu_to_le32(~BIT_13);
                /* Enable initial LIP */
                nv->firmware_options_1 &= __constant_cpu_to_le32(~BIT_9);
-               /* Enable FC tapes support */
-               nv->firmware_options_2 |= __constant_cpu_to_le32(BIT_12);
+               if (ql2xtgt_tape_enable)
+                       /* Enable FC Tape support */
+                       nv->firmware_options_2 |= cpu_to_le32(BIT_12);
+               else
+                       /* Disable FC Tape support */
+                       nv->firmware_options_2 &= cpu_to_le32(~BIT_12);
+
                /* Disable Full Login after LIP */
                nv->host_p &= __constant_cpu_to_le32(~BIT_10);
                /* Enable target PRLI control */
@@ -5255,8 +5265,13 @@ qlt_81xx_config_nvram_stage1(struct scsi_qla_host *vha, struct nvram_81xx *nv)
                nv->firmware_options_1 &= __constant_cpu_to_le32(~BIT_13);
                /* Enable initial LIP */
                nv->firmware_options_1 &= __constant_cpu_to_le32(~BIT_9);
-               /* Enable FC tapes support */
-               nv->firmware_options_2 |= __constant_cpu_to_le32(BIT_12);
+               if (ql2xtgt_tape_enable)
+                       /* Enable FC tape support */
+                       nv->firmware_options_2 |= cpu_to_le32(BIT_12);
+               else
+                       /* Disable FC tape support */
+                       nv->firmware_options_2 &= cpu_to_le32(~BIT_12);
+
                /* Disable Full Login after LIP */
                nv->host_p &= __constant_cpu_to_le32(~BIT_10);
                /* Enable target PRLI control */