linux/drivers/usb/host
Alan Stern c3ee9b76aa EHCI: improved logic for isochronous scheduling
This patch (as1608) reworks the logic used by ehci-hcd for scheduling
isochronous transfers.  Now the modular calculations are all based on
a window that starts at the last frame scanned for isochronous
completions.  No transfer descriptors for any earlier frames can
possibly remain on the schedule, so there can be no confusion from
schedule wrap-around.  This removes the need for a "slop" region of
arbitrary size.

There's no need to check for URBs that are longer than the schedule
length.  With the old code they could throw things off by wrapping
around and appearing to end in the near future rather than the distant
future.  Now such confusion isn't possible, and the existing test for
submissions that extend too far into the future will also catch those
that exceed the schedule length.  (But there still has to be an
initial test to handle the case where the schedule already extends as
far into the future as possible.)

Delays caused by IRQ latency won't confuse the algorithm unless they
are ridiculously long (over 250 ms); they will merely reduce how far
into the future new transfers can be scheduled.  A few people have
reported problems caused by delays of 50 ms or so.  Now instead of
failing completely, isochronous transfers will experience a brief
glitch and then continue normally.

(Whether this is truly a good thing is debatable.  A latency as large
as 50 ms generally indicates a bug is present, and complete failure of
audio or video transfers draws people's attention pretty vividly.
Making the transfers more robust also makes it easier for such bugs to
remain undetected.)

