diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2008-01-30 08:30:15 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-01-30 08:30:15 -0500 |
commit | 60e233172eabdd1f831bd48631b9626ce2279d9b (patch) | |
tree | 83e45dc7396b03fddf72f75f050e306d9d4e244f /drivers/net/e1000/e1000_main.c | |
parent | 44c45eb911845ec58fc3e26cc8994ba868ea2572 (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/e1000_main.c')
-rw-r--r-- | drivers/net/e1000/e1000_main.c | 60 |
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 | |||
50 | static struct pci_device_id e1000_pci_tbl[] = { | 56 | static 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), | 82 | PCIE( INTEL_E1000_ETHERNET_DEVICE(0x1049)) |
77 | INTEL_E1000_ETHERNET_DEVICE(0x104A), | 83 | PCIE( INTEL_E1000_ETHERNET_DEVICE(0x104A)) |
78 | INTEL_E1000_ETHERNET_DEVICE(0x104B), | 84 | PCIE( INTEL_E1000_ETHERNET_DEVICE(0x104B)) |
79 | INTEL_E1000_ETHERNET_DEVICE(0x104C), | 85 | PCIE( INTEL_E1000_ETHERNET_DEVICE(0x104C)) |
80 | INTEL_E1000_ETHERNET_DEVICE(0x104D), | 86 | PCIE( INTEL_E1000_ETHERNET_DEVICE(0x104D)) |
81 | INTEL_E1000_ETHERNET_DEVICE(0x105E), | 87 | PCIE( INTEL_E1000_ETHERNET_DEVICE(0x105E)) |
82 | INTEL_E1000_ETHERNET_DEVICE(0x105F), | 88 | PCIE( INTEL_E1000_ETHERNET_DEVICE(0x105F)) |
83 | INTEL_E1000_ETHERNET_DEVICE(0x1060), | 89 | PCIE( 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), | 98 | PCIE( INTEL_E1000_ETHERNET_DEVICE(0x107D)) |
93 | INTEL_E1000_ETHERNET_DEVICE(0x107E), | 99 | PCIE( INTEL_E1000_ETHERNET_DEVICE(0x107E)) |
94 | INTEL_E1000_ETHERNET_DEVICE(0x107F), | 100 | PCIE( INTEL_E1000_ETHERNET_DEVICE(0x107F)) |
95 | INTEL_E1000_ETHERNET_DEVICE(0x108A), | 101 | INTEL_E1000_ETHERNET_DEVICE(0x108A), |
96 | INTEL_E1000_ETHERNET_DEVICE(0x108B), | 102 | PCIE( INTEL_E1000_ETHERNET_DEVICE(0x108B)) |
97 | INTEL_E1000_ETHERNET_DEVICE(0x108C), | 103 | PCIE( INTEL_E1000_ETHERNET_DEVICE(0x108C)) |
98 | INTEL_E1000_ETHERNET_DEVICE(0x1096), | 104 | PCIE( INTEL_E1000_ETHERNET_DEVICE(0x1096)) |
99 | INTEL_E1000_ETHERNET_DEVICE(0x1098), | 105 | PCIE( INTEL_E1000_ETHERNET_DEVICE(0x1098)) |
100 | INTEL_E1000_ETHERNET_DEVICE(0x1099), | 106 | INTEL_E1000_ETHERNET_DEVICE(0x1099), |
101 | INTEL_E1000_ETHERNET_DEVICE(0x109A), | 107 | PCIE( INTEL_E1000_ETHERNET_DEVICE(0x109A)) |
102 | INTEL_E1000_ETHERNET_DEVICE(0x10A4), | 108 | PCIE( INTEL_E1000_ETHERNET_DEVICE(0x10A4)) |
103 | INTEL_E1000_ETHERNET_DEVICE(0x10A5), | 109 | PCIE( INTEL_E1000_ETHERNET_DEVICE(0x10A5)) |
104 | INTEL_E1000_ETHERNET_DEVICE(0x10B5), | 110 | INTEL_E1000_ETHERNET_DEVICE(0x10B5), |
105 | INTEL_E1000_ETHERNET_DEVICE(0x10B9), | 111 | PCIE( INTEL_E1000_ETHERNET_DEVICE(0x10B9)) |
106 | INTEL_E1000_ETHERNET_DEVICE(0x10BA), | 112 | PCIE( INTEL_E1000_ETHERNET_DEVICE(0x10BA)) |
107 | INTEL_E1000_ETHERNET_DEVICE(0x10BB), | 113 | PCIE( INTEL_E1000_ETHERNET_DEVICE(0x10BB)) |
108 | INTEL_E1000_ETHERNET_DEVICE(0x10BC), | 114 | PCIE( INTEL_E1000_ETHERNET_DEVICE(0x10BC)) |
109 | INTEL_E1000_ETHERNET_DEVICE(0x10C4), | 115 | PCIE( INTEL_E1000_ETHERNET_DEVICE(0x10C4)) |
110 | INTEL_E1000_ETHERNET_DEVICE(0x10C5), | 116 | PCIE( INTEL_E1000_ETHERNET_DEVICE(0x10C5)) |
111 | INTEL_E1000_ETHERNET_DEVICE(0x10D5), | 117 | PCIE( INTEL_E1000_ETHERNET_DEVICE(0x10D5)) |
112 | INTEL_E1000_ETHERNET_DEVICE(0x10D9), | 118 | PCIE( INTEL_E1000_ETHERNET_DEVICE(0x10D9)) |
113 | INTEL_E1000_ETHERNET_DEVICE(0x10DA), | 119 | PCIE( INTEL_E1000_ETHERNET_DEVICE(0x10DA)) |
114 | /* required last entry */ | 120 | /* required last entry */ |
115 | {0,} | 121 | {0,} |
116 | }; | 122 | }; |