usb: dwc3: ep0: giveback requests on stall_and_restart
if we don't, the list will be busy forever. Signed-off-by: Felipe Balbi <balbi@ti.com>
This commit is contained in:
parent
bb7ea2841e
commit
d742220b35
1 changed files with 10 additions and 0 deletions
|
@ -214,9 +214,19 @@ int dwc3_gadget_ep0_queue(struct usb_ep *ep, struct usb_request *request,
|
|||
|
||||
static void dwc3_ep0_stall_and_restart(struct dwc3 *dwc)
|
||||
{
|
||||
struct dwc3_ep *dep = dwc->eps[0];
|
||||
|
||||
/* stall is always issued on EP0 */
|
||||
__dwc3_gadget_ep_set_halt(dwc->eps[0], 1);
|
||||
dwc->eps[0]->flags = DWC3_EP_ENABLED;
|
||||
|
||||
if (!list_empty(&dep->request_list)) {
|
||||
struct dwc3_request *req;
|
||||
|
||||
req = next_request(&dep->request_list);
|
||||
dwc3_gadget_giveback(dep, req, -ECONNRESET);
|
||||
}
|
||||
|
||||
dwc->ep0state = EP0_SETUP_PHASE;
|
||||
dwc3_ep0_out_start(dwc);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue