]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
qla2xxx: Allow fw to hold status before sending ABTS response.
authorHimanshu Madhani <himanshu.madhani@qlogic.com>
Wed, 27 Jan 2016 17:03:30 +0000 (12:03 -0500)
committerMartin K. Petersen <martin.petersen@oracle.com>
Thu, 28 Jan 2016 22:24:22 +0000 (17:24 -0500)
Set bit 12 of additional firmware options 3 to let firmware
hold status IOCB until ABTS response is received from Target.

Signed-off-by: Himanshu Madhani <himanshu.madhani@qlogic.com>
Signed-off-by: Giridhar Malavali <giridhar.malavali@qlogic.com>
Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de>
Reviewed-by: Hannes Reinecke <hare@suse.de>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/qla2xxx/qla_gbl.h
drivers/scsi/qla2xxx/qla_init.c
drivers/scsi/qla2xxx/qla_os.c

index 0103e468e3578b58887f9053233672c0b0cdba44..1bfdcdf396787de44b9188e0ae206798f209e884 100644 (file)
@@ -121,6 +121,7 @@ extern int ql2xmdcapmask;
 extern int ql2xmdenable;
 extern int ql2xexlogins;
 extern int ql2xexchoffld;
+extern int ql2xfwholdabts;
 
 extern int qla2x00_loop_reset(scsi_qla_host_t *);
 extern void qla2x00_abort_all_cmds(scsi_qla_host_t *, int);
index a663ff6021b571e0da62d8dfbe3ac6add462c7f2..cf487b95cad6614374c79526b4834b1208d36d08 100644 (file)
@@ -2062,6 +2062,10 @@ qla24xx_update_fw_options(scsi_qla_host_t *vha)
        if (IS_P3P_TYPE(ha))
                return;
 
+       /*  Hold status IOCBs until ABTS response received. */
+       if (ql2xfwholdabts)
+               ha->fw_options[3] |= BIT_12;
+
        /* Update Serial Link options. */
        if ((le16_to_cpu(ha->fw_seriallink_options24[0]) & BIT_0) == 0)
                return;
@@ -6410,12 +6414,17 @@ qla81xx_update_fw_options(scsi_qla_host_t *vha)
 {
        struct qla_hw_data *ha = vha->hw;
 
+       /*  Hold status IOCBs until ABTS response received. */
+       if (ql2xfwholdabts)
+               ha->fw_options[3] |= BIT_12;
+
        if (!ql2xetsenable)
-               return;
+               goto out;
 
        /* Enable ETS Burst. */
        memset(ha->fw_options, 0, sizeof(ha->fw_options));
        ha->fw_options[2] |= BIT_9;
+out:
        qla2x00_set_fw_options(vha, ha->fw_options);
 }
 
index f1788db4319560c8210eda5a0fc4f576d5ec321f..d94a236b76e575bbea7cd9964639620ebcf22191 100644 (file)
@@ -233,6 +233,13 @@ MODULE_PARM_DESC(ql2xexchoffld,
                 "Number of exchanges to offload. "
                 "0 (Default)- Disabled.");
 
+int ql2xfwholdabts = 0;
+module_param(ql2xfwholdabts, int, S_IRUGO);
+MODULE_PARM_DESC(ql2xfwholdabts,
+               "Allow FW to hold status IOCB until ABTS rsp received. "
+               "0 (Default) Do not set fw option. "
+               "1 - Set fw option to hold ABTS.");
+
 /*
  * SCSI host template entry points
  */