2008-05-16 18:46:30 +00:00
|
|
|
FreeBSD Driver for 10 Gigabit PCI Express Server Adapters
|
|
|
|
=============================================
|
2009-04-10 00:22:48 +00:00
|
|
|
/*$FreeBSD$*/
|
|
|
|
|
|
|
|
May 14, 2008
|
2008-05-16 18:46:30 +00:00
|
|
|
|
|
|
|
|
|
|
|
Contents
|
|
|
|
========
|
|
|
|
|
|
|
|
- Overview
|
|
|
|
- Supported Adapters
|
|
|
|
- Building and Installation
|
|
|
|
- Additional Configurations
|
|
|
|
- Known Limitations
|
|
|
|
|
|
|
|
|
|
|
|
Overview
|
|
|
|
========
|
|
|
|
|
|
|
|
This file describes the FreeBSD* driver for the 10 Gigabit PCIE Family of
|
|
|
|
Adapters. Drivers has been developed for use with FreeBSD 7 or later.
|
|
|
|
|
|
|
|
For questions related to hardware requirements, refer to the documentation
|
|
|
|
supplied with your Intel 10GbE adapter. All hardware requirements listed
|
|
|
|
apply to use with FreeBSD.
|
|
|
|
|
|
|
|
|
|
|
|
Supported Adapters
|
|
|
|
==================
|
|
|
|
|
|
|
|
The following Intel network adapters are compatible with the drivers in this
|
|
|
|
release:
|
|
|
|
|
|
|
|
Controller Adapter Name Physical Layer
|
|
|
|
---------- ------------ --------------
|
|
|
|
82598EB Intel(R) 10 Gigabit XF SR/AF 10G Base -LR (850 nm optical fiber)
|
|
|
|
Dual Port Server Adapter 10G Base -SR (1310 nm optical fiber)
|
|
|
|
82598EB Intel(R) 10 Gigabit XF SR/LR
|
|
|
|
Server Adapter
|
|
|
|
Intel(R) 82598EB 10 Gigabit AF
|
|
|
|
Network Connection
|
|
|
|
Intel(R) 82598EB 10 Gigabit AT
|
|
|
|
CX4 Network Connection
|
|
|
|
|
|
|
|
|
|
|
|
Building and Installation
|
|
|
|
=========================
|
|
|
|
|
|
|
|
NOTE: You must have kernel sources installed in order to compile the driver
|
|
|
|
module.
|
|
|
|
|
|
|
|
In the instructions below, x.x.x is the driver version as indicated in
|
|
|
|
the name of the driver tar.
|
|
|
|
|
|
|
|
1. Move the base driver tar file to the directory of your choice. For
|
|
|
|
example, use /home/username/ixgbe or /usr/local/src/ixgbe.
|
|
|
|
|
|
|
|
2. Untar/unzip the archive:
|
|
|
|
tar xfz ixgbe-x.x.x.tar.gz
|
|
|
|
|
|
|
|
3. To install man page:
|
|
|
|
cd ixgbe-x.x.x
|
|
|
|
gzip -c ixgbe.4 > /usr/share/man/man4/ixgbee.4.gz
|
|
|
|
|
|
|
|
4. To load the driver onto a running system:
|
|
|
|
cd ixgbe-x.x.x/src
|
|
|
|
make load
|
|
|
|
|
|
|
|
5. To assign an IP address to the interface, enter the following:
|
|
|
|
ifconfig ix<interface_num> <IP_address>
|
|
|
|
|
|
|
|
6. 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>
|
|
|
|
|
|
|
|
7. If you want the driver to load automatically when the system is booted:
|
|
|
|
|
|
|
|
cd ixgbe-x.x.x/src
|
|
|
|
make
|
|
|
|
make install
|
|
|
|
|
|
|
|
Edit /boot/loader.conf, and add the following line:
|
|
|
|
ixgbe_load="YES"
|
|
|
|
|
|
|
|
OR
|
|
|
|
|
|
|
|
compile the driver into the kernel (see item 8).
|
|
|
|
|
|
|
|
|
|
|
|
Edit /etc/rc.conf, and create the appropriate ifconfig_ixgbe<interface_num>
|
|
|
|
entry:
|
|
|
|
|
|
|
|
ifconfig_ix<interface_num>="<ifconfig_settings>"
|
|
|
|
|
|
|
|
Example usage:
|
|
|
|
|
|
|
|
ifconfig_ix0="inet 192.168.10.1 netmask 255.255.255.0"
|
|
|
|
|
|
|
|
NOTE: For assistance, see the ifconfig man page.
|
|
|
|
|
|
|
|
8. If you want to compile the driver into the kernel, enter:
|
|
|
|
|
|
|
|
FreeBSD 7 or later:
|
|
|
|
|
|
|
|
cd ixgbe-x.x.x/src
|
|
|
|
|
|
|
|
cp *.[ch] /usr/src/sys/dev/ixgbe
|
|
|
|
|
|
|
|
cp Makefile.kernel /usr/src/sys/modules/ixgbe/Makefile
|
|
|
|
|
|
|
|
Edit the kernel configuration file (i.e., GENERIC or MYKERNEL) in
|
|
|
|
/usr/src/sys/i386/conf (replace "i386" with the appropriate system
|
|
|
|
architecture if necessary), and ensure the following line is present:
|
|
|
|
|
|
|
|
device ixgbe
|
|
|
|
|
|
|
|
Compile and install the kernel. The system must be reboot for the kernel
|
|
|
|
updates to take affect. For additional information on compiling the kernel,
|
|
|
|
consult the FreeBSD operating system documentation.
|
|
|
|
|
|
|
|
|
|
|
|
Configuration and Tuning
|
|
|
|
=========================
|
|
|
|
|
|
|
|
The driver supports Transmit/Receive Checksum Offload and Jumbo Frames on
|
|
|
|
all 10 Gigabit adapters.
|
|
|
|
|
|
|
|
Jumbo Frames
|
|
|
|
------------
|
|
|
|
To enable Jumbo Frames, use the ifconfig utility to increase the MTU
|
|
|
|
beyond 1500 bytes.
|
|
|
|
|
|
|
|
NOTES:
|
|
|
|
|
|
|
|
- The Jumbo Frames setting on the switch must be set to at least
|
|
|
|
22 bytes larger than that of the adapter.
|
|
|
|
|
|
|
|
- There are known performance issues with this driver when running
|
|
|
|
UDP traffic with Jumbo Frames.
|
|
|
|
|
|
|
|
The Jumbo Frames MTU range for Intel Adapters is 1500 to 16114. The default
|
|
|
|
MTU range is 1500. To modify the setting, enter the following:
|
|
|
|
|
|
|
|
ifconfig ix <interface_num> <hostname or IP address> mtu 9000
|
|
|
|
|
|
|
|
To confirm an interface's MTU value, use the ifconfig command. To confirm
|
|
|
|
the MTU used between two specific devices, use:
|
|
|
|
|
|
|
|
route get <destination_IP_address>
|
|
|
|
|
|
|
|
VLANs
|
|
|
|
-----
|
|
|
|
To create a new VLAN pseudo-interface:
|
|
|
|
|
|
|
|
ifconfig <vlan_name> create
|
|
|
|
|
|
|
|
To associate the VLAN pseudo-interface with a physical interface and
|
|
|
|
assign a VLAN ID, IP address, and netmask:
|
|
|
|
|
|
|
|
ifconfig <vlan_name> <ip_address> netmask <subnet_mask> vlan
|
|
|
|
<vlan_id> vlandev <physical_interface>
|
|
|
|
|
|
|
|
Example:
|
|
|
|
|
|
|
|
ifconfig vlan10 10.0.0.1 netmask 255.255.255.0 vlan 10 vlandev ixgbe0
|
|
|
|
|
|
|
|
In this example, all packets will be marked on egress with 802.1Q VLAN
|
|
|
|
tags, specifying a VLAN ID of 10.
|
|
|
|
|
|
|
|
To remove a VLAN pseudo-interface:
|
|
|
|
|
|
|
|
ifconfig <vlan_name> destroy
|
|
|
|
|
|
|
|
|
|
|
|
Checksum Offload
|
|
|
|
----------------
|
|
|
|
|
|
|
|
Checksum offloading supports both TCP and UDP packets and is
|
|
|
|
supported for both transmit and receive.
|
|
|
|
|
|
|
|
Checksum offloading can be enabled or disabled using ifconfig.
|
|
|
|
Both transmit and receive offloading will be either enabled or
|
|
|
|
disabled together. You cannot enable/disable one without the other.
|
|
|
|
|
|
|
|
To enable checksum offloading:
|
|
|
|
|
|
|
|
ifconfig <interface_num> rxcsum
|
|
|
|
|
|
|
|
To disable checksum offloading:
|
|
|
|
|
|
|
|
ifconfig <interface_num> -rxcsum
|
|
|
|
|
|
|
|
To confirm the current setting:
|
|
|
|
|
|
|
|
ifconfig <interface_num>
|
|
|
|
|
|
|
|
|
|
|
|
TSO
|
|
|
|
---
|
|
|
|
|
|
|
|
To disable:
|
|
|
|
|
|
|
|
ifconfig <interface_num> -tso
|
|
|
|
|
|
|
|
To re-enable:
|
|
|
|
|
|
|
|
ifconfig <interface_num> tso
|
|
|
|
|
|
|
|
LRO
|
|
|
|
___
|
|
|
|
|
|
|
|
Large Receive Offload is available in version 1.4.4, it is on
|
|
|
|
by default. It can be toggled off and on by using:
|
|
|
|
sysctl dev.ix.X.enable_lro=[0,1]
|
|
|
|
|
|
|
|
NOTE: when changing this feature you MUST be sure the interface
|
|
|
|
is reinitialized, it is easy to do this with ifconfig down/up.
|
|
|
|
The LRO code will ultimately move into the kernel stack code,
|
|
|
|
but for this first release it was included with the driver.
|
|
|
|
|
|
|
|
Important system configuration changes:
|
|
|
|
---------------------------------------
|
|
|
|
|
|
|
|
When there is a choice run on a 64bit OS rather than 32, it makes
|
|
|
|
a significant difference in improvement.
|
|
|
|
|
|
|
|
The default scheduler SCHED_4BSD is not smart about SMP locality issues.
|
|
|
|
Significant improvement can be achieved by switching to the ULE scheduler.
|
|
|
|
|
|
|
|
This is done by changing the entry in the config file from SCHED_4BSD to
|
|
|
|
SCHED_ULE. Note that this is only advisable on FreeBSD 7, on 6.X there have
|
|
|
|
been stability problems with ULE.
|
|
|
|
|
|
|
|
Change the file /etc/sysctl.conf, add the line:
|
|
|
|
|
|
|
|
hw.intr_storm_threshold: 8000 (the default is 1000)
|
|
|
|
|
|
|
|
Best throughput results are seen with a large MTU; use 9000 if possible.
|
|
|
|
|
|
|
|
The default number of descriptors is 256, increasing this to 1024 or even
|
|
|
|
2048 may improve performance.
|
|
|
|
|
|
|
|
|
|
|
|
Known Limitations
|
|
|
|
=================
|
|
|
|
Under small packets UDP stress test with 10GbE driver, the FreeBSD system
|
|
|
|
will 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.
|
|
|
|
|
|
|
|
|
|
|
|
Support
|
|
|
|
=======
|
|
|
|
|
|
|
|
For general information and support, 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
|
2009-04-10 00:22:48 +00:00
|
|
|
the issue to freebsd@intel.com.
|
2008-05-16 18:46:30 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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.
|
|
|
|
|
|
|
|
|