diff mbox series

[3/5] usb: hub: Don't disable LPM completely if device initiated LPM fails

Message ID 20250314142000.93090-4-mathias.nyman@linux.intel.com (mailing list archive)
State New
Headers show
Series usb: hub: Fail fast on USB3 LPM requests issues | expand

Commit Message

Mathias Nyman March 14, 2025, 2:19 p.m. UTC
Enabling device initiated USB3 link power management (LPM) may fail for
various reasons such as too long system exit latency, or link issues.

These are not good reason to disable hub initiated LPM U1/U2
states, especially as it requires sending more requests over a
possibly broken link, causing the hub work to block for even longer.

Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
---
 drivers/usb/core/hub.c | 13 ++-----------
 1 file changed, 2 insertions(+), 11 deletions(-)
diff mbox series

Patch

diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c
index 10ef9f51fcfd..ccf21bb49038 100644
--- a/drivers/usb/core/hub.c
+++ b/drivers/usb/core/hub.c
@@ -4345,17 +4345,8 @@  static void usb_enable_link_state(struct usb_hcd *hcd, struct usb_device *udev,
 	 * Enable device initiated U1/U2 with a SetFeature(U1/U2_ENABLE) request
 	 * if system exit latency is short enough and device is configured
 	 */
-	if (usb_device_may_initiate_lpm(udev, state)) {
-		if (usb_set_device_initiated_lpm(udev, state, true)) {
-			/*
-			 * Request to enable device initiated U1/U2 failed,
-			 * better to turn off lpm in this case.
-			 */
-			usb_set_lpm_timeout(udev, state, 0);
-			hcd->driver->disable_usb3_lpm_timeout(hcd, udev, state);
-			return;
-		}
-	}
+	if (usb_device_may_initiate_lpm(udev, state))
+		usb_set_device_initiated_lpm(udev, state, true);
 
 	if (state == USB3_LPM_U1)
 		udev->usb3_lpm_u1_enabled = 1;