Subject: kern/29196: support for Broadcom BCM4401-B0 ethernet
To: None <kern-bug-people@netbsd.org, gnats-admin@netbsd.org,>
From: None <kre@munnari.OZ.AU>
List: netbsd-bugs
Date: 02/02/2005 08:52:00
>Number:         29196
>Category:       kern
>Synopsis:       support for Broadcom BCM4401-B0 ethernet
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    kern-bug-people
>State:          open
>Class:          change-request
>Submitter-Id:   net
>Arrival-Date:   Wed Feb 02 08:52:00 +0000 2005
>Originator:     Robert Elz
>Release:        NetBSD 2.99.15
>Organization:
	Prince of Songkla University
>Environment:
	(This is from the system running send-pr, and is irrelevant)
System: NetBSD delta.noi.kre.to 2.0.1 NetBSD 2.0.1 (DELTA-1.11-20050129) #1: Sat Jan 29 15:31:14 ICT 2005 kre@lilac.noi.kre.to:/usr/obj/2.0/kernels/DELTA i386
Architecture: i386
Machine: i386
>Description:
	NetBSD has no support for the Broadcom BCM4401-B0 chip/card
	found in Compaq (HP) nx5000 laptops (maybe other places too).
	It seems to be functionally identical to the BCM4401 which is
	supported by the bce driver.
>How-To-Repeat:
	Try booting NetBSD on a nx5000 (or simply trust me...)
>Fix:
	The patch below is all that is required to support this card/chip.
	Note: there are no functional code changes, all this does is to
	add the device ID to the pcidevs file, and knowledge of it to the
	bce driver table of supported devices.

	With this change, the chip was recognised, and worked fine
	(though with only limited testing so far).

Caution:
	I haven't included patches for the generated files, pcidevs.h
	or pcidevs_data.h - those you'll need to update in the standard
	way after patching pcidevs.

	The name "BCM4401-B0" comes from the e-mail message mentioned
	below - I have no independent verification that it is correct.

Request:
	This looks to be the kind of patch that should be pulled up to
	the netbsd-2 branch, so it would be appreciated if whoever does
	the patch could send in a pullup request.

Credit:
	The inspiration for this patch came from an e-mail message on
	a FreeBSD list/newsgroup from Yoshinobu Inoue (Fujitsu, Japan).


Index: if_bce.c
===================================================================
RCS file: /cvsroot/NetBSD/src/sys/dev/pci/if_bce.c,v
retrieving revision 1.7
diff -u -r1.7 if_bce.c
--- if_bce.c	30 Jan 2005 17:38:49 -0000	1.7
+++ if_bce.c	1 Feb 2005 16:03:04 -0000
@@ -225,6 +225,11 @@
 		"Broadcom BCM4401 10/100 Ethernet"
 	},
 	{
+		PCI_VENDOR_BROADCOM,
+		PCI_PRODUCT_BROADCOM_BCM4401_B0,
+		"Broadcom BCM4401-B0 10/100 Ethernet"
+	},
+	{
 		0,
 		0,
 		NULL
Index: pcidevs
===================================================================
RCS file: /cvsroot/NetBSD/src/sys/dev/pci/pcidevs,v
retrieving revision 1.690
diff -u -r1.690 pcidevs
--- pcidevs	27 Jan 2005 21:48:15 -0000	1.690
+++ pcidevs	1 Feb 2005 16:04:51 -0000
@@ -1148,6 +1148,7 @@
 product BROADCOM BCM5750M	0x167c	BCM5750M 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
 product BROADCOM BCM5901	0x170d	BCM5901 10/100 Ethernet
 product BROADCOM BCM5901A2	0x170e	BCM5901A 10/100 Ethernet
 product BROADCOM BCM4401	0x4401	BCM4401 10/100 Ethernet