qla2xxx: Allow fw to hold status before sending ABTS response.
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>
This commit is contained in:
parent
9f8d3d5bc5
commit
f198cafaa4
|
@ -121,6 +121,7 @@ extern int ql2xmdcapmask;
|
||||||
extern int ql2xmdenable;
|
extern int ql2xmdenable;
|
||||||
extern int ql2xexlogins;
|
extern int ql2xexlogins;
|
||||||
extern int ql2xexchoffld;
|
extern int ql2xexchoffld;
|
||||||
|
extern int ql2xfwholdabts;
|
||||||
|
|
||||||
extern int qla2x00_loop_reset(scsi_qla_host_t *);
|
extern int qla2x00_loop_reset(scsi_qla_host_t *);
|
||||||
extern void qla2x00_abort_all_cmds(scsi_qla_host_t *, int);
|
extern void qla2x00_abort_all_cmds(scsi_qla_host_t *, int);
|
||||||
|
|
|
@ -2062,6 +2062,10 @@ qla24xx_update_fw_options(scsi_qla_host_t *vha)
|
||||||
if (IS_P3P_TYPE(ha))
|
if (IS_P3P_TYPE(ha))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
/* Hold status IOCBs until ABTS response received. */
|
||||||
|
if (ql2xfwholdabts)
|
||||||
|
ha->fw_options[3] |= BIT_12;
|
||||||
|
|
||||||
/* Update Serial Link options. */
|
/* Update Serial Link options. */
|
||||||
if ((le16_to_cpu(ha->fw_seriallink_options24[0]) & BIT_0) == 0)
|
if ((le16_to_cpu(ha->fw_seriallink_options24[0]) & BIT_0) == 0)
|
||||||
return;
|
return;
|
||||||
|
@ -6410,12 +6414,17 @@ qla81xx_update_fw_options(scsi_qla_host_t *vha)
|
||||||
{
|
{
|
||||||
struct qla_hw_data *ha = vha->hw;
|
struct qla_hw_data *ha = vha->hw;
|
||||||
|
|
||||||
|
/* Hold status IOCBs until ABTS response received. */
|
||||||
|
if (ql2xfwholdabts)
|
||||||
|
ha->fw_options[3] |= BIT_12;
|
||||||
|
|
||||||
if (!ql2xetsenable)
|
if (!ql2xetsenable)
|
||||||
return;
|
goto out;
|
||||||
|
|
||||||
/* Enable ETS Burst. */
|
/* Enable ETS Burst. */
|
||||||
memset(ha->fw_options, 0, sizeof(ha->fw_options));
|
memset(ha->fw_options, 0, sizeof(ha->fw_options));
|
||||||
ha->fw_options[2] |= BIT_9;
|
ha->fw_options[2] |= BIT_9;
|
||||||
|
out:
|
||||||
qla2x00_set_fw_options(vha, ha->fw_options);
|
qla2x00_set_fw_options(vha, ha->fw_options);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -233,6 +233,13 @@ MODULE_PARM_DESC(ql2xexchoffld,
|
||||||
"Number of exchanges to offload. "
|
"Number of exchanges to offload. "
|
||||||
"0 (Default)- Disabled.");
|
"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
|
* SCSI host template entry points
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Reference in New Issue