On Tue, Oct 25, 2022 at 03:10:20PM -0700, Thinh Nguyen wrote: > The gadget driver may have a certain expectation of how the request > completion flow should be from to its configuration. Make sure the > controller driver respect that. That is, don't set IMI (Interrupt on > Missed Isoc) when usb_request->no_interrupt is set. Also, the driver > should only set IMI to the last TRB of a chain. > > Fixes: 72246da40f37 ("usb: Introduce DesignWare USB3 DRD Driver") > Cc: stable@xxxxxxxxxxxxxxx > Signed-off-by: Thinh Nguyen <Thinh.Nguyen@xxxxxxxxxxxx> > --- > Changes in v3: > - Set IMI to only the last TRB of a chain > Changes in v2: > - None > > drivers/usb/dwc3/gadget.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c > index 230b3c660054..5fe2d136dff5 100644 > --- a/drivers/usb/dwc3/gadget.c > +++ b/drivers/usb/dwc3/gadget.c > @@ -1292,8 +1292,8 @@ static void dwc3_prepare_one_trb(struct dwc3_ep *dep, > trb->ctrl = DWC3_TRBCTL_ISOCHRONOUS; > } > > - /* always enable Interrupt on Missed ISOC */ > - trb->ctrl |= DWC3_TRB_CTRL_ISP_IMI; > + if (!no_interrupt && !chain) > + trb->ctrl |= DWC3_TRB_CTRL_ISP_IMI; > break; > > case USB_ENDPOINT_XFER_BULK: > -- > 2.28.0 > No new issues seen with these changes. Changes look good to me. Reviewed-by: Jeff Vanhoof <jdv1029@xxxxxxxxx> Tested-by: Jeff Vanhoof <jdv1029@xxxxxxxxx> Regards, Jeff