Page MenuHomeFreeBSD

Fixes to the if_smsc driver
ClosedPublic

Authored by arshankhanifar_gmail.com on Apr 27 2018, 6:07 PM.
Referenced Files
Unknown Object (File)
Sun, Oct 12, 9:19 PM
Unknown Object (File)
Sun, Oct 12, 9:44 AM
Unknown Object (File)
Sun, Oct 12, 9:44 AM
Unknown Object (File)
Sun, Oct 12, 9:44 AM
Unknown Object (File)
Sat, Oct 11, 10:51 PM
Unknown Object (File)
Tue, Sep 30, 11:53 PM
Unknown Object (File)
Sep 8 2025, 10:13 PM
Unknown Object (File)
Aug 23 2025, 8:11 PM
Subscribers
None

Details

Summary

There are two problems:

  1. In smsc_phy_init function, when the driver is trying to reset PHY, it doesn't poll for the correct bit (BMCR_RESET) to be cleared. Instead, it ands it with MII_BMCR which happens to be 0, so it just exits the loop.
  2. In smsc_miibus_readreg and smsc_miibus_writetreg it doesn't set the SMSC_MII_BUSY bit, which is necessary for PHY to acknowledge a read/write request. the linux driver does the same.

Diff Detail

Repository
rS FreeBSD src repository - subversion
Lint
Lint Not Applicable
Unit
Tests Not Applicable

Event Timeline

This revision was not accepted when it landed; it landed in state Needs Review.Apr 30 2018, 2:18 AM
This revision was automatically updated to reflect the committed changes.