mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-07 11:26:02 +09:00
usb: dwc3: gadget: fix XferInProgress event for isoc ep
On XferInProgress events, if the endpoint is isochronous
type, do not kick transfer directly even if the pending_list
isn't empty. Because it needs to wait for XferNotReady
event to start isoc transfer. Without this patch, it will
trigger a large number of unuseful XferInProgress events,
and easily cause loss of synchronization data if the cpu
core unable to handle the dwc3 thread interrupt in time.
Fixes: b77df21107 ("usb: dwc3: gadget: Continue to process pending requests")
Change-Id: I14d16240a6e10db466fd9822b4fdc35d79817508
Signed-off-by: William Wu <william.wu@rock-chips.com>
This commit is contained in:
@@ -2922,7 +2922,8 @@ static void dwc3_gadget_endpoint_transfer_in_progress(struct dwc3_ep *dep,
|
||||
if (event->status & DEPEVT_STATUS_MISSED_ISOC &&
|
||||
list_empty(&dep->started_list))
|
||||
dwc3_stop_active_transfer(dep, true, true);
|
||||
else if (dwc3_gadget_ep_should_continue(dep))
|
||||
else if (!usb_endpoint_xfer_isoc(dep->endpoint.desc) &&
|
||||
dwc3_gadget_ep_should_continue(dep))
|
||||
__dwc3_gadget_kick_transfer(dep);
|
||||
|
||||
/*
|
||||
|
||||
Reference in New Issue
Block a user