[PATCH 00/22] usb: dwc3 / f_mass_storage: misc changes

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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



[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux