linux/drivers/usb
Mathias Nyman f59f93cd1d usb: hub: avoid warm port reset during USB3 disconnect
During disconnect USB-3 ports often go via SS.Inactive link error state
before the missing terminations are noticed, and link finally goes to
RxDetect state

Avoid immediately warm-resetting ports in SS.Inactive state.
Let ports settle for a while and re-read the link status a few times 20ms
apart to see if the ports transitions out of SS.Inactive.

According to USB 3.x spec 7.5.2, a port in SS.Inactive should
automatically check for missing far-end receiver termination every
12 ms (SSInactiveQuietTimeout)

The futile multiple warm reset retries of a disconnected device takes
a lot of time, also the resetting of a removed devices has caused cases
where the reset bit got stuck for a long time on xHCI roothub.
This lead to issues in detecting new devices connected to the same port
shortly after.

Tested-by: Mark Pearson <markpearson@lenovo.com>
Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
Link: https://lore.kernel.org/r/20211210111653.1378381-1-mathias.nyman@linux.intel.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2021-12-15 23:48:37 +01:00
..
atm usb: atm: Use struct_size() helper 2021-10-05 12:50:22 +02:00
c67x00
cdns3 Merge 5.16-rc5 into usb-next 2021-12-13 10:11:05 +01:00
chipidea Merge 5.16-rc3 into usb-next 2021-11-29 08:04:46 +01:00
class Merge 5.15-rc5 into usb-next 2021-10-11 07:39:38 +02:00
common Partially revert "usb: Kconfig: using select for USB_COMMON dependency" 2021-10-05 13:45:16 +02:00
core usb: hub: avoid warm port reset during USB3 disconnect 2021-12-15 23:48:37 +01:00
dwc2 usb: dwc2: platform: adopt dev_err_probe() to silent probe defer 2021-12-15 23:48:08 +01:00
dwc3 usb: dwc3: gadget: Support Multi-Stream Transfer 2021-12-13 14:56:37 +01:00
early memblock: rename memblock_free to memblock_phys_free 2021-11-06 13:30:41 -07:00
gadget usb: aspeed-vhub: support test mode feature 2021-12-13 15:01:58 +01:00
host usb: host: xen-hcd: add missing unlock in error path 2021-12-15 23:48:29 +01:00
image scsi: core: Remove the 'done' argument from SCSI queuecommand_lck functions 2021-10-16 21:32:16 -04:00
isp1760 usb: isp1760: otg control register access 2021-08-27 16:11:39 +02:00
misc USB: iowarrior: fix control-message timeouts 2021-10-26 19:12:28 +02:00
mon
mtu3 usb: mtu3: enable wake-up interrupt after runtime_suspend called 2021-10-27 20:49:32 +02:00
musb usb: musb: Balance list entry in musb_gadget_queue 2021-10-22 11:12:45 +02:00
phy usb: Remove redundant 'flush_workqueue()' calls 2021-11-17 14:36:57 +01:00
renesas_usbhs usb: renesas_usbhs: Fix spelling mistake "faile" -> "failed" 2021-08-27 10:29:32 +02:00
roles usb: roles: add helper usb_role_string() 2021-05-27 09:17:18 +02:00
serial USB: serial: option: add Fibocom FM101-GL variants 2021-11-24 19:03:31 +01:00
storage SCSI misc on 20211105 2021-11-05 08:42:02 -07:00
typec Merge 5.16-rc4 into usb-next 2021-12-06 09:31:18 +01:00
usbip usb: Remove redundant 'flush_workqueue()' calls 2021-11-17 14:36:57 +01:00
Kconfig usb: remove reference to deleted config STB03xxx 2021-08-18 15:32:19 +02:00
Makefile usb: host: remove line for obsolete config USB_HWA_HCD 2021-08-18 15:32:19 +02:00
usb-skeleton.c usb: usb-skeleton: Update min() to min_t() 2021-10-05 12:56:48 +02:00