]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
usbnet: smsc95xx: fix broken runtime suspend
authorMing Lei <ming.lei@canonical.com>
Fri, 22 Feb 2013 03:05:04 +0000 (03:05 +0000)
committerDavid S. Miller <davem@davemloft.net>
Mon, 25 Feb 2013 20:49:51 +0000 (15:49 -0500)
Commit b2d4b150(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>
drivers/net/usb/smsc95xx.c

index b2721bc87283ff5ee28ca63866e43ee5a342fb3b..7fa9622aabbdc5045a69e35399882a16ac48eec1 100644 (file)
@@ -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");
@@ -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;
        }