Linux* Base Driver for Intel(R) Ethernet Network Connection
===========================================================

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

Contents
========

- Identifying Your Adapter
- Additional Configurations
- Support

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

This driver supports all 82575, 82576 and 82580-based Intel (R) gigabit network
connections.

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

    http://support.intel.com/support/go/network/adapter/idguide.htm

Command Line Parameters
=======================

The default value for each parameter is generally the recommended setting,
unless otherwise noted.

max_vfs
-------
Valid Range:   0-7
Default Value: 0

This parameter adds support for SR-IOV.  It causes the driver to spawn up to
max_vfs worth of virtual function.

QueuePairs
----------
Valid Range:  0-1
Default Value:  1 (TX and RX will be paired onto one interrupt vector)

If set to 0, when MSI-X is enabled, the TX and RX will attempt to occupy
separate vectors.

This option can be overridden to 1 if there are not sufficient interrupts
available.  This can occur if any combination of RSS, VMDQ, and max_vfs
results in more than 4 queues being used.

Node
----
Valid Range:   0-n
Default Value: -1 (off)

  0 - n: where n is the number of the NUMA node that should be used to
         allocate memory for this adapter port.
  -1: uses the driver default of allocating memory on whichever processor is
      running insmod/modprobe.

  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 only useful 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.

EEE
---
Valid Range:  0-1
Default Value: 1 (enabled)

  A link between two EEE-compliant devices will result in periodic bursts of
  data followed by long periods where in the link is in an idle state. This Low
  Power Idle (LPI) state is supported in both 1Gbps and 100Mbps link speeds.
  NOTE: EEE support requires autonegotiation.

DMAC
----
Valid Range: 0-1
Default Value: 1 (enabled)
  Enables or disables DMA Coalescing feature.



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

  Jumbo Frames
  ------------
  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:

       ifconfig eth<x> mtu 9000 up

  This setting is not saved across reboots.

  Notes:

  - The maximum MTU setting for Jumbo Frames is 9216.  This value coincides
    with the maximum Jumbo Frames size of 9234 bytes.

  - Using Jumbo frames at 10 or 100 Mbps is not supported and may result in
    poor performance or loss of link.

  ethtool
  -------
  The driver utilizes the ethtool interface for driver configuration and
  diagnostics, as well as displaying statistical information. The latest
  version of ethtool can be found at:

  http://ftp.kernel.org/pub/software/network/ethtool/

  Enabling Wake on LAN* (WoL)
  ---------------------------
  WoL is configured through the ethtool* utility.

  For instructions on enabling WoL with ethtool, refer to the ethtool man page.

  WoL will be enabled on the system during the next shut down or reboot.
  For this driver version, in order to enable WoL, the igb driver must be
  loaded when shutting down or rebooting the system.

  Wake On LAN is only supported on port A of multi-port adapters.

  Wake On LAN is not supported for the Intel(R) Gigabit VT Quad Port Server
  Adapter.

  Multiqueue
  ----------
  In this mode, a separate MSI-X vector is allocated for each queue and one
  for "other" interrupts such as link status change and errors.  All
  interrupts are throttled via interrupt moderation.  Interrupt moderation
  must be used to avoid interrupt storms while the driver is processing one
  interrupt.  The moderation value should be at least as large as the expected
  time for the driver to process an interrupt. Multiqueue is off by default.

  REQUIREMENTS: MSI-X support is required for Multiqueue. If MSI-X is not
  found, the system will fallback to MSI or to Legacy interrupts.

  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.

  Setting MAC Address, VLAN and Rate Limit Using IProute2 Tool
  ------------------------------------------------------------
  You can set a MAC address of a Virtual Function (VF), a default VLAN and the
  rate limit using the IProute2 tool. Download the latest version of the
  iproute2 tool from Sourceforge if your version does not have all the
  features you require.


Support
=======

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

    www.intel.com/support/

or the Intel Wired Networking project hosted by Sourceforge at:

    http://sourceforge.net/projects/e1000

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
