This file describes the Linux* Base Driver for the 10-gigabit Intel®
Network Connection. This driver supports the
2.6.x kernels.
This driver is only supported as a loadable module. Intel is not supplying
patches against the kernel source to allow for static linking of the driver.
For questions related to hardware requirements, refer to System Requirements. All hardware requirements listed
apply to use with Linux.
Use Ethtool (version 1.6 or
later), lspci, or ifconfig to obtain driver information. Instructions on
updating the ethtool can be found in the Additional
Configurations section later in this page.
Supported Adapters
The following Intel network adapters are compatible with the Linux driver in this
release:
Controller
Adapter Name
Board IDs
82598EB
Intel® 10 Gigabit XF SR Server Adapter
99083-xxx
To verify your 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 123456-001 (six
digits hyphen three digits). Match this to the list of numbers above.
For more information on how to identify your adapter or for the latest
network drivers for Linux, see Customer Support.
Supported Linux Versions
Linux drivers are provided for the following versions:
There are two methods for installing the Linux driver:
Install from Source Code
Install from a DKMS RPM
Install from Source Code
To build a binary RPM* package of this driver, run 'rpmbuild -tb <filename.tar.gz>'.
Replace <filename.tar.gz> with the specific filename of the driver.
NOTE: For the build to work properly it is
important that the currently running kernel MATCH the version and
configuration of the installed kernel source. If you have just recompiled
your kernel, reboot the system.
NOTE: RPM functionality has only been
tested in Red Hat distributions.
Copy the base driver tar file from 'Linux/Source/base_driver/ixgbe-<x.x.x>tar.gz'
on the driver CD, where <x.x.x> is the version number for the driver tar
file, to the directory of your choice. For example, use '/home/username/ixgbe'
or '/usr/local/src/ixgbe'.
Untar/unzip the archive, where <x.x.x> is the version number for the
driver tar: tar zxf ixgbe-<x.x.x>.tar.gz
Change to the driver src directory, where <x.x.x> is the
version number for the driver tar: cd ixgbe-<x.x.x>/src/
Compile the driver module: make install
The binary will be installed as: /lib/modules/<KERNEL
VERSION>/kernel/drivers/net/ixgbe/ixgbe.ko
The install locations listed above are the default locations. They
might not be correct for certain Linux distributions. For more information,
see the ldistrib.txt file included in the driver tar.
Install the module using the insmod or modprobe command: modprobe ixgbe insmod ixgbe
NOTE: For 2.6 kernels, the insmod command can
be used if the full path to the driver module is specified. For example: insmod
/lib/modules/<KERNEL VERSION>/kernel/drivers/net/ixgbe/ixgbe.ko
For 2.6 based kernels, make sure that the older ixgbe drivers are
removed from the kernel, before loading the new module: rmmod ixgbe; modprobe ixgbe
Assign an IP address to and activate the Ethernet interface by entering the following, where <x>
is the interface number: ifconfig eth<x> <IP_address> netmask <netmask>
Verify that the interface works. Enter the following, where <IP_address>
is the IP address for another machine on the same subnet as the interface
that is being tested: ping <IP_address>
Install from a DKMS RPM
On the installation CD, the DKMS RPM is located at: /Linux/DKMS/base_driver/.
Otherwise, navigate to the directory containing the RPM that you wish to
install. See the table below to determine the RPM to use for your Red Hat
distribution. To install or uninstall the RPMs, follow the instructions below.
NOTE: The DKMS (2.0 or higher)
framework must be installed before attempting to install a DKMS RPM. DKMS
can be acquired at:
http://linux.dell.com/dkms/
DKMS RPMs are provided for supported Linux
distributions and are named ixgbe-<driver_version>-<type>.noarch.rpm
<driver_version> and <type> are specific to the driver version you are
using:
<driver_version> is the driver version number; e.g., 6.2.xy.
<type> is either "sb_dkms" for packages that contain both source and
binaries, or "bo_dkms" for packages that contain binary-only modules.
The naming convention for the included DKMS RPMs is:
For example, ixgbe-x.y.z-sb_dkms.noarch.rpm: ixgbe is the component name;
x.y.z is the component version; and sb_dkms is the type.
NOTE: If you have a previous RPM
installed, it must be uninstalled before installing the new RPM. To
determine whether or not a previous RPM is installed, enter rpm -q ixgbe.
To install the DKMS RPM, use this command:
rpm -i <filename>
To uninstall the RPM, use this command:
rpm -e <package>
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 ixgbe [<option>=<VAL1>,<VAL2>,...]
For example, with two Intel 10GbE adapters, enter:
modprobe ixgbe TxDescriptors=80,128
This loads the ixgbe driver with 80 TX resources for the first adapter and 128 TX
resources for the second adapter.
The default value for each parameter is generally the recommended setting,
unless otherwise noted.
The following table contains parameters and possible values for insmod and
modprobe commands:
Receive flow control high threshold (when we
send a pause frame).
RxFCLowThresh
64 - 262,136 (0x40 - 0x3FFF8, 8 byte granularity)
Must be less than
high threshold by at least 8 bytes.
163,840 (0x28000)
Receive flow control low threshold (when we
send a resume frame).
RxBufferMode
0 - 2
2
Receive buffer mode.
0 = Driver will use single buffer for Rx
packets.
1 = Driver will use packet split mode for Rx. Packet header
will be received in header buffer and payload will be received in data
buffer.
2 = Optimal mode. Driver will use single buffer mode for non-Jumbo
configurations and packet split mode for Jumbo configurations.
InterruptType
0 - 2
2
Interrupt type.
0 = Legacy interrupt
1 = MSI
2 = MSIX
FCReqTimeout
1 - 65535
65535 (0xFFFF)
Flow control request timeout (how long to
pause the link partner's transmit).
InterruptThrottleRate
100 - 100000 (0=off, 1=dynamic)
8000
Interrupt Throttle Rate (interrupts/second).
FlowControl
0 - 3 (0=none, 1=Rx only, 2=Tx only, 3=Rx & Tx)
3 (Rx & Tx)
User specified Flow Control Override.
0 =
No Flow Control
1 = Rx only, respond to pause frames but do not generate them
2 = Tx only, generate pause frames but ignore them on receive
3 = Full Flow Control support
LLIPort
0 - 65535
0 (disabled)
LLI is configured with the LLIPort
command-line parameter, which specifies which TCP should generate Low
Latency Interrupts.
For example, using LLIPort=80 would cause the
board to generate an immediate interrupt upon receipt of any packet sent
to TCP port 80 on the local machine.
WARNING: Enabling LLI can result in an
excessive number of interrupts/second that may cause problems with
the system and in some cases may cause a kernel panic.
LLIPush
0 - 1
0 (disabled)
LLIPush can be set to be enabled or disabled
(default). It is most effective in an environment with many small transactions.
NOTE: Enabling LLIPush may allow a denial of service attack.
LLISize
0 - 1500
0 (disabled)
LLISize causes an immediate interrupt if the
board receives a packet smaller than the specified size.
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 or /etc/modprobe.conf as well as editing other
system startup scripts and/or configuration files. Many 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® 10 Gigabit XF SR Server Adapter is ixgbe.
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
Jumbo Frames support is enabled by changing the MTU to a value larger
than the default of 1500 bytes. The maximum value for the MTU is 16110. Use the ifconfig command to increase the MTU size. For example, enter the following
where <x> is the interface number:
ifconfig eth<x> mtu 9000 up
This setting is not saved across reboots. The setting change can be made
permanent by adding:
MTU = 9000
to the file /etc/sysconfig/network-scripts/ifcfg-eth<x> for
RHEL or to the file /etc/sysconfig/network/<config_file> for SLES.
Ethtool
The driver uses 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.
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 to the latest version.
Known Issues
Compiling the Driver
When trying to compile the driver by running make install, the following
error may occur:
"Linux kernel source not configured - missing version.h"
To solve this issue, create the version.h file by going to the Linux
Kernel source tree and entering:
make include/linux/version.h
Performance Degradation with Jumbo Frames
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.
For more details, see the specific application documentation and in the text
file ip-sysctl.txt in your kernel documentation.
Multiple Interfaces on Same Ethernet Broadcast Network
Due to the default ARP behavior on Linux, it is not possible to have one
system on two IP networks in the same Ethernet broadcast domain
(non-partitioned switch) behave as expected. All Ethernet interfaces will
respond to IP traffic for any IP address assigned to the system.
This results in unbalanced receive traffic.
If you have multiple interfaces in a server, turn on ARP filtering by
entering:
echo 1 > /proc/sys/net/ipv4/conf/all/arp_filter
(this only works if your kernel's version is higher than 2.4.5), or install
the interfaces in separate broadcast domains.
UDP Stress Test Dropped Packet Issue
Under small packets UDP stress test with the 10GbE driver, the Linux system
may drop UDP packets due to the fullness of socket buffers. You may want to
change the driver's Flow Control variables to the minimum value for controlling
packet reception.