e1000.txt 18.4 KB
Newer Older
L
Linus Torvalds 已提交
1 2 3
Linux* Base Driver for the Intel(R) PRO/1000 Family of Adapters
===============================================================

4 5
Intel Gigabit Linux driver.
Copyright(c) 1999 - 2010 Intel Corporation.
L
Linus Torvalds 已提交
6 7 8 9 10 11 12 13 14 15 16 17 18

Contents
========

- Identifying Your Adapter
- Command Line Parameters
- Speed and Duplex Configuration
- Additional Configurations
- Support

Identifying Your Adapter
========================

19
For more information on how to identify your adapter, go to the Adapter &
L
Linus Torvalds 已提交
20 21
Driver ID Guide at:

22
    http://support.intel.com/support/go/network/adapter/idguide.htm
L
Linus Torvalds 已提交
23

24
For the latest Intel network drivers for Linux, refer to the following
A
Auke Kok 已提交
25
website.  In the search field, enter your adapter name or type, or use the
L
Linus Torvalds 已提交
26 27
networking link on the left to search for your adapter:

28
    http://support.intel.com/support/go/network/adapter/home.htm
L
Linus Torvalds 已提交
29

A
Auke Kok 已提交
30 31
Command Line Parameters
=======================
32

L
Linus Torvalds 已提交
33
The default value for each parameter is generally the recommended setting,
34 35 36 37 38
unless otherwise noted.

NOTES:  For more information about the AutoNeg, Duplex, and Speed
        parameters, see the "Speed and Duplex Configuration" section in
        this document.
L
Linus Torvalds 已提交
39

40 41 42 43
        For more information about the InterruptThrottleRate,
        RxIntDelay, TxIntDelay, RxAbsIntDelay, and TxAbsIntDelay
        parameters, see the application note at:
        http://www.intel.com/design/network/applnots/ap450.htm
L
Linus Torvalds 已提交
44

45 46 47 48
AutoNeg
-------
(Supported only on adapters with copper connections)
Valid Range:   0x01-0x0F, 0x20-0x2F
L
Linus Torvalds 已提交
49
Default Value: 0x2F
50

A
Auke Kok 已提交
51 52 53
This parameter is a bit-mask that specifies the speed and duplex settings
advertised by the adapter.  When this parameter is used, the Speed and
Duplex parameters must not be specified.
54 55 56 57 58 59 60 61

NOTE:  Refer to the Speed and Duplex section of this readme for more
       information on the AutoNeg parameter.

Duplex
------
(Supported only on adapters with copper connections)
Valid Range:   0-2 (0=auto-negotiate, 1=half, 2=full)
L
Linus Torvalds 已提交
62
Default Value: 0
63

A
Auke Kok 已提交
64 65 66 67 68
This defines the direction in which data is allowed to flow.  Can be
either one or two-directional.  If both Duplex and the link partner are
set to auto-negotiate, the board auto-detects the correct duplex.  If the
link partner is forced (either full or half), Duplex defaults to half-
duplex.
69

L
Linus Torvalds 已提交
70
FlowControl
A
Auke Kok 已提交
71
-----------
72 73 74 75 76 77
Valid Range:   0-3 (0=none, 1=Rx only, 2=Tx only, 3=Rx&Tx)
Default Value: Reads flow control settings from the EEPROM

This parameter controls the automatic generation(Tx) and response(Rx)
to Ethernet PAUSE frames.

L
Linus Torvalds 已提交
78
InterruptThrottleRate
79
---------------------
A
Auke Kok 已提交
80
(not supported on Intel(R) 82542, 82543 or 82544-based adapters)
81
Valid Range:   0,1,3,4,100-100000 (0=off, 1=dynamic, 3=dynamic conservative,
82
                                 4=simplified balancing)
A
Auke Kok 已提交
83 84 85
Default Value: 3

The driver can limit the amount of interrupts per second that the adapter
86 87
will generate for incoming packets. It does this by writing a value to the
adapter that is based on the maximum amount of interrupts that the adapter
A
Auke Kok 已提交
88 89 90 91 92 93 94 95
will generate per second.

Setting InterruptThrottleRate to a value greater or equal to 100
will program the adapter to send out a maximum of that many interrupts
per second, even if more packets have come in. This reduces interrupt
load on the system and can lower CPU utilization under heavy load,
but will increase latency as packets are not processed as quickly.

