kernel.org linux-2.6.10
[linux-2.6.git] / Documentation / networking / e1000.txt
1 Linux* Base Driver for the Intel(R) PRO/1000 Family of Adapters
2 ===============================================================
3
4 September 13, 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.  This driver includes support for Itanium(TM)2 
24 and EM64T systems.
25
26 For questions related to hardware requirements, refer to the documentation 
27 supplied with your Intel PRO/1000 adapter. All hardware requirements listed 
28 apply to use with Linux.
29
30 Native VLANs are now available with supported kernels.
31
32 Identifying Your Adapter
33 ========================
34
35 For more information on how to identify your adapter, go to the Adapter & 
36 Driver ID Guide at:
37
38     http://support.intel.com/support/network/adapter/pro100/21397.htm
39
40 For the latest Intel network drivers for Linux, refer to the following 
41 website. In the search field, enter your adapter name or type, or use the 
42 networking link on the left to search for your adapter:
43
44     http://downloadfinder.intel.com/scripts-df/support_intel.asp
45
46 Command Line Parameters
47 =======================
48
49 If the driver is built as a module, the  following optional parameters are 
50 used by entering them on the command line with the modprobe or insmod command
51 using this syntax:
52
53      modprobe e1000 [<option>=<VAL1>,<VAL2>,...]
54
55      insmod e1000 [<option>=<VAL1>,<VAL2>,...] 
56
57 For example, with two PRO/1000 PCI adapters, entering:
58
59      insmod e1000 TxDescriptors=80,128
60
61 loads the e1000 driver with 80 TX descriptors for the first adapter and 128 TX 
62 descriptors for the second adapter.
63
64 The default value for each parameter is generally the recommended setting,
65 unless otherwise noted. Also, if the driver is statically built into the
66 kernel, the driver is loaded with the default values for all the parameters.
67 Ethtool can be used to change some of the parameters at runtime.
68
69     NOTES: For more information about the AutoNeg, Duplex, and Speed
70            parameters, see the "Speed and Duplex Configuration" section in 
71            this document.
72
73            For more information about the InterruptThrottleRate, RxIntDelay, 
74            TxIntDelay, RxAbsIntDelay, and TxAbsIntDelay parameters, see the 
75            application note at:
76            http://www.intel.com/design/network/applnots/ap450.htm
77
78            A descriptor describes a data buffer and attributes related to the 
79            data buffer. This information is accessed by the hardware.
80
81 AutoNeg (adapters using copper connections only)
82 Valid Range: 0x01-0x0F, 0x20-0x2F
83 Default Value: 0x2F
84     This parameter is a bit mask that specifies which speed and duplex
85     settings the board advertises. When this parameter is used, the Speed and
86     Duplex parameters must not be specified.
87     NOTE: Refer to the Speed and Duplex section of this readme for more 
88           information on the AutoNeg parameter.  
89
90 Duplex (adapters using copper connections only)
91 Valid Range: 0-2 (0=auto-negotiate, 1=half, 2=full)
92 Default Value: 0
93     Defines the direction in which data is allowed to flow. Can be either one 
94     or two-directional. If both Duplex and the link partner are set to auto-
95     negotiate, the board auto-detects the correct duplex. If the link partner
96     is forced (either full or half), Duplex defaults to half-duplex.
97
98 FlowControl
99 Valid Range: 0-3 (0=none, 1=Rx only, 2=Tx only, 3=Rx&Tx)
100 Default: Read flow control settings from the EEPROM
101     This parameter controls the automatic generation(Tx) and response(Rx) to 
102     Ethernet PAUSE frames.
103
104 InterruptThrottleRate
105 Valid Range: 100-100000 (0=off, 1=dynamic)
106 Default Value: 8000
107     This value represents the maximum number of interrupts per second the 
108     controller generates. InterruptThrottleRate is another setting used in 
109     interrupt moderation. Dynamic mode uses a heuristic algorithm to adjust 
110     InterruptThrottleRate based on the current traffic load.
111 Un-supported Adapters: InterruptThrottleRate is NOT supported by 82542, 82543
112     or 82544-based adapters.
113
114     NOTE: InterruptThrottleRate takes precedence over the TxAbsIntDelay and 
115           RxAbsIntDelay parameters. In other words, minimizing the receive 
116           and/or transmit absolute delays does not force the controller to 
117           generate more interrupts than what the Interrupt Throttle Rate 
118           allows.
119     CAUTION: If you are using the Intel PRO/1000 CT Network Connection 
120              (controller 82547), setting InterruptThrottleRate to a value 
121              greater than 75,000, may hang (stop transmitting) adapters under 
122              certain network conditions. If this occurs a NETDEV WATCHDOG 
123              message is logged in the system event log. In addition, the 
124              controller is automatically reset, restoring the network 
125              connection. To eliminate the potential for the hang, ensure 
126              that InterruptThrottleRate is set no greater than 75,000 and is 
127              not set to 0.
128     NOTE: When e1000 is loaded with default settings and multiple adapters are 
129           in use simultaneously, the CPU utilization may increase non-linearly. 
130           In order to limit the CPU utilization without impacting the overall 
131           throughput, we recommend that you load the driver as follows:
132
133               insmod e1000.o InterruptThrottleRate=3000,3000,3000
134
135           This sets the InterruptThrottleRate to 3000 interrupts/sec for the 
136           first, second, and third instances of the driver. The range of 2000 to 
137           3000 interrupts per second works on a majority of systems and is a 
138           good starting point, but the optimal value will be platform-specific. 
139           If CPU utilization is not a concern, use RX_POLLING (NAPI) and default 
140           driver settings.
141
142 RxDescriptors
143 Valid Range: 80-256 for 82542 and 82543-based adapters
144              80-4096 for all other supported adapters
145 Default Value: 256
146     This value is the number of receive descriptors allocated by the driver. 
147     Increasing this value allows the driver to buffer more incoming packets. 
148     Each descriptor is 16 bytes.  A receive buffer is also allocated for each
149     descriptor and can be either 2048, 4096, 8192, or 16384 bytes, depending 
150     on the MTU setting. The maximum MTU size is 16110.
151
152     NOTE: MTU designates the frame size. It only needs to be set for Jumbo 
153           Frames.
154     NOTE: Depending on the available system resources, the request for a
155     higher number of receive descriptors may be denied.  In this case,
156     use a lower number.
157
158 RxIntDelay
159 Valid Range: 0-65535 (0=off)
160 Default Value: 0
161     This value delays the generation of receive interrupts in units of 1.024 
162     microseconds.  Receive interrupt reduction can improve CPU efficiency if 
163     properly tuned for specific network traffic. Increasing this value adds 
164     extra latency to frame reception and can end up decreasing the throughput 
165     of TCP traffic. If the system is reporting dropped receives, this value 
166     may be set too high, causing the driver to run out of available receive 
167     descriptors.
168
169     CAUTION: When setting RxIntDelay to a value other than 0, adapters may 
170              hang (stop transmitting) under certain network conditions. If 
171              this occurs a NETDEV WATCHDOG message is logged in the system
172              event log. In addition, the controller is automatically reset, 
173              restoring the network connection. To eliminate the potential for
174              the hang ensure that RxIntDelay is set to 0.
175
176 RxAbsIntDelay (82540, 82545 and later adapters only)
177 Valid Range: 0-65535 (0=off)
178 Default Value: 128
179     This value, in units of 1.024 microseconds, limits the delay in which a 
180     receive interrupt is generated. Useful only if RxIntDelay is non-zero, 
181     this value ensures that an interrupt is generated after the initial 
182     packet is received within the set amount of time.  Proper tuning,
183     along with RxIntDelay, may improve traffic throughput in specific network
184     conditions.
185
186 Speed (adapters using copper connections only)
187 Valid Settings: 0, 10, 100, 1000
188 Default Value: 0 (auto-negotiate at all supported speeds)
189     Speed forces the line speed to the specified value in megabits per second
190     (Mbps). If this parameter is not specified or is set to 0 and the link 
191     partner is set to auto-negotiate, the board will auto-detect the correct 
192     speed. Duplex should also be set when Speed is set to either 10 or 100.
193
194 TxDescriptors
195 Valid Range: 80-256 for 82542 and 82543-based adapters
196              80-4096 for all other supported adapters
197 Default Value: 256
198     This value is the number of transmit descriptors allocated by the driver.
199     Increasing this value allows the driver to queue more transmits. Each 
200     descriptor is 16 bytes.
201
202     NOTE: Depending on the available system resources, the request for a
203     higher number of transmit descriptors may be denied.  In this case,
204     use a lower number.
205
206 TxIntDelay
207 Valid Range: 0-65535 (0=off)
208 Default Value: 64
209     This value delays the generation of transmit interrupts in units of 
210     1.024 microseconds. Transmit interrupt reduction can improve CPU
211     efficiency if properly tuned for specific network traffic. If the
212     system is reporting dropped transmits, this value may be set too high
213     causing the driver to run out of available transmit descriptors.
214
215 TxAbsIntDelay (82540, 82545 and later adapters only)
216 Valid Range: 0-65535 (0=off)
217 Default Value: 64
218     This value, in units of 1.024 microseconds, limits the delay in which a 
219     transmit interrupt is generated. Useful only if TxIntDelay is non-zero, 
220     this value ensures that an interrupt is generated after the initial 
221     packet is sent on the wire within the set amount of time.  Proper tuning,
222     along with TxIntDelay, may improve traffic throughput in specific 
223     network conditions.
224
225 XsumRX (not available on the 82542-based adapter)
226 Valid Range: 0-1
227 Default Value: 1
228     A value of '1' indicates that the driver should enable IP checksum
229     offload for received packets (both UDP and TCP) to the adapter hardware.
230
231 Speed and Duplex Configuration
232 ==============================
233
234 Three keywords are used to control the speed and duplex configuration. These 
235 keywords are Speed, Duplex, and AutoNeg.
236
237 If the board uses a fiber interface, these keywords are ignored, and the 
238 fiber interface board only links at 1000 Mbps full-duplex.
239
240 For copper-based boards, the keywords interact as follows:
241
242   The default operation is auto-negotiate. The board advertises all supported
243   speed and duplex combinations, and it links at the highest common speed and
244   duplex mode IF the link partner is set to auto-negotiate.
245
246   If Speed = 1000, limited auto-negotiation is enabled and only 1000 Mbps is
247   advertised (The 1000BaseT spec requires auto-negotiation.)
248
249   If Speed = 10 or 100, then both Speed and Duplex should be set. Auto-
250   negotiation is disabled, and the AutoNeg parameter is ignored. Partner SHOULD
251   also be forced.
252
253 The AutoNeg parameter is used when more control is required over the auto-
254 negotiation process.  When this parameter is used, Speed and Duplex must not 
255 be specified.  This parameter is a bitmap that specifies which speed and 
256 duplex settings are advertised to the link partner.
257
258 Bit            7      6      5       4       3      2      1       0
259 Speed (Mbps)   N/A    N/A    1000    N/A     100    100    10      10
260 Duplex                       Full            Full   Half   Full    Half
261
262 For example to limit the negotiated speed/duplex on the interface to 10 Mbps 
263 Half or Full duplex, set AutoNeg to 0x02: 
264     insmod e1000 AutoNeg=0x02
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.  After ethtool is installed,
337   ethtool-copy.h must be copied and renamed to ethtool.h in your kernel
338   source tree at <linux_kernel_src>/include/linux.  Backup the original
339   ethtool.h as needed before copying.  The driver then must be recompiled
340   in order to take advantage of the latest ethtool features.
341
342   NOTE: Ethtool 1.6 only supports a limited set of ethtool options. Support 
343   for a more complete ethtool feature set can be enabled by upgrading 
344   ethtool to ethtool-1.8.1. 
345
346   Enabling Wake on LAN* (WoL)
347   ---------------------------
348
349   WoL is configured through the Ethtool* utility. Ethtool is included with
350   all versions of Red Hat after Red Hat 7.2. For other Linux distributions, 
351   download and install Ethtool from the following website: 
352   http://sourceforge.net/projects/gkernel.
353
354   For instructions on enabling WoL with Ethtool, refer to the website listed 
355   above.
356
357   WoL will be enabled on the system during the next shut down or reboot. 
358   For this driver version, in order to enable WoL, the e1000 driver must be 
359   loaded when shutting down or rebooting the system.
360
361   NAPI
362   ----
363
364   NAPI (Rx polling mode) is supported in the e1000 driver. NAPI is enabled
365   or disabled based on the configuration of the kernel. 
366
367   See www.cyberus.ca/~hadi/usenix-paper.tgz for more information on NAPI.
368
369
370 Known Issues
371 ============
372
373   Jumbo Frames System Requirement
374   -------------------------------
375
376   Memory allocation failures have been observed on Linux systems with 64 MB 
377   of RAM or less that are running Jumbo Frames. If you are using Jumbo Frames,
378   your system may require more than the advertised minimum requirement of 64 MB
379   of system memory.
380
381
382 Support
383 =======
384
385 For general information, go to the Intel support website at:
386
387     http://support.intel.com
388
389 If an issue is identified with the released source code on the supported
390 kernel with a supported adapter, email the specific information related to 
391 the issue to linux.nics@intel.com.
392
393
394 License
395 =======
396
397 This software program is released under the terms of a license agreement 
398 between you ('Licensee') and Intel. Do not use or load this software or any 
399 associated materials (collectively, the 'Software') until you have carefully 
400 read the full terms and conditions of the LICENSE located in this software 
401 package. By loading or using the Software, you agree to the terms of this 
402 Agreement. If you do not agree with the terms of this Agreement, do not 
403 install or use the Software.
404
405 * Other names and brands may be claimed as the property of others.