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>