aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/e1000
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 /drivers/net/e1000
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>
Diffstat (limited to 'drivers/net/e1000')
-rw-r--r--drivers/net/e1000/e1000_main.c60
1 files changed, 33 insertions, 27 deletions
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};