struct usb_hcd *hcd = bus_to_hcd(udev->bus);
        int ret = -EPERM;
 
-       if (enable && !udev->usb2_hw_lpm_allowed)
-               return 0;
-
        if (hcd->driver->set_usb2_hw_lpm) {
                ret = hcd->driver->set_usb2_hw_lpm(hcd, udev, enable);
                if (!ret)
 
 int usb_enable_usb2_hardware_lpm(struct usb_device *udev)
 {
+       if (!udev->usb2_hw_lpm_capable ||
+           !udev->usb2_hw_lpm_allowed ||
+           udev->usb2_hw_lpm_enabled)
+               return 0;
+
        return usb_set_usb2_hardware_lpm(udev, 1);
 }
 
 int usb_disable_usb2_hardware_lpm(struct usb_device *udev)
 {
+       if (!udev->usb2_hw_lpm_enabled)
+               return 0;
+
        return usb_set_usb2_hardware_lpm(udev, 0);
 }
 
 
        }
 
        /* disable USB2 hardware LPM */
-       if (udev->usb2_hw_lpm_enabled == 1)
-               usb_disable_usb2_hardware_lpm(udev);
+       usb_disable_usb2_hardware_lpm(udev);
 
        if (usb_disable_ltm(udev)) {
                dev_err(&udev->dev, "Failed to disable LTM before suspend\n");
                usb_enable_ltm(udev);
  err_ltm:
                /* Try to enable USB2 hardware LPM again */
-               if (udev->usb2_hw_lpm_capable == 1)
-                       usb_enable_usb2_hardware_lpm(udev);
+               usb_enable_usb2_hardware_lpm(udev);
 
                if (udev->do_remote_wakeup)
                        (void) usb_disable_remote_wakeup(udev);
                hub_port_logical_disconnect(hub, port1);
        } else  {
                /* Try to enable USB2 hardware LPM */
-               if (udev->usb2_hw_lpm_capable == 1)
-                       usb_enable_usb2_hardware_lpm(udev);
+               usb_enable_usb2_hardware_lpm(udev);
 
                /* Try to enable USB3 LTM */
                usb_enable_ltm(udev);
        /* Disable USB2 hardware LPM.
         * It will be re-enabled by the enumeration process.
         */
-       if (udev->usb2_hw_lpm_enabled == 1)
-               usb_disable_usb2_hardware_lpm(udev);
+       usb_disable_usb2_hardware_lpm(udev);
 
        /* Disable LPM while we reset the device and reinstall the alt settings.
         * Device-initiated LPM, and system exit latency settings are cleared
 
                        dev->actconfig->interface[i] = NULL;
                }
 
-               if (dev->usb2_hw_lpm_enabled == 1)
-                       usb_disable_usb2_hardware_lpm(dev);
+               usb_disable_usb2_hardware_lpm(dev);
                usb_unlocked_disable_lpm(dev);
                usb_disable_ltm(dev);