Jerone Young | 1 Mar 01:14 2010

[HARDY] [SRU] Add support for Broadcom Ethernet 5716 & 5716S

Impact:
	Many servers shipped last year have Broadcom Ethernet 5716 & 5716S
cards. They currently are not functional with 8.04.

https://bugs.launchpad.net/ubuntu/hardy/+source/linux/+bug/435185

Fix:
	Two patches attached to this email add PCI IDs to the driver. Patches
based on upstream stable commits.

Testcase:
	Ethernet works after patches are applied.

Based on upstream commit, though modification made for 2.6.26:
http://git.kernel.org/?p=linux/kernel/git/stable/linux-2.6.27.y.git;a=commit;h=7bb0a04fcd610e5db59690332b2a46b6068c8bc3

Adding support for BCM5716

Signed-off-by: Jerone Young <jerone.young <at> canonical.com>

diff --git a/drivers/net/bnx2.c b/drivers/net/bnx2.c
index e9cfb02..989d4b6 100644
--- a/drivers/net/bnx2.c
+++ b/drivers/net/bnx2.c
 <at>  <at>  -87,6 +87,7  <at>  <at>  typedef enum {
 	BCM5708S,
 	BCM5709,
 	BCM5709S,
+	BCM5716,
 } board_t;

 /* indexed by board_t, above */
 <at>  <at>  -102,9 +103,10  <at>  <at>  static struct {
 	{ "Broadcom NetXtreme II BCM5708 1000Base-SX" },
 	{ "Broadcom NetXtreme II BCM5709 1000Base-T" },
 	{ "Broadcom NetXtreme II BCM5709 1000Base-SX" },
+	{ "Broadcom NetXtreme II BCM5716 1000Base-T" },
 	};

 static struct pci_device_id bnx2_pci_tbl[] = {
 	{ PCI_VENDOR_ID_BROADCOM, PCI_DEVICE_ID_NX2_5706,
 	  PCI_VENDOR_ID_HP, 0x3101, 0, 0, NC370T },
 	{ PCI_VENDOR_ID_BROADCOM, PCI_DEVICE_ID_NX2_5706,
 <at>  <at>  -123,6 +125,8  <at>  <at>  static struct pci_device_id bnx2_pci_tbl[] = {
 	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, BCM5709 },
 	{ PCI_VENDOR_ID_BROADCOM, PCI_DEVICE_ID_NX2_5709S,
 	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, BCM5709S },
+	{ PCI_VENDOR_ID_BROADCOM, 0x163b,
+	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, BCM5716 },
 	{ 0, }
 };

Based on upstream commit, though modification made for 2.6.26:
http://git.kernel.org/?p=linux/kernel/git/stable/linux-2.6.29.y.git;a=commit;h=1caacecb7cb2b72e798f06a32b5061075cf397fa

Add support for BCM5716S

Signed-off-by: Jerone Young <jerone.young <at> canonical.com>

diff --git a/drivers/net/bnx2.c b/drivers/net/bnx2.c
index 51b163a..49ebb50 100644
--- a/drivers/net/bnx2.c
+++ b/drivers/net/bnx2.c
 <at>  <at>  -89,6 +89,7  <at>  <at>  typedef enum {
 	BCM5709,
 	BCM5709S,
 	BCM5716,
+	BCM5716S,
 } board_t;

 /* indexed by board_t, above */
 <at>  <at>  -105,6 +106,7  <at>  <at>  static struct {
 	{ "Broadcom NetXtreme II BCM5709 1000Base-T" },
 	{ "Broadcom NetXtreme II BCM5709 1000Base-SX" },
 	{ "Broadcom NetXtreme II BCM5716 1000Base-T" },
+	{ "Broadcom NetXtreme II BCM5716 1000Base-SX" },
 	};

 static struct pci_device_id bnx2_pci_tbl[] = { 
 <at>  <at>  -128,6 +130,8  <at>  <at>  static DEFINE_PCI_DEVICE_TABLE(bnx2_pci_tbl) = {
 	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, BCM5709S },
 	{ PCI_VENDOR_ID_BROADCOM, 0x163b,
 	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, BCM5716 },
+	{ PCI_VENDOR_ID_BROADCOM, 0x163c,
+	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, BCM5716 },
 	{ 0, }
 };

Based on upstream commit, though modification made for 2.6.26:
http://git.kernel.org/?p=linux/kernel/git/stable/linux-2.6.29.y.git;a=commit;h=1caacecb7cb2b72e798f06a32b5061075cf397fa

Add support for BCM5716S

Signed-off-by: Jerone Young <jerone.young <at> canonical.com>

diff --git a/drivers/net/bnx2.c b/drivers/net/bnx2.c
index 51b163a..49ebb50 100644
--- a/drivers/net/bnx2.c
+++ b/drivers/net/bnx2.c
 <at>  <at>  -89,6 +89,7  <at>  <at>  typedef enum {
 	BCM5709,
 	BCM5709S,
 	BCM5716,
+	BCM5716S,
 } board_t;

 /* indexed by board_t, above */
 <at>  <at>  -105,6 +106,7  <at>  <at>  static struct {
 	{ "Broadcom NetXtreme II BCM5709 1000Base-T" },
 	{ "Broadcom NetXtreme II BCM5709 1000Base-SX" },
 	{ "Broadcom NetXtreme II BCM5716 1000Base-T" },
+	{ "Broadcom NetXtreme II BCM5716 1000Base-SX" },
 	};

 static struct pci_device_id bnx2_pci_tbl[] = { 
 <at>  <at>  -128,6 +130,8  <at>  <at>  static DEFINE_PCI_DEVICE_TABLE(bnx2_pci_tbl) = {
 	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, BCM5709S },
 	{ PCI_VENDOR_ID_BROADCOM, 0x163b,
 	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, BCM5716 },
+	{ PCI_VENDOR_ID_BROADCOM, 0x163c,
+	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, BCM5716 },
 	{ 0, }
 };


Gmane