Iso transmission, the current process is that all trb(HWO=1) is handled. Then core generate DWC3_DEPEVT_XFERNOTREADY event, Software begin refill trb, this will produce 0 length package, the patch is to achieve the core consumes a trb, and then the software fill a trb. Normally, there will never be DWC3_DEPEVT_XFERNOTREADY event and 0-length packet. Signed-off-by: l00229106 <lpc.li@xxxxxxxxxxxxx> --- drivers/usb/dwc3/gadget.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c index 981fd98..1e6c42e 100644 --- a/drivers/usb/dwc3/gadget.c +++ b/drivers/usb/dwc3/gadget.c @@ -2420,7 +2420,7 @@ static void dwc3_endpoint_transfer_complete(struct dwc3 *dwc, if (!dep->endpoint.desc) return; - if (!usb_endpoint_xfer_isoc(dep->endpoint.desc)) + if (!usb_endpoint_xfer_isoc(dep->endpoint.desc) || (dep->flags & DWC3_EP_TRANSFER_STARTED)) __dwc3_gadget_kick_transfer(dep); } -- 2.7.4 ��.n��������+%������w��{.n�����{���)��jg��������ݢj����G�������j:+v���w�m������w�������h�����٥