svn commit: r213908 - head/sys/dev/dc

Marius Strobl marius at FreeBSD.org
Fri Oct 15 23:34:32 UTC 2010


Author: marius
Date: Fri Oct 15 23:34:31 2010
New Revision: 213908
URL: http://svn.freebsd.org/changeset/base/213908

Log:
  Convert the PHY drivers to honor the mii_flags passed down and convert
  the NIC drivers as well as the PHY drivers to take advantage of the
  mii_attach() introduced in r213878 to get rid of certain hacks. For
  the most part these were:
  - Artificially limiting miibus_{read,write}reg methods to certain PHY
    addresses; we now let mii_attach() only probe the PHY at the desired
    address(es) instead.
  - PHY drivers setting MIIF_* flags based on the NIC driver they hang
    off from, partly even based on grabbing and using the softc of the
    parent; we now pass these flags down from the NIC to the PHY drivers
    via mii_attach(). This got us rid of all such hacks except those of
    brgphy() in combination with bce(4) and bge(4), which is way beyond
    what can be expressed with simple flags.
  
  While at it, I took the opportunity to change the NIC drivers to pass
  up the error returned by mii_attach() (previously by mii_phy_probe())
  and unify the error message used in this case where and as appropriate
  as mii_attach() actually can fail for a number of reasons, not just
  because of no PHY(s) being present at the expected address(es).
  
  This file was missed in r213893.

Modified:
  head/sys/dev/dc/dcphy.c

Modified: head/sys/dev/dc/dcphy.c
==============================================================================
--- head/sys/dev/dc/dcphy.c	Fri Oct 15 21:41:59 2010	(r213907)
+++ head/sys/dev/dc/dcphy.c	Fri Oct 15 23:34:31 2010	(r213908)
@@ -149,6 +149,7 @@ dcphy_attach(device_t dev)
 	mii = ma->mii_data;
 	LIST_INSERT_HEAD(&mii->mii_phys, sc, mii_list);
 
+	sc->mii_flags = miibus_get_flags(dev);
 	sc->mii_inst = mii->mii_instance++;
 	sc->mii_phy = ma->mii_phyno;
 	sc->mii_service = dcphy_service;
@@ -211,7 +212,6 @@ dcphy_service(struct mii_softc *sc, stru
 		if ((mii->mii_ifp->if_flags & IFF_UP) == 0)
 			break;
 
-		sc->mii_flags = 0;
 		mii->mii_media_active = IFM_NONE;
 		mode = CSR_READ_4(dc_sc, DC_NETCFG);
 		mode &= ~(DC_NETCFG_FULLDUPLEX | DC_NETCFG_PORTSEL |


More information about the svn-src-all mailing list