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 <[EMAIL PROTECTED]> 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 <[EMAIL PROTECTED]> Signed-off-by: Auke Kok <[EMAIL PROTECTED]> commit fc2307d00c15385fbdbb5928a8517e5f63c3d068 Author: Auke Kok <[EMAIL PROTECTED]> 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 <[EMAIL PROTECTED]> Backported to Debian's 2.6.18 by dann frazier <[EMAIL PROTECTED]> 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 */