aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2008-01-30 08:30:15 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2008-01-30 08:30:15 -0500
commit60e233172eabdd1f831bd48631b9626ce2279d9b (patch)
tree83e45dc7396b03fddf72f75f050e306d9d4e244f
parent44c45eb911845ec58fc3e26cc8994ba868ea2572 (diff)
[net] Gracefully handle shared e1000/1000e driver PCI ID's
Both the old e1000 driver and the new e1000e driver can drive some PCI-Express e1000 cards, and we should avoid ambiguity about which driver will pick up the support for those cards when both drivers are enabled. This solves the problem by having the old driver support those cards if the new driver isn't configured, but otherwise ceding support for PCI Express versions of the e1000 chipset to the newer driver. Thus allowing both legacy configurations where only the old driver is active (and handles all chips it knows about) and the new configuration with the new driver handling the more modern PCIE variants. Acked-by: Jeff Garzik <jeff@garzik.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r--drivers/net/Kconfig5
-rw-r--r--drivers/net/e1000/e1000_main.c60
2 files changed, 37 insertions, 28 deletions
diff --git a/drivers/net/Kconfig b/drivers/net/Kconfig
index 5a2d1dd487f6..6c575403bd39 100644
--- a/drivers/net/Kconfig
+++ b/drivers/net/Kconfig
@@ -1992,7 +1992,7 @@ config E1000_DISABLE_PACKET_SPLIT
1992 1992
1993config E1000E 1993config E1000E
1994 tristate "Intel(R) PRO/1000 PCI-Express Gigabit Ethernet support" 1994 tristate "Intel(R) PRO/1000 PCI-Express Gigabit Ethernet support"
1995 depends on PCI && EXPERIMENTAL 1995 depends on PCI
1996 ---help--- 1996 ---help---
1997 This driver supports the PCI-Express Intel(R) PRO/1000 gigabit 1997 This driver supports the PCI-Express Intel(R) PRO/1000 gigabit
1998 ethernet family of adapters. For PCI or PCI-X e1000 adapters, 1998 ethernet family of adapters. For PCI or PCI-X e1000 adapters,
@@ -2009,6 +2009,9 @@ config E1000E
2009 To compile this driver as a module, choose M here. The module 2009 To compile this driver as a module, choose M here. The module
2010 will be called e1000e. 2010 will be called e1000e.
2011 2011
2012config E1000E_ENABLED
2013 def_bool E1000E != n
2014
2012config IP1000 2015config IP1000
2013 tristate "IP1000 Gigabit Ethernet support" 2016 tristate "IP1000 Gigabit Ethernet support"
2014 depends on PCI && EXPERIMENTAL 2017 depends on PCI && EXPERIMENTAL
diff --git a/drivers/net/e1000/e1000_main.c b/drivers/net/e1000/e1000_main.c
index 3111af6cdc8a..8c87940a9ce8 100644
--- a/drivers/net/e1000/e1000_main.c
+++ b/drivers/net/e1000/e1000_main.c
@@ -47,6 +47,12 @@ static const char e1000_copyright[] = "Copyright (c) 1999-2006 Intel Corporation
47 * Macro expands to... 47 * Macro expands to...
48 * {PCI_DEVICE(PCI_VENDOR_ID_INTEL, device_id)} 48 * {PCI_DEVICE(PCI_VENDOR_ID_INTEL, device_id)}
49 */ 49 */
50#ifdef CONFIG_E1000E_ENABLED
51 #define PCIE(x)
52#else
53 #define PCIE(x) x,
54#endif
55
50static struct pci_device_id e1000_pci_tbl[] = { 56static struct pci_device_id e1000_pci_tbl[] = {
51 INTEL_E1000_ETHERNET_DEVICE(0x1000), 57 INTEL_E1000_ETHERNET_DEVICE(0x1000),
52 INTEL_E1000_ETHERNET_DEVICE(0x1001), 58 INTEL_E1000_ETHERNET_DEVICE(0x1001),
@@ -73,14 +79,14 @@ static struct pci_device_id e1000_pci_tbl[] = {
73 INTEL_E1000_ETHERNET_DEVICE(0x1026), 79 INTEL_E1000_ETHERNET_DEVICE(0x1026),
74 INTEL_E1000_ETHERNET_DEVICE(0x1027), 80 INTEL_E1000_ETHERNET_DEVICE(0x1027),
75 INTEL_E1000_ETHERNET_DEVICE(0x1028), 81 INTEL_E1000_ETHERNET_DEVICE(0x1028),
76 INTEL_E1000_ETHERNET_DEVICE(0x1049), 82PCIE( INTEL_E1000_ETHERNET_DEVICE(0x1049))
77 INTEL_E1000_ETHERNET_DEVICE(0x104A), 83PCIE( INTEL_E1000_ETHERNET_DEVICE(0x104A))
78 INTEL_E1000_ETHERNET_DEVICE(0x104B), 84PCIE( INTEL_E1000_ETHERNET_DEVICE(0x104B))
79 INTEL_E1000_ETHERNET_DEVICE(0x104C), 85PCIE( INTEL_E1000_ETHERNET_DEVICE(0x104C))
80 INTEL_E1000_ETHERNET_DEVICE(0x104D), 86PCIE( INTEL_E1000_ETHERNET_DEVICE(0x104D))
81 INTEL_E1000_ETHERNET_DEVICE(0x105E), 87PCIE( INTEL_E1000_ETHERNET_DEVICE(0x105E))
82 INTEL_E1000_ETHERNET_DEVICE(0x105F), 88PCIE( INTEL_E1000_ETHERNET_DEVICE(0x105F))
83 INTEL_E1000_ETHERNET_DEVICE(0x1060), 89PCIE( INTEL_E1000_ETHERNET_DEVICE(0x1060))
84 INTEL_E1000_ETHERNET_DEVICE(0x1075), 90 INTEL_E1000_ETHERNET_DEVICE(0x1075),
85 INTEL_E1000_ETHERNET_DEVICE(0x1076), 91 INTEL_E1000_ETHERNET_DEVICE(0x1076),
86 INTEL_E1000_ETHERNET_DEVICE(0x1077), 92 INTEL_E1000_ETHERNET_DEVICE(0x1077),
@@ -89,28 +95,28 @@ static struct pci_device_id e1000_pci_tbl[] = {
89 INTEL_E1000_ETHERNET_DEVICE(0x107A), 95 INTEL_E1000_ETHERNET_DEVICE(0x107A),
90 INTEL_E1000_ETHERNET_DEVICE(0x107B), 96 INTEL_E1000_ETHERNET_DEVICE(0x107B),
91 INTEL_E1000_ETHERNET_DEVICE(0x107C), 97 INTEL_E1000_ETHERNET_DEVICE(0x107C),
92 INTEL_E1000_ETHERNET_DEVICE(0x107D), 98PCIE( INTEL_E1000_ETHERNET_DEVICE(0x107D))
93 INTEL_E1000_ETHERNET_DEVICE(0x107E), 99PCIE( INTEL_E1000_ETHERNET_DEVICE(0x107E))
94 INTEL_E1000_ETHERNET_DEVICE(0x107F), 100PCIE( INTEL_E1000_ETHERNET_DEVICE(0x107F))
95 INTEL_E1000_ETHERNET_DEVICE(0x108A), 101 INTEL_E1000_ETHERNET_DEVICE(0x108A),
96 INTEL_E1000_ETHERNET_DEVICE(0x108B), 102PCIE( INTEL_E1000_ETHERNET_DEVICE(0x108B))
97 INTEL_E1000_ETHERNET_DEVICE(0x108C), 103PCIE( INTEL_E1000_ETHERNET_DEVICE(0x108C))
98 INTEL_E1000_ETHERNET_DEVICE(0x1096), 104PCIE( INTEL_E1000_ETHERNET_DEVICE(0x1096))
99 INTEL_E1000_ETHERNET_DEVICE(0x1098), 105PCIE( INTEL_E1000_ETHERNET_DEVICE(0x1098))
100 INTEL_E1000_ETHERNET_DEVICE(0x1099), 106 INTEL_E1000_ETHERNET_DEVICE(0x1099),
101 INTEL_E1000_ETHERNET_DEVICE(0x109A), 107PCIE( INTEL_E1000_ETHERNET_DEVICE(0x109A))
102 INTEL_E1000_ETHERNET_DEVICE(0x10A4), 108PCIE( INTEL_E1000_ETHERNET_DEVICE(0x10A4))
103 INTEL_E1000_ETHERNET_DEVICE(0x10A5), 109PCIE( INTEL_E1000_ETHERNET_DEVICE(0x10A5))
104 INTEL_E1000_ETHERNET_DEVICE(0x10B5), 110 INTEL_E1000_ETHERNET_DEVICE(0x10B5),
105 INTEL_E1000_ETHERNET_DEVICE(0x10B9), 111PCIE( INTEL_E1000_ETHERNET_DEVICE(0x10B9))
106 INTEL_E1000_ETHERNET_DEVICE(0x10BA), 112PCIE( INTEL_E1000_ETHERNET_DEVICE(0x10BA))
107 INTEL_E1000_ETHERNET_DEVICE(0x10BB), 113PCIE( INTEL_E1000_ETHERNET_DEVICE(0x10BB))
108 INTEL_E1000_ETHERNET_DEVICE(0x10BC), 114PCIE( INTEL_E1000_ETHERNET_DEVICE(0x10BC))
109 INTEL_E1000_ETHERNET_DEVICE(0x10C4), 115PCIE( INTEL_E1000_ETHERNET_DEVICE(0x10C4))
110 INTEL_E1000_ETHERNET_DEVICE(0x10C5), 116PCIE( INTEL_E1000_ETHERNET_DEVICE(0x10C5))
111 INTEL_E1000_ETHERNET_DEVICE(0x10D5), 117PCIE( INTEL_E1000_ETHERNET_DEVICE(0x10D5))
112 INTEL_E1000_ETHERNET_DEVICE(0x10D9), 118PCIE( INTEL_E1000_ETHERNET_DEVICE(0x10D9))
113 INTEL_E1000_ETHERNET_DEVICE(0x10DA), 119PCIE( INTEL_E1000_ETHERNET_DEVICE(0x10DA))
114 /* required last entry */ 120 /* required last entry */
115 {0,} 121 {0,}
116}; 122};