From: Felipe Balbi Date: Wed, 11 Apr 2018 07:32:52 +0000 (+0300) Subject: usb: dwc3: gadget: don't issue End Transfer if we have started reqs X-Git-Url: http://git.cdn.openwrt.org/?a=commitdiff_plain;h=d513320f1fd013d789516a51823a11dc23a3fd55;p=openwrt%2Fstaging%2Fblogic.git usb: dwc3: gadget: don't issue End Transfer if we have started reqs In case we have many started requests and one of them in the middle is completed with Missed Isoc, let's not End Transfer as that would result in us loosing (possibly) many more intervals. Instead, let's allow the controller to go through its list of started requests. Signed-off-by: Felipe Balbi --- diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c index 694e55c01f3a..e9e0e2805431 100644 --- a/drivers/usb/dwc3/gadget.c +++ b/drivers/usb/dwc3/gadget.c @@ -2398,7 +2398,9 @@ static void dwc3_gadget_endpoint_transfer_in_progress(struct dwc3_ep *dep, if (event->status & DEPEVT_STATUS_MISSED_ISOC) { status = -EXDEV; - stop = true; + + if (list_empty(&dep->started_list)) + stop = true; } dwc3_gadget_ep_cleanup_completed_requests(dep, event, status);