Finally, ehci->next_frame is renamed to ehci->last_iso_frame, because
that better describes what it is: the last frame to have been scanned
for isochronous completions.

Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2012-10-22 08:57:43 -07:00
..
whci USB: whci-hcd: fix NULL dereference on allocation failure 2012-08-15 15:17:39 -07:00
alchemy-common.c
bcma-hcd.c usb/bcma: Add missing #include <linux/slab.h> 2012-04-23 13:22:00 -07:00
ehci-atmel.c drivers/usb/host/ehci-atmel.c: use devm_ functions 2012-08-10 12:01:32 -07:00
ehci-au1xxx.c drivers/usb/host/ehci-au1xxx.c: use devm_ functions 2012-08-10 12:01:33 -07:00
ehci-cns3xxx.c drivers/usb/host/ehci-cns3xxx.c: use devm_ functions 2012-08-10 12:01:33 -07:00
ehci-dbg.c USB: EHCI: remove useless test 2012-09-21 09:37:53 -07:00
ehci-fsl.c USB: ehci-fsl: Return valid error in ehci_fsl_setup_phy 2012-10-19 10:54:30 -07:00
ehci-fsl.h powerpc/usb: fix bug of CPU hang when missing USB PHY clock 2012-09-05 16:52:08 -07:00
ehci-grlib.c drivers/usb/host/ehci-grlib.c: use devm_ functions 2012-08-10 12:01:33 -07:00
ehci-hcd.c USB EHCI/Xen: propagate controller reset information to hypervisor 2012-09-18 17:20:48 +01:00
ehci-hub.c USB EHCI/Xen: propagate controller reset information to hypervisor 2012-09-18 17:20:48 +01:00
ehci-ixp4xx.c drivers/usb/host/ehci-ixp4xx.c: use devm_ functions 2012-08-10 12:01:33 -07:00
ehci-lpm.c
ehci-ls1x.c USB/host: Cleanup unneccessary irq disable code 2012-09-10 20:22:35 -07:00
ehci-mem.c USB: EHCI: use hrtimer for (s)iTD deallocation 2012-07-16 16:54:25 -07:00
ehci-msm.c drivers/usb/host/ehci-msm.c: use devm_ functions 2012-08-10 12:01:33 -07:00
ehci-mv.c drivers/usb/host/ehci-mv.c: use devm_ functions 2012-08-10 12:01:34 -07:00
ehci-mxc.c ARM: soc: multiplatform enablement 2012-10-01 19:11:38 -07:00
ehci-octeon.c EHCI: centralize controller initialization 2012-07-09 13:35:05 -07:00
ehci-omap.c OMAP: USB : Fix the EHCI enumeration and core retention issue 2012-08-10 11:49:12 -07:00
ehci-orion.c Merge branch 'testing/driver-warnings' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc into fixes 2012-10-19 15:40:18 -07:00
ehci-pci.c USB: EHCI: use hrtimer for the periodic schedule 2012-07-16 16:53:16 -07:00
ehci-platform.c drivers/usb/host/ehci-platform.c: fix error return code 2012-08-15 15:17:40 -07:00
ehci-pmcmsp.c EHCI: centralize controller initialization 2012-07-09 13:35:05 -07:00
ehci-ppc-of.c drivers/usb/host/ehci-ppc-of.c: use devm_ functions 2012-08-10 12:04:09 -07:00
ehci-ps3.c EHCI: centralize controller initialization 2012-07-09 13:35:05 -07:00
ehci-q.c EHCI: Update qTD next pointer in QH overlay region during unlink 2012-09-10 16:01:37 -07:00
ehci-s5p.c ARM: soc: multiplatform enablement 2012-10-01 19:11:38 -07:00
ehci-sched.c EHCI: improved logic for isochronous scheduling 2012-10-22 08:57:43 -07:00
ehci-sead3.c Merge v3.6-rc3 into usb-next 2012-08-27 07:15:30 -07:00
ehci-sh.c drivers/usb/host/ehci-sh.c: use devm_ functions 2012-08-10 12:04:09 -07:00
ehci-spear.c EHCI: centralize controller initialization 2012-07-09 13:35:05 -07:00
ehci-sysfs.c
ehci-tegra.c usb: xceiv: patches for v3.7 merge window 2012-09-11 13:48:01 -07:00
ehci-tilegx.c usb: add host support for the tilegx architecture 2012-07-18 16:40:29 -04:00
ehci-timer.c USB: EHCI: convert warning messages to debug-level 2012-09-21 09:37:53 -07:00
ehci-vt8500.c usb: Missing dma_mask in ehci-vt8500.c when probed from device-tree 2012-10-17 13:42:29 -07:00
ehci-w90x900.c EHCI: centralize controller initialization 2012-07-09 13:35:05 -07:00
ehci-xilinx-of.c drivers/usb/host/ehci-xilinx-of.c: use devm_ functions 2012-08-10 12:04:10 -07:00
ehci-xls.c usb: host: tegra: pass correct pointer in ehci_setup() 2012-07-16 17:13:39 -07:00
ehci.h EHCI: improved logic for isochronous scheduling 2012-10-22 08:57:43 -07:00
fhci-dbg.c USB: FHCI: Reusing QUICC Engine USB Controller registers from immap_qe.h 2012-06-26 19:42:11 -07:00
fhci-hcd.c USB: FHCI: Reusing QUICC Engine USB Controller registers from immap_qe.h 2012-06-26 19:42:11 -07:00
fhci-hub.c USB: FHCI: Reusing QUICC Engine USB Controller registers from immap_qe.h 2012-06-26 19:42:11 -07:00
fhci-mem.c
fhci-q.c
fhci-sched.c USB: FHCI: use list_move_tail instead of list_del/list_add_tail 2012-09-05 16:55:18 -07:00
fhci-tds.c USB: FHCI: Reusing QUICC Engine USB Controller registers from immap_qe.h 2012-06-26 19:42:11 -07:00
fhci.h USB: FHCI: Reusing QUICC Engine USB Controller registers from immap_qe.h 2012-06-26 19:42:11 -07:00
fsl-mph-dr-of.c fsl/usb: Add support for USB controller version 2.4 2012-09-21 09:43:55 -07:00
hwa-hc.c
imx21-dbg.c usb: Fix typo in imx21-dbg.c 2012-02-13 14:32:34 -08:00
imx21-hcd.c usb: imx21-hcd.c: Use clk_prepare_enable/clk_disable_unprepare 2012-06-12 13:31:03 +03:00
imx21-hcd.h ARM: imx: move platform_data definitions 2012-09-14 11:17:21 +02:00
isp116x-hcd.c Remove all #inclusions of asm/system.h 2012-03-28 18:30:03 +01:00
isp116x.h
isp1362-hcd.c USB: isp1362-hcd.c: usb message always saved in case of underrun 2012-08-10 11:49:13 -07:00
isp1362.h
isp1760-hcd.c isp1760-hcd: fix possible memory leak if urb could not be enqueued 2012-04-18 13:51:19 -07:00
isp1760-hcd.h
isp1760-if.c isp1760-if: make module unloads correctly 2012-04-18 13:50:44 -07:00
Kconfig ARM: soc: general cleanups 2012-10-01 18:19:05 -07:00
Makefile USB: Add driver for the ssb bus 2012-04-18 13:43:30 -07:00
octeon2-common.c
ohci-at91.c USB: ohci-at91: fix null pointer in ohci_hcd_at91_overcurrent_irq 2012-09-27 09:16:38 -07:00
ohci-au1xxx.c usb: [MIPS] fix unresolved err() reference in host/ohci-au1xxx.c 2012-05-01 18:36:09 -04:00
ohci-cns3xxx.c USB: ohci-cns3xxx.c: remove err() usage 2012-04-27 11:24:40 -07:00
ohci-da8xx.c ARM: davinci: move platform_data definitions 2012-09-14 11:16:54 +02:00
ohci-dbg.c USB: ohci-dbg.c: remove dbg() usage 2012-05-01 21:33:37 -07:00
ohci-ep93xx.c USB: ohci-ep93xx.c: remove dbg() usage 2012-05-01 21:33:38 -07:00
ohci-exynos.c ARM: samsung: move platform_data definitions 2012-09-19 17:42:18 +02:00
ohci-hcd.c Merge branch 'for-3.7' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq 2012-10-02 09:54:49 -07:00
ohci-hub.c USB: ohci-hub: Mark ohci_finish_controller_resume() as __maybe_unused 2012-06-13 17:26:11 -07:00
ohci-jz4740.c
ohci-mem.c
ohci-nxp.c ARM: soc: general cleanups 2012-10-01 18:19:05 -07:00
ohci-octeon.c
ohci-omap3.c
ohci-omap.c ARM: OMAP1: Make plat/mux.h omap1 only 2012-09-20 14:54:57 -07:00
ohci-pci.c usb: add support for STA2X11 host driver 2012-01-24 14:15:37 -08:00
ohci-platform.c drivers/usb/host/ohci-platform.c: fix error return code 2012-08-15 15:17:40 -07:00
ohci-pnx8550.c usb: [MIPS] fix unresolved err() reference in host/ohci-pnx8550.c 2012-05-01 18:36:09 -04:00
ohci-ppc-of.c USB: ohci-ppc-of.c: remove err() usage 2012-04-27 11:24:42 -07:00
ohci-ppc-soc.c USB: ohci-ppc-soc.c: remove err() usage 2012-04-27 11:24:42 -07:00
ohci-ps3.c USB: ohci-ps3.c: remove err() usage 2012-04-27 11:24:43 -07:00
ohci-pxa27x.c ARM: soc: multiplatform enablement 2012-10-01 19:11:38 -07:00
ohci-q.c
ohci-s3c2410.c ARM: samsung: move platform_data definitions 2012-09-19 17:42:18 +02:00
ohci-sa1111.c USB: ohci-sa1111.c: remove dbg() usage 2012-05-01 21:33:39 -07:00
ohci-sh.c USB: ohci-sh.c: remove err() usage 2012-04-27 11:24:44 -07:00
ohci-sm501.c
ohci-spear.c USB: ehci: ohci: Add clk_{un}prepare() support 2012-04-18 14:33:43 -07:00
ohci-tilegx.c usb: add host support for the tilegx architecture 2012-07-18 16:40:29 -04:00
ohci-tmio.c USB: ohci-tmio.c: remove err() usage 2012-04-27 11:24:44 -07:00
ohci-xls.c USB/host: Cleanup unneccessary irq disable code 2012-09-10 20:22:35 -07:00
ohci.h USB: move transceiver from ehci_hcd and ohci_hcd to hcd and rename it as phy 2012-06-13 12:38:36 -07:00
oxu210hp-hcd.c USB: oxu210hp-hcd.c: remove dbg() usage 2012-05-01 21:33:43 -07:00
oxu210hp.h
pci-quirks.c xhci: Make handover code more robust 2012-09-05 12:07:17 -07:00
pci-quirks.h usb: host: xhci: fix compilation error for non-PCI based stacks 2012-09-05 12:26:11 -07:00
r8a66597-hcd.c usb: move children to struct usb_port 2012-09-10 12:59:42 -07:00
r8a66597.h usb/host/r8a66597: remove conditional compilation of clk code 2012-07-30 17:25:12 -07:00
sl811_cs.c
sl811-hcd.c drivers/usb/host/sl811-hcd.c: removes unnecessary semicolon 2012-09-13 21:48:48 -07:00
sl811.h
ssb-hcd.c usb/ssb: Add missing #include <linux/slab.h> 2012-04-23 13:22:00 -07:00
u132-hcd.c Remove all #inclusions of asm/system.h 2012-03-28 18:30:03 +01:00
uhci-debug.c
uhci-grlib.c
uhci-hcd.c ARM: vt8500: Add support for UHCI companion controller 2012-08-16 14:00:37 -07:00
uhci-hcd.h
uhci-hub.c UHCI: hub_status_data should indicate if ports are resuming 2012-04-09 15:43:21 -07:00
uhci-pci.c
uhci-platform.c usb: Missing dma_mask in uhci-platform.c when probed from device-tree 2012-10-17 13:42:29 -07:00
uhci-q.c
xhci-dbg.c xHCI: correct to print the true HSEE of USBCMD 2012-04-10 15:21:52 -07:00
xhci-ext-caps.h xHCI: Correct the #define XHCI_LEGACY_DISABLE_SMI 2012-04-11 08:31:06 -07:00
xhci-hub.c Merge 3.6-rc6 into usb-next 2012-09-16 20:42:46 -07:00
xhci-mem.c xHCI: add aborting command ring function 2012-09-13 15:49:28 -07:00
xhci-pci.c xhci: Intel Panther Point BEI quirk. 2012-09-25 15:19:34 -07:00
xhci-plat.c usb: host: xhci-plat: use ioremap_nocache 2012-09-05 12:07:19 -07:00
xhci-ring.c xhci: Intel Panther Point BEI quirk. 2012-09-25 15:19:34 -07:00
xhci.c usb: host: xhci: New system added for Compliance Mode Patch on SN65LVPE502CP 2012-10-18 08:13:04 -07:00
xhci.h xhci: Intel Panther Point BEI quirk. 2012-09-25 15:19:34 -07:00