usb: dwc3: gadget: check for Missed Isoc from event status
PATCH 18/38 usb: dwc3: gadget: check for Missed Isoc from event status
Hi,
Quoted 8 lines · Thinh Nguyen
Hi Felipe,
Quoted 3 lines · Felipe Balbi
In case we get an event with status set to Missed Isoc, this means we have missed an isochronous interval and should issue End Transfer command and wait for the following XferNotReady.
Why does DWC3 need to issue End Transfer if there are still queued requests?
Without XferNotReady, we won't have a reliable way to know the uFrame number. Read the Isochronous programming sequence from your databook.
Quoted 11 lines
Quoted 11 lines
(quoted diff) +1
-0@@ -2383,14 +2380,25 @@ static void dwc3_gadget_endpoint_transfer_in_progress(struct dwc3_ep *dep, { struct dwc3 *dwc = dep->dwc; unsigned status = 0; + bool stop = false; dwc3_gadget_endpoint_frame_from_event(dep, event); if (event->status & DEPEVT_STATUS_BUSERR) status = -ECONNRESET;
Quoted 6 lines
Review static void dwc3_gadget_endpoint_transfer_in_progress(struct dwc3_ep *dep, · line 2391
Quoted 2 lines
(quoted diff) +2
-0+ if (event->status & DEPEVT_STATUS_MISSED_ISOC) { + status = -ECONNRESET;Missed isoc shouldn't cause this error status or if it should return an error status at all. Maybe the status can be
-EXDEV, similar to the host side (/Documentation/driver-api/usb/error-codes.rst).
fair enough. I'll change to EXDEV