svn commit: r217673 - stable/7/sys/dev/mii

Marius Strobl marius at FreeBSD.org
Fri Jan 21 00:48:09 UTC 2011


Author: marius
Date: Fri Jan 21 00:48:08 2011
New Revision: 217673
URL: http://svn.freebsd.org/changeset/base/217673

Log:
  MFC: r217413
  
  - Even after masking the media with IFM_GMASK the result may have bits
    besides the duplex ones set so just comparing it with IFM_FDX may lead
    to false negatives.
  - Simplify ciphy_service() to only set the manual configuration bits
    once after we have figured them all out. This also means we no longer
    unnecessarily update the hardware along the road.

Modified:
  stable/7/sys/dev/mii/brgphy.c
  stable/7/sys/dev/mii/ciphy.c
  stable/7/sys/dev/mii/xmphy.c
Directory Properties:
  stable/7/sys/   (props changed)
  stable/7/sys/cddl/contrib/opensolaris/   (props changed)
  stable/7/sys/contrib/dev/acpica/   (props changed)
  stable/7/sys/contrib/pf/   (props changed)

Modified: stable/7/sys/dev/mii/brgphy.c
==============================================================================
--- stable/7/sys/dev/mii/brgphy.c	Fri Jan 21 00:48:04 2011	(r217672)
+++ stable/7/sys/dev/mii/brgphy.c	Fri Jan 21 00:48:08 2011	(r217673)
@@ -452,7 +452,7 @@ brgphy_setmedia(struct mii_softc *sc, in
 		break;
 	}
 
-	if ((media & IFM_GMASK) == IFM_FDX) {
+	if ((media & IFM_FDX) != 0) {
 		bmcr |= BRGPHY_BMCR_FDX;
 		gig = BRGPHY_1000CTL_AFD;
 	} else {

Modified: stable/7/sys/dev/mii/ciphy.c
==============================================================================
--- stable/7/sys/dev/mii/ciphy.c	Fri Jan 21 00:48:04 2011	(r217672)
+++ stable/7/sys/dev/mii/ciphy.c	Fri Jan 21 00:48:08 2011	(r217673)
@@ -89,8 +89,8 @@ static const struct mii_phydesc ciphys[]
 	MII_PHY_DESC(CICADA, CS8201),
 	MII_PHY_DESC(CICADA, CS8201A),
 	MII_PHY_DESC(CICADA, CS8201B),
-	MII_PHY_DESC(CICADA, VSC8211),
 	MII_PHY_DESC(CICADA, CS8204),
+	MII_PHY_DESC(CICADA, VSC8211),
 	MII_PHY_DESC(CICADA, CS8244),
 	MII_PHY_DESC(VITESSE, VSC8601),
 	MII_PHY_END
@@ -176,27 +176,24 @@ ciphy_service(struct mii_softc *sc, stru
 		case IFM_10_T:
 			speed = CIPHY_S10;
 setit:
-			if ((ife->ifm_media & IFM_GMASK) == IFM_FDX) {
+			if ((ife->ifm_media & IFM_FDX) != 0) {
 				speed |= CIPHY_BMCR_FDX;
 				gig = CIPHY_1000CTL_AFD;
-			} else {
+			} else
 				gig = CIPHY_1000CTL_AHD;
-			}
 
-			PHY_WRITE(sc, CIPHY_MII_1000CTL, 0);
+			if (IFM_SUBTYPE(ife->ifm_media) == IFM_1000_T) {
+				gig |= CIPHY_1000CTL_MSE;
+				if ((ife->ifm_media & IFM_ETH_MASTER) != 0 ||
+				    (mii->mii_ifp->if_flags & IFF_LINK0) != 0)
+					gig |= CIPHY_1000CTL_MSC;
+				speed |=
+				    CIPHY_BMCR_AUTOEN | CIPHY_BMCR_STARTNEG;
+			} else
+				gig = 0;
+			PHY_WRITE(sc, CIPHY_MII_1000CTL, gig);
 			PHY_WRITE(sc, CIPHY_MII_BMCR, speed);
 			PHY_WRITE(sc, CIPHY_MII_ANAR, CIPHY_SEL_TYPE);
-
-			if (IFM_SUBTYPE(ife->ifm_media) != IFM_1000_T)
-				break;
-
-			gig |= CIPHY_1000CTL_MSE;
-			if ((ife->ifm_media & IFM_ETH_MASTER) != 0 ||
-			    (mii->mii_ifp->if_flags & IFF_LINK0) != 0)
-				gig |= CIPHY_1000CTL_MSC;
-			PHY_WRITE(sc, CIPHY_MII_1000CTL, gig);
-			PHY_WRITE(sc, CIPHY_MII_BMCR,
-			    speed | CIPHY_BMCR_AUTOEN | CIPHY_BMCR_STARTNEG);
 			break;
 		case IFM_NONE:
 			PHY_WRITE(sc, MII_BMCR, BMCR_ISO | BMCR_PDOWN);

Modified: stable/7/sys/dev/mii/xmphy.c
==============================================================================
--- stable/7/sys/dev/mii/xmphy.c	Fri Jan 21 00:48:04 2011	(r217672)
+++ stable/7/sys/dev/mii/xmphy.c	Fri Jan 21 00:48:08 2011	(r217673)
@@ -171,7 +171,7 @@ xmphy_service(struct mii_softc *sc, stru
 			break;
 		case IFM_1000_SX:
 			mii_phy_reset(sc);
-			if ((ife->ifm_media & IFM_GMASK) == IFM_FDX) {
+			if ((ife->ifm_media & IFM_FDX) != 0) {
 				PHY_WRITE(sc, XMPHY_MII_ANAR, XMPHY_ANAR_FDX);
 				PHY_WRITE(sc, XMPHY_MII_BMCR, XMPHY_BMCR_FDX);
 			} else {


More information about the svn-src-stable-7 mailing list