if_smsc: fix reset check
In smsc_phy_init function, when the driver was trying to reset PHY, it didn't poll for the correct bit (BMCR_RESET) to be cleared. Instead, it anded it with MII_BMCR (which is 0), so it just exited the loop. This issue was fixed in Linux in commit d94609200069. Submitted by: Arshan Khanifar MFC after: 1 week Sponsored by: The FreeBSD Foundation
This commit is contained in:
parent
4d7f36eea5
commit
8c9b26c3c4
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=333095
@ -1306,7 +1306,7 @@ smsc_phy_init(struct smsc_softc *sc)
|
||||
do {
|
||||
uether_pause(&sc->sc_ue, hz / 100);
|
||||
bmcr = smsc_miibus_readreg(sc->sc_ue.ue_dev, sc->sc_phyno, MII_BMCR);
|
||||
} while ((bmcr & MII_BMCR) && ((ticks - start_ticks) < max_ticks));
|
||||
} while ((bmcr & BMCR_RESET) && ((ticks - start_ticks) < max_ticks));
|
||||
|
||||
if (((usb_ticks_t)(ticks - start_ticks)) >= max_ticks) {
|
||||
smsc_err_printf(sc, "PHY reset timed-out");
|
||||
|
Loading…
Reference in New Issue
Block a user