Subject: kern/31028: bge driver doesn't recognize GBit-Ethernet chip used in IBM/Levono T43p
To: None <kern-bug-people@netbsd.org, gnats-admin@netbsd.org,>
From: None <ks@ub.uni-mainz.de>
List: netbsd-bugs
Date: 08/21/2005 16:33:00
>Number:         31028
>Category:       kern
>Synopsis:       bge driver doesn't recognize GBit-Ethernet chip used in IBM/Levono T43p
>Confidential:   no
>Severity:       critical
>Priority:       medium
>Responsible:    kern-bug-people
>State:          open
>Class:          change-request
>Submitter-Id:   net
>Arrival-Date:   Sun Aug 21 16:33:00 +0000 2005
>Originator:     Kurt Schreiner
>Release:        -current ( 3.99.8) on i386
>Organization:
Johannes Gutenberg-Universitaet Mainz
>Environment:
NetBSD ipaddi-bsd 3.99.8 NetBSD 3.99.8 (PADDI_BSD_ACPI) #0: Fri Aug 19 22:40:23 MEST 2005  ks@ipaddi-bsd:/u/NetBSD/arch/i386/obj/sys/arch/i386/compile/PADDI_BSD_ACPI i386

>Description:
The bge driver doesn't recognize the Broadcom BCM5751M GBit Ethernet
chip and the corresponding phy used in (at least) my IBM T43p. 
>How-To-Repeat:
Use some kernel w/o the patches provided below ;-)
>Fix:
Apply the following patches. I'm using the note book with these patches for some time now without problems connecting to some NoName 10/100Mbit switches and an old 10MBit hub. I've not tested Gbit-connectivity yet, but will try tomorrow at work connecting to one of the Cisco 35xx in our server room.

diff -rp -x pcidevs.h -x pcidevs_data.h /u/NetBSD/src/sys/dev/pci/if_bge.c ./if_bge.c
*** /u/NetBSD/src/sys/dev/pci/if_bge.c  Mon Jun 20 19:26:19 2005
--- ./if_bge.c  Fri Jul  1 22:12:48 2005
*************** static const struct bge_revision {
*** 1942,1947 ****
--- 1942,1951 ----
          BGE_QUIRK_ONLY_PHY_1|BGE_QUIRK_5705_CORE,
          "BCM5750 A1" },
  
+       { BGE_CHIPID_BCM5751_A1,
+         BGE_QUIRK_ONLY_PHY_1|BGE_QUIRK_5705_CORE,
+         "BCM5751 A1" },
+ 
        { 0, 0, NULL }
  };
  
*************** static const struct bge_product {
*** 2106,2111 ****
--- 2110,2120 ----
          "Broadcom BCM5751 Gigabit Ethernet",
          },
  
+       { PCI_VENDOR_BROADCOM,
+         PCI_PRODUCT_BROADCOM_BCM5751M,
+         "Broadcom BCM5751M Gigabit Ethernet",
+         },
+ 
        { PCI_VENDOR_BROADCOM,
          PCI_PRODUCT_BROADCOM_BCM5782,
          "Broadcom BCM5782 Gigabit Ethernet",
diff -rp -x pcidevs.h -x pcidevs_data.h /u/NetBSD/src/sys/dev/pci/if_bgereg.h ./if_bgereg.h
*** /u/NetBSD/src/sys/dev/pci/if_bgereg.h       Mon Feb 28 11:33:43 2005
--- ./if_bgereg.h       Sat Jun 18 12:29:57 2005
***************
*** 249,254 ****
--- 249,255 ----
  #define BGE_CHIPID_BCM5705_A3         0x30030000
  #define BGE_CHIPID_BCM5750_A0         0x40000000
  #define BGE_CHIPID_BCM5750_A1         0x40010000
+ #define BGE_CHIPID_BCM5751_A1         0x41010000
  
  /* shorthand one */
  #define BGE_ASICREV(x)                  ((x) >> 28)
diff -rp -x pcidevs.h -x pcidevs_data.h /u/NetBSD/src/sys/dev/pci/pcidevs ./pcidevs
*** /u/NetBSD/src/sys/dev/pci/pcidevs   Sat Jul 30 21:35:06 2005
--- ./pcidevs   Sun Aug 21 18:11:38 2005
*************** product BROADCOM BCM5721        0x1659  BCM5721 
*** 1180,1185 ****
--- 1180,1186 ----
  product BROADCOM BCM5750      0x1676  BCM5750 10/100/1000 Ethernet
  product BROADCOM BCM5751      0x1677  BCM5751 10/100/1000 Ethernet
  product BROADCOM BCM5750M     0x167c  BCM5750M 10/100/1000 Ethernet
+ product BROADCOM BCM5751M     0x167d  BCM5751M 10/100/1000 Ethernet
  product BROADCOM BCM5782      0x1696  BCM5782 10/100/1000 Ethernet
  product BROADCOM BCM5788      0x169c  BCM5788 10/100/1000 Ethernet
  product BROADCOM BCM4401_B0   0x170c  BCM4401-B0 10/100 Ethernet