Message ID | f78b5f725fe75265f884ef0b35389fd45cd81471.1651574194.git.lukas@wunner.de (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | Polling be gone on LAN95xx | expand |
On Tue, May 03, 2022 at 03:15:03PM +0200, Lukas Wunner wrote: > smsc95xx_reset() resets the PHY behind the PHY driver's back, which > seems like a bad idea generally. Remove that portion of the function. > > We're about to use PHY interrupts instead of polling to detect link > changes on SMSC LAN95xx chips. Because smsc95xx_reset() is called from > usbnet_open(), PHY interrupt settings are lost whenever the net_device > is brought up. > > There are two other callers of smsc95xx_reset(), namely smsc95xx_bind() > and smsc95xx_reset_resume(), and both may indeed benefit from a PHY > reset. However they already perform one through their calls to > phy_connect_direct() and phy_init_hw(). > > Tested-by: Oleksij Rempel <o.rempel@pengutronix.de> # LAN9514/9512/9500 > Tested-by: Ferry Toth <fntoth@gmail.com> # LAN9514 > Signed-off-by: Lukas Wunner <lukas@wunner.de> > Cc: Martyn Welch <martyn.welch@collabora.com> > Cc: Gabriel Hojda <ghojda@yo2urs.ro> Reviewed-by: Andrew Lunn <andrew@lunn.ch> Andrew
diff --git a/drivers/net/usb/smsc95xx.c b/drivers/net/usb/smsc95xx.c index 2cb44d65bbc3..6c37c7adde1b 100644 --- a/drivers/net/usb/smsc95xx.c +++ b/drivers/net/usb/smsc95xx.c @@ -887,24 +887,6 @@ static int smsc95xx_reset(struct usbnet *dev) return ret; } - ret = smsc95xx_write_reg(dev, PM_CTRL, PM_CTL_PHY_RST_); - if (ret < 0) - return ret; - - timeout = 0; - do { - msleep(10); - ret = smsc95xx_read_reg(dev, PM_CTRL, &read_buf); - if (ret < 0) - return ret; - timeout++; - } while ((read_buf & PM_CTL_PHY_RST_) && (timeout < 100)); - - if (timeout >= 100) { - netdev_warn(dev->net, "timeout waiting for PHY Reset\n"); - return ret; - } - ret = smsc95xx_set_mac_address(dev); if (ret < 0) return ret;