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>
