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