linux/drivers/usb
Mathias Nyman 90d551a5bc xhci: Add adaptive interrupt rate for isoch TRBs with XHCI_AVOID_BEI quirk
Save a bit of power by not interrupting so often by default if
XHCI_AVOID_BEI quirk is set.

In normal cases the xhci driver will only generate an interrupt on the last
isochronous TRB of an URB. In a common UVC webcam usecase there are 32 TRBs
per URB.

if AVOID_BEI flag is set then xhci driver will force an interrupt every 8th
isoc TRB to make sure the event ring doesn't get too full.

This is however way too frequent in common single webcam use cases, causing
1000 interrupts/sec and thus poor powermanagement performance.

Instead start with interrupting every 32 isoc TRB, and halve it in case
event ring becomes half-full. Stop halving when reaching a rate of every
8th trb.

This is a one way solution. If interrupt rate is increased it will stay
high until driver is reloaded. The highest rate is the same as the old
default rate.

Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
Link: https://lore.kernel.org/r/20210617150354.1512157-3-mathias.nyman@linux.intel.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2021-06-17 17:34:29 +02:00
..
atm usb: atm: cxacru: Fix typo in comment 2021-05-21 20:05:40 +02:00
c67x00 usb/c67x00: Replace tasklet with work 2021-01-26 18:36:37 +01:00
cdns3 Linux 5.13-rc6 2021-06-14 09:18:07 +02:00
chipidea Merge 5.13-rc4 into usb-next 2021-05-31 09:50:26 +02:00
class cdc-wdm: untangle a circular dependency between callback and softint 2021-05-10 14:39:51 +02:00
common usb: common: ulpi: Add leading underscores for function name '__ulpi_register_driver()' 2021-05-27 09:45:27 +02:00
core USB: core: Avoid WARNings for 0-length descriptor requests 2021-06-09 11:11:39 +02:00
dwc2 usb: dwc2: Don't reset the core after setting turnaround time 2021-06-09 11:25:07 +02:00
dwc3 Linux 5.13-rc6 2021-06-14 09:18:07 +02:00
early usb: early: ehci-dbgp: convert to readl_poll_timeout_atomic() 2020-09-25 16:29:09 +02:00
gadget USB: UDC: net2280: remove redundant continue statement 2021-06-17 15:31:53 +02:00
host xhci: Add adaptive interrupt rate for isoch TRBs with XHCI_AVOID_BEI quirk 2021-06-17 17:34:29 +02:00
image USB: microtek: use set_host_byte() 2020-09-16 12:42:10 +02:00
isp1760 usb: isp1760: Fix meaningless check in isp1763_run() 2021-06-15 15:40:58 +02:00
misc USB: misc: Add onboard_usb_hub driver 2021-06-15 15:48:35 +02:00
mon
mtu3 usb: mtu3: use clock bulk to get clocks 2021-06-15 15:46:45 +02:00
musb usb: musb: Implement tracing for state change events 2021-06-14 10:25:16 +02:00
phy usb: phy: tegra: Correct definition of B_SESS_VLD_WAKEUP_EN bit 2021-06-15 15:36:23 +02:00
renesas_usbhs usb: renesas_usbhs: fix error return code of usbhsf_pkt_handler() 2021-03-23 12:42:15 +01:00
roles usb: roles: add helper usb_role_string() 2021-05-27 09:17:18 +02:00
serial USB: serial: cp210x: fix CP2102N-A01 modem control 2021-06-10 16:59:00 +02:00
storage usb: storage: datafab: remove redundant assignment of variable result 2021-04-22 10:52:10 +02:00
typec usb: typec: Add the missed altmode_id_remove() in typec_register_altmode() 2021-06-17 15:39:33 +02:00
usbip Scheduler updates for this cycle are: 2021-04-28 13:33:57 -07:00
Kconfig treewide: replace '---help---' in Kconfig files with 'help' 2020-06-14 01:57:21 +09:00
Makefile usb: cdnsp: cdns3 Add main part of Cadence USBSSP DRD Driver 2020-12-29 12:36:13 +08:00
usb-skeleton.c