scsi: qla2xxx: Accelerate SCSI BUSY status generation in target mode
authorQuinn Tran <quinn.tran@cavium.com>
Fri, 2 Jun 2017 16:12:05 +0000 (09:12 -0700)
committerMartin K. Petersen <martin.petersen@oracle.com>
Tue, 13 Jun 2017 00:48:08 +0000 (20:48 -0400)
Accelerate generation of SCSI busy to let initiators slow down when
target is running low in resources.

Signed-off-by: Quinn Tran <quinn.tran@cavium.com>
Signed-off-by: Himanshu Madhani <himanshu.madhani@cavium.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/qla2xxx/qla_init.c
drivers/scsi/qla2xxx/qla_mbx.c

index 08000aebe8d41f857d1f0d84e47a67567c46c75d..436968ad4484ab382599838cd3a244de4c397de1 100644 (file)
@@ -7374,10 +7374,19 @@ qla81xx_update_fw_options(scsi_qla_host_t *vha)
        }
 
        if (qla_tgt_mode_enabled(vha) ||
-           qla_dual_mode_enabled(vha))
+           qla_dual_mode_enabled(vha)) {
+               /* FW auto send SCSI status during */
+               ha->fw_options[1] |= BIT_8;
+               ha->fw_options[10] |= (u16)SAM_STAT_BUSY << 8;
+
+               /* FW perform Exchange validation */
                ha->fw_options[2] |= BIT_4;
-       else
+       } else {
+               ha->fw_options[1]  &= ~BIT_8;
+               ha->fw_options[10] &= 0x00ff;
+
                ha->fw_options[2] &= ~BIT_4;
+       }
 
        if (ql2xetsenable) {
                /* Enable ETS Burst. */
index bebac42d9e9e2357dfbdbe0daf922d3e918c7b5b..f02a2baffb5b4953809d472fb44753f7607fd416 100644 (file)
@@ -1048,6 +1048,8 @@ qla2x00_set_fw_options(scsi_qla_host_t *vha, uint16_t *fwopts)
        mcp->in_mb = MBX_0;
        if (IS_FWI2_CAPABLE(vha->hw)) {
                mcp->in_mb |= MBX_1;
+               mcp->mb[10] = fwopts[10];
+               mcp->out_mb |= MBX_10;
        } else {
                mcp->mb[10] = fwopts[10];
                mcp->mb[11] = fwopts[11];