Skip to content

Commit

Permalink
usbnet: smsc95xx: fix broken runtime suspend
Browse files Browse the repository at this point in the history
Commit b2d4b15(smsc95xx: enable dynamic autosuspend) implements
autosuspend, but breaks current runtime suspend, such as:
when the interface becomes down, the usb device can't be put into
runtime suspend any more.

This patch fixes the broken runtime suspend.

Cc: Steve Glendinning <steve.glendinning@shawell.net>
Signed-off-by: Ming Lei <ming.lei@canonical.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Ming Lei authored and David S. Miller committed Feb 25, 2013
1 parent 7643721 commit 42e21c0
Showing 1 changed file with 2 additions and 10 deletions.
12 changes: 2 additions & 10 deletions drivers/net/usb/smsc95xx.c
Original file line number Diff line number Diff line change
Expand Up @@ -1418,15 +1418,6 @@ static int smsc95xx_suspend(struct usb_interface *intf, pm_message_t message)
u32 val, link_up;
int ret;

/* TODO: don't indicate this feature to usb framework if
* our current hardware doesn't have the capability
*/
if ((message.event == PM_EVENT_AUTO_SUSPEND) &&
(!(pdata->features & FEATURE_AUTOSUSPEND))) {
netdev_warn(dev->net, "autosuspend not supported\n");
return -EBUSY;
}

ret = usbnet_suspend(intf, message);
if (ret < 0) {
netdev_warn(dev->net, "usbnet_suspend error\n");
Expand All @@ -1441,7 +1432,8 @@ static int smsc95xx_suspend(struct usb_interface *intf, pm_message_t message)
/* determine if link is up using only _nopm functions */
link_up = smsc95xx_link_ok_nopm(dev);

if (message.event == PM_EVENT_AUTO_SUSPEND) {
if (message.event == PM_EVENT_AUTO_SUSPEND &&
(pdata->features & FEATURE_AUTOSUSPEND)) {
ret = smsc95xx_autosuspend(dev, link_up);
goto done;
}
Expand Down

0 comments on commit 42e21c0

Please sign in to comment.