Message ID | 1453828246-28686-4-git-send-email-himanshu.madhani@qlogic.com (mailing list archive) |
---|---|
State | Changes Requested, archived |
Headers | show |
On 01/26/2016 06:10 PM, Himanshu Madhani wrote: > 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> > --- > drivers/scsi/qla2xxx/qla_gbl.h | 1 + > drivers/scsi/qla2xxx/qla_init.c | 11 ++++++++++- > drivers/scsi/qla2xxx/qla_os.c | 7 +++++++ > 3 files changed, 18 insertions(+), 1 deletions(-) > :-) We would have needed that earlier... Begs the question what happens if you do _not_ receive an ABTS response; will the iocb freed eventually? Other than that: Reviewed-by: Hannes Reinecke <hare@suse.com> Cheers, Hannes
On 1/27/16, 12:24 AM, "Hannes Reinecke" <hare@suse.de> wrote: >On 01/26/2016 06:10 PM, Himanshu Madhani wrote: >> 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> >> --- >> drivers/scsi/qla2xxx/qla_gbl.h | 1 + >> drivers/scsi/qla2xxx/qla_init.c | 11 ++++++++++- >> drivers/scsi/qla2xxx/qla_os.c | 7 +++++++ >> 3 files changed, 18 insertions(+), 1 deletions(-) >> >:-) >We would have needed that earlier... Sorry did not see this response before I reposted series with fix for build warning. > >Begs the question what happens if you do _not_ receive an ABTS >response; will the iocb freed eventually? Yes. > >Other than that: > >Reviewed-by: Hannes Reinecke <hare@suse.com> > >Cheers, > >Hannes >-- >Dr. Hannes Reinecke Teamlead Storage & Networking >hare@suse.de +49 911 74053 688 >SUSE LINUX GmbH, Maxfeldstr. 5, 90409 Nürnberg >GF: F. Imendörffer, J. Smithard, J. Guild, D. Upmanyu, G. Norton >HRB 21284 (AG Nürnberg)
diff --git a/drivers/scsi/qla2xxx/qla_gbl.h b/drivers/scsi/qla2xxx/qla_gbl.h index 0103e46..1bfdcdf 100644 --- a/drivers/scsi/qla2xxx/qla_gbl.h +++ b/drivers/scsi/qla2xxx/qla_gbl.h @@ -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); diff --git a/drivers/scsi/qla2xxx/qla_init.c b/drivers/scsi/qla2xxx/qla_init.c index a663ff6..cf487b9 100644 --- a/drivers/scsi/qla2xxx/qla_init.c +++ b/drivers/scsi/qla2xxx/qla_init.c @@ -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); } diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c index f1788db..d94a236 100644 --- a/drivers/scsi/qla2xxx/qla_os.c +++ b/drivers/scsi/qla2xxx/qla_os.c @@ -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 */