diff options
Diffstat (limited to 'Documentation/networking/e1000.txt')
-rw-r--r-- | Documentation/networking/e1000.txt | 401 |
1 files changed, 401 insertions, 0 deletions
diff --git a/Documentation/networking/e1000.txt b/Documentation/networking/e1000.txt new file mode 100644 index 000000000000..2ebd4058d46d --- /dev/null +++ b/Documentation/networking/e1000.txt | |||
@@ -0,0 +1,401 @@ | |||
1 | Linux* Base Driver for the Intel(R) PRO/1000 Family of Adapters | ||
2 | =============================================================== | ||
3 | |||
4 | November 17, 2004 | ||
5 | |||
6 | |||
7 | Contents | ||
8 | ======== | ||
9 | |||
10 | - In This Release | ||
11 | - Identifying Your Adapter | ||
12 | - Command Line Parameters | ||
13 | - Speed and Duplex Configuration | ||
14 | - Additional Configurations | ||
15 | - Known Issues | ||
16 | - Support | ||
17 | |||
18 | |||
19 | In This Release | ||
20 | =============== | ||
21 | |||
22 | This file describes the Linux* Base Driver for the Intel(R) PRO/1000 Family | ||
23 | of Adapters, version 5.x.x. | ||
24 | |||
25 | For questions related to hardware requirements, refer to the documentation | ||
26 | supplied with your Intel PRO/1000 adapter. All hardware requirements listed | ||
27 | apply to use with Linux. | ||
28 | |||
29 | Native VLANs are now available with supported kernels. | ||
30 | |||
31 | Identifying Your Adapter | ||
32 | ======================== | ||
33 | |||
34 | For more information on how to identify your adapter, go to the Adapter & | ||
35 | Driver ID Guide at: | ||
36 | |||
37 | http://support.intel.com/support/network/adapter/pro100/21397.htm | ||
38 | |||
39 | For the latest Intel network drivers for Linux, refer to the following | ||
40 | website. In the search field, enter your adapter name or type, or use the | ||
41 | networking link on the left to search for your adapter: | ||
42 | |||
43 | http://downloadfinder.intel.com/scripts-df/support_intel.asp | ||
44 | |||
45 | Command Line Parameters | ||
46 | ======================= | ||
47 | |||
48 | If the driver is built as a module, the following optional parameters are | ||
49 | used by entering them on the command line with the modprobe or insmod command | ||
50 | using this syntax: | ||
51 | |||
52 | modprobe e1000 [<option>=<VAL1>,<VAL2>,...] | ||
53 | |||
54 | insmod e1000 [<option>=<VAL1>,<VAL2>,...] | ||
55 | |||
56 | For example, with two PRO/1000 PCI adapters, entering: | ||
57 | |||
58 | insmod e1000 TxDescriptors=80,128 | ||
59 | |||
60 | loads the e1000 driver with 80 TX descriptors for the first adapter and 128 TX | ||
61 | descriptors for the second adapter. | ||
62 | |||
63 | The default value for each parameter is generally the recommended setting, | ||
64 | unless otherwise noted. Also, if the driver is statically built into the | ||
65 | kernel, the driver is loaded with the default values for all the parameters. | ||
66 | Ethtool can be used to change some of the parameters at runtime. | ||
67 | |||
68 | NOTES: For more information about the AutoNeg, Duplex, and Speed | ||
69 | parameters, see the "Speed and Duplex Configuration" section in | ||
70 | this document. | ||
71 | |||
72 | For more information about the InterruptThrottleRate, RxIntDelay, | ||
73 | TxIntDelay, RxAbsIntDelay, and TxAbsIntDelay parameters, see the | ||
74 | application note at: | ||
75 | http://www.intel.com/design/network/applnots/ap450.htm | ||
76 | |||
77 | A descriptor describes a data buffer and attributes related to the | ||
78 | data buffer. This information is accessed by the hardware. | ||
79 | |||
80 | AutoNeg (adapters using copper connections only) | ||
81 | Valid Range: 0x01-0x0F, 0x20-0x2F | ||
82 | Default Value: 0x2F | ||
83 | This parameter is a bit mask that specifies which speed and duplex | ||
84 | settings the board advertises. When this parameter is used, the Speed and | ||
85 | Duplex parameters must not be specified. | ||
86 | NOTE: Refer to the Speed and Duplex section of this readme for more | ||
87 | information on the AutoNeg parameter. | ||
88 | |||
89 | Duplex (adapters using copper connections only) | ||
90 | Valid Range: 0-2 (0=auto-negotiate, 1=half, 2=full) | ||
91 | Default Value: 0 | ||
92 | Defines the direction in which data is allowed to flow. Can be either one | ||
93 | or two-directional. If both Duplex and the link partner are set to auto- | ||
94 | negotiate, the board auto-detects the correct duplex. If the link partner | ||
95 | is forced (either full or half), Duplex defaults to half-duplex. | ||
96 | |||
97 | FlowControl | ||
98 | Valid Range: 0-3 (0=none, 1=Rx only, 2=Tx only, 3=Rx&Tx) | ||
99 | Default: Read flow control settings from the EEPROM | ||
100 | This parameter controls the automatic generation(Tx) and response(Rx) to | ||
101 | Ethernet PAUSE frames. | ||
102 | |||
103 | InterruptThrottleRate | ||
104 | Valid Range: 100-100000 (0=off, 1=dynamic) | ||
105 | Default Value: 8000 | ||
106 | This value represents the maximum number of interrupts per second the | ||
107 | controller generates. InterruptThrottleRate is another setting used in | ||
108 | interrupt moderation. Dynamic mode uses a heuristic algorithm to adjust | ||
109 | InterruptThrottleRate based on the current traffic load. | ||
110 | Un-supported Adapters: InterruptThrottleRate is NOT supported by 82542, 82543 | ||
111 | or 82544-based adapters. | ||
112 | |||
113 | NOTE: InterruptThrottleRate takes precedence over the TxAbsIntDelay and | ||
114 | RxAbsIntDelay parameters. In other words, minimizing the receive | ||
115 | and/or transmit absolute delays does not force the controller to | ||
116 | generate more interrupts than what the Interrupt Throttle Rate | ||
117 | allows. | ||
118 | CAUTION: If you are using the Intel PRO/1000 CT Network Connection | ||
119 | (controller 82547), setting InterruptThrottleRate to a value | ||
120 | greater than 75,000, may hang (stop transmitting) adapters under | ||
121 | certain network conditions. If this occurs a NETDEV WATCHDOG | ||
122 | message is logged in the system event log. In addition, the | ||
123 | controller is automatically reset, restoring the network | ||
124 | connection. To eliminate the potential for the hang, ensure | ||
125 | that InterruptThrottleRate is set no greater than 75,000 and is | ||
126 | not set to 0. | ||
127 | NOTE: When e1000 is loaded with default settings and multiple adapters are | ||
128 | in use simultaneously, the CPU utilization may increase non-linearly. | ||
129 | In order to limit the CPU utilization without impacting the overall | ||
130 | throughput, we recommend that you load the driver as follows: | ||
131 | |||
132 | insmod e1000.o InterruptThrottleRate=3000,3000,3000 | ||
133 | |||
134 | This sets the InterruptThrottleRate to 3000 interrupts/sec for the | ||
135 | first, second, and third instances of the driver. The range of 2000 to | ||
136 | 3000 interrupts per second works on a majority of systems and is a | ||
137 | good starting point, but the optimal value will be platform-specific. | ||
138 | If CPU utilization is not a concern, use RX_POLLING (NAPI) and default | ||
139 | driver settings. | ||
140 | |||
141 | RxDescriptors | ||
142 | Valid Range: 80-256 for 82542 and 82543-based adapters | ||
143 | 80-4096 for all other supported adapters | ||
144 | Default Value: 256 | ||
145 | This value is the number of receive descriptors allocated by the driver. | ||
146 | Increasing this value allows the driver to buffer more incoming packets. | ||
147 | Each descriptor is 16 bytes. A receive buffer is allocated for each | ||
148 | descriptor and can either be 2048 or 4096 bytes long, depending on the MTU | ||
149 | |||
150 | setting. An incoming packet can span one or more receive descriptors. | ||
151 | The maximum MTU size is 16110. | ||
152 | |||
153 | NOTE: MTU designates the frame size. It only needs to be set for Jumbo | ||
154 | Frames. | ||
155 | NOTE: Depending on the available system resources, the request for a | ||
156 | higher number of receive descriptors may be denied. In this case, | ||
157 | use a lower number. | ||
158 | |||
159 | RxIntDelay | ||
160 | Valid Range: 0-65535 (0=off) | ||
161 | Default Value: 0 | ||
162 | This value delays the generation of receive interrupts in units of 1.024 | ||
163 | microseconds. Receive interrupt reduction can improve CPU efficiency if | ||
164 | properly tuned for specific network traffic. Increasing this value adds | ||
165 | extra latency to frame reception and can end up decreasing the throughput | ||
166 | of TCP traffic. If the system is reporting dropped receives, this value | ||
167 | may be set too high, causing the driver to run out of available receive | ||
168 | descriptors. | ||
169 | |||
170 | CAUTION: When setting RxIntDelay to a value other than 0, adapters may | ||
171 | hang (stop transmitting) under certain network conditions. If | ||
172 | this occurs a NETDEV WATCHDOG message is logged in the system | ||
173 | event log. In addition, the controller is automatically reset, | ||
174 | restoring the network connection. To eliminate the potential for | ||
175 | the hang ensure that RxIntDelay is set to 0. | ||
176 | |||
177 | RxAbsIntDelay (82540, 82545 and later adapters only) | ||
178 | Valid Range: 0-65535 (0=off) | ||
179 | Default Value: 128 | ||
180 | This value, in units of 1.024 microseconds, limits the delay in which a | ||
181 | receive interrupt is generated. Useful only if RxIntDelay is non-zero, | ||
182 | this value ensures that an interrupt is generated after the initial | ||
183 | packet is received within the set amount of time. Proper tuning, | ||
184 | along with RxIntDelay, may improve traffic throughput in specific network | ||
185 | conditions. | ||
186 | |||
187 | Speed (adapters using copper connections only) | ||
188 | Valid Settings: 0, 10, 100, 1000 | ||
189 | Default Value: 0 (auto-negotiate at all supported speeds) | ||
190 | Speed forces the line speed to the specified value in megabits per second | ||
191 | (Mbps). If this parameter is not specified or is set to 0 and the link | ||
192 | partner is set to auto-negotiate, the board will auto-detect the correct | ||
193 | speed. Duplex should also be set when Speed is set to either 10 or 100. | ||
194 | |||
195 | TxDescriptors | ||
196 | Valid Range: 80-256 for 82542 and 82543-based adapters | ||
197 | 80-4096 for all other supported adapters | ||
198 | Default Value: 256 | ||
199 | This value is the number of transmit descriptors allocated by the driver. | ||
200 | Increasing this value allows the driver to queue more transmits. Each | ||
201 | descriptor is 16 bytes. | ||
202 | |||
203 | NOTE: Depending on the available system resources, the request for a | ||
204 | higher number of transmit descriptors may be denied. In this case, | ||
205 | use a lower number. | ||
206 | |||
207 | TxIntDelay | ||
208 | Valid Range: 0-65535 (0=off) | ||
209 | Default Value: 64 | ||
210 | This value delays the generation of transmit interrupts in units of | ||
211 | 1.024 microseconds. Transmit interrupt reduction can improve CPU | ||
212 | efficiency if properly tuned for specific network traffic. If the | ||
213 | system is reporting dropped transmits, this value may be set too high | ||
214 | causing the driver to run out of available transmit descriptors. | ||
215 | |||
216 | TxAbsIntDelay (82540, 82545 and later adapters only) | ||
217 | Valid Range: 0-65535 (0=off) | ||
218 | Default Value: 64 | ||
219 | This value, in units of 1.024 microseconds, limits the delay in which a | ||
220 | transmit interrupt is generated. Useful only if TxIntDelay is non-zero, | ||
221 | this value ensures that an interrupt is generated after the initial | ||
222 | packet is sent on the wire within the set amount of time. Proper tuning, | ||
223 | along with TxIntDelay, may improve traffic throughput in specific | ||
224 | network conditions. | ||
225 | |||
226 | XsumRX (not available on the 82542-based adapter) | ||
227 | Valid Range: 0-1 | ||
228 | Default Value: 1 | ||
229 | A value of '1' indicates that the driver should enable IP checksum | ||
230 | offload for received packets (both UDP and TCP) to the adapter hardware. | ||
231 | |||
232 | Speed and Duplex Configuration | ||
233 | ============================== | ||
234 | |||
235 | Three keywords are used to control the speed and duplex configuration. These | ||
236 | keywords are Speed, Duplex, and AutoNeg. | ||
237 | |||
238 | If the board uses a fiber interface, these keywords are ignored, and the | ||
239 | fiber interface board only links at 1000 Mbps full-duplex. | ||
240 | |||
241 | For copper-based boards, the keywords interact as follows: | ||
242 | |||
243 | The default operation is auto-negotiate. The board advertises all supported | ||
244 | speed and duplex combinations, and it links at the highest common speed and | ||
245 | duplex mode IF the link partner is set to auto-negotiate. | ||
246 | |||
247 | If Speed = 1000, limited auto-negotiation is enabled and only 1000 Mbps is | ||
248 | advertised (The 1000BaseT spec requires auto-negotiation.) | ||
249 | |||
250 | If Speed = 10 or 100, then both Speed and Duplex should be set. Auto- | ||
251 | negotiation is disabled, and the AutoNeg parameter is ignored. Partner SHOULD | ||
252 | also be forced. | ||
253 | |||
254 | The AutoNeg parameter is used when more control is required over the auto- | ||
255 | negotiation process. When this parameter is used, Speed and Duplex parameters | ||
256 | must not be specified. The following table describes supported values for the | ||
257 | AutoNeg parameter: | ||
258 | |||
259 | Speed (Mbps) 1000 100 100 10 10 | ||
260 | Duplex Full Full Half Full Half | ||
261 | Value (in base 16) 0x20 0x08 0x04 0x02 0x01 | ||
262 | |||
263 | Example: insmod e1000 AutoNeg=0x03, loads e1000 and specifies (10 full duplex, | ||
264 | 10 half duplex) for negotiation with the peer. | ||
265 | |||
266 | Note that setting AutoNeg does not guarantee that the board will link at the | ||
267 | highest specified speed or duplex mode, but the board will link at the | ||
268 | highest possible speed/duplex of the link partner IF the link partner is also | ||
269 | set to auto-negotiate. If the link partner is forced speed/duplex, the | ||
270 | adapter MUST be forced to the same speed/duplex. | ||
271 | |||
272 | |||
273 | Additional Configurations | ||
274 | ========================= | ||
275 | |||
276 | Configuring the Driver on Different Distributions | ||
277 | ------------------------------------------------- | ||
278 | |||
279 | Configuring a network driver to load properly when the system is started is | ||
280 | distribution dependent. Typically, the configuration process involves adding | ||
281 | an alias line to /etc/modules.conf as well as editing other system startup | ||
282 | scripts and/or configuration files. Many popular Linux distributions ship | ||
283 | with tools to make these changes for you. To learn the proper way to | ||
284 | configure a network device for your system, refer to your distribution | ||
285 | documentation. If during this process you are asked for the driver or module | ||
286 | name, the name for the Linux Base Driver for the Intel PRO/1000 Family of | ||
287 | Adapters is e1000. | ||
288 | |||
289 | As an example, if you install the e1000 driver for two PRO/1000 adapters | ||
290 | (eth0 and eth1) and set the speed and duplex to 10full and 100half, add the | ||
291 | following to modules.conf: | ||
292 | |||
293 | alias eth0 e1000 | ||
294 | alias eth1 e1000 | ||
295 | options e1000 Speed=10,100 Duplex=2,1 | ||
296 | |||
297 | Viewing Link Messages | ||
298 | --------------------- | ||
299 | |||
300 | Link messages will not be displayed to the console if the distribution is | ||
301 | restricting system messages. In order to see network driver link messages on | ||
302 | your console, set dmesg to eight by entering the following: | ||
303 | |||
304 | dmesg -n 8 | ||
305 | |||
306 | NOTE: This setting is not saved across reboots. | ||
307 | |||
308 | Jumbo Frames | ||
309 | ------------ | ||
310 | |||
311 | The driver supports Jumbo Frames for all adapters except 82542-based | ||
312 | adapters. Jumbo Frames support is enabled by changing the MTU to a value | ||
313 | larger than the default of 1500. Use the ifconfig command to increase the | ||
314 | MTU size. For example: | ||
315 | |||
316 | ifconfig ethx mtu 9000 up | ||
317 | |||
318 | The maximum MTU setting for Jumbo Frames is 16110. This value coincides | ||
319 | with the maximum Jumbo Frames size of 16128. | ||
320 | |||
321 | NOTE: Jumbo Frames are supported at 1000 Mbps only. Using Jumbo Frames at | ||
322 | 10 or 100 Mbps may result in poor performance or loss of link. | ||
323 | |||
324 | |||
325 | NOTE: MTU designates the frame size. To enable Jumbo Frames, increase the | ||
326 | MTU size on the interface beyond 1500. | ||
327 | |||
328 | Ethtool | ||
329 | ------- | ||
330 | |||
331 | The driver utilizes the ethtool interface for driver configuration and | ||
332 | diagnostics, as well as displaying statistical information. Ethtool | ||
333 | version 1.6 or later is required for this functionality. | ||
334 | |||
335 | The latest release of ethtool can be found from | ||
336 | http://sf.net/projects/gkernel. | ||
337 | |||
338 | NOTE: Ethtool 1.6 only supports a limited set of ethtool options. Support | ||
339 | for a more complete ethtool feature set can be enabled by upgrading | ||
340 | ethtool to ethtool-1.8.1. | ||
341 | |||
342 | Enabling Wake on LAN* (WoL) | ||
343 | --------------------------- | ||
344 | |||
345 | WoL is configured through the Ethtool* utility. Ethtool is included with | ||
346 | all versions of Red Hat after Red Hat 7.2. For other Linux distributions, | ||
347 | download and install Ethtool from the following website: | ||
348 | http://sourceforge.net/projects/gkernel. | ||
349 | |||
350 | For instructions on enabling WoL with Ethtool, refer to the website listed | ||
351 | above. | ||
352 | |||
353 | WoL will be enabled on the system during the next shut down or reboot. | ||
354 | For this driver version, in order to enable WoL, the e1000 driver must be | ||
355 | loaded when shutting down or rebooting the system. | ||
356 | |||
357 | NAPI | ||
358 | ---- | ||
359 | |||
360 | NAPI (Rx polling mode) is supported in the e1000 driver. NAPI is enabled | ||
361 | or disabled based on the configuration of the kernel. | ||
362 | |||
363 | See www.cyberus.ca/~hadi/usenix-paper.tgz for more information on NAPI. | ||
364 | |||
365 | |||
366 | Known Issues | ||
367 | ============ | ||
368 | |||
369 | Jumbo Frames System Requirement | ||
370 | ------------------------------- | ||
371 | |||
372 | Memory allocation failures have been observed on Linux systems with 64 MB | ||
373 | of RAM or less that are running Jumbo Frames. If you are using Jumbo Frames, | ||
374 | your system may require more than the advertised minimum requirement of 64 MB | ||
375 | of system memory. | ||
376 | |||
377 | |||
378 | Support | ||
379 | ======= | ||
380 | |||
381 | For general information, go to the Intel support website at: | ||
382 | |||
383 | http://support.intel.com | ||
384 | |||
385 | If an issue is identified with the released source code on the supported | ||
386 | kernel with a supported adapter, email the specific information related to | ||
387 | the issue to linux.nics@intel.com. | ||
388 | |||
389 | |||
390 | License | ||
391 | ======= | ||
392 | |||
393 | This software program is released under the terms of a license agreement | ||
394 | between you ('Licensee') and Intel. Do not use or load this software or any | ||
395 | associated materials (collectively, the 'Software') until you have carefully | ||
396 | read the full terms and conditions of the LICENSE located in this software | ||
397 | package. By loading or using the Software, you agree to the terms of this | ||
398 | Agreement. If you do not agree with the terms of this Agreement, do not | ||
399 | install or use the Software. | ||
400 | |||
401 | * Other names and brands may be claimed as the property of others. | ||