summaryrefslogtreecommitdiffstats
path: root/drivers/usb/dwc3/gadget.c
diff options
context:
space:
mode:
authorFelipe Balbi <felipe.balbi@linux.intel.com>2018-04-11 10:32:52 +0300
committerFelipe Balbi <felipe.balbi@linux.intel.com>2018-05-21 10:01:00 +0300
commitd513320f1fd013d789516a51823a11dc23a3fd55 (patch)
tree5007a917445fc93dbe68e02cfdfac7e23ecd3b61 /drivers/usb/dwc3/gadget.c
parente1d542f712e104614cfe906ff6e316dd1828bbf5 (diff)
downloadop-kernel-dev-d513320f1fd013d789516a51823a11dc23a3fd55.zip
op-kernel-dev-d513320f1fd013d789516a51823a11dc23a3fd55.tar.gz
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 <felipe.balbi@linux.intel.com>
Diffstat (limited to 'drivers/usb/dwc3/gadget.c')
-rw-r--r--drivers/usb/dwc3/gadget.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c
index 694e55c..e9e0e28 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);
OpenPOWER on IntegriCloud