Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 17 Oct 2010 13:07:35 +0000 (UTC)
From:      Marius Strobl <marius@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-7@freebsd.org
Subject:   svn commit: r213968 - stable/7/sys/dev/mii
Message-ID:  <201010171307.o9HD7ZnI031651@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: marius
Date: Sun Oct 17 13:07:35 2010
New Revision: 213968
URL: http://svn.freebsd.org/changeset/base/213968

Log:
  MFC: r182067
  
  Move the code that looks for the companion phy to a subroutine to make
  sure we get the error handling right in both places.  This also
  simplifies the code somewhat.

Modified:
  stable/7/sys/dev/mii/mlphy.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/mlphy.c
==============================================================================
--- stable/7/sys/dev/mii/mlphy.c	Sun Oct 17 13:06:18 2010	(r213967)
+++ stable/7/sys/dev/mii/mlphy.c	Sun Oct 17 13:07:35 2010	(r213968)
@@ -177,6 +177,25 @@ mlphy_attach(dev)
 	return (0);
 }
 
+static struct mii_softc *
+mlphy_find_other(device_t mii)
+{
+	device_t		*devlist;
+	struct mii_softc *retval;
+	int i, devs;
+
+	retval = NULL;
+	if (device_get_children(mii, &devlist, &devs))
+		return (NULL);
+	for (i = 0; i < devs; i++)
+		if (strcmp(device_get_name(devlist[i]), "mlphy")) {
+			retval = device_get_softc(devlist[i]);
+			break;
+		}
+	free(devlist, M_TEMP);
+	return (retval);
+}
+
 static int
 mlphy_service(xsc, mii, cmd)
 	struct mii_softc *xsc;
@@ -187,22 +206,13 @@ mlphy_service(xsc, mii, cmd)
 	struct mii_softc	*other = NULL;
 	struct mlphy_softc	*msc = (struct mlphy_softc *)xsc;
 	struct mii_softc	*sc = (struct mii_softc *)&msc->ml_mii;
-	device_t		*devlist;
-	int			devs, i, other_inst, reg;
+	int			other_inst, reg;
 
 	/*
 	 * See if there's another PHY on this bus with us.
 	 * If so, we may need it for 10Mbps modes.
 	 */
-	if (device_get_children(msc->ml_mii.mii_dev, &devlist, &devs) == 0) {
-		for (i = 0; i < devs; i++) {
-			if (strcmp(device_get_name(devlist[i]), "mlphy")) {
-				other = device_get_softc(devlist[i]);
-				break;
-			}
-		}
-		free(devlist, M_TEMP);
-	}
+	other = mlphy_find_other(msc->ml_mii.mii_dev);
 
 	switch (cmd) {
 	case MII_POLLSTAT:
@@ -397,20 +407,9 @@ mlphy_status(sc)
 	struct mlphy_softc	*msc = (struct mlphy_softc *)sc;
 	struct mii_data		*mii = msc->ml_mii.mii_pdata;
 	struct mii_softc	*other = NULL;
-	device_t		*devlist;
-	int			devs, i;
 
 	/* See if there's another PHY on the bus with us. */
-	devs = 0;
-	device_get_children(msc->ml_mii.mii_dev, &devlist, &devs);
-	for (i = 0; i < devs; i++) {
-		if (strcmp(device_get_name(devlist[i]), "mlphy")) {
-			other = device_get_softc(devlist[i]);
-			break;
-		}
-	}
-	free(devlist, M_TEMP);
-
+	other = mlphy_find_other(msc->ml_mii.mii_dev);
 	if (other == NULL)
 		return;
 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201010171307.o9HD7ZnI031651>