Message ID | 78fd68df1b27f187910a3bca538ae293baa14ab2.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:02PM +0200, Lukas Wunner wrote: > Upon receiving data from the Interrupt Endpoint, the SMSC LAN95xx driver > attempts to clear the signaled interrupts by writing "all ones" to the > Interrupt Status Register. > > However the driver only ever enables a single type of interrupt, namely > the PHY Interrupt. And according to page 119 of the LAN950x datasheet, > its bit in the Interrupt Status Register is read-only. There's no other > way to clear it than in a separate PHY register: > > https://www.microchip.com/content/dam/mchp/documents/UNG/ProductDocuments/DataSheets/LAN950x-Data-Sheet-DS00001875D.pdf > > Consequently, writing "all ones" to the Interrupt Status Register is > pointless and can be dropped. > > 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> Reviewed-by: Andrew Lunn <andrew@lunn.ch> Andrew
diff --git a/drivers/net/usb/smsc95xx.c b/drivers/net/usb/smsc95xx.c index edf0492ad489..2cb44d65bbc3 100644 --- a/drivers/net/usb/smsc95xx.c +++ b/drivers/net/usb/smsc95xx.c @@ -572,10 +572,6 @@ static int smsc95xx_link_reset(struct usbnet *dev) unsigned long flags; int ret; - ret = smsc95xx_write_reg(dev, INT_STS, INT_STS_CLEAR_ALL_); - if (ret < 0) - return ret; - spin_lock_irqsave(&pdata->mac_cr_lock, flags); if (pdata->phydev->duplex != DUPLEX_FULL) { pdata->mac_cr &= ~MAC_CR_FDPX_;