Re: [PATCH] qla2xxx: Mask off Scope bits in retry delay.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, 2018-06-06 at 08:41 -0700, Himanshu Madhani wrote:
> From: Anil Gurumurthy <anil.gurumurthy@xxxxxxxxxx>
> 
> 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: <stable@xxxxxxxxxxxxxxx>
> Signed-off-by: Anil Gurumurthy <anil.gurumurthy@xxxxxxxxxx>
> Signed-off-by: Giridhar Malavali <giridhar.malavali@xxxxxxxxxx>
> Signed-off-by: Himanshu Madhani <himanshu.madhani@xxxxxxxxxx>
> ---
> 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 <emilne@xxxxxxxxxx>






[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [SCSI Target Devel]     [Linux SCSI Target Infrastructure]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Samba]     [Device Mapper]

  Powered by Linux