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:
Ed Maste 2018-04-30 01:58:24 +00:00
parent 4d7f36eea5
commit 8c9b26c3c4
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=333095

View File

@ -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");