On Wed, 2018-06-06 at 08:41 -0700, Himanshu Madhani wrote:
> From: Anil Gurumurthy <anil.gurumur...@cavium.com>
> 
> Some newer target uses "Status Qualifier" response in a returned
> "Busy Status". This new response code of 0x4001, which is "Scope" bits,
> translates to "Affects all units accessible by target".
> Due to this new value returned in the Scope bits, driver was using
> that value as timeout value which resulted into driver waiting for 27min
> timeout.
> 
> This patch masks off this Scope bits so that driver does not use
> this value as retry delay time.
> 
> Cc: <sta...@vger.kernel.org>
> Signed-off-by: Anil Gurumurthy <anil.gurumur...@cavium.com>
> Signed-off-by: Giridhar Malavali <giridhar.malav...@cavium.com>
> Signed-off-by: Himanshu Madhani <himanshu.madh...@cavium.com>
> ---
> Hi Martin, 
> 
> This patch fixes driver retry delay timer with a specific target which
> returns Scope field in the BUSY status. Driver was translating this 
> Scope bits as timeout delay value and was wating for 27 minutes for retry. 
> 
> Please apply this to 4.18/scsi-fixes at your earliest convenience.
> 
> Thanks,
> Himanshu
> ---
>  drivers/scsi/qla2xxx/qla_isr.c | 8 ++++++--
>  1 file changed, 6 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/scsi/qla2xxx/qla_isr.c b/drivers/scsi/qla2xxx/qla_isr.c
> index a3dc83f9444d..68560a097ae1 100644
> --- a/drivers/scsi/qla2xxx/qla_isr.c
> +++ b/drivers/scsi/qla2xxx/qla_isr.c
> @@ -2494,8 +2494,12 @@ qla2x00_status_entry(scsi_qla_host_t *vha, struct 
> rsp_que *rsp, void *pkt)
>               ox_id = le16_to_cpu(sts24->ox_id);
>               par_sense_len = sizeof(sts24->data);
>               /* Valid values of the retry delay timer are 0x1-0xffef */
> -             if (sts24->retry_delay > 0 && sts24->retry_delay < 0xfff1)
> -                     retry_delay = sts24->retry_delay;
> +             if (sts24->retry_delay > 0 && sts24->retry_delay < 0xfff1) {
> +                     retry_delay = sts24->retry_delay & 0x3fff;
> +                     ql_dbg(ql_dbg_io, sp->vha, 0x3033,
> +                         "%s: scope=%#x retry_delay=%#x\n", __func__,
> +                         sts24->retry_delay >> 14, retry_delay);
> +             }
>       } else {
>               if (scsi_status & SS_SENSE_LEN_VALID)
>                       sense_len = le16_to_cpu(sts->req_sense_length);

Reviewed-by: Ewan D. Milne <emi...@redhat.com>



Reply via email to