96 97 98 99
The default behaviour of the driver previously assumed a static
InterruptThrottleRate value of 8000, providing a good fallback value for
all traffic types,but lacking in small packet performance and latency.
The hardware can handle many more small packets per second however, and
A
Auke Kok 已提交
100 101 102
for this reason an adaptive interrupt moderation algorithm was implemented.

Since 7.3.x, the driver has two adaptive modes (setting 1 or 3) in which
103
it dynamically adjusts the InterruptThrottleRate value based on the traffic
A
Auke Kok 已提交
104
that it receives. After determining the type of incoming traffic in the last
105
timeframe, it will adjust the InterruptThrottleRate to an appropriate value
A
Auke Kok 已提交
106 107 108
for that traffic.

The algorithm classifies the incoming traffic every interval into
109 110
classes.  Once the class is determined, the InterruptThrottleRate value is
adjusted to suit that traffic type the best. There are three classes defined:
A
Auke Kok 已提交
111 112
"Bulk traffic", for large amounts of packets of normal size; "Low latency",
for small amounts of traffic and/or a significant percentage of small
113
packets; and "Lowest latency", for almost completely small packets or
A
Auke Kok 已提交
114 115
minimal traffic.

116 117 118
In dynamic conservative mode, the InterruptThrottleRate value is set to 4000
for traffic that falls in class "Bulk traffic". If traffic falls in the "Low
latency" or "Lowest latency" class, the InterruptThrottleRate is increased
A
Auke Kok 已提交
119 120 121 122 123
stepwise to 20000. This default mode is suitable for most applications.

For situations where low latency is vital such as cluster or
grid computing, the algorithm can reduce latency even more when
InterruptThrottleRate is set to mode 1. In this mode, which operates
124
the same as mode 3, the InterruptThrottleRate will be increased stepwise to
A
Auke Kok 已提交
125 126
70000 for traffic in class "Lowest latency".

127 128
In simplified mode the interrupt rate is based on the ratio of TX and
RX traffic.  If the bytes per second rate is approximately equal, the
129 130 131 132
interrupt rate will drop as low as 2000 interrupts per second.  If the
traffic is mostly transmit or mostly receive, the interrupt rate could
be as high as 8000.

A
Auke Kok 已提交
133 134 135
Setting InterruptThrottleRate to 0 turns off any interrupt moderation
and may improve small packet latency, but is generally not suitable
for bulk throughput traffic.
136 137

NOTE:  InterruptThrottleRate takes precedence over the TxAbsIntDelay and
A
Auke Kok 已提交
138
       RxAbsIntDelay parameters.  In other words, minimizing the receive
139 140 141 142
       and/or transmit absolute delays does not force the controller to
       generate more interrupts than what the Interrupt Throttle Rate
       allows.

A
Auke Kok 已提交
143
CAUTION:  If you are using the Intel(R) PRO/1000 CT Network Connection
144 145
          (controller 82547), setting InterruptThrottleRate to a value
          greater than 75,000, may hang (stop transmitting) adapters
A
Auke Kok 已提交
146 147
          under certain network conditions.  If this occurs a NETDEV
          WATCHDOG message is logged in the system event log.  In
148
          addition, the controller is automatically reset, restoring
A
Auke Kok 已提交
149
          the network connection.  To eliminate the potential for the
150 151 152 153 154
          hang, ensure that InterruptThrottleRate is set no greater
          than 75,000 and is not set to 0.

NOTE:  When e1000 is loaded with default settings and multiple adapters
       are in use simultaneously, the CPU utilization may increase non-
A
Auke Kok 已提交
155
       linearly.  In order to limit the CPU utilization without impacting
156 157 158
       the overall throughput, we recommend that you load the driver as
       follows:

A
Auke Kok 已提交
159
           modprobe e1000 InterruptThrottleRate=3000,3000,3000
160 161

       This sets the InterruptThrottleRate to 3000 interrupts/sec for
A
Auke Kok 已提交
162
       the first, second, and third instances of the driver.  The range
163 164
       of 2000 to 3000 interrupts per second works on a majority of
       systems and is a good starting point, but the optimal value will
A
Auke Kok 已提交
165
       be platform-specific.  If CPU utilization is not a concern, use
166 167
       RX_POLLING (NAPI) and default driver settings.

L
Linus Torvalds 已提交
168
RxDescriptors
169 170 171
-------------
Valid Range:   80-256 for 82542 and 82543-based adapters
               80-4096 for all other supported adapters
L
Linus Torvalds 已提交
172 173
Default Value: 256

