Hi guys, I've been working on this series for a while now. I feels like after this series the transfer management code is far easier to read and understand. Based on my tests, I have no regressions. Tested g_mass_storage and all of testusb's tests (including ISOC). Patches are also available on dwc3-improve-isoc-endpoints in my k.org tree. Test reports would be VERY, VERY, VERY welcome. Please give this a go so we avoid regressions on v4.18. Cheers Felipe Balbi (38): usb: dwc3: gadget: pre-issue Start Transfer for Interrupt EPs too usb: dwc3: gadget: XferNotReady is Isoc-only usb: dwc3: gadget: XferComplete only for EP0 usb: dwc3: gadget: rename dwc3_endpoint_transfer_complete() usb: dwc3: gadget: don't kick transfer all the time usb: dwc3: gadget: rename done_trbs and done_reqs usb: dwc3: gadget: remove allocated/queued request tracking usb: dwc3: gadget: remove some pointless checks usb: dwc3: gadget: renable dwc3_gadget_start_isoc() usb: dwc3: gadget: move handler closer to calling site usb: dwc3: gadget: remove unnecessary 'dwc' parameter usb: dwc3: gadget: always use frame number from XferNotReady usb: dwc3: gadget: update dep->frame_number from XferInprogress too usb: dwc3: gadget: start removing BUSY flag usb: dwc3: gadget: remove DWC3_EP_BUSY flag usb: dwc3: gadget: make cleanup_completed_requests() return nothing usb: dwc3: gadget: remove unnecessary 'ioc' variable usb: dwc3: gadget: check for Missed Isoc from event status usb: dwc3: gadget: remove duplicated missed isoc handling usb: dwc3: gadget: simplify queueing of isoc transfers usb: dwc3: gadget: simplify isoc case on cleanup_completed_requests usb: dwc3: gadget: split scatterlist and linear handlers usb: dwc3: gadget: remove PENDING handling from cleanup_completed usb: dwc3: gadget: remove unnecessary 'chain' variable usb: dwc3: gadget: simplify unaligned and zlp handling usb: dwc3: trace: print out event status too usb: dwc3: gadget: simplify short packet event usb: dwc3: gadget: simplify IOC handling usb: dwc3: gadget: add a helper to test if a request is completed usb: dwc3: gadget: one declaration per line usb: dwc3: gadget: reduce scope of ret variable usb: dwc3: gadget: get rid of the length variable usb: dwc3: gadget: split dwc3_gadget_ep_cleanup_completed_requests() usb: dwc3: gadget: refactor dwc3_gadget_init_endpoints() usb: dwc3: gadget: combine modify & restore into single argument usb: dwc3: gadget: remove a few more dwc arguments usb: dwc3: gadget: move set_xfer_resource() in place of prototype usb: dwc3: gadget: move dwc3_calc_trbs_left() in place of prototype Documentation/driver-api/usb/dwc3.rst | 3 +- drivers/usb/dwc3/core.h | 13 +- drivers/usb/dwc3/debug.h | 20 +- drivers/usb/dwc3/ep0.c | 5 +- drivers/usb/dwc3/gadget.c | 712 ++++++++++++++++------------------ drivers/usb/dwc3/trace.h | 12 +- 6 files changed, 351 insertions(+), 414 deletions(-) -- 2.16.1 -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html