Date: Thu, 22 Nov 2012 11:08:51 +0900 From: YongHyeon PYUN <pyunyh@gmail.com> To: Richard Kuhns <rjk@wintek.com> Cc: "freebsd-stable@freebsd.org" <freebsd-stable@freebsd.org> Subject: Re: bge on the new Mac Mini Message-ID: <20121122020851.GB3180@michelle.cdnetworks.com> In-Reply-To: <20121122014921.GA3180@michelle.cdnetworks.com> References: <50A65BFC.7030406@wintek.com> <20121120085200.GB1778@michelle.cdnetworks.com> <50AD32A6.8080209@wintek.com> <20121122014921.GA3180@michelle.cdnetworks.com>
next in thread | previous in thread | raw e-mail | index | archive | help
--M9NhX3UHpAaciwkO Content-Type: text/plain; charset=us-ascii Content-Disposition: inline On Thu, Nov 22, 2012 at 10:49:21AM +0900, YongHyeon PYUN wrote: > On Wed, Nov 21, 2012 at 02:59:34PM -0500, Richard Kuhns wrote: > > On 11/20/12 03:52, YongHyeon PYUN wrote: > > > On Fri, Nov 16, 2012 at 10:30:04AM -0500, Richard Kuhns wrote: > > >> Hi all, > > >> > > >> Over the last month or so I've installed FreeBSD 9 (-stable) on several Mac > > >> Minis via the memstick image; they seem to be pretty good little boxes for > > >> things like offsite secondary nameservers, for example, and they're easily > > >> replaced in case of problems. > > >> > > >> However, the newest minis have slightly different hardware, and FreeBSD can't > > >> find the built-in NIC. pciconf -lv on the new mini shows it as > > >> > > >> none3@pci0:1:0:0: class=0x020000 card=0x168614e4 chip=0x168614e4 rev=0x01 > > > > > > It seems this controller is BCM57766. > > > > > >> hdr=0x00 > > >> vendor = 'Broadcom Corporation' > > >> class = network > > >> subclass = ethernet > > >> > > >> The previous edition mini (that works) reports > > >> > > >> bge0@pci0:2:0:0: class=0x020000 card=0x16b414e4 chip=0x16b414e4 rev=0x10 hdr=0x00 > > >> vendor = 'Broadcom Corporation' > > >> device = 'NetXtreme BCM57765 Gigabit Ethernet PCIe' > > >> class = network > > >> subclass = ethernet > > >> > > >> Is there a chance that adding the new card/chip info to the current driver would > > >> allow it to work? I'll be happy to test and report back. I'm afraid I'm not > > >> familiar enough with hardware at that level to figure out the patch myself. > > >> > > > > > > Try attached patch and let me know whether the patch works or not. > > > If the patch works please share dmesg output(bge(4) and brgphy(4) > > > output only). > > > Note, the patch was generated against CURRENT. > > > > > > > I'm afraid it didn't help. I ended up grabbing if_bge.c and if_bgereg.h from > > I guess you also need to copy brgphy.c from HEAD to > /usr/src/sys/dev/mii directory. > > > HEAD using svnweb.freebsd.org. The patch installed cleanly and there were no > > errors during the build, but still no NIC. > > Does it mean you're not seeing bge0 interface? Or you can't pass > any traffic via bge0? Oops, it seems I've not included your device ID in the diff. Try attach one instead. Make sure you use brgphy.c from HEAD. --M9NhX3UHpAaciwkO Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename="bge.57766.diff2" Index: sys/dev/bge/if_bgereg.h =================================================================== --- sys/dev/bge/if_bgereg.h (revision 243366) +++ sys/dev/bge/if_bgereg.h (working copy) @@ -360,6 +360,7 @@ #define BGE_ASICREV_BCM5784 0x5784 #define BGE_ASICREV_BCM5785 0x5785 #define BGE_ASICREV_BCM57765 0x57785 +#define BGE_ASICREV_BCM57766 0x57766 #define BGE_ASICREV_BCM57780 0x57780 /* chip revisions */ @@ -2483,7 +2484,9 @@ struct bge_status_block { #define BCOM_DEVICEID_BCM5906M 0x1713 #define BCOM_DEVICEID_BCM57760 0x1690 #define BCOM_DEVICEID_BCM57761 0x16B0 +#define BCOM_DEVICEID_BCM57762 0x1682 #define BCOM_DEVICEID_BCM57765 0x16B4 +#define BCOM_DEVICEID_BCM57766 0x1686 #define BCOM_DEVICEID_BCM57780 0x1692 #define BCOM_DEVICEID_BCM57781 0x16B1 #define BCOM_DEVICEID_BCM57785 0x16B5 @@ -2961,6 +2964,7 @@ struct bge_softc { #define BGE_FLAG_5755_PLUS 0x00100000 #define BGE_FLAG_5788 0x00200000 #define BGE_FLAG_5717_PLUS 0x00400000 +#define BGE_FLAG_57765_PLUS 0x00800000 #define BGE_FLAG_40BIT_BUG 0x01000000 #define BGE_FLAG_4G_BNDRY_BUG 0x02000000 #define BGE_FLAG_RX_ALIGNBUG 0x04000000 Index: sys/dev/bge/if_bge.c =================================================================== --- sys/dev/bge/if_bge.c (revision 243366) +++ sys/dev/bge/if_bge.c (working copy) @@ -216,7 +216,9 @@ static const struct bge_type { { BCOM_VENDORID, BCOM_DEVICEID_BCM5906M }, { BCOM_VENDORID, BCOM_DEVICEID_BCM57760 }, { BCOM_VENDORID, BCOM_DEVICEID_BCM57761 }, + { BCOM_VENDORID, BCOM_DEVICEID_BCM57762 }, { BCOM_VENDORID, BCOM_DEVICEID_BCM57765 }, + { BCOM_VENDORID, BCOM_DEVICEID_BCM57766 }, { BCOM_VENDORID, BCOM_DEVICEID_BCM57780 }, { BCOM_VENDORID, BCOM_DEVICEID_BCM57781 }, { BCOM_VENDORID, BCOM_DEVICEID_BCM57785 }, @@ -347,6 +349,7 @@ static const struct bge_revision bge_majorrevs[] = { BGE_ASICREV_BCM5787, "unknown BCM5754/5787" }, { BGE_ASICREV_BCM5906, "unknown BCM5906" }, { BGE_ASICREV_BCM57765, "unknown BCM57765" }, + { BGE_ASICREV_BCM57766, "unknown BCM57766" }, { BGE_ASICREV_BCM57780, "unknown BCM57780" }, { BGE_ASICREV_BCM5717, "unknown BCM5717" }, { BGE_ASICREV_BCM5719, "unknown BCM5719" }, @@ -362,6 +365,7 @@ static const struct bge_revision bge_majorrevs[] = #define BGE_IS_575X_PLUS(sc) ((sc)->bge_flags & BGE_FLAG_575X_PLUS) #define BGE_IS_5755_PLUS(sc) ((sc)->bge_flags & BGE_FLAG_5755_PLUS) #define BGE_IS_5717_PLUS(sc) ((sc)->bge_flags & BGE_FLAG_5717_PLUS) +#define BGE_IS_57765_PLUS(sc) ((sc)->bge_flags & BGE_FLAG_57765_PLUS) const struct bge_revision * bge_lookup_rev(uint32_t); const struct bge_vendor * bge_lookup_vendor(uint16_t); @@ -2243,7 +2247,7 @@ bge_blockinit(struct bge_softc *sc) } else if (!BGE_IS_5705_PLUS(sc)) limit = BGE_RX_RINGS_MAX; else if (sc->bge_asicrev == BGE_ASICREV_BCM5755 || - sc->bge_asicrev == BGE_ASICREV_BCM57765) + BGE_IS_57765_PLUS(sc)) limit = 4; else limit = 1; @@ -2658,6 +2662,7 @@ bge_probe(device_t dev) break; case BCOM_DEVICEID_BCM57761: case BCOM_DEVICEID_BCM57765: + case BCOM_DEVICEID_BCM57766: case BCOM_DEVICEID_BCM57781: case BCOM_DEVICEID_BCM57785: case BCOM_DEVICEID_BCM57791: @@ -3321,10 +3326,13 @@ bge_attach(device_t dev) /* Save chipset family. */ switch (sc->bge_asicrev) { + case BGE_ASICREV_BCM57765: + case BGE_ASICREV_BCM57766: + sc->bge_flags |= BGE_FLAG_57765_PLUS; + /* FALLTHROUGH */ case BGE_ASICREV_BCM5717: case BGE_ASICREV_BCM5719: case BGE_ASICREV_BCM5720: - case BGE_ASICREV_BCM57765: sc->bge_flags |= BGE_FLAG_5717_PLUS | BGE_FLAG_5755_PLUS | BGE_FLAG_575X_PLUS | BGE_FLAG_5705_PLUS | BGE_FLAG_JUMBO | BGE_FLAG_JUMBO_FRAME; @@ -3738,12 +3746,9 @@ bge_attach(device_t dev) sc->bge_phy_flags |= BGE_PHY_NO_3LED; if ((BGE_IS_5705_PLUS(sc)) && sc->bge_asicrev != BGE_ASICREV_BCM5906 && - sc->bge_asicrev != BGE_ASICREV_BCM5717 && - sc->bge_asicrev != BGE_ASICREV_BCM5719 && - sc->bge_asicrev != BGE_ASICREV_BCM5720 && sc->bge_asicrev != BGE_ASICREV_BCM5785 && - sc->bge_asicrev != BGE_ASICREV_BCM57765 && - sc->bge_asicrev != BGE_ASICREV_BCM57780) { + sc->bge_asicrev != BGE_ASICREV_BCM57780 && + !BGE_IS_5717_PLUS(sc)) { if (sc->bge_asicrev == BGE_ASICREV_BCM5755 || sc->bge_asicrev == BGE_ASICREV_BCM5761 || sc->bge_asicrev == BGE_ASICREV_BCM5784 || --M9NhX3UHpAaciwkO--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20121122020851.GB3180>