Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 16 Aug 2002 15:59:33 -0700 (PDT)
From:      Doug Ambrisko <ambrisko@ambrisko.com>
To:        John Polstra <jdp@polstra.com>
Cc:        net@freebsd.org
Subject:   Re: cvs commit: src/sys/dev/mii mii.c
Message-ID:  <200208162259.g7GMxYp99777@ambrisko.com>
In-Reply-To: <200208162217.g7GMHSei074716@vashon.polstra.com>

next in thread | previous in thread | raw e-mail | index | archive | help
John Polstra writes:
| In article <200208162027.g7GKRjE95057@ambrisko.com>,
| Doug Ambrisko  <ambrisko@ambrisko.com> wrote:
| > John Polstra writes:
| > | In article <200208072218.g77MIXPA082326@freefall.freebsd.org>,
| > | Doug Ambrisko  <ambrisko@FreeBSD.org> wrote:
| > | > ambrisko    2002/08/07 15:18:33 PDT
| > | > 
| > | >   Modified files:
| > | >     sys/dev/mii          mii.c 
| > | >   Log:
| > | >   Only attach one PHY device to a controller.  NetBSD has similar code.
| > | >   The D-Link DFE-580 card will otherwise show 2 miibuses for each controller
| > | >   and therefore 2 ukphy's.
| > | 
| > | [cc to -net]
| > | 
| > | This change seems wrong to me.  Since the MII bus is a bus and since
| > | phys have addresses on the bus, I've always assumed that the intent
| > | was to be able to have more than one phy on an MII bus.  While I don't
| > | know of any NICs that actually use that feature, I hate to see it get
| > | disabled without careful consideration.
| > 
| > Although I don't disagree that you have a potential solution.  I question
| > whether there isn't a technical issue if you have multiple PHY's 
| > attached to a NIC.  In the current stuff how would you ifconfig the
| > other PHYs?  If you can't access the other PHYs then why attach them.
| 
| I think Matthew Dodd's answer is right, that the code assumes only
| one of the PHYs supports any given media type.  Just about all of
| the MII code (e.g., mii_mediachg()) communicates with every PHY when
| a significant event happens.  If the media is changed to something
| that the currently active PHY can't handle, it should disable itself
| appropriately so it stays out of the way.

Okay how about this patch to revert the mii change and only probe the
first PHY.  I tested it on -stable and I'm now testing it on -current.

Thanks,

Index: pci/if_ste.c
===================================================================
RCS file: /home/ncvs/src/sys/pci/if_ste.c,v
retrieving revision 1.14.2.6
diff -u -r1.14.2.6 if_ste.c
--- pci/if_ste.c	14 Aug 2002 15:03:16 -0000	1.14.2.6
+++ pci/if_ste.c	16 Aug 2002 22:48:34 -0000
@@ -383,6 +383,9 @@
 
 	sc = device_get_softc(dev);
 
+	if (phy != 0)
+		return (0);
+
 	bzero((char *)&frame, sizeof(frame));
 
 	frame.mii_phyaddr = phy;
Index: dev/mii/mii.c
===================================================================
RCS file: /home/ncvs/src/sys/dev/mii/mii.c,v
retrieving revision 1.6.2.1
diff -u -r1.6.2.1 mii.c
--- dev/mii/mii.c	14 Aug 2002 14:59:16 -0000	1.6.2.1
+++ dev/mii/mii.c	16 Aug 2002 22:48:34 -0000
@@ -106,17 +106,14 @@
 {
 	struct mii_attach_args	ma, *args;
 	struct mii_data		*mii;
-	device_t		child = NULL, parent, *children;
-	int			bmsr, capmask = 0xFFFFFFFF, nchildren;
+	device_t		child = NULL, parent;
+	int			bmsr, capmask = 0xFFFFFFFF;
 
 	mii = device_get_softc(dev);
 	parent = device_get_parent(dev);
 	LIST_INIT(&mii->mii_phys);
 
 	for (ma.mii_phyno = 0; ma.mii_phyno < MII_NPHY; ma.mii_phyno++) {
-		device_get_children(dev, &children, &nchildren);
-		if (nchildren)
-			break;
 		/*
 		 * Check to see if there is a PHY at this address.  Note,
 		 * many braindead PHYs report 0/0 in their ID registers,

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-net" in the body of the message




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