Bug#466401: patch
Bruno,
I backported a couple of changsets to 2.6.18 that add support for
these cards. I did some light testing on a low profile model, and it
seems to work fine.
Since this is basically just adding IDs, its also pretty
straightforward to show a low risk of regressions - so, if this is all
that's necessary, we should be able to add support in etch's 2.6.18.
--
dann frazier
commit 5881cde8a38cab3b228a63516ab64f8d79acc4f5
Author: Jesse Brandeburg <jesse.brandeburg@intel.com>
Date: Thu Aug 31 14:27:47 2006 -0700
e1000: Add PCI ID 0x10a4 for our new 4-port PCI-Express device
Device 0x10a4 is a double 82571 on a single PCI-Express card and
has 4 gigabit capable ports.
Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
commit fc2307d00c15385fbdbb5928a8517e5f63c3d068
Author: Auke Kok <auke\-jan.h.kok@intel.com>
Date: Wed Nov 1 08:47:56 2006 -0800
e1000: New hardware support
Add support for a Low Profile quad-port PCI-E adapter and 2 variants
of the ICH8 systems' onboard NIC's.
Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
Backported to Debian's 2.6.18 by dann frazier <dannf@hp.com>
diff -urpN linux-source-2.6.18.orig/drivers/net/e1000/e1000_ethtool.c linux-source-2.6.18/drivers/net/e1000/e1000_ethtool.c
--- linux-source-2.6.18.orig/drivers/net/e1000/e1000_ethtool.c 2006-09-19 21:42:06.000000000 -0600
+++ linux-source-2.6.18/drivers/net/e1000/e1000_ethtool.c 2008-02-28 08:41:17.000000000 -0700
@@ -1676,6 +1676,8 @@ e1000_get_wol(struct net_device *netdev,
wol->wolopts = 0;
return;
+ case E1000_DEV_ID_82571EB_QUAD_COPPER:
+ case E1000_DEV_ID_82571EB_QUAD_COPPER_LOWPROFILE:
case E1000_DEV_ID_82546GB_QUAD_COPPER_KSP3:
/* device id 10B5 port-A supports wol */
if (!adapter->ksp3_port_a) {
diff -urpN linux-source-2.6.18.orig/drivers/net/e1000/e1000_hw.c linux-source-2.6.18/drivers/net/e1000/e1000_hw.c
--- linux-source-2.6.18.orig/drivers/net/e1000/e1000_hw.c 2006-09-19 21:42:06.000000000 -0600
+++ linux-source-2.6.18/drivers/net/e1000/e1000_hw.c 2008-02-28 08:41:17.000000000 -0700
@@ -387,6 +387,8 @@ e1000_set_mac_type(struct e1000_hw *hw)
case E1000_DEV_ID_82571EB_COPPER:
case E1000_DEV_ID_82571EB_FIBER:
case E1000_DEV_ID_82571EB_SERDES:
+ case E1000_DEV_ID_82571EB_QUAD_COPPER:
+ case E1000_DEV_ID_82571EB_QUAD_COPPER_LOWPROFILE:
hw->mac_type = e1000_82571;
break;
case E1000_DEV_ID_82572EI_COPPER:
@@ -410,6 +412,8 @@ e1000_set_mac_type(struct e1000_hw *hw)
case E1000_DEV_ID_ICH8_IGP_AMT:
case E1000_DEV_ID_ICH8_IGP_C:
case E1000_DEV_ID_ICH8_IFE:
+ case E1000_DEV_ID_ICH8_IFE_GT:
+ case E1000_DEV_ID_ICH8_IFE_G:
case E1000_DEV_ID_ICH8_IGP_M:
hw->mac_type = e1000_ich8lan;
break;
diff -urpN linux-source-2.6.18.orig/drivers/net/e1000/e1000_hw.h linux-source-2.6.18/drivers/net/e1000/e1000_hw.h
--- linux-source-2.6.18.orig/drivers/net/e1000/e1000_hw.h 2006-09-19 21:42:06.000000000 -0600
+++ linux-source-2.6.18/drivers/net/e1000/e1000_hw.h 2008-02-28 08:41:17.000000000 -0700
@@ -470,6 +470,8 @@ int32_t e1000_check_phy_reset_block(stru
#define E1000_DEV_ID_82571EB_COPPER 0x105E
#define E1000_DEV_ID_82571EB_FIBER 0x105F
#define E1000_DEV_ID_82571EB_SERDES 0x1060
+#define E1000_DEV_ID_82571EB_QUAD_COPPER 0x10A4
+#define E1000_DEV_ID_82571EB_QUAD_COPPER_LOWPROFILE 0x10BC
#define E1000_DEV_ID_82572EI_COPPER 0x107D
#define E1000_DEV_ID_82572EI_FIBER 0x107E
#define E1000_DEV_ID_82572EI_SERDES 0x107F
@@ -487,6 +489,8 @@ int32_t e1000_check_phy_reset_block(stru
#define E1000_DEV_ID_ICH8_IGP_AMT 0x104A
#define E1000_DEV_ID_ICH8_IGP_C 0x104B
#define E1000_DEV_ID_ICH8_IFE 0x104C
+#define E1000_DEV_ID_ICH8_IFE_GT 0x10C4
+#define E1000_DEV_ID_ICH8_IFE_G 0x10C5
#define E1000_DEV_ID_ICH8_IGP_M 0x104D
diff -urpN linux-source-2.6.18.orig/drivers/net/e1000/e1000_main.c linux-source-2.6.18/drivers/net/e1000/e1000_main.c
--- linux-source-2.6.18.orig/drivers/net/e1000/e1000_main.c 2008-02-10 10:48:46.000000000 -0700
+++ linux-source-2.6.18/drivers/net/e1000/e1000_main.c 2008-02-28 08:41:17.000000000 -0700
@@ -99,10 +99,14 @@ static struct pci_device_id e1000_pci_tb
INTEL_E1000_ETHERNET_DEVICE(0x1098),
INTEL_E1000_ETHERNET_DEVICE(0x1099),
INTEL_E1000_ETHERNET_DEVICE(0x109A),
+ INTEL_E1000_ETHERNET_DEVICE(0x10A4),
INTEL_E1000_ETHERNET_DEVICE(0x10B5),
INTEL_E1000_ETHERNET_DEVICE(0x10B9),
INTEL_E1000_ETHERNET_DEVICE(0x10BA),
INTEL_E1000_ETHERNET_DEVICE(0x10BB),
+ INTEL_E1000_ETHERNET_DEVICE(0x10BC),
+ INTEL_E1000_ETHERNET_DEVICE(0x10C4),
+ INTEL_E1000_ETHERNET_DEVICE(0x10C5),
/* required last entry */
{0,}
};
@@ -791,8 +795,10 @@ e1000_probe(struct pci_dev *pdev,
DPRINTK(PROBE, INFO, "PHY reset is blocked due to SOL/IDER session.\n");
/* if ksp3, indicate if it's port a being setup */
- if (pdev->device == E1000_DEV_ID_82546GB_QUAD_COPPER_KSP3 &&
- e1000_ksp3_port_a == 0)
+ if ((pdev->device == E1000_DEV_ID_82546GB_QUAD_COPPER_KSP3 ||
+ pdev->device == E1000_DEV_ID_82546GB_QUAD_COPPER_KSP3 ||
+ pdev->device == E1000_DEV_ID_82571EB_QUAD_COPPER_LOWPROFILE) &&
+ e1000_ksp3_port_a == 0))
adapter->ksp3_port_a = 1;
e1000_ksp3_port_a++;
/* Reset for multiple KP3 adapters */
Reply to: