cvs commit: src/sys/dev/mii nsphy.c

Marius Strobl marius at FreeBSD.org
Sat May 29 11:23:27 PDT 2004


marius      2004/05/29 11:23:26 PDT

  FreeBSD src repository

  Modified files:
    sys/dev/mii          nsphy.c 
  Log:
  DP83840A on hme(4) don't advertise their media capabilities themselves
  properly. This causes the autonegotiation to e.g. never establish a
  100baseTX full-duplex link. The solution to this problem is to manually
  write the capabilities from the BMSR to the ANAR every time a media
  change occurs, even when already in autonegotiation mode.
  The NetBSD way of doing this is to set their MIIF_FORCEANEG flag in the
  NIC driver. This causes mii_phy_setmedia() to call mii_phy_auto() (which
  will set the ANAR according to the BMSR) even when the PHY alread is in
  autonegotiation mode. However, while doing the same on FreeBSD (which
  involves porting the MIIF_FORCEANEG flag and converting nsphy.c to use
  mii_phy_setmedia()) fixes autonegotiation, using mii_phy_setmedia()
  causes this driver to no longer work properly in the other modes.
  Another drawback of that approach is that this will also force writing
  the ANAR on other PHYs whose drivers use mii_phy_setmedia() and which
  are used with a NIC whose driver sets MIIF_FORCEANEG (e.g. hme(4) is
  known to be used together with 3 different PHYs while only the DP83840A
  require this workaround).
  So instead of moving to MIIF_FORCEANEG, just call mii_phy_auto() in
  nsphy_service() unconditionally when hanging off of a hme(4) and serving
  a media change
  
  This is part 1/2 of fixing autonegotiation on hme(4) using DP83840A PHYs.
  
  Revision  Changes    Path
  1.22      +11 -4     src/sys/dev/mii/nsphy.c


More information about the cvs-src mailing list