From owner-freebsd-stable@FreeBSD.ORG Tue Nov 20 08:52:15 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 A7A484D9 for ; Tue, 20 Nov 2012 08:52:15 +0000 (UTC) (envelope-from pyunyh@gmail.com) Received: from mail-da0-f54.google.com (mail-da0-f54.google.com [209.85.210.54]) by mx1.freebsd.org (Postfix) with ESMTP id 720678FC13 for ; Tue, 20 Nov 2012 08:52:15 +0000 (UTC) Received: by mail-da0-f54.google.com with SMTP id n2so446059dad.13 for ; Tue, 20 Nov 2012 00:52:09 -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=WYc19umUf1FdUL6aMY5Rt71NaTiKGNkqALS9z4kzxtQ=; b=VbaLs2YVrFcN6AdF5oCoC2XNYpikNBEhr81d8v0mgtFyUiHC5sWvkThK/tbXMgI2Fw oiAsSghLx+Y7zfg3BhC+HwYuMusaUAOTHsFx1x14zjmBDQpwSdebtw1e2v3SrkSWVK1h jeVOWa9CZk5NkwyhBkq+NzqhicOrhCjsUqVKWQINJcnTJ/gYP/okFBntaaWdFaBTUlzJ C7u8c5hbHLbMdQoYy4mZ/Np3F507hVvD/Pl0Sj3lw3SgFCr9LNf6x0edJSzOw2wMfpsB RfnU4sKx+X8mqi1Mqx6UaON2mzsZBvZU4RKwjUVlHJq0QRW9LCn/FZCcMupb4PNIhbeP aClA== Received: by 10.68.204.103 with SMTP id kx7mr41346201pbc.33.1353401528962; Tue, 20 Nov 2012 00:52:08 -0800 (PST) Received: from pyunyh@gmail.com (lpe4.p59-icn.cdngp.net. [114.111.62.249]) by mx.google.com with ESMTPS id c5sm1656339pav.33.2012.11.20.00.52.05 (version=TLSv1/SSLv3 cipher=OTHER); Tue, 20 Nov 2012 00:52:07 -0800 (PST) Received: by pyunyh@gmail.com (sSMTP sendmail emulation); Tue, 20 Nov 2012 17:52:00 +0900 From: YongHyeon PYUN Date: Tue, 20 Nov 2012 17:52:00 +0900 To: Richard Kuhns Subject: Re: bge on the new Mac Mini Message-ID: <20121120085200.GB1778@michelle.cdnetworks.com> References: <50A65BFC.7030406@wintek.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="6c2NcOVqGQ03X4Wi" Content-Disposition: inline In-Reply-To: <50A65BFC.7030406@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: Tue, 20 Nov 2012 08:52:15 -0000 --6c2NcOVqGQ03X4Wi Content-Type: text/plain; charset=us-ascii Content-Disposition: inline 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. --6c2NcOVqGQ03X4Wi Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="bge.57766.diff" Index: sys/dev/bge/if_bgereg.h =================================================================== --- sys/dev/bge/if_bgereg.h (revision 243255) +++ 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 */ @@ -2484,6 +2485,7 @@ struct bge_status_block { #define BCOM_DEVICEID_BCM57760 0x1690 #define BCOM_DEVICEID_BCM57761 0x16B0 #define BCOM_DEVICEID_BCM57765 0x16B4 +#define BCOM_DEVICEID_BCM57766 0x1682 #define BCOM_DEVICEID_BCM57780 0x1692 #define BCOM_DEVICEID_BCM57781 0x16B1 #define BCOM_DEVICEID_BCM57785 0x16B5 @@ -2961,6 +2963,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 243255) +++ sys/dev/bge/if_bge.c (working copy) @@ -217,6 +217,7 @@ static const struct bge_type { { BCOM_VENDORID, BCOM_DEVICEID_BCM57760 }, { BCOM_VENDORID, BCOM_DEVICEID_BCM57761 }, { 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 }, @@ -362,6 +363,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 +2245,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 +2660,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 +3324,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 +3744,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 || --6c2NcOVqGQ03X4Wi--