From owner-freebsd-stable@FreeBSD.ORG Wed Nov 28 00:20:09 2012 Return-Path: Delivered-To: freebsd-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 2892471F for ; Wed, 28 Nov 2012 00:20:09 +0000 (UTC) (envelope-from pyunyh@gmail.com) Received: from mail-pa0-f54.google.com (mail-pa0-f54.google.com [209.85.220.54]) by mx1.freebsd.org (Postfix) with ESMTP id E07E48FC08 for ; Wed, 28 Nov 2012 00:20:08 +0000 (UTC) Received: by mail-pa0-f54.google.com with SMTP id bi5so3696862pad.13 for ; Tue, 27 Nov 2012 16:20:02 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:date:to:cc:subject:message-id:reply-to:references:mime-version :content-type:content-disposition:in-reply-to:user-agent; bh=y31pqlMvBE8LYHBQpSD0KE5ZFVkKv485bJduLyTYJIs=; b=D2TqoYwUAiZonuZPfeF46WxAmJvVAJRvxr8IYotqq1a8urgWNfYH6xxV8mVaFMFPYf jmtzV7wOqxS0vK68nXM2rE904ul6fsGfTHN8y2qBLvKM5wHTHV/CVdAA4N+RY9EXOKIn nLwhI1KapHtZcEbATsKIDl5G5fGZIHxnT+hh3ZyNShObn3ze9cif75ie9NZKoy7UdT9+ nHfeuOIvyqlGebkT35wsnnML1xLeYvQ0quwlwCgPDukzvOhkpyRlepQFgJmHFBdWocSo dSJpxRwXTQTLt0+Wr+BJ1Q+40CXpwyeCL6fxo9qRI7ZkNqrO60U2yL8jlsaNXN/xrmXH 2BDA== Received: by 10.68.238.199 with SMTP id vm7mr52266526pbc.105.1354062002822; Tue, 27 Nov 2012 16:20:02 -0800 (PST) Received: from pyunyh@gmail.com (lpe4.p59-icn.cdngp.net. [114.111.62.249]) by mx.google.com with ESMTPS id hs2sm11406901pbc.22.2012.11.27.16.19.59 (version=TLSv1/SSLv3 cipher=OTHER); Tue, 27 Nov 2012 16:20:01 -0800 (PST) Received: by pyunyh@gmail.com (sSMTP sendmail emulation); Wed, 28 Nov 2012 09:19:50 +0900 From: YongHyeon PYUN Date: Wed, 28 Nov 2012 09:19:50 +0900 To: Richard Kuhns Subject: Re: bge on the new Mac Mini Message-ID: <20121128001950.GA3390@michelle.cdnetworks.com> References: <50A65BFC.7030406@wintek.com> <20121120085200.GB1778@michelle.cdnetworks.com> <50AD32A6.8080209@wintek.com> <20121122014921.GA3180@michelle.cdnetworks.com> <20121122020851.GB3180@michelle.cdnetworks.com> <50B3872B.9010709@wintek.com> <20121127052448.GC1452@michelle.cdnetworks.com> <50B4C155.8050703@wintek.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="ew6BAiZeqk4r7MaW" Content-Disposition: inline In-Reply-To: <50B4C155.8050703@wintek.com> User-Agent: Mutt/1.4.2.3i Cc: "freebsd-stable@freebsd.org" X-BeenThere: freebsd-stable@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list Reply-To: pyunyh@gmail.com List-Id: Production branch of FreeBSD source code List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 28 Nov 2012 00:20:09 -0000 --ew6BAiZeqk4r7MaW Content-Type: text/plain; charset=us-ascii Content-Disposition: inline On Tue, Nov 27, 2012 at 08:34:13AM -0500, Richard Kuhns wrote: > On 11/27/12 00:24, YongHyeon PYUN wrote: > > On Mon, Nov 26, 2012 at 10:13:47AM -0500, Richard Kuhns wrote: > >> On 11/21/12 21:08, YongHyeon PYUN wrote: > >>> 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. > >>> > >> > >> There's progress! With your latest patch using brgphy.c, if_bge.c, and > >> if_bgereg.h from head I'm now seeing the bge0 interface. Unfortunately, the > >> moment I try to configure it the box locks up completely; it won't even toggle > >> the caps lock LED. > >> > >> Booting single user and running ifconfig shows: > >> > >> bge0: flags=8802 metric 0 mtu 1500 > >> options=8009b > >> ether a8:20:66:11:3b:d6 > >> nd6 options=21 > >> media: Ethernet autoselect (1000baseT ) > >> status: active > >> > >> I did a verbose boot; here's the part that seems to be relevant to bge0: > >> > >> bge0: mem > >> 0xa0400000-0xa040ffff,0xa0410000-0xa041ffff irq 16 at device 0.0 on pci1 > >> bge0: CHIP ID 0x10110142; ASIC REV 0x10110; CHIP REV 0x101101; PCI-E > > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ > > > > All these information are garbage which indicates a bug in the diff. > > > >> miibus0: on bge0 > >> brgphy0: PHY 1 on miibus0 > >> brgphy0: OUI 0x001be9, model 0x0024, rev. 1 > >> brgphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, 1000baseT, > >> 1000baseT-master, 1000baseT-FDX, 1000baseT-FDX-master, auto, auto-flow > >> bge0: bpf attached > >> bge0: Ethernet address: a8:20:66:11:3b:d6 > >> ioapic0: routing intpin 16 (PCI IRQ 16) to lapic 0 vector 61 > >> > >> I greatly appreciate your efforts. I'm sorry for the delay getting back with > >> you, but we had a busy Thanksgiving weekend. > >> > > > > Try again with attached bge.57766.diff3. > > Thanks for testing! > > > > I don't think the patch actually got attached :-( Oops, attached. --ew6BAiZeqk4r7MaW Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename="bge.57766.diff3" Index: sys/dev/bge/if_bgereg.h =================================================================== --- sys/dev/bge/if_bgereg.h (revision 243552) +++ 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 243552) +++ 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; @@ -2657,7 +2661,9 @@ bge_probe(device_t dev) BGE_PCI_GEN2_PRODID_ASICREV, 4); break; case BCOM_DEVICEID_BCM57761: + case BCOM_DEVICEID_BCM57762: case BCOM_DEVICEID_BCM57765: + case BCOM_DEVICEID_BCM57766: case BCOM_DEVICEID_BCM57781: case BCOM_DEVICEID_BCM57785: case BCOM_DEVICEID_BCM57791: @@ -3258,7 +3264,9 @@ bge_attach(device_t dev) BGE_PCI_GEN2_PRODID_ASICREV, 4); break; case BCOM_DEVICEID_BCM57761: + case BCOM_DEVICEID_BCM57762: case BCOM_DEVICEID_BCM57765: + case BCOM_DEVICEID_BCM57766: case BCOM_DEVICEID_BCM57781: case BCOM_DEVICEID_BCM57785: case BCOM_DEVICEID_BCM57791: @@ -3321,10 +3329,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 +3749,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 || --ew6BAiZeqk4r7MaW--