Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 15 Nov 2010 21:41:45 +0000 (UTC)
From:      Marius Strobl <marius@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r215348 - head/sys/dev/mii
Message-ID:  <201011152141.oAFLfj3A029429@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: marius
Date: Mon Nov 15 21:41:45 2010
New Revision: 215348
URL: http://svn.freebsd.org/changeset/base/215348

Log:
  Return from mii_attach() after calling bus_generic_attach(9) on the device_t
  of the MAC driver in order to attach miibus(4) on the first pass instead of
  falling through to also calling it on the device_t of miibus(4). The latter
  code flow was intended to attach the PHY drivers the same way regardless of
  whether it's the first or a repeated pass, modulo the bus_generic_attach()
  call in miibus_attach() which shouldn't be there. However, it turned out
  that these variants cause miibus(4) to be attached twice under certain
  conditions when using MAC drivers as modules.
  
  Submitted by:	yongari
  MFC after:	3 days

Modified:
  head/sys/dev/mii/mii.c

Modified: head/sys/dev/mii/mii.c
==============================================================================
--- head/sys/dev/mii/mii.c	Mon Nov 15 21:41:32 2010	(r215347)
+++ head/sys/dev/mii/mii.c	Mon Nov 15 21:41:45 2010	(r215348)
@@ -438,6 +438,9 @@ mii_attach(device_t dev, device_t *miibu
 		rv = bus_generic_attach(dev);
 		if (rv != 0)
 			goto fail;
+
+		/* Attaching of the PHY drivers is done in miibus_attach(). */
+		return (0);
 	}
 	rv = bus_generic_attach(*miibus);
 	if (rv != 0)



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