Linux* Base Driver for the Intel(R) PRO/1000 Family of Adapters
===============================================================

November 17, 2004


Contents
========

- In This Release
- Identifying Your Adapter
- Command Line Parameters
- Speed and Duplex Configuration
- Additional Configurations
- Known Issues
- Support


In This Release
===============

This file describes the Linux* Base Driver for the Intel(R) PRO/1000 Family
of Adapters, version 5.x.x.  

For questions related to hardware requirements, refer to the documentation 
supplied with your Intel PRO/1000 adapter. All hardware requirements listed 
apply to use with Linux.

Native VLANs are now available with supported kernels.

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

For more information on how to identify your adapter, go to the Adapter & 
Driver ID Guide at:

    http://support.intel.com/support/network/adapter/pro100/21397.htm

For the latest Intel network drivers for Linux, refer to the following 
website. In the search field, enter your adapter name or type, or use the 
networking link on the left to search for your adapter:

    http://downloadfinder.intel.com/scripts-df/support_intel.asp

Command Line Parameters
=======================

If the driver is built as a module, the  following optional parameters are 
used by entering them on the command line with the modprobe or insmod command
using this syntax:

     modprobe e1000 [<option>=<VAL1>,<VAL2>,...]

     insmod e1000 [<option>=<VAL1>,<VAL2>,...] 

For example, with two PRO/1000 PCI adapters, entering:

     insmod e1000 TxDescriptors=80,128

loads the e1000 driver with 80 TX descriptors for the first adapter and 128 TX 
descriptors for the second adapter.

The default value for each parameter is generally the recommended setting,
unless otherwise noted. Also, if the driver is statically built into the
kernel, the driver is loaded with the default values for all the parameters.
Ethtool can be used to change some of the parameters at runtime.

    NOTES: For more information about the AutoNeg, Duplex, and Speed
           parameters, see the "Speed and Duplex Configuration" section in 
           this document.

           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

           A descriptor describes a data buffer and attributes related to the 
           data buffer. This information is accessed by the hardware.

AutoNeg (adapters using copper connections only)
Valid Range: 0x01-0x0F, 0x20-0x2F
Default Value: 0x2F
    This parameter is a bit mask that specifies which speed and duplex
    settings the board advertises. When this parameter is used, the Speed and
    Duplex parameters must not be specified.
    NOTE: Refer to the Speed and Duplex section of this readme for more 
          information on the AutoNeg parameter.  

Duplex (adapters using copper connections only)
Valid Range: 0-2 (0=auto-negotiate, 1=half, 2=full)
Default Value: 0
    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.

FlowControl
Valid Range: 0-3 (0=none, 1=Rx only, 2=Tx only, 3=Rx&Tx)
Default: Read flow control settings from the EEPROM
    This parameter controls the automatic generation(Tx) and response(Rx) to 
    Ethernet PAUSE frames.

InterruptThrottleRate
Valid Range: 100-100000 (0=off, 1=dynamic)
Default Value: 8000
    This value represents the maximum number of interrupts per second the 
    controller generates. InterruptThrottleRate is another setting used in 
    interrupt moderation. Dynamic mode uses a heuristic algorithm to adjust 
    InterruptThrottleRate based on the current traffic load.
Un-supported Adapters: InterruptThrottleRate is NOT supported by 82542, 82543
    or 82544-based adapters.

    NOTE: InterruptThrottleRate takes precedence over the TxAbsIntDelay and 
          RxAbsIntDelay parameters. In other words, minimizing the receive 
          and/or transmit absolute delays does not force the controller to 
          generate more interrupts than what the Interrupt Throttle Rate 
          allows.
    CAUTION: If you are using the Intel PRO/1000 CT Network Connection 
             (controller 82547), setting InterruptThrottleRate to a value 
             greater than 75,000, may hang (stop transmitting) adapters under 
             certain network conditions. If this occurs a NETDEV WATCHDOG 
             message is logged in the system event log. In addition, the 
             controller is automatically reset, restoring the network 
             connection. To eliminate the potential for the 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-linearly. 
          In order to limit the CPU utilization without impacting the overall 
          throughput, we recommend that you load the driver as follows:

              insmod e1000.o InterruptThrottleRate=3000,3000,3000

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

RxDescriptors
Valid Range: 80-256 for 82542 and 82543-based adapters
             80-4096 for all other supported adapters
Default Value: 256
    This value is the number of receive descriptors allocated by the driver. 
    Increasing this value allows the driver to buffer more incoming packets. 
    Each descriptor is 16 bytes.  A receive buffer is allocated for each
    descriptor and can either be 2048 or 4096 bytes long, depending on the MTU 

    setting. An incoming packet can span one or more receive descriptors. 
    The maximum MTU size is 16110.

    NOTE: MTU designates the frame size. It only needs to be set for Jumbo 
          Frames.
    NOTE: Depending on the available system resources, the request for a
    higher number of receive descriptors may be denied.  In this case,
    use a lower number.

RxIntDelay
Valid Range: 0-65535 (0=off)
Default Value: 0
    This value delays the generation of receive interrupts in units of 1.024 
    microseconds.  Receive interrupt reduction can improve CPU efficiency if 
    properly tuned for specific network traffic. Increasing this value adds 
    extra latency to frame reception and can end up decreasing the throughput 
    of TCP traffic. If the system is reporting dropped receives, this value 
    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 
             hang (stop transmitting) under certain network conditions. If 
             this occurs a NETDEV WATCHDOG message is logged in the system
             event log. In addition, the controller is automatically reset, 
             restoring the network connection. To eliminate the potential for
             the hang ensure that RxIntDelay is set to 0.

RxAbsIntDelay (82540, 82545 and later adapters only)
Valid Range: 0-65535 (0=off)
Default Value: 128
    This value, in units of 1.024 microseconds, limits the delay in which a 
    receive interrupt is generated. Useful only if RxIntDelay is non-zero, 
    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 (adapters using copper connections only)
Valid Settings: 0, 10, 100, 1000
Default Value: 0 (auto-negotiate at all supported speeds)
    Speed forces the line speed to the specified value in megabits per second
    (Mbps). If this parameter is not specified or is set to 0 and the link 
    partner is set to auto-negotiate, the board will auto-detect the correct 
    speed. Duplex should also be set when Speed is set to either 10 or 100.

TxDescriptors
Valid Range: 80-256 for 82542 and 82543-based adapters
             80-4096 for all other supported adapters
Default Value: 256
    This value is the number of transmit descriptors allocated by the driver.
    Increasing this value allows the driver to queue more transmits. Each 
    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.

TxIntDelay
Valid Range: 0-65535 (0=off)
Default Value: 64
    This value delays the generation of transmit interrupts in units of 
    1.024 microseconds. Transmit interrupt reduction can improve CPU
    efficiency if properly tuned for specific network traffic. If the
    system is reporting dropped transmits, this value may be set too high
    causing the driver to run out of available transmit descriptors.

TxAbsIntDelay (82540, 82545 and later adapters only)
Valid Range: 0-65535 (0=off)
Default Value: 64
    This value, in units of 1.024 microseconds, limits the delay in which a 
    transmit interrupt is generated. Useful only if TxIntDelay is non-zero, 
    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 (not available on the 82542-based adapter)
Valid Range: 0-1
Default Value: 1
    A value of '1' indicates that the driver should enable IP checksum
    offload for received packets (both UDP and TCP) to the adapter hardware.

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

Three keywords are used to control the speed and duplex configuration. These 
keywords are Speed, Duplex, and AutoNeg.

If the board uses a fiber interface, these keywords are ignored, and the 
fiber interface board only links at 1000 Mbps full-duplex.

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

  The default operation is auto-negotiate. The board advertises all 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.

  If Speed = 1000, limited auto-negotiation is enabled and only 1000 Mbps is
  advertised (The 1000BaseT spec requires auto-negotiation.)

  If Speed = 10 or 100, then both Speed and Duplex should be set. Auto-
  negotiation is disabled, and the AutoNeg parameter is ignored. Partner SHOULD
  also be forced.

The AutoNeg parameter is used when more control is required over the auto-
negotiation process. When this parameter is used, Speed and Duplex parameters 
must not be specified. The following table describes supported values for the 
AutoNeg parameter:

