Hi folks, these last couple weeks I've been working on further improving dwc3 throughput. Also worked a little on suspend/resume. The result of this work is here. Note that dwc3's transfer handling is a lot simpler and easier to follow. I can reach up to 45MiB/sec in HS with Mass Storage gadget (see details below) and up to 370MiB/sec in SS. I measured on single setup here, so numbers should be taken with a grain of salt. For the test, I had CPU doing "nothing". Only the mass storage gadget was running. I had 96 Mass Storage requests, each with 16kiB buffer size. Also set max_sectors to 2048 on HS (via sysfs). With default 240 max_sectors, I couldn't go past 37MiB/sec. Anyway, there's a lot of refactoring and I really think people should test on their dwc3-based platforms to make sure I'm not regressing anybody. These patches will be queue for v4.8 and I'll keep them soaking on linux-next for as long as I can (I want these patches soaking for at least 5 weeks there). cheers Felipe Balbi (22): usb: dwc3: gadget: re-factor ->udc_start and ->udc_stop usb: dwc3: gadget: fix gadget suspend/resume usb: dwc3: core: get rid of DWC3_PM_OPS macro usb: dwc3: gadget: prepare TRBs on update transfers too usb: dwc3: gadget: simplify __dwc3_gadget_kick_transfer() usb: dwc3: gadget: rely on sg_is_last() and list_is_last() usb: dwc3: gadget: remove udelay(1) when sending ep cmds usb: dwc3: gadget: return 0 if we try to Wakeup in superspeed usb: dwc3: gadget: split __dwc3_gadget_kick_transfer() usb: dwc3: gadget: initialize NUMP based on RxFIFO Size usb: dwc3: gadget: clear LST from previous TRB on Update Transfer usb: dwc3: gadget: start bulk endpoints more frequently usb: dwc3: gadget: pass dep as argument to endpoint command usb: dwc3: gadget: add a pointer to endpoint registers usb: dwc3: gadget: switch over to spin_lock() usb: dwc3: core: move fladj to dwc3 structure usb: dwc3: core: re-factor init and exit paths usb: dwc3: core: simplify suspend/resume operations usb: dwc3: gadget: hold gadget IRQ in dwc->irq_gadget usb: dwc3: gadget: only resume USB2 PHY in <=HIGHSPEED usb: gadget: storage: get rid of fsg_num_buffers_validate() usb: gadget: storage: increase maximum storage num buffers drivers/usb/dwc3/core.c | 199 ++++------ drivers/usb/dwc3/core.h | 41 ++- drivers/usb/dwc3/debugfs.c | 190 +++------- drivers/usb/dwc3/ep0.c | 9 +- drivers/usb/dwc3/gadget.c | 525 ++++++++++++++------------- drivers/usb/dwc3/gadget.h | 4 +- drivers/usb/dwc3/io.h | 7 +- drivers/usb/gadget/Kconfig | 2 +- drivers/usb/gadget/function/f_mass_storage.c | 18 +- 9 files changed, 435 insertions(+), 560 deletions(-) -- 2.8.2 --------------------------------------------------------------------- Intel Finland Oy Registered Address: PL 281, 00181 Helsinki Business Identity Code: 0357606 - 4 Domiciled in Helsinki This e-mail and any attachments may contain confidential material for the sole use of the intended recipient(s). Any review or distribution by others is strictly prohibited. If you are not the intended recipient, please contact the sender and delete all copies. -- 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