The dwc3 driver wasn't implemented to handle streams. This series provide a few updates to dwc3 and usb request for that: * Introduce usb_request->is_last field * Handle dwc3 transfer completion * Handle dwc3 stream events To use stream, the dwc3 driver must know which request is the last request of a transfer. The controller uses this information to reallocate its resources for different streams as transfers are completed. Function drivers that support stream must indicate this via usb_request->is_last field. Please note, I also included the patch "usb: dwc3: gadget: Continue to process pending requests" in this series to avoid dependency issue when applying to your git tree. https://patchwork.kernel.org/patch/11466967/ Prerequisite ------------ This series requires DWC_usb32 patch series: https://patchwork.kernel.org/project/linux-usb/list/?series=269641 [PATCH 1/2] usb: dwc3: Add support for DWC_usb32 IP [PATCH 2/2] usb: dwc3: Get MDWIDTH for DWC_usb32 Thinh Nguyen (5): usb: gadget: Introduce usb_request->is_last field usb: gadget: f_tcm: Inform last transfer request usb: dwc3: gadget: Continue to process pending requests usb: dwc3: gadget: Handle transfer completion usb: dwc3: gadget: Handle stream transfers drivers/usb/dwc3/core.h | 12 ++ drivers/usb/dwc3/debug.h | 2 + drivers/usb/dwc3/gadget.c | 225 ++++++++++++++++++++++++++++++------ drivers/usb/gadget/function/f_tcm.c | 3 + include/linux/usb/gadget.h | 2 + 5 files changed, 211 insertions(+), 33 deletions(-) -- 2.11.0