Speed (Mbps)   		 1000      100    100    10     10
Duplex                   Full      Full   Half   Full   Half
Value (in base 16)       0x20      0x08   0x04   0x02   0x01

Example: insmod e1000 AutoNeg=0x03, loads e1000 and specifies (10 full duplex, 
10 half duplex) for negotiation with the peer.

Note that setting AutoNeg does not guarantee that the board will link at the 
highest specified speed or duplex mode, but the board will link at the 
highest possible speed/duplex of the link partner IF the link partner is also
set to auto-negotiate. If the link partner is forced speed/duplex, the 
adapter MUST be forced to the same speed/duplex.


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

  Configuring the Driver on Different Distributions
  -------------------------------------------------

  Configuring a network driver to load properly when the system is started is
  distribution dependent. Typically, the configuration process involves adding
  an alias line to /etc/modules.conf as well as editing other system startup 
  scripts and/or configuration files. Many popular Linux distributions ship 
  with tools to make these changes for you. To learn the proper way to 
  configure a network device for your system, refer to your distribution 
  documentation. If during this process you are asked for the driver or module 
  name, the name for the Linux Base Driver for the Intel PRO/1000 Family of 
  Adapters is e1000.

  As an example, if you install the e1000 driver for two PRO/1000 adapters 
  (eth0 and eth1) and set the speed and duplex to 10full and 100half, add the 
  following to modules.conf:

       alias eth0 e1000
       alias eth1 e1000
       options e1000 Speed=10,100 Duplex=2,1

  Viewing Link Messages
  ---------------------

  Link messages will not be displayed to the console if the distribution is 
  restricting system messages. In order to see network driver link messages on 
  your console, set dmesg to eight by entering the following:

       dmesg -n 8

  NOTE: This setting is not saved across reboots.

  Jumbo Frames
  ------------

  The driver supports Jumbo Frames for all adapters except 82542-based 
  adapters. 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:

        ifconfig ethx mtu 9000 up

  The maximum MTU setting for Jumbo Frames is 16110. This value coincides 
  with the maximum Jumbo Frames size of 16128.

  NOTE: Jumbo Frames are supported at 1000 Mbps only. Using Jumbo Frames at 
  10 or 100 Mbps may result in poor performance or loss of link.


  NOTE: MTU designates the frame size. To enable Jumbo Frames, increase the
  MTU size on the interface beyond 1500.

  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
  http://sf.net/projects/gkernel.  

  NOTE: Ethtool 1.6 only supports a limited set of ethtool options. Support 
  for a more complete ethtool feature set can be enabled by upgrading 
  ethtool to ethtool-1.8.1. 

  Enabling Wake on LAN* (WoL)
  ---------------------------

  WoL is configured through the Ethtool* utility. Ethtool is included with
  all versions of Red Hat after Red Hat 7.2. For other Linux distributions, 
  download and install Ethtool from the following website: 
  http://sourceforge.net/projects/gkernel.

  For instructions on enabling WoL with Ethtool, refer to the website listed 
  above.

  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 
  loaded when shutting down or rebooting the system.

  NAPI
  ----

  NAPI (Rx polling mode) is supported in the e1000 driver. NAPI is enabled
  or disabled based on the configuration of the kernel. 

  See www.cyberus.ca/~hadi/usenix-paper.tgz for more information on NAPI.


Known Issues
============

  Jumbo Frames System Requirement
  -------------------------------

  Memory allocation failures have been observed on Linux systems with 64 MB 
  of RAM or less that are running Jumbo Frames. If you are using Jumbo Frames,
  your system may require more than the advertised minimum requirement of 64 MB
  of system memory.


Support
=======

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

    http://support.intel.com

If an issue is identified with the released source code on the supported
kernel with a supported adapter, email the specific information related to 
the issue to linux.nics@intel.com.


License
=======

This software program is released under the terms of a license agreement 
between you ('Licensee') and Intel. Do not use or load this software or any 
associated materials (collectively, the 'Software') until you have carefully 
read the full terms and conditions of the LICENSE located in this software 
package. By loading or using the Software, you agree to the terms of this 
Agreement. If you do not agree with the terms of this Agreement, do not 
install or use the Software.

* Other names and brands may be claimed as the property of others.
