diff options
Diffstat (limited to 'drivers/net')
-rw-r--r-- | drivers/net/usb/cdc_mbim.c | 5 | ||||
-rw-r--r-- | drivers/net/usb/qmi_wwan.c | 5 | ||||
-rw-r--r-- | drivers/net/usb/smsc75xx.c | 6 | ||||
-rw-r--r-- | drivers/net/usb/smsc95xx.c | 6 |
4 files changed, 20 insertions, 2 deletions
diff --git a/drivers/net/usb/cdc_mbim.c b/drivers/net/usb/cdc_mbim.c index 16c842997291..673e3624713e 100644 --- a/drivers/net/usb/cdc_mbim.c +++ b/drivers/net/usb/cdc_mbim.c | |||
@@ -323,6 +323,11 @@ static int cdc_mbim_suspend(struct usb_interface *intf, pm_message_t message) | |||
323 | goto error; | 323 | goto error; |
324 | } | 324 | } |
325 | 325 | ||
326 | /* | ||
327 | * Both usbnet_suspend() and subdriver->suspend() MUST return 0 | ||
328 | * in system sleep context, otherwise, the resume callback has | ||
329 | * to recover device from previous suspend failure. | ||
330 | */ | ||
326 | ret = usbnet_suspend(intf, message); | 331 | ret = usbnet_suspend(intf, message); |
327 | if (ret < 0) | 332 | if (ret < 0) |
328 | goto error; | 333 | goto error; |
diff --git a/drivers/net/usb/qmi_wwan.c b/drivers/net/usb/qmi_wwan.c index 968d5d50751d..bdceb7411de3 100644 --- a/drivers/net/usb/qmi_wwan.c +++ b/drivers/net/usb/qmi_wwan.c | |||
@@ -271,6 +271,11 @@ static int qmi_wwan_suspend(struct usb_interface *intf, pm_message_t message) | |||
271 | struct qmi_wwan_state *info = (void *)&dev->data; | 271 | struct qmi_wwan_state *info = (void *)&dev->data; |
272 | int ret; | 272 | int ret; |
273 | 273 | ||
274 | /* | ||
275 | * Both usbnet_suspend() and subdriver->suspend() MUST return 0 | ||
276 | * in system sleep context, otherwise, the resume callback has | ||
277 | * to recover device from previous suspend failure. | ||
278 | */ | ||
274 | ret = usbnet_suspend(intf, message); | 279 | ret = usbnet_suspend(intf, message); |
275 | if (ret < 0) | 280 | if (ret < 0) |
276 | goto err; | 281 | goto err; |
diff --git a/drivers/net/usb/smsc75xx.c b/drivers/net/usb/smsc75xx.c index 1a15ec14c386..75409748c774 100644 --- a/drivers/net/usb/smsc75xx.c +++ b/drivers/net/usb/smsc75xx.c | |||
@@ -2015,7 +2015,11 @@ static int smsc75xx_suspend(struct usb_interface *intf, pm_message_t message) | |||
2015 | ret = smsc75xx_enter_suspend0(dev); | 2015 | ret = smsc75xx_enter_suspend0(dev); |
2016 | 2016 | ||
2017 | done: | 2017 | done: |
2018 | if (ret) | 2018 | /* |
2019 | * TODO: resume() might need to handle the suspend failure | ||
2020 | * in system sleep | ||
2021 | */ | ||
2022 | if (ret && PMSG_IS_AUTO(message)) | ||
2019 | usbnet_resume(intf); | 2023 | usbnet_resume(intf); |
2020 | return ret; | 2024 | return ret; |
2021 | } | 2025 | } |
diff --git a/drivers/net/usb/smsc95xx.c b/drivers/net/usb/smsc95xx.c index e6d2dea1373c..3f38ba868f61 100644 --- a/drivers/net/usb/smsc95xx.c +++ b/drivers/net/usb/smsc95xx.c | |||
@@ -1660,7 +1660,11 @@ static int smsc95xx_suspend(struct usb_interface *intf, pm_message_t message) | |||
1660 | ret = smsc95xx_enter_suspend0(dev); | 1660 | ret = smsc95xx_enter_suspend0(dev); |
1661 | 1661 | ||
1662 | done: | 1662 | done: |
1663 | if (ret) | 1663 | /* |
1664 | * TODO: resume() might need to handle the suspend failure | ||
1665 | * in system sleep | ||
1666 | */ | ||
1667 | if (ret && PMSG_IS_AUTO(message)) | ||
1664 | usbnet_resume(intf); | 1668 | usbnet_resume(intf); |
1665 | return ret; | 1669 | return ret; |
1666 | } | 1670 | } |