.\" 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.
.\"
.TH e1000e 1 "January 5, 2012"

.SH NAME
e1000e \-This file describes the Linux* Base Driver for the Gigabit Family of Adapters.
.SH SYNOPSIS
.PD 0.4v
modprobe e1000e [<option>=<VAL1>,<VAL2>,...]
.PD 1v
.SH DESCRIPTION
This driver is intended for \fB2.4.x\fR and \fB2.6.x\fR kernels.  This driver includes support for Intel(R) Itanium(R)2-based systems.
.LP
This 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.  For questions related to hardwarerequirements, refer to the documentation supplied with your Intel adapter.  All hardware requirements listed apply to use with Linux.
.SH OPTIONS
The following optional parameters are used by entering them on the command line with the modprobe command.  
.LP
.B InterruptThrottleRate
.IP
.B Valid Range: 
0,1,3,4, 100-100000 (0=off, 1=dynamic, 3=dynamic conservative, 4=simplfied balancing)
.IP
.B Default Value: 
3
.IP
This 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.
.IP
The default setting is configured to optimize interrupts for bulk 
throughput while keeping CPU utilization low.  However this setting may 
result in slower overall transfer speeds if network traffic consists 
mostly of small packets.  If this is the case, change this value to 0. 
.IP
.B 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.
.IP
See the section "InterruptThrottleRate" in Readme.
.LP
.B RxIntDelay
.IP
.B Valid Range: 
0-65535 (0=off)
.br
.B Default Value: 
0
.IP
This sets the delay of 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.
.IP
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 zero.
.LP
.B RxAbsIntDelay 
.IP
.B Valid Range: 
0-65535 (0=off)
.br
.B Default Value: 
128
.IP
This limits the delay in which a receive interrupt is generated (in units of 1.024 microseconds).  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.
.LP
.B TxIntDelay
.IP
.B Valid Range: 
0-65535 (0=off)
.br
.B Default Value: 
64
.IP
This sets the delay of 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.
.LP
.B TxAbsIntDelay 
.IP
.B Valid Range: 
0-65535 (0=off)
.br
.B Default Value: 
64
.IP
This limits the delay in which a transmit interrupt is generated (in units of 1.024 microseconds).  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.
.LP
.B Copybreak
.IP
.B Valid Range:   
0-xxxxxxx (0=off)
.br
.B Default Value: 
256
.IP
.B Usage: 
insmod e1000e.ko copybreak=128
.IP
Driver copies all packets below or equaling this size to a fresh rx buffer before handing it up the stack.
.IP
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/e1000e/parameters/copybreak
.LP
.B SmartPowerDownEnable
.IP
.B Valid Range: 
0-1
.br
.B Default Value: 
1 (uses EEPROM settings); 0 (disabled for 82571EB and 82572-based network connections) 
.IP
Allows Phy to turn off in lower power states. The user can turn off this parameter in supported chipsets.
.LP
.B KumeranLockLoss
.IP
.B Valid Range: 
0-1
.br
.B Default Value: 
1 (enabled)
.IP
This workaround skips resetting the Phy at shutdown for the initial silicon releases of ICH8 systems.
.LP
.B IntMode
.IP
.B Valid Range: 
0-2 (0=legacy, 1=MSI, 2=MSI-X)
.br
.B Default Value: 
1 (MSI)
.IP
Allows changing the interrupt mode at module load time, without requiring a
recompile. If the driver load fails to enable a specific interrupt mode, the
driver will try other interrupt modes, from least to most compatible.  The 
interrupt order is MSI-X, MSI, Legacy.  If specifying MSI (IntMode=1) 
interrupts, only MSI and Legacy will be attempted.
.LP
.B CrcStripping
.IP
.B Valid Range: 
0-1
.br
.B Default Value: 
1 (enabled)
.IP
Strip the CRC from received packets before sending up the network stack.  If 
you have a machine with a BMC enabled but cannot receive IPMI traffic after
loading or enabling the driver, try disabling this feature.
.LP
.B EEE
.IP
.B Valid Range:
0-1
.br
.B Default Value:
1 (enabled for parts supporting EEE)
.IP
This option allows for the ability of IEEE802.3az (a.k.a. Energy Efficient Ethernet or EEE) to be advertised to the link partner on parts supporting EEE.  EEE saves energy by putting the device into a low-power state when the link is idle, but only when the link partner also supports EEE and after the feature has been enabled during link negotiation.  It is not necessary to disable the advertisement of EEE when connected with a link partner that does not support EEE.
.B Node
.IP
.B Valid Range:   
0-n
.IP
.B Default Value: 
-1 (off)
.IP
0 - n: where n is the number of the NUMA node that should be used to allocate memory for this adapter port.
.IP
-1: uses the driver default of allocating memory on whichever processor is running insmod/modprobe. 
.IP
The Node parameter will allow you to pick which NUMA node you want to have 
the adapter allocate memory from.  All driver structures, in-memory queues, and receive buffers will be allocated on the node specified.  This parameter is onlyuseful when interrupt affinity is specified, otherwise some portion of the time the interrupt could run on a different core than the memory is allocated on, causing slower memory access and impacting throughput, CPU, or both.
.SH JUMBO FRAMES
.LP
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:
.IP
ifconfig ethx mtu 9000 up
.LP
.B NOTE: 
Using Jumbo frames at 10 or 100 Mbps is not supported and may result in poor performance or loss of link.
.LP
The maximum MTU setting for Jumbo Frames is 9216.  This value coincides with the maximum Jumbo Frames size of 9234 bytes.
.LP
Adapters based on the Intel(R) 82573V/E controllers do not support Jumbo Frames.
.LP
See the section "Jumbo Frames" in Readme.
.LP
.SH ethtool
.LP
The driver utilizes the ethtool interface for driver configuration and diagnostics, as well as displaying statistical information.  ethtool version 3 or later is required for this functionality, although we strongly recommend downloading the latest version at: http://ftp.kernel.org/pub/software/network/ethtool/.
.LP
.SH SPEED AND DUPLEX SETTINGS
.LP
Speed and Duplex are configured through the ethtool* utility.  ethtool is included with all versions of Red Hat after Red Hat7.2.  For other Linux distributions, download and install ethtool from the following website: http://sourceforge.net/projects/gkernel.  
.LP
.SH NAPI
.LP
NAPI (Rx polling mode) is supported in the e1000e driver.  NAPI is enabled by default. 
.LP
To disable NAPI, compile the driver module, passing in a configuration option:
.IP
make CFLAGS_EXTRA=-DE1000E_NO_NAPI install
.LP
See www.cyberus.ca/~hadi/usenix-paper.tgz for more information on NAPI.
.LP
.SH SUPPORT
.LP
For additional information, including supported adapters, building, and installation, see the Readme file included with the driver.
.LP
For general information, go to the Intel support website at:
.IP
.B http://support.intel.com
.LP
