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)
Thu, Apr 2, 11:37 AM
Unknown Object (File)
Tue, Mar 31, 9:12 AM
Unknown Object (File)
Mon, Mar 30, 1:17 PM
Unknown Object (File)
Mon, Mar 30, 10:27 AM
Unknown Object (File)
Mon, Mar 30, 5:22 AM
Unknown Object (File)
Thu, Mar 26, 3:17 AM
Unknown Object (File)
Wed, Mar 25, 7:53 PM
Unknown Object (File)
Sun, Mar 22, 11:09 AM
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.