A
Auke Kok 已提交
174 175 176 177 178
This value specifies the number of receive buffer descriptors allocated
by the driver.  Increasing this value allows the driver to buffer more
incoming packets, at the expense of increased system memory utilization.

Each descriptor is 16 bytes.  A receive buffer is also allocated for each
179
descriptor and can be either 2048, 4096, 8192, or 16384 bytes, depending
A
Auke Kok 已提交
180 181
on the MTU setting. The maximum MTU size is 16110.

182 183 184
NOTE:  MTU designates the frame size.  It only needs to be set for Jumbo
       Frames.  Depending on the available system resources, the request
       for a higher number of receive descriptors may be denied.  In this
A
Auke Kok 已提交
185
       case, use a lower number.
L
Linus Torvalds 已提交
186 187

RxIntDelay
188 189
----------
Valid Range:   0-65535 (0=off)
L
Linus Torvalds 已提交
190
Default Value: 0
191 192 193

This value delays the generation of receive interrupts in units of 1.024
microseconds.  Receive interrupt reduction can improve CPU efficiency if
A
Auke Kok 已提交
194
properly tuned for specific network traffic.  Increasing this value adds
195
extra latency to frame reception and can end up decreasing the throughput
A
Auke Kok 已提交
196
of TCP traffic.  If the system is reporting dropped receives, this value
197 198 199 200
may be set too high, causing the driver to run out of available receive
descriptors.

CAUTION:  When setting RxIntDelay to a value other than 0, adapters may
A
Auke Kok 已提交
201
          hang (stop transmitting) under certain network conditions.  If
202
          this occurs a NETDEV WATCHDOG message is logged in the system
A
Auke Kok 已提交
203 204
          event log.  In addition, the controller is automatically reset,
          restoring the network connection.  To eliminate the potential
205 206 207 208 209 210
          for the hang ensure that RxIntDelay is set to 0.

RxAbsIntDelay
-------------
(This parameter is supported only on 82540, 82545 and later adapters.)
Valid Range:   0-65535 (0=off)
L
Linus Torvalds 已提交
211
Default Value: 128
212 213

This value, in units of 1.024 microseconds, limits the delay in which a
A
Auke Kok 已提交
214
receive interrupt is generated.  Useful only if RxIntDelay is non-zero,
215 216 217 218 219 220 221 222
this value ensures that an interrupt is generated after the initial
packet is received within the set amount of time.  Proper tuning,
along with RxIntDelay, may improve traffic throughput in specific network
conditions.

Speed
-----
(This parameter is supported only on adapters with copper connections.)
L
Linus Torvalds 已提交
223
Valid Settings: 0, 10, 100, 1000
224 225 226
Default Value:  0 (auto-negotiate at all supported speeds)

Speed forces the line speed to the specified value in megabits per second
A
Auke Kok 已提交
227
(Mbps).  If this parameter is not specified or is set to 0 and the link
228
partner is set to auto-negotiate, the board will auto-detect the correct
A
Auke Kok 已提交
229
speed.  Duplex should also be set when Speed is set to either 10 or 100.
230

L
Linus Torvalds 已提交
231
TxDescriptors
232 233 234
-------------
Valid Range:   80-256 for 82542 and 82543-based adapters
               80-4096 for all other supported adapters
L
Linus Torvalds 已提交
235 236
Default Value: 256

237
This value is the number of transmit descriptors allocated by the driver.
A
Auke Kok 已提交
238
Increasing this value allows the driver to queue more transmits.  Each
239 240 241 242 243 244
descriptor is 16 bytes.

NOTE:  Depending on the available system resources, the request for a
       higher number of transmit descriptors may be denied.  In this case,
       use a lower number.

245 246 247
TxDescriptorStep
----------------
Valid Range:    1 (use every Tx Descriptor)
248
                4 (use every 4th Tx Descriptor)
249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274

Default Value:  1 (use every Tx Descriptor)

On certain non-Intel architectures, it has been observed that intense TX
traffic bursts of short packets may result in an improper descriptor
writeback. If this occurs, the driver will report a "TX Timeout" and reset
the adapter, after which the transmit flow will restart, though data may
have stalled for as much as 10 seconds before it resumes.

The improper writeback does not occur on the first descriptor in a system
memory cache-line, which is typically 32 bytes, or 4 descriptors long.

Setting TxDescriptorStep to a value of 4 will ensure that all TX descriptors
are aligned to the start of a system memory cache line, and so this problem
will not occur.

