linux/drivers/usb/host
Mathias Nyman 8e71a322fd USB: xhci: Reset a halted endpoint immediately when we encounter a stall.
If a device is halted and reuturns a STALL, then the halted endpoint
needs to be cleared both on the host and device side. The host
side halt is cleared by issueing a xhci reset endpoint command. The device side
is cleared with a ClearFeature(ENDPOINT_HALT) request, which should
be issued by the device driver if a URB reruen -EPIPE.

Previously we cleared the host side halt after the device side was cleared.
To make sure the host side halt is cleared in time we want to issue the
reset endpoint command immedialtely when a STALL status is encountered.

Otherwise we end up not following the specs and not returning -EPIPE
several times in a row when trying to transfer data to a halted endpoint.

Fixes: bcef3fd (USB: xhci: Handle errors that cause endpoint halts.)
Cc: <stable@vger.kernel.org> # v2.6.33+
Tested-by: Felipe Balbi <balbi@ti.com>
Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-11-22 07:34:20 -08:00
..
whci usb: delete non-required instances of include <linux/init.h> 2014-01-08 15:01:39 -08:00
bcma-hcd.c bcma: store more alternative addresses 2014-09-09 15:33:05 -04:00
ehci-atmel.c usb: hcd: move controller wakeup setting initialization to individual driver 2013-12-08 18:06:46 -08:00
ehci-dbg.c usb: Use dev_is_pci() to check whether it is pci device 2013-12-08 18:01:56 -08:00
ehci-exynos.c usb: host: ehci-exynos: Remove unnecessary usb-phy support 2014-09-29 11:50:39 -04:00
ehci-fsl.c usb: rename phy to usb_phy in HCD 2014-09-29 11:52:59 -04:00
ehci-fsl.h
ehci-grlib.c USB: ehci-grlib: use dev_err() instead of printk() 2013-12-18 16:32:41 -08:00
ehci-hcd.c usb: hub: rename khubd to hub_wq in documentation and comments 2014-09-23 22:33:19 -07:00
ehci-hub.c usb: rename phy to usb_phy in HCD 2014-09-29 11:52:59 -04:00
ehci-mem.c USB: EHCI: don't allocate hardware periodic table atomically by default 2014-07-09 16:16:07 -07:00
ehci-msm.c usb: rename phy to usb_phy in HCD 2014-09-29 11:52:59 -04:00
ehci-mv.c usb: host: ehci-mv: Use devm_ioremap_resource instead of devm_ioremap 2014-05-27 14:52:29 -07:00
ehci-mxc.c usb: hcd: move controller wakeup setting initialization to individual driver 2013-12-08 18:06:46 -08:00
ehci-octeon.c USB: ehci-octeon: Use devm_ioremap_resource() 2013-12-18 16:34:20 -08:00
ehci-omap.c usb: hcd: move controller wakeup setting initialization to individual driver 2013-12-08 18:06:46 -08:00
ehci-orion.c usb: ehci-orion: add optional PHY support 2014-05-27 15:33:12 -07:00
ehci-pci.c USB: ehci-pci: USB host controller support for Intel Quark X1000 2014-07-09 16:16:07 -07:00
ehci-platform.c usb: ehci-platform: add optional reset controller retrieval 2014-05-27 15:53:01 -07:00
ehci-pmcmsp.c MIPS: MSP71xx: Remove checks for two macros 2014-05-23 15:12:39 +02:00
ehci-ppc-of.c USB: ehci-ppc-of: use dev_err() instead of printk() 2013-12-18 16:32:41 -08:00
ehci-ps3.c usb: hcd: move controller wakeup setting initialization to individual driver 2013-12-08 18:06:46 -08:00
ehci-q.c usb: kill DEBUG compile option 2013-12-03 10:34:33 -08:00
ehci-sched.c USB: EHCI: fix sparse errors 2013-10-19 14:08:04 -07:00
ehci-sead3.c usb: hcd: move controller wakeup setting initialization to individual driver 2013-12-08 18:06:46 -08:00
ehci-sh.c usb: hcd: move controller wakeup setting initialization to individual driver 2013-12-08 18:06:46 -08:00
ehci-spear.c USB: ehci-spear: Make of_device_id array const 2014-07-09 16:13:03 -07:00
ehci-st.c usb: host: ehci-st: Add EHCI support for ST STB devices 2014-09-23 21:35:50 -07:00
ehci-sysfs.c USB: EHCI: use a bandwidth-allocation table 2013-10-11 16:45:43 -07:00
ehci-tegra.c usb: rename phy to usb_phy in HCD 2014-09-29 11:52:59 -04:00
ehci-tilegx.c tile: usb: Use irq_alloc/free_hwirq 2014-05-16 14:05:20 +02:00
ehci-timer.c USB: EHCI: improve interrupt qh unlink 2013-08-12 11:43:48 -07:00
ehci-w90x900.c USB: ehci-w90x900: Use devm_ioremap_resource() 2013-12-18 16:35:11 -08:00
ehci-xilinx-of.c drivers/usb/host/ehci-xilinx-of.c: Include "linux/of_irq.h" to avoid compiling error 2014-09-23 22:09:46 -07:00
ehci.h USB: EHCI: Export the ehci_hub_control function 2014-04-24 13:05:32 -07:00
fhci-dbg.c drivers/usb/host/fhci-dbg.c: remove unnecessary null test before debugfs_remove 2014-07-09 16:13:03 -07:00
fhci-hcd.c usb: hub: rename khubd to hub_wq in documentation and comments 2014-09-23 22:33:19 -07:00
fhci-hub.c
fhci-mem.c
fhci-q.c
fhci-sched.c USB: FHCI: upgrade the isochronous API 2013-05-30 21:34:31 +09:00
fhci-tds.c
fhci.h USB: FHCI: upgrade the isochronous API 2013-05-30 21:34:31 +09:00
fotg210-hcd.c usb: hub: rename khubd to hub_wq in documentation and comments 2014-09-23 22:33:19 -07:00
fotg210.h fotg210: remove conditional compilation 2013-12-03 10:28:39 -08:00
fsl-mph-dr-of.c USB: fsl-mph-dr-of: adjust for OF based clock lookup 2014-01-12 18:53:05 +01:00
fusbh200-hcd.c usb: hub: rename khubd to hub_wq in documentation and comments 2014-09-23 22:33:19 -07:00
fusbh200.h fusb200h: always compile in debugfs support 2013-12-03 10:31:21 -08:00
hwa-hc.c USB: HWA: fix a warning message 2014-11-03 15:26:15 -08:00
imx21-dbg.c usb: kill DEBUG compile option 2013-12-03 10:34:33 -08:00
imx21-hcd.c usb: hcd: move controller wakeup setting initialization to individual driver 2013-12-08 18:06:46 -08:00
imx21-hcd.h usb: kill DEBUG compile option 2013-12-03 10:34:33 -08:00
isp116x-hcd.c usb: delete non-required instances of include <linux/init.h> 2014-01-08 15:01:39 -08:00
isp116x.h USB: isp116x: remove dependency on CONFIG_USB_DEBUG 2013-07-23 16:35:17 -07:00
isp1362-hcd.c USB: isp1362: Use devm_ioremap_resource 2014-09-23 21:33:10 -07:00
isp1362.h USB: isp1362: move debug files from proc to debugfs 2013-07-24 14:43:05 -07:00
isp1760-hcd.c usb: hub: rename khubd to hub_wq in documentation and comments 2014-09-23 22:33:19 -07:00
isp1760-hcd.h
isp1760-if.c USB: host: use dev_get_platdata() 2013-07-31 17:53:50 -07:00
Kconfig usb: Remove references to non-existent PLAT_S5P symbol 2014-11-03 15:26:16 -08:00
Makefile USB: host: st: fix typo 'CONFIG_USB_EHCI_HCD_ST' 2014-10-03 14:50:10 -07:00
max3421-hcd.c usb: host: max3421-hcd: unconditionally use GFP_ATOMIC in max3421_urb_enqueue() 2014-07-09 16:06:50 -07:00
octeon2-common.c
ohci-at91.c USB: OHCI: Export the OHCI hub control and status_data functions 2014-04-24 13:05:32 -07:00
ohci-da8xx.c USB: ohci-da8xx: Use devm_*() functions 2013-12-18 16:35:11 -08:00
ohci-dbg.c USB: OHCI: fix bugs in debug routines 2014-07-17 17:05:07 -07:00
ohci-exynos.c usb: host: ohci-exynos: Remove unnecessary usb-phy support 2014-09-23 21:53:48 -07:00
ohci-hcd.c usb: hub: rename khubd to hub_wq in documentation and comments 2014-09-23 22:33:19 -07:00
ohci-hub.c usb: hub: rename khubd to hub_wq in documentation and comments 2014-09-23 22:33:19 -07:00
ohci-jz4740.c USB: ohci-jz4740: FEAT_POWER is a port feature, not a hub feature 2014-04-16 13:59:41 -07:00
ohci-mem.c USB: OHCI: add I/O watchdog for orphan TDs 2014-07-18 16:34:07 -07:00
ohci-nxp.c USB: ohci-nxp: Use devm_clk_get() 2013-12-18 16:36:10 -08:00
ohci-octeon.c USB: ohci-octeon: Use devm_ioremap_resource() 2013-12-18 16:36:11 -08:00
ohci-omap3.c usb: hcd: move controller wakeup setting initialization to individual driver 2013-12-08 18:06:46 -08:00
ohci-omap.c usb: rename phy to usb_phy in HCD 2014-09-29 11:52:59 -04:00
ohci-pci.c USB: OHCI: fix problem with global suspend on ATI controllers 2014-05-03 17:58:46 -04:00
ohci-platform.c usb: ohci-platform: Enable optional use of reset controller 2014-05-27 15:53:00 -07:00
ohci-ppc-of.c USB: ohci-ppc-of: Use devm_ioremap_resource() 2013-12-18 16:36:10 -08:00
ohci-ps3.c usb: hcd: move controller wakeup setting initialization to individual driver 2013-12-08 18:06:46 -08:00
ohci-pxa27x.c USB: ohci-pxa27x: Add support for external vbus regulators 2014-04-24 13:05:32 -07:00
ohci-q.c USB: OHCI: add I/O watchdog for orphan TDs 2014-07-18 16:34:07 -07:00
ohci-s3c2410.c USB: OHCI: Export the OHCI hub control and status_data functions 2014-04-24 13:05:32 -07:00
ohci-sa1111.c usb: hcd: move controller wakeup setting initialization to individual driver 2013-12-08 18:06:46 -08:00
ohci-sm501.c usb: hcd: move controller wakeup setting initialization to individual driver 2013-12-08 18:06:46 -08:00
ohci-spear.c USB: ohci-spear: Make of_device_id array const 2014-07-09 16:13:03 -07:00
ohci-st.c usb: host: ohci-st: Add OHCI driver support for ST STB devices 2014-09-23 21:35:50 -07:00
ohci-tilegx.c tile: usb: Use irq_alloc/free_hwirq 2014-05-16 14:05:20 +02:00
ohci-tmio.c usb: delete non-required instances of include <linux/init.h> 2014-01-08 15:01:39 -08:00
ohci.h USB: OHCI: add check for stopped frame counter 2014-07-18 16:34:29 -07:00
oxu210hp-hcd.c usb: hub: rename khubd to hub_wq in documentation and comments 2014-09-23 22:33:19 -07:00
oxu210hp.h
pci-quirks.c USB: EHCI: avoid BIOS handover on the HASEE E200 2014-06-17 17:05:49 -07:00
pci-quirks.h usb: pci_quirks: fix sparse 'symbol not declared' warning 2014-05-27 16:25:32 -07:00
r8a66597-hcd.c ARM: driver updates for 3.14 2014-01-23 18:49:36 -08:00
r8a66597.h
sl811_cs.c usb: delete non-required instances of include <linux/init.h> 2014-01-08 15:01:39 -08:00
sl811-hcd.c usb: hub: rename khubd to hub_wq in documentation and comments 2014-09-23 22:33:19 -07:00
sl811.h USB: sl811: move debug files from proc to debugfs 2013-07-24 14:43:05 -07:00
ssb-hcd.c DMA-API: usb: ssb-hcd: replace dma_set_mask()+dma_set_coherent_mask() with new helper 2013-10-31 14:48:36 +00:00
u132-hcd.c usb: hcd: move controller wakeup setting initialization to individual driver 2013-12-08 18:06:46 -08:00
uhci-debug.c usb: kill DEBUG compile option 2013-12-03 10:34:33 -08:00
uhci-grlib.c usb: host: uhci-grlib.c : use devm_ functions 2014-07-09 16:25:22 -07:00
uhci-hcd.c USB: UHCI: don't allocate frame list atomically 2014-07-09 16:16:07 -07:00
uhci-hcd.h
uhci-hub.c USB/host: Bugfix: Return length of copied buffer in uhci_hub_control() 2013-10-07 00:07:17 -07:00
uhci-pci.c USB: remove DEFINE_PCI_DEVICE_TABLE macro 2013-12-04 16:58:47 -08:00
uhci-platform.c uhci-platform: use devm_ioremap resource 2014-07-09 16:31:48 -07:00
uhci-q.c USB: UHCI: accept very late isochronous URBs 2013-09-25 17:05:34 -07:00
xhci-dbg.c xhci: Export symbols used by host-controller drivers 2014-10-03 14:44:45 -07:00
xhci-ext-caps.h xhci: fix port BESL LPM capability checking 2013-08-27 08:54:42 -07:00
xhci-hub.c Revert "xhci: clear root port wake on bits if controller isn't wake-up capable" 2014-11-22 07:33:15 -08:00
xhci-mem.c xhci: Log extra info on "ERROR Transfer event TRB DMA ptr not part of current TD" 2014-09-23 21:46:11 -07:00
xhci-mvebu.c usb: host: xhci-plat: add support for the Armada 375/38x XHCI controllers 2014-05-27 15:40:40 -07:00
xhci-mvebu.h usb: host: xhci-plat: add support for the Armada 375/38x XHCI controllers 2014-05-27 15:40:40 -07:00
xhci-pci.c xhci: no switching back on non-ULT Haswell 2014-11-03 15:48:45 -08:00
xhci-plat.c xhci: Allow xHCI drivers to be built as separate modules 2014-10-03 14:44:45 -07:00
xhci-rcar.c usb: host: xhci-plat: add support for the R-Car H2 and M2 xHCI controllers 2014-07-09 15:49:10 -07:00
xhci-rcar.h usb: host: xhci-plat: add support for the R-Car H2 and M2 xHCI controllers 2014-07-09 15:49:10 -07:00
xhci-ring.c USB: xhci: Reset a halted endpoint immediately when we encounter a stall. 2014-11-22 07:34:20 -08:00
xhci-trace.c xhci: Export symbols used by host-controller drivers 2014-10-03 14:44:45 -07:00
xhci-trace.h xhci: fix sparse warning in xhci-trace.h 2013-12-02 12:59:45 -08:00
xhci.c USB: xhci: Reset a halted endpoint immediately when we encounter a stall. 2014-11-22 07:34:20 -08:00
xhci.h xhci: Allow xHCI drivers to be built as separate modules 2014-10-03 14:44:45 -07:00