[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: