Chelsio T3 Family 10/1Gb Ethernet driver.

Supported Linux kernels
================================================================================
This release of the Chelsio 10/1Gb Ethernet driver supports the following
kernels in both TOE and NIC mode (unless otherwise stated):
Redhat Enterprise Linux 3 base kernel (RHEL3), 2.4.21-xx.EL (*NIC only).
Redhat Enterprise Linux 4 update 3 kernel (RHEL4.3), 2.6.9-34.EL
Redhat Enterprise Linux 4 update 4 kernel (RHEL4.4), 2.6.9-42.EL
Redhat Enterprise Linux 4 update 5 kernel (RHEL4.5), 2.6.9-55.EL
Redhat Enterprise Linux 4 update 6 kernel (RHEL4.6), 2.6.9-67.EL
Redhat Enterprise Linux 4 update 8 kernel (RHEL4.8), 2.6.9-89.EL
Redhat Enterprise Linux 5 base kernel (RHEL5), 2.6.18-8.el5
Redhat Enterprise Linux 5 update 1 kernel (RHEL5.1), 2.6.18-53.el5
Redhat Enterprise Linux 5 update 2 kernel (RHEL5.2), 2.6.18-92.el5
Redhat Enterprise Linux 5 update 3 kernel (RHEL5.3), 2.6.18-128.el5
Redhat Enterprise Linux 5 update 4 kernel (RHEL5.4), 2.6.18-164.el5
Redhat Enterprise Linux 5 update 5 kernel (RHEL5.5), 2.6.18-194.el5
Suse Linux Enterprise Server 10 base kernel (SLES10), 2.6.16.21-0.8
Suse Linux Enterprise Server 10 SP1 kernel (SLES10.1), 2.6.16.46-0.12
Suse Linux Enterprise Server 10 SP2 kernel (SLES10.2), 2.6.16.60-0.21
Suse Linux Enterprise Server 10 SP3 kernel (SLES10.3), 2.6.16.60-0.49.3
Suse Linux Enterprise Server 9 SP3 kernel (SLES9.3), 2.6.5-7.244 (*NIC only).
Suse Linux Enterprise Server 11 base kernel (SLES11), 2.6.27.19-5
Kernel.org linux-2.6.9
Kernel.org linux-2.6.12
Kernel.org linux-2.6.16 - linux-2.6.32
Other kernel versions have not been tested and are not guaranteed to work.
Offload (TOE) support is available on x86_64, i386, and ia64 architectures.
*TOE is not supported as a module, but is supported as a kernel patch.

The offloaded bonding driver is supported on the following kernels:
Redhat Enterprise Linux 5 base kernel (RHEL5), 2.6.18-8.el5
Redhat Enterprise Linux 5 update 1 kernel (RHEL5.1), 2.6.18-53.el5
Redhat Enterprise Linux 5 update 2 kernel (RHEL5.2), 2.6.18-92.el5
Redhat Enterprise Linux 5 update 3 kernel (RHEL5.3), 2.6.18-128.el5
Redhat Enterprise Linux 5 update 4 kernel (RHEL5.4), 2.6.18-164.el5
Redhat Enterprise Linux 4 update 4 kernel (RHEL4.4), 2.6.9-42.EL
Redhat Enterprise Linux 4 update 5 kernel (RHEL4.5), 2.6.9-55.EL
Redhat Enterprise Linux 4 update 6 kernel (RHEL4.6), 2.6.9-67.EL
Redhat Enterprise Linux 4 update 8 kernel (RHEL4.8), 2.6.9-89.EL
Suse Linux Enterprise Server 10 base kernel (SLES10), 2.6.16.21-0.8
Suse Linux Enterprise Server 10 SP1 kernel (SLES10.1), 2.6.16.46-0.12
Suse Linux Enterprise Server 10 SP2 kernel (SLES10.2), 2.6.16.60-0.21
Kernel.org linux-2.6.12
Kernel.org linux-2.6.18 through linux-2.6.28


Build and Install
================================================================================
The driver must be installed by the root user, any attempt in installing the
driver as a regular user will fail to install.

If building the driver for a kernel other than the current running kernel, it
will be necessary to pass in KSRC= to make. Furthermore, if your
build tree is in a different location than the source tree, you will need to
pass in KOBJ= to make as well.

The src directory contains the driver source files for building kernel modules.
To build the TOE driver, change to the src/ directory and run:
make
make install

To build the NIC driver (without offload support),
change to the src/ directory and run:
make nic
make nic install

Only one type of driver needs to be compiled, NIC or TOE, not both. The TOE
driver is built by default, without passing any arguments to make. Building
the TOE driver also provides NIC only support if the 't3_tom' driver is not
loaded. Once the t3_tom module is loaded, all new TCP connections will be
offloaded. If there are any TCP listening servers started before t3_tom has
been loaded, it will be necessary to restart those servers for TCP to be
offloaded.

RPM
================================================================================
The driver may built as an RPM for the current running kernel. To build the
driver RPM, change to the src/ directory and run:
make rpm
OR
make nic rpm

The rpm binary will be located in the src/ directory.

-------------------------------------------------------------------------------
NOTE: If OFED package is already installed, installing cxgb3toe- rpm
gives conflicts with kernel-ib rpm. Work around for this is either install
cxgb3toe- using "make && make install" or delete kernel-ib rpm
first and then install cxgb3toe- rpm.
-------------------------------------------------------------------------------

Makefile Help
================================================================================
Use the 'make help' command for a list of options and targets related to the
driver build.


Tools
================================================================================
The tools/ directory contains user-space apps and/or scripts.
To compile the tools, change to the desired subdirectory and run:
make
make install

Scripts provided may be copied to their desired location. Most scripts which
need to be called on system start, should be located in /sbin.


Automatic module loading
================================================================================
An ifup-local script has been provided to automatically invoke perftune.sh
if the interface is enabled using the ifup command. Copy both the 'ifup-local'
and 'perftune.sh' scripts to the /sbin directory and perftune.sh will be
run each time the interface is enabled. The perftune.sh script uses various
option arguments (see perftune.sh -h). By default, the ifup-local script will
invoke perftune.sh with -I (this should always be used to prevent perftune.sh
from temporarily enabling the interface), -x (prevents the use of terminal
colors), -qq (provides silent operation). It may be of interest to see when
certain perftune.sh operations fail. If this is the case, remove the -qq and
replace with -q (quiet operation, only failures and warnings are printed).


Network Device Configuration
================================================================================
Please refer to the operating system documentation for administration and
configuration of network devices.

--------------------------------------------------------------------------------
NOTE: Some operating systems may attempt to auto-configure the detected hardware
and some operating systems may not detect all ports on a multi-port adapter. If
this happens, please refer to the operating system documentation for manually
configuring the network device.
--------------------------------------------------------------------------------

Performance tuning
================================================================================
In order to autotune the system and the TOE for best performance, it is
recommended to use the shell script perftune.sh located in the tools directory.

The perftune.sh has many options for tuning, use 'perftune.sh -h' to see the
help. It is required to at least have the LLD module installed and loaded.
For tuning of the TOE devices, it is recommended that the TOE modules be loaded
as well. The perftune.sh can autoload the drivers before tuning by using the
'-n' or '-o' (nic or toe) options.


Firmware Updates
================================================================================
The T3 firmware is installed on the system, typically /lib/firmware, and the
driver will auto-load the firmware if an update is required. The kernel must
be configured to enable userspace firmware loading support:
Device Drivers -> Generic Driver Options -> Userspace firmware loading support

The firmware image is located in src/firmware. In the event that the firmware
is not installed, or the driver does not locate the firmware directory, manual
firmware update may be necessary.

To manually update the firmware, use cxgbtool:
cxgbtool loadfw

The firmware version can be verified using ethtool:
ethtool -i