NOTES: Setting TxDescriptorStep to 4 effectively reduces the number of
       TxDescriptors available for transmits to 1/4 of the normal allocation.
       This has a possible negative performance impact, which may be
       compensated for by allocating more descriptors using the TxDescriptors
       module parameter.

       There are other conditions which may result in "TX Timeout", which will
       not be resolved by the use of the TxDescriptorStep parameter. As the
       issue addressed by this parameter has never been observed on Intel
       Architecture platforms, it should not be used on Intel platforms.
L
Linus Torvalds 已提交
275 276

TxIntDelay
277 278
----------
Valid Range:   0-65535 (0=off)
L
Linus Torvalds 已提交
279
Default Value: 64
280 281

This value delays the generation of transmit interrupts in units of
A
Auke Kok 已提交
282 283
1.024 microseconds.  Transmit interrupt reduction can improve CPU
efficiency if properly tuned for specific network traffic.  If the
284 285 286 287 288 289 290
system is reporting dropped transmits, this value may be set too high
causing the driver to run out of available transmit descriptors.

TxAbsIntDelay
-------------
(This parameter is supported only on 82540, 82545 and later adapters.)
Valid Range:   0-65535 (0=off)
L
Linus Torvalds 已提交
291
Default Value: 64
292 293

This value, in units of 1.024 microseconds, limits the delay in which a
A
Auke Kok 已提交
294
transmit interrupt is generated.  Useful only if TxIntDelay is non-zero,
295 296 297 298 299 300 301 302 303
this value ensures that an interrupt is generated after the initial
packet is sent on the wire within the set amount of time.  Proper tuning,
along with TxIntDelay, may improve traffic throughput in specific
network conditions.

XsumRX
------
(This parameter is NOT supported on the 82542-based adapter.)
Valid Range:   0-1
L
Linus Torvalds 已提交
304
Default Value: 1
305 306 307 308

A value of '1' indicates that the driver should enable IP checksum
offload for received packets (both UDP and TCP) to the adapter hardware.

309 310 311 312 313 314
Copybreak
---------
Valid Range:   0-xxxxxxx (0=off)
Default Value: 256
Usage: insmod e1000.ko copybreak=128

315
Driver copies all packets below or equaling this size to a fresh RX
316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337
buffer before handing it up the stack.

This parameter is different than other parameters, in that it is a
single (not 1,1,1 etc.) parameter applied to all driver instances and
it is also available during runtime at
/sys/module/e1000/parameters/copybreak

SmartPowerDownEnable
--------------------
Valid Range: 0-1
Default Value:  0 (disabled)

Allows PHY to turn off in lower power states. The user can turn off
this parameter in supported chipsets.

KumeranLockLoss
---------------
Valid Range: 0-1
Default Value: 1 (enabled)

This workaround skips resetting the PHY at shutdown for the initial
silicon releases of ICH8 systems.
L
Linus Torvalds 已提交
338 339 340 341

Speed and Duplex Configuration
==============================

342 343
Three keywords are used to control the speed and duplex configuration.
These keywords are Speed, Duplex, and AutoNeg.
L
Linus Torvalds 已提交
344

345
If the board uses a fiber interface, these keywords are ignored, and the
L
Linus Torvalds 已提交
346 347 348 349
fiber interface board only links at 1000 Mbps full-duplex.

For copper-based boards, the keywords interact as follows:

A
Auke Kok 已提交
350
  The default operation is auto-negotiate.  The board advertises all
351 352
  supported speed and duplex combinations, and it links at the highest
  common speed and duplex mode IF the link partner is set to auto-negotiate.
L
Linus Torvalds 已提交
353

354 355
  If Speed = 1000, limited auto-negotiation is enabled and only 1000 Mbps
  is advertised (The 1000BaseT spec requires auto-negotiation.)
L
Linus Torvalds 已提交
356

A
Auke Kok 已提交
357 358
  If Speed = 10 or 100, then both Speed and Duplex should be set.  Auto-
  negotiation is disabled, and the AutoNeg parameter is ignored.  Partner
359 360 361 362 363 364 365
  SHOULD also be forced.

The AutoNeg parameter is used when more control is required over the
auto-negotiation process.  It should be used when you wish to control which
speed and duplex combinations are advertised during the auto-negotiation
process.

A
Auke Kok 已提交
366
The parameter may be specified as either a decimal or hexadecimal value as
367
determined by the bitmap below.
L
Linus Torvalds 已提交
368

