
Intel(R) PRO/1000 Gigabit Server Adapter Linux Driver
=====================================================

This file describes the PRO/1000 driver for the Linux operating system.

This package includes the source code for a Linux driver for the PRO/1000 
Server adapters. This driver is known to build properly on 2.2.x kernels 
through 2.2.18 and on the 2.4.0 kernel. Intel performed testing on PCs 
with Intel processors with kernels 2.2.16, 2.2.18 and 2.4.0.

The PRO/1000 driver is only supported as a loadable module at this time.
Intel is not supplying patches against the kernel source to allow for
static linking of the driver.

Please refer to the documentation supplied with your PRO/1000 adapter to
answer any questions related to hardware requirements.  All hardware
requirements listed apply to use with Linux.


Building and Installation
=========================

Note: For the build to work properly it is important that the currently
running kernel MATCH the version and configuration of the installed
kernel sources. Also if you have just recompiled your kernel, please 
reboot.

1. Move the base driver tarball to the directory of your choice. 
Example is using /home/username/e1000 or /usr/local/src/e1000

2. untar/unzip archive
	tar xfz e1000-x.x.x.tar.gz

3. Change to the driver src directory
  	cd e1000-x.x.x/src/	

4. Compile the driver module
       make install
   The binary will be installed as:    
     /lib/modules/[KERNEL_VERSION]/net/e1000.o

5. Install the module
        insmod e1000
     
6. ifconfig eth# <IPaddress>	
       where # is interface number

7. Verify interface works
	ping  <youripaddress>	
	
To build a binary RPM* package of this driver run 'rpm -tb <filename.tar.gz>'.
Replace <filename.tar.gz> with the specific file name of driver. 

Basic Configuration
===================

Once the driver has been installed it can be loaded by running
'modprobe e1000'. This will create a new Ethernet interface. For example, 
if no other Ethernet drivers are loaded the PRO/1000 will be called eth0.

The interface can be activated and assigned an IP address by running:
 
     `ifconfig ethX yyy.yyy.yyy.yyy'

where ethX is the Ethernet device and yyy.yyy.yyy.yyy is the IP address.


Command Line Configuration
==========================

The following parameters are used by entering them on the command line
with the modprobe (or insmod) command. For example, with two PRO/1000
PCI cards, entering:

    modprobe e1000 TxDescriptors=80,128

will load the e1000 driver with 80 TX resources for the first card and
128 TX resources for the second card. 

Speed
Valid Range: 0, 10, 100, 1000        Default Value: 0
    Forces the line speed to the specified value in megabits per second.
    If this parameter is not specified, or is set to 0, the board will 
    auto-detect the correct speed IF link partner is also set to auto-
    negotiate.
    
    See the section "Speed and Duplex Configuration" in this document.
    
ForceDuplex
Valid Range: 0-2                     Default Value: 0
    Forces the duplex mode. 
    A setting of 1 indicates half duplex.
    A setting of 2 indicates full duplex.
    If this parameter is not specified, or is set to 0, the board will
    auto-detect the correct duplex IF link partner is also set to auto-
    negotiate. If link partner is forced (either full or half), it will 
    default to half-duplex.
    
    See the section "Speed and Duplex Configuration" in this document.
    
AutoNeg
Valid Range: 0-255                   Default Value: 0x2F 
    When this parameter is used, the Speed and ForceDuplex parameters
    must not be specified.  This parameter is a bitmap that specifies
    which speed and duplex settings the board will advertise.
    
    See the section "Speed and Duplex Configuration" in this document.

TxDescriptors
Valid Range: 80-256                  Default Value: 80
    This value is the number of transmit descriptors allocated by the
    driver. Increasing this value will allow the driver to queue more 
    transmits. Each descriptor is 16 bytes.

RxDescriptors
Valid Range: 80-256                  Default Value: 80
    This value is the number of receive descriptors allocated by the
    driver. Increasing this value will allow the driver to buffer more
    incoming packets.  Each descriptor is 16 bytes.  A receive buffer is
    also allocated for each descriptor, and is either 2048, 4096, 8192,
    or 16384 bytes depending on the MTU setting. 

Jumbo
Valid Range: 0-1                     Default Value: 1
    A value of '1' indicates that the driver should allow the use of
    Jumbo frames.  The actual frame size is controlled by the device MTU
    setting, set from ifconfig.

WaitForLink
Valid Range: 0-1                     Default Value: 1
    Controls whether or not the driver will wait for link before 
    finishing initialization. The default value causes the driver to wait
    until auto-negotiation is complete (or failed) before finishing 
    initialization and returning to the command prompt. Setting this 
    value to '0' may cause the driver to initialize faster, but may also 
    cause it to display incorrect link information when it loads.


Speed and Duplex Configuration
==============================
Three keywords are used to control the speed and duplex configuration of
the PRO/1000.  These keywords are Speed, ForceDuplex, and AutoNeg.

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

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

Default operation is to auto-negotiate. The board advertises all supported
speed and duplex combinations, and links at the highest common speed and 
duplex mode IF the link partner is also set to auto-negotiate.

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

If Speed = 10 or 100, then both Speed and ForceDuplex must be
set, and auto-negotiation is disabled.  The AutoNeg parameter is ignored.

The AutoNeg parameter is used when more control is required over the auto-
negotiation process.  When this parameter is used the Speed and ForceDuplex 
parameters must not be specified.  This parameter is a bitmap that 
specifies which speed and duplex settings are advertised to the link partner.

Bit            7      6      5       4       3      2      1       0
Speed (Mbps)   N/A    N/A    1000    N/A     100    100    10      10
Duplex                       Full            Full   Half   Full    Half

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


Additional Configuration
========================

Configuring a network driver to load properly when the system is started 
is distribution dependent.  Typically it involves adding an alias line to
/etc/conf.modules 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.  Refer to your distribution documentation to 
learn the proper way to configure a network device for your system. 
If during this process you are asked for the driver or module name, 
the driver name for the PRO/1000 is 'e1000'.


Supported Adapters
==================

This driver supports the following Intel adapters:

    Intel(R) PRO/1000 Gigabit Server Adapter      700262-xxx
                                                  717037-xxx

    Intel(R) PRO/1000 F Server Adapter            738640-xxx
                                                  A38888-xxx
                                                  A06512-xxx

    Intel(R) PRO/1000 T Server Adapter            A19845-xxx
                                                  A33948-xxx

To verify your Intel adapter is supported, find the board ID number on 
the adapter. Look for a label that has a barcode and a number in the 
format of 123456-001 (six digits hyphen 3 digits). Match this to the 
list of numbers above.

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

Please contact the appropriate vendor for support.


Support
=======

For general information and peer to peer support go to the forum at:

    http://support.intel.com/newsgroups/netwadap.htm

Read the forum charter, legal information, and posting guidelines before
entering the forum. This forum will post new information regarding the
driver as it becomes available.

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
=======
Copyright (c) 1999 - 2001, Intel Corporation 

All rights reserved.

Redistribution and use in source and binary forms, with or without 
modification, are permitted provided that the following conditions are met:

 1. Redistributions of source code must retain the above copyright notice, 
this list of conditions and the following disclaimer.

 2. Redistributions in binary form must reproduce the above copyright notice, 
this list of conditions and the following disclaimer in the documentation 
and/or other materials provided with the distribution.

 3. Neither the name of Intel Corporation nor the names of its contributors 
may be used to endorse or promote products derived from this software 
without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' 
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 
ARE DISCLAIMED. IN NO EVENT SHALL CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 
OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 


