Hello Artur, On Tue, 29 Dec 2020 07:29:27 +0000, Artur Petrosyan <Arthur.Petrosyan@xxxxxxxxxxxx> wrote: > Refactoring the driver to always accept any EP request independent of > the state (suspend), requires lot of investigation. We will decide and > implement later. > > For your case we suggest the following workaround in > "dwc2_hsotg_ep_queue()" function to additionally check "hsotg->power_down": I did test your change (with a trivial adaptation, see below) on 5.11.0-rc1 and I can confirm the AIO submission is accepted in my use-case, despite a 4-seconds sleep between UDC being bound and AIO submission to try to trigger the issue (which it does on an unpatched 5.10). The gadget goes on to correctly respond to the host, so this looks good to me. diff --git a/drivers/usb/dwc2/gadget.c b/drivers/usb/dwc2/gadget.c index 0a0d11151cfb8..dc676f3b1d799 100644 --- a/drivers/usb/dwc2/gadget.c +++ b/drivers/usb/dwc2/gadget.c @@ -1387,7 +1387,7 @@ static int dwc2_hsotg_ep_queue(struct usb_ep *ep, struct usb_request *req, req->zero, req->short_not_ok); /* Prevent new request submission when controller is suspended */ - if (hs->lx_state != DWC2_L0) { + if (hs->lx_state != DWC2_L0 && hs->params.power_down) { dev_dbg(hs->dev, "%s: submit request only in active state\n", __func__); return -EAGAIN; Regards, -- Vincent Pelletier