linux-uconsole/drivers/usb/host
Alan Stern c72a0e036f USB: EHCI: accept very late isochronous URBs
commit 24f531371d upstream.

Since commits 4005ad4390 (EHCI: implement new semantics for
URB_ISO_ASAP) and c75c5ab575 (ALSA: USB: adjust for changed 3.8 USB
API) became widely distributed, people have been experiencing problems
with audio transfers.  The slightest underrun causes complete failure,
requiring the audio stream to be restarted.

It turns out that the current isochronous API doesn't handle underruns
in the best way.  The ALSA developers would much rather have transfers
that are submitted too late be accepted and complete in the normal
fashion, rather than being refused outright.

This patch implements the requested approach.  When an isochronous URB
submission is so late that all its scheduled slots have already
expired, a debugging message will be printed in the log and the URB
will be accepted as usual.  Assuming it was submitted by a completion
handler (which is normally the case), it will complete shortly
thereafter with all the usb_iso_packet_descriptor status fields marked
-EXDEV.

This fixes (for ehci-hcd)

	https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1191603

It should be applied to all kernels that include commit 4005ad4390.

Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
Tested-by: Maksim Boyko <maksboyko@yandex.ru>
CC: Clemens Ladisch <clemens@ladisch.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-08-20 08:43:04 -07:00
..
whci
bcma-hcd.c usb: remove use of __devexit 2012-11-21 13:27:17 -08:00
ehci-atmel.c USB: set device dma_mask without reference to global data 2013-05-16 17:30:52 -07:00
ehci-dbg.c USB: EHCI: convert singly-linked lists to list_heads 2013-03-25 13:35:05 -07:00
ehci-fsl.c EHCI: Quirk flag for port power handling on overcurrent. 2013-04-03 11:38:53 -07:00
ehci-fsl.h
ehci-grlib.c usb: Convert to devm_ioremap_resource() 2013-01-22 11:41:58 -08:00
ehci-hcd.c USB: EHCI: remove bogus #error 2013-05-16 17:29:51 -07:00
ehci-hub.c USB: EHCI: Fix resume signalling on remote wakeup 2013-08-04 16:50:46 +08:00
ehci-mem.c
ehci-msm.c USB: EHCI: make ehci-msm a separate driver 2013-04-08 09:40:20 -07:00
ehci-mv.c usb: patches for v3.10 merge window 2013-04-05 15:18:00 -07:00
ehci-mxc.c USB: Fix initconst in ehci driver 2013-04-23 10:10:29 -07:00
ehci-octeon.c USB: EHCI: remove ehci_port_power() routine 2012-10-31 12:48:07 -07:00
ehci-omap.c USB: ehci-omap: Tweak PHY initialization sequence 2013-07-21 18:21:24 -07:00
ehci-orion.c USB: set device dma_mask without reference to global data 2013-05-16 17:30:52 -07:00
ehci-pci.c USB: Fix initconst in ehci driver 2013-04-23 10:10:29 -07:00
ehci-platform.c USB: Fix initconst in ehci driver 2013-04-23 10:10:29 -07:00
ehci-pmcmsp.c USB: EHCI: remove ehci_port_power() routine 2012-10-31 12:48:07 -07:00
ehci-ppc-of.c usb: Convert to devm_ioremap_resource() 2013-01-22 11:41:58 -08:00
ehci-ps3.c usb: PS3 EHCI remove unneeded ehci_shutdown 2013-04-01 12:32:43 -07:00
ehci-q.c usb: ehci: mark unlink_empty_async_suspended() as __maybe_unused 2013-03-28 14:49:53 -07:00
ehci-s5p.c usb: ehci-s5p: fix memleak when fallback to pdata 2013-05-16 17:35:13 -07:00
ehci-sched.c USB: EHCI: accept very late isochronous URBs 2013-08-20 08:43:04 -07:00
ehci-sead3.c usb: Convert to devm_ioremap_resource() 2013-01-22 11:41:58 -08:00
ehci-sh.c usb: echi-sh: Remove driver variable which is not used 2013-03-28 11:14:47 -07:00
ehci-spear.c USB: set device dma_mask without reference to global data 2013-05-16 17:30:52 -07:00
ehci-sysfs.c
ehci-tegra.c USB: set device dma_mask without reference to global data 2013-05-16 17:30:52 -07:00
ehci-tilegx.c usb: tilegx: fix memleak when create hcd fail 2013-05-09 13:56:40 -04:00
ehci-timer.c USB: EHCI: improve end_unlink_async() 2013-03-25 13:36:32 -07:00
ehci-w90x900.c usb: remove use of __devexit 2012-11-21 13:27:17 -08:00
ehci-xilinx-of.c usb: Convert to devm_ioremap_resource() 2013-01-22 11:41:58 -08:00
ehci.h EHCI: Quirk flag for port power handling on overcurrent. 2013-04-03 11:38:53 -07:00
fhci-dbg.c
fhci-hcd.c usb: remove use of __devexit 2012-11-21 13:27:17 -08:00
fhci-hub.c
fhci-mem.c
fhci-q.c
fhci-sched.c
fhci-tds.c
fhci.h
fsl-mph-dr-of.c USB: fsl-mph-dr-of: fix regression on mpc5121e 2013-01-11 16:01:06 -08:00
hwa-hc.c
imx21-dbg.c
imx21-hcd.c usb: imx21-hcd: Include missing linux/module.h 2013-01-11 12:01:09 -08:00
imx21-hcd.h
isp116x-hcd.c usb: remove use of __devinit 2012-11-21 13:27:16 -08:00
isp116x.h
isp1362-hcd.c procfs: new helper - PDE_DATA(inode) 2013-04-09 14:13:32 -04:00
isp1362.h
isp1760-hcd.c USB: remove remaining instances of USB_SUSPEND 2013-05-15 13:44:44 -04:00
isp1760-hcd.h
isp1760-if.c usb: isp1760-if: fix memleak when platform_get_resource fail 2013-05-16 17:35:13 -07:00
Kconfig USB: fix Kconfig logic for USB_UHCI_HCD 2013-05-15 13:41:39 -04:00
Makefile USB: EHCI: make ehci-msm a separate driver 2013-04-08 09:40:20 -07:00
octeon2-common.c
ohci-at91.c USB: set device dma_mask without reference to global data 2013-05-16 17:30:52 -07:00
ohci-da8xx.c
ohci-dbg.c
ohci-ep93xx.c usb: remove use of __devinit 2012-11-21 13:27:16 -08:00
ohci-exynos.c USB: set device dma_mask without reference to global data 2013-05-16 17:30:52 -07:00
ohci-hcd.c USB: OHCI: fix logic for scheduling isochronous URBs 2013-05-15 13:42:45 -04:00
ohci-hub.c USB: remove CONFIG_USB_SUSPEND option 2013-03-28 11:10:22 -07:00
ohci-jz4740.c usb: remove use of __devexit 2012-11-21 13:27:17 -08:00
ohci-mem.c
ohci-nxp.c USB fixes for 3.10-rc2 2013-05-23 09:23:32 -07:00
ohci-octeon.c usb: remove use of __devinit 2012-11-21 13:27:16 -08:00
ohci-omap.c ARM: arm-soc: Header cleanups 2012-12-12 11:45:16 -08:00
ohci-omap3.c USB: set device dma_mask without reference to global data 2013-05-16 17:30:52 -07:00
ohci-pci.c usb: remove use of __devinit 2012-11-21 13:27:16 -08:00
ohci-platform.c usb: Convert to devm_ioremap_resource() 2013-01-22 11:41:58 -08:00
ohci-ppc-of.c usb: remove use of __devinit 2012-11-21 13:27:16 -08:00
ohci-ps3.c usb: remove use of __devinit 2012-11-21 13:27:16 -08:00
ohci-pxa27x.c USB: set device dma_mask without reference to global data 2013-05-16 17:30:52 -07:00
ohci-q.c USB: ohci: set urb->hcpriv = NULL immediately, after free it 2013-01-11 16:03:38 -08:00
ohci-s3c2410.c usb: Convert to devm_ioremap_resource() 2013-01-22 11:41:58 -08:00
ohci-sa1111.c usb: remove use of __devinit 2012-11-21 13:27:16 -08:00
ohci-sm501.c USB: OHCI: sm501: fix build failure after ohci_finish_controller_resume removal 2012-10-23 10:18:53 -07:00
ohci-spear.c USB: set device dma_mask without reference to global data 2013-05-16 17:30:52 -07:00
ohci-tilegx.c usb: tilegx: fix memleak when create hcd fail 2013-05-09 13:56:40 -04:00
ohci-tmio.c usb: host: ohci-tmio: fix compile warning 2013-01-11 16:22:53 -08:00
ohci.h
oxu210hp-hcd.c USB: remove remaining instances of USB_SUSPEND 2013-05-15 13:44:44 -04:00
oxu210hp.h
pci-quirks.c usb: Prevent dead ports when xhci is not enabled 2013-01-24 09:56:19 -08:00
pci-quirks.h
r8a66597-hcd.c usb: remove use of __devexit 2012-11-21 13:27:17 -08:00
r8a66597.h
sl811-hcd.c USB: remove remaining instances of USB_SUSPEND 2013-05-15 13:44:44 -04:00
sl811.h
sl811_cs.c drivers/usb: use module_pcmcia_driver() in pcmcia drivers 2013-03-15 12:26:38 -07:00
ssb-hcd.c usb: remove use of __devexit 2012-11-21 13:27:17 -08:00
u132-hcd.c USB: remove CONFIG_USB_SUSPEND option 2013-03-28 11:10:22 -07:00
uhci-debug.c USB: uhci: beautify source code 2013-01-24 13:59:26 -08:00
uhci-grlib.c usb: remove use of __devinit 2012-11-21 13:27:16 -08:00
uhci-hcd.c Merge 3.8-rc5 into usb-next 2013-01-25 12:41:02 -08:00
uhci-hcd.h USB: UHCI: remove unused definition 2013-01-24 13:42:09 -08:00
uhci-hub.c USB: UHCI: fix for suspend of virtual HP controller 2013-05-15 13:41:40 -04:00
uhci-pci.c
uhci-platform.c USB: set device dma_mask without reference to global data 2013-05-16 17:30:52 -07:00
uhci-q.c USB: fix latency in uhci-hcd and ohci-hcd 2013-05-15 13:42:45 -04:00
xhci-dbg.c xhci: trivial: Remove assigned but unused slot_ctx. 2012-10-25 13:13:48 -07:00
xhci-ext-caps.h
xhci-hub.c USB: remove CONFIG_USB_SUSPEND option 2013-03-28 11:10:22 -07:00
xhci-mem.c xhci: check for failed dma pool allocation 2013-07-21 18:21:24 -07:00
xhci-pci.c usb: host: xhci: Enable XHCI_SPURIOUS_SUCCESS for all controllers with xhci 1.0 2013-08-04 16:50:44 +08:00
xhci-plat.c usb: host: xhci-plat: release mem region while removing module 2013-07-21 18:21:24 -07:00
xhci-ring.c xhci: fix null pointer dereference on ring_doorbell_for_active_rings 2013-08-04 16:50:46 +08:00
xhci.c xhci: Avoid NULL pointer deref when host dies. 2013-08-04 16:50:46 +08:00
xhci.h xhci: Disable D3cold for buggy TI redrivers. 2013-05-24 15:23:59 -07:00