From: Steve Glendinning Date: Fri, 28 Sep 2012 00:07:07 +0000 (+0000) Subject: smsc95xx: sleep before read for lengthy operations X-Git-Url: http://drtracing.org/?a=commitdiff_plain;h=cf2acec2e90beffc20c8a63322f0a978ea4941df;p=deliverable%2Flinux.git smsc95xx: sleep before read for lengthy operations 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 Signed-off-by: David S. Miller --- diff --git a/drivers/net/usb/smsc95xx.c b/drivers/net/usb/smsc95xx.c index d45e539a84b7..ed1e551ff23b 100644 --- a/drivers/net/usb/smsc95xx.c +++ b/drivers/net/usb/smsc95xx.c @@ -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));