369 370 371 372 373
Bit position   7      6      5       4       3      2      1       0
Decimal Value  128    64     32      16      8      4      2       1
Hex value      80     40     20      10      8      4      2       1
Speed (Mbps)   N/A    N/A    1000    N/A     100    100    10      10
Duplex                       Full            Full   Half   Full    Half
L
Linus Torvalds 已提交
374

375
Some examples of using AutoNeg:
L
Linus Torvalds 已提交
376

377 378 379 380 381 382 383 384 385
  modprobe e1000 AutoNeg=0x01 (Restricts autonegotiation to 10 Half)
  modprobe e1000 AutoNeg=1 (Same as above)
  modprobe e1000 AutoNeg=0x02 (Restricts autonegotiation to 10 Full)
  modprobe e1000 AutoNeg=0x03 (Restricts autonegotiation to 10 Half or 10 Full)
  modprobe e1000 AutoNeg=0x04 (Restricts autonegotiation to 100 Half)
  modprobe e1000 AutoNeg=0x05 (Restricts autonegotiation to 10 Half or 100
  Half)
  modprobe e1000 AutoNeg=0x020 (Restricts autonegotiation to 1000 Full)
  modprobe e1000 AutoNeg=32 (Same as above)
L
Linus Torvalds 已提交
386

387 388 389 390 391
Note that when this parameter is used, Speed and Duplex must not be specified.

If the link partner is forced to a specific speed and duplex, then this
parameter should not be used.  Instead, use the Speed and Duplex parameters
previously mentioned to force the adapter to the same speed and duplex.
L
Linus Torvalds 已提交
392 393 394 395 396 397

Additional Configurations
=========================

  Jumbo Frames
  ------------
A
Auke Kok 已提交
398 399 400
  Jumbo Frames support is enabled by changing the MTU to a value larger than
  the default of 1500.  Use the ifconfig command to increase the MTU size.
  For example:
401 402 403 404 405 406 407

       ifconfig eth<x> mtu 9000 up

  This setting is not saved across reboots.  It can be made permanent if
  you add:

       MTU=9000
L
Linus Torvalds 已提交
408

409 410 411
   to the file /etc/sysconfig/network-scripts/ifcfg-eth<x>.  This example
   applies to the Red Hat distributions; other distributions may store this
   setting in a different location.
L
Linus Torvalds 已提交
412

413
  Notes:
414 415 416 417 418
  Degradation in throughput performance may be observed in some Jumbo frames
  environments. If this is observed, increasing the application's socket buffer
  size and/or increasing the /proc/sys/net/ipv4/tcp_*mem entry values may help.
  See the specific application manual and /usr/src/linux*/Documentation/
  networking/ip-sysctl.txt for more details.
A
Auke Kok 已提交
419 420

  - The maximum MTU setting for Jumbo Frames is 16110.  This value coincides
421
    with the maximum Jumbo Frames size of 16128.
A
Auke Kok 已提交
422

423 424
  - Using Jumbo Frames at 10 or 100 Mbps may result in poor performance or
    loss of link.
A
Auke Kok 已提交
425 426 427 428 429 430

  - Adapters based on the Intel(R) 82542 and 82573V/E controller do not
    support Jumbo Frames. These correspond to the following product names:
     Intel(R) PRO/1000 Gigabit Server Adapter
     Intel(R) PRO/1000 PM Network Connection

L
Linus Torvalds 已提交
431 432 433 434 435 436 437
  Ethtool
  -------
  The driver utilizes the ethtool interface for driver configuration and
  diagnostics, as well as displaying statistical information.  Ethtool
  version 1.6 or later is required for this functionality.

  The latest release of ethtool can be found from
438
  http://sourceforge.net/projects/gkernel.
L
Linus Torvalds 已提交
439 440 441

  Enabling Wake on LAN* (WoL)
  ---------------------------
442
  WoL is configured through the Ethtool* utility.
L
Linus Torvalds 已提交
443

444 445
  WoL will be enabled on the system during the next shut down or reboot.
  For this driver version, in order to enable WoL, the e1000 driver must be
L
Linus Torvalds 已提交
446 447 448 449 450 451 452 453 454
  loaded when shutting down or rebooting the system.

Support
=======

For general information, go to the Intel support website at:

    http://support.intel.com

A
Auke Kok 已提交
455
or the Intel Wired Networking project hosted by Sourceforge at:
456 457 458

    http://sourceforge.net/projects/e1000

L
Linus Torvalds 已提交
459
If an issue is identified with the released source code on the supported
460
kernel with a supported adapter, email the specific information related
A
Auke Kok 已提交
461
to the issue to e1000-devel@lists.sf.net