Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 2 Apr 2014 11:08:03 +0900
From:      Yonghyeon PYUN <pyunyh@gmail.com>
To:        Chris H <bsd-lists@bsdforge.com>
Cc:        freebsd-net <freebsd-net@freebsd.org>, freebsd-stable <freebsd-stable@freebsd.org>, Ian Lepore <ian@freebsd.org>
Subject:   Re: miibus0: mii_mediachg: can't handle non-zero PHY instance 31
Message-ID:  <20140402020803.GB2938@michelle.cdnetworks.com>
In-Reply-To: <3f97f5646629043fed5e34a77c9c2f3d.authenticated@ultimatedns.net>
References:  <2598eeb4c68e23df0789e5e3e8f46d76.authenticated@ultimatedns.net> <20140331050002.GC1359@michelle.cdnetworks.com> <c0a800d2a15f205788ed9ce606c00637.authenticated@ultimatedns.net> <20140401065842.GA1364@michelle.cdnetworks.com> <c73ef96319846b3da07db5785f48fb6a.authenticated@ultimatedns.net> <1396384167.81853.210.camel@revolution.hippie.lan> <41917a9e67d0f4519df4b55f3aa6ebe3.authenticated@ultimatedns.net> <20140402003912.GA2938@michelle.cdnetworks.com> <3f97f5646629043fed5e34a77c9c2f3d.authenticated@ultimatedns.net>

next in thread | previous in thread | raw e-mail | index | archive | help

--azLHFNyN32YCQGCU
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline

On Tue, Apr 01, 2014 at 05:53:51PM -0700, Chris H wrote:
> > On Tue, Apr 01, 2014 at 01:40:58PM -0700, Chris H wrote:
> >> > On Tue, 2014-04-01 at 13:19 -0700, Chris H wrote:
> >> >> [...]
> >> >> miibus0: <MII bus> on nfe0
> >> >> rlphy0: <RTL8201L 10/100 media interface> PHY 0 on miibus0
> >> >> rlphy0:  10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto, auto-flow
> >> >> rlphy1: <RTL8201L 10/100 media interface> PHY 1 on miibus0
> >> > [...]---big-snip--8<---
> >> >> miibus0: mii_mediachg: can't handle non-zero PHY instance 1
> >> >>
> >> >> As you can see, it looks much the same. I have no idea what
> >> >> I should do to better inform the driver/kernel how to better
> >> >> handle it. Or is it the driver, itself?
> >> >>
> >> >> Thank you again, for your thoughtful response.
> >> >>
> >> >> --Chris
> >> >>
> >> >
> >> > I think the way to fix a phy that responds at all addresses is to set a
> >> > hint in loader.conf masking out the ones that aren't real, like so:
> >> >
> >> >  hint.miibus.0.phymask="1"
> >> >
> >> > You might be able to set ="0x00000001" to make it more clear it's a
> >> > bitmask, but I'm not sure of that.
> >>
> >> Thank you very much for the hint. I'll give it a shot.
> >> Any idea why this is happening? I have 4 other MB's using the Nvidia
> >> chipset, and the nfe(4) driver. But they don't respond this way.
> >>
> >
> > If some nfe(4) variants badly behave in probing stage, this should
> > be handled by driver.  We already have too many hints and tunables
> > and I don't think most users know that.  In addition, adding
> > additional NIC may change miibus instance number.
> >
> > Could you show me the output of 'kenv | grep smbios'?
> Yes, of course.
> 
> Here it is:
> 
> smbios.bios.reldate="11/22/2010"
> smbios.bios.vendor="American Megatrends Inc."
> smbios.bios.version="V2.7"
> smbios.chassis.maker="MSI"
> smbios.chassis.serial="To Be Filled By O.E.M."
> smbios.chassis.tag="To Be Filled By O.E.M."
> smbios.chassis.version="2.0"
> smbios.memory.enabled="2097152"
> smbios.planar.maker="MSI"
> smbios.planar.product="K9N6PGM2-V2 (MS-7309)"
> smbios.planar.serial="To be filled by O.E.M."
> smbios.planar.version="2.0"
> smbios.socket.enabled="1"
> smbios.socket.populated="1"
> smbios.system.maker="MSI"
> smbios.system.product="MS-7309"
> smbios.system.serial="To Be Filled By O.E.M."
> smbios.system.uuid="00000000-0000-0000-0000-406186cd4497"
> smbios.system.version="2.0"
> smbios.version="2.6"
> 
> Hope this helps, and thank you for all your time, and trouble.
> 

Thanks for the info. Try attached patch and let me know how it
works.  Make sure to remove the hint(hint.miibus.0.phymask="1")
set in loader.conf before testing it.

> --Chris
> 
> >
> 

--azLHFNyN32YCQGCU
Content-Type: text/x-diff; charset=us-ascii
Content-Disposition: attachment; filename="nfe.msi.diff"

Index: sys/dev/nfe/if_nfe.c
===================================================================
--- sys/dev/nfe/if_nfe.c	(revision 264031)
+++ sys/dev/nfe/if_nfe.c	(working copy)
@@ -79,6 +79,7 @@ static int  nfe_suspend(device_t);
 static int  nfe_resume(device_t);
 static int nfe_shutdown(device_t);
 static int  nfe_can_use_msix(struct nfe_softc *);
+static int  nfe_detect_msik9(struct nfe_softc *);
 static void nfe_power(struct nfe_softc *);
 static int  nfe_miibus_readreg(device_t, int, int);
 static int  nfe_miibus_writereg(device_t, int, int, int);
@@ -334,13 +335,38 @@ nfe_alloc_msix(struct nfe_softc *sc, int count)
 	}
 }
 
+
 static int
+nfe_detect_msik9(struct nfe_softc *sc)
+{
+	static char *maker = "MSI";
+	static char *product = "K9N6PGM2-V2 (MS-7309)";
+	char *m, *p;
+	int found;
+
+	found = 0;
+	m = getenv("smbios.planar.maker");
+	p = getenv("smbios.planar.product");
+	if (m != NULL && p != NULL) {
+		if (strcmp(m, maker) == 0 && strcmp(p, product) == 0)
+			found = 1;
+	}
+	if (m != NULL)
+		freeenv(m);
+	if (p != NULL)
+		freeenv(p);
+
+	return (found);
+}
+
+
+static int
 nfe_attach(device_t dev)
 {
 	struct nfe_softc *sc;
 	struct ifnet *ifp;
 	bus_addr_t dma_addr_max;
-	int error = 0, i, msic, reg, rid;
+	int error = 0, i, msic, phyloc, reg, rid;
 
 	sc = device_get_softc(dev);
 	sc->nfe_dev = dev;
@@ -608,8 +634,13 @@ nfe_attach(device_t dev)
 #endif
 
 	/* Do MII setup */
+	phyloc = MII_PHY_ANY;
+	if (sc->nfe_devid == PCI_PRODUCT_NVIDIA_MCP61_LAN1) {
+		if (nfe_detect_msik9(sc) != 0)
+			phyloc = 0;
+	}
 	error = mii_attach(dev, &sc->nfe_miibus, ifp, nfe_ifmedia_upd,
-	    nfe_ifmedia_sts, BMSR_DEFCAPMASK, MII_PHY_ANY, MII_OFFSET_ANY,
+	    nfe_ifmedia_sts, BMSR_DEFCAPMASK, phyloc, MII_OFFSET_ANY,
 	    MIIF_DOPAUSE);
 	if (error != 0) {
 		device_printf(dev, "attaching PHYs failed\n");

--azLHFNyN32YCQGCU--



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