Re: [PATCH] usb: dwc3: gadget: Workaround Mirosoft's BESL check

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

 



Hi,

Thinh Nguyen <Thinh.Nguyen@xxxxxxxxxxxx> writes:

> While testing our host system using Microsoft's usb stack against our
> gadget for various BESL values, we found an issue with their usb stack
> when the recommended baseline BESL value is 0 (125us) or when the deep
> BESL is 1 or less. The Windows host will issue a usb reset immediately
> after it receives the extended BOS descriptor and the enumeration will
> fail after a few attempts.
>
> To keep compatibility with Microsoft's host usb stack, let's workaround
> this issue by using the recommended baseline BESL of 1 (or 150us)
> and clamp the deep BESL value within 2 to 15.
>
> This was tested against Windows 10 build 18956.
>
> Signed-off-by: Thinh Nguyen <thinhn@xxxxxxxxxxxx>
> ---
>  drivers/usb/dwc3/gadget.c | 5 +++--
>  1 file changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c
> index 7b58e0e1e438..9ef2259829ba 100644
> --- a/drivers/usb/dwc3/gadget.c
> +++ b/drivers/usb/dwc3/gadget.c
> @@ -2083,9 +2083,10 @@ static void dwc3_gadget_config_params(struct usb_gadget *g,
>  
>  	/* Recommended BESL */
>  	if (!dwc->dis_enblslpm_quirk) {

let's add a comment here similar to what's in commit log so folks won't
go about changing this willy-nilly.

> -		params->besl_baseline = 0;
> +		params->besl_baseline = 1;
>  		if (dwc->is_utmi_l1_suspend)
> -			params->besl_deep = min_t(u8, dwc->hird_threshold, 15);
> +			params->besl_deep =
> +				clamp_t(u8, dwc->hird_threshold, 2, 15);
>  	}
>  
>  	/* U1 Device exit Latency */
> -- 
> 2.11.0
>

-- 
balbi



[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux