Linux Base Driver for 10 Gigabit PCI Express Intel(R) Network Connection
========================================================================

Intel Gigabit Linux driver.
Copyright(c) 1999 - 2010 Intel Corporation.

Contents
========

- Identifying Your Adapter
- Additional Configurations
- Performance Tuning
- Known Issues
- Support

Identifying Your Adapter
========================

The driver in this release is compatible with 82598 and 82599-based Intel
Network Connections.

For more information on how to identify your adapter, go to the Adapter &
Driver ID Guide at:

    http://support.intel.com/support/network/sb/CS-012904.htm

SFP+ Devices with Pluggable Optics
----------------------------------

82599-BASED ADAPTERS

NOTES: If your 82599-based Intel(R) Network Adapter came with Intel optics, or
is an Intel(R) Ethernet Server Adapter X520-2, then it only supports Intel
optics and/or the direct attach cables listed below.

When 82599-based SFP+ devices are connected back to back, they should be set to
the same Speed setting via ethtool. Results may vary if you mix speed settings.
82598-based adapters support all passive direct attach cables that comply
with SFF-8431 v4.1 and SFF-8472 v10.4 specifications. Active direct attach
cables are not supported.

Supplier    Type                                             Part Numbers

SR Modules
Intel       DUAL RATE 1G/10G SFP+ SR (bailed)                FTLX8571D3BCV-IT
Intel       DUAL RATE 1G/10G SFP+ SR (bailed)                AFBR-703SDDZ-IN1
Intel       DUAL RATE 1G/10G SFP+ SR (bailed)                AFBR-703SDZ-IN2
LR Modules
Intel       DUAL RATE 1G/10G SFP+ LR (bailed)                FTLX1471D3BCV-IT
Intel       DUAL RATE 1G/10G SFP+ LR (bailed)                AFCT-701SDDZ-IN1
Intel       DUAL RATE 1G/10G SFP+ LR (bailed)                AFCT-701SDZ-IN2

The following is a list of 3rd party SFP+ modules and direct attach cables that
have received some testing. Not all modules are applicable to all devices.

Supplier   Type                                              Part Numbers

Finisar    SFP+ SR bailed, 10g single rate                   FTLX8571D3BCL
Avago      SFP+ SR bailed, 10g single rate                   AFBR-700SDZ
Finisar    SFP+ LR bailed, 10g single rate                   FTLX1471D3BCL

Finisar    DUAL RATE 1G/10G SFP+ SR (No Bail)                FTLX8571D3QCV-IT
Avago      DUAL RATE 1G/10G SFP+ SR (No Bail)                AFBR-703SDZ-IN1
Finisar    DUAL RATE 1G/10G SFP+ LR (No Bail)                FTLX1471D3QCV-IT
Avago      DUAL RATE 1G/10G SFP+ LR (No Bail)                AFCT-701SDZ-IN1
Finistar   1000BASE-T SFP                                    FCLF8522P2BTL
Avago      1000BASE-T SFP                                    ABCU-5710RZ

82599-based adapters support all passive and active limiting direct attach
cables that comply with SFF-8431 v4.1 and SFF-8472 v10.4 specifications.

Laser turns off for SFP+ when ifconfig down
-------------------------------------------
"ifconfig down" turns off the laser for 82599-based SFP+ fiber adapters.
"ifconfig up" turns on the later.


82598-BASED ADAPTERS

NOTES for 82598-Based Adapters:
- Intel(R) Network Adapters that support removable optical modules only support
  their original module type (i.e., the Intel(R) 10 Gigabit SR Dual Port
  Express Module only supports SR optical modules). If you plug in a different
  type of module, the driver will not load.
- Hot Swapping/hot plugging optical modules is not supported.
- Only single speed, 10 gigabit modules are supported.
- LAN on Motherboard (LOMs) may support DA, SR, or LR modules. Other module
  types are not supported. Please see your system documentation for details.

The following is a list of 3rd party SFP+ modules and direct attach cables that
have received some testing. Not all modules are applicable to all devices.

Supplier   Type                                              Part Numbers

Finisar    SFP+ SR bailed, 10g single rate                   FTLX8571D3BCL
Avago      SFP+ SR bailed, 10g single rate                   AFBR-700SDZ
Finisar    SFP+ LR bailed, 10g single rate                   FTLX1471D3BCL

82598-based adapters support all passive direct attach cables that comply
with SFF-8431 v4.1 and SFF-8472 v10.4 specifications. Active direct attach
cables are not supported.


Flow Control
------------
Ethernet Flow Control (IEEE 802.3x) can be configured with ethtool to enable
receiving and transmitting pause frames for ixgbe. When TX is enabled, PAUSE
frames are generated when the receive packet buffer crosses a predefined
threshold.  When rx is enabled, the transmit unit will halt for the time delay
specified when a PAUSE frame is received.

Flow Control is enabled by default. If you want to disable a flow control
capable link partner, use ethtool:

     ethtool -A eth? autoneg off RX off TX off

NOTE: For 82598 backplane cards entering 1 gig mode, flow control default
behavior is changed to off.  Flow control in 1 gig mode on these devices can
lead to Tx hangs.

Additional Configurations
=========================

  Jumbo Frames
  ------------
  The driver supports Jumbo Frames for all adapters. Jumbo Frames support is
  enabled by changing the MTU to a value larger than the default of 1500.
  The maximum value for the MTU is 16110.  Use the ifconfig command to
  increase the MTU size.  For example:

        ifconfig ethx mtu 9000 up

  The maximum MTU setting for Jumbo Frames is 16110.  This value coincides
  with the maximum Jumbo Frames size of 16128.

  Generic Receive Offload, aka GRO
  --------------------------------
  The driver supports the in-kernel software implementation of GRO.  GRO has
  shown that by coalescing Rx traffic into larger chunks of data, CPU
  utilization can be significantly reduced when under large Rx load.  GRO is an
  evolution of the previously-used LRO interface.  GRO is able to coalesce
  other protocols besides TCP.  It's also safe to use with configurations that
  are problematic for LRO, namely bridging and iSCSI.

  Data Center Bridging, aka DCB
  -----------------------------
  DCB is a configuration Quality of Service implementation in hardware.
  It uses the VLAN priority tag (802.1p) to filter traffic.  That means
  that there are 8 different priorities that traffic can be filtered into.
  It also enables priority flow control which can limit or eliminate the
  number of dropped packets during network stress.  Bandwidth can be
  allocated to each of these priorities, which is enforced at the hardware
  level.

  To enable DCB support in ixgbe, you must enable the DCB netlink layer to
  allow the userspace tools (see below) to communicate with the driver.
  This can be found in the kernel configuration here:

        -> Networking support
          -> Networking options
            -> Data Center Bridging support

  Once this is selected, DCB support must be selected for ixgbe.  This can
  be found here:

        -> Device Drivers
          -> Network device support (NETDEVICES [=y])
            -> Ethernet (10000 Mbit) (NETDEV_10000 [=y])
              -> Intel(R) 10GbE PCI Express adapters support
                -> Data Center Bridging (DCB) Support

  After these options are selected, you must rebuild your kernel and your
  modules.

  In order to use DCB, userspace tools must be downloaded and installed.
  The dcbd tools can be found at:

        http://e1000.sf.net

  Ethtool
  -------
  The driver utilizes the ethtool interface for driver configuration and
  diagnostics, as well as displaying statistical information. The latest
  ethtool version is required for this functionality.

  The latest release of ethtool can be found from
  http://ftp.kernel.org/pub/software/network/ethtool/

  FCoE
  ----
  This release of the ixgbe driver contains new code to enable users to use
  Fiber Channel over Ethernet (FCoE) and Data Center Bridging (DCB)
  functionality that is supported by the 82598-based hardware.  This code has
  no default effect on the regular driver operation, and configuring DCB and
  FCoE is outside the scope of this driver README. Refer to
  http://www.open-fcoe.org/ for FCoE project information and contact
  e1000-eedc@lists.sourceforge.net for DCB information.

  MAC and VLAN anti-spoofing feature
  ----------------------------------
  When a malicious driver attempts to send a spoofed packet, it is dropped by
  the hardware and not transmitted.  An interrupt is sent to the PF driver
  notifying it of the spoof attempt.

  When a spoofed packet is detected the PF driver will send the following
  message to the system log (displayed by  the "dmesg" command):

  Spoof event(s) detected on VF (n)

  Where n=the VF that attempted to do the spoofing.


Performance Tuning
==================

An excellent article on performance tuning can be found at:

http://www.redhat.com/promo/summit/2008/downloads/pdf/Thursday/Mark_Wagner.pdf


Known Issues
============

  Enabling SR-IOV in a 32-bit Microsoft* Windows* Server 2008 Guest OS using
  Intel (R) 82576-based GbE or Intel (R) 82599-based 10GbE controller under KVM
  -----------------------------------------------------------------------------
  KVM Hypervisor/VMM supports direct assignment of a PCIe device to a VM.  This
  includes traditional PCIe devices, as well as SR-IOV-capable devices using
  Intel 82576-based and 82599-based controllers.

  While direct assignment of a PCIe device or an SR-IOV Virtual Function (VF)
  to a Linux-based VM running 2.6.32 or later kernel works fine, there is a
  known issue with Microsoft Windows Server 2008 VM that results in a "yellow
  bang" error. This problem is within the KVM VMM itself, not the Intel driver,
  or the SR-IOV logic of the VMM, but rather that KVM emulates an older CPU
  model for the guests, and this older CPU model does not support MSI-X
  interrupts, which is a requirement for Intel SR-IOV.

  If you wish to use the Intel 82576 or 82599-based controllers in SR-IOV mode
  with KVM and a Microsoft Windows Server 2008 guest try the following
  workaround. The workaround is to tell KVM to emulate a different model of CPU
  when using qemu to create the KVM guest:

       "-cpu qemu64,model=13"


Support
=======

For general information, go to the Intel support website at:

    http://support.intel.com

or the Intel Wired Networking project hosted by Sourceforge at:

    http://e1000.sourceforge.net

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 e1000-devel@lists.sf.net
