]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/commit
usb: core: hub: Disable hub-initiated U1/U2
authorThinh Nguyen <Thinh.Nguyen@synopsys.com>
Tue, 14 May 2019 21:38:38 +0000 (14:38 -0700)
committerKleber Sacilotto de Souza <kleber.souza@canonical.com>
Wed, 14 Aug 2019 09:18:49 +0000 (11:18 +0200)
commit47429720ce01292416966da738e3ce9eff41f247
tree21704bb488a7f82768367899730aae4001d4bd22
parent977c1872fde43e96ec158cba5498a6d85bf5001b
usb: core: hub: Disable hub-initiated U1/U2

BugLink: https://bugs.launchpad.net/bugs/1839036
[ Upstream commit 561759292774707b71ee61aecc07724905bb7ef1 ]

If the device rejects the control transfer to enable device-initiated
U1/U2 entry, then the device will not initiate U1/U2 transition. To
improve the performance, the downstream port should not initate
transition to U1/U2 to avoid the delay from the device link command
response (no packet can be transmitted while waiting for a response from
the device). If the device has some quirks and does not implement U1/U2,
it may reject all the link state change requests, and the downstream
port may resend and flood the bus with more requests. This will affect
the device performance even further. This patch disables the
hub-initated U1/U2 if the device-initiated U1/U2 entry fails.

Reference: USB 3.2 spec 7.2.4.2.3

Signed-off-by: Thinh Nguyen <thinhn@synopsys.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
Signed-off-by: Kamal Mostafa <kamal@canonical.com>
Signed-off-by: Khalid Elmously <khalid.elmously@canonical.com>
drivers/usb/core/hub.c