smsc95xx: sleep before read for lengthy operations
authorSteve Glendinning <steve.glendinning@shawell.net>
Fri, 28 Sep 2012 00:07:07 +0000 (00:07 +0000)
committerDavid S. Miller <davem@davemloft.net>
Fri, 28 Sep 2012 22:34:57 +0000 (18:34 -0400)
During init, the device reset is unexpected to complete immediately,
so sleep before testing the condition rather than after it.

Signed-off-by: Steve Glendinning <steve.glendinning@shawell.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/usb/smsc95xx.c

index d45e539a84b79daa0b8b4f2f1f5c993326e2211d..ed1e551ff23b8e8b8cd460b6e757f160474703a9 100644 (file)
@@ -763,12 +763,12 @@ static int smsc95xx_reset(struct usbnet *dev)
 
        timeout = 0;
        do {
+               msleep(10);
                ret = smsc95xx_read_reg(dev, HW_CFG, &read_buf);
                if (ret < 0) {
                        netdev_warn(dev->net, "Failed to read HW_CFG: %d\n", ret);
                        return ret;
                }
-               msleep(10);
                timeout++;
        } while ((read_buf & HW_CFG_LRST_) && (timeout < 100));
 
@@ -786,12 +786,12 @@ static int smsc95xx_reset(struct usbnet *dev)
 
        timeout = 0;
        do {
+               msleep(10);
                ret = smsc95xx_read_reg(dev, PM_CTRL, &read_buf);
                if (ret < 0) {
                        netdev_warn(dev->net, "Failed to read PM_CTRL: %d\n", ret);
                        return ret;
                }
-               msleep(10);
                timeout++;
        } while ((read_buf & PM_CTL_PHY_RST_) && (timeout < 100));