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

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

Contents
========

- Identifying Your Adapter
- Additional Configurations
- Support

This file describes the igbvf Linux* Base Driver for Intel Network Connection.

The igbvf driver supports 82576-based virtual function devices that can only
be activated on kernels that support SR-IOV. SR-IOV requires the correct
platform and OS support.

The igbvf driver requires the igb driver, version 2.0 or later. The igbvf
driver supports virtual functions generated by the igb driver with a max_vfs
value of 1 or greater. For more information on the max_vfs parameter refer
to the README included with the igb driver.

The guest OS loading the igbvf driver must support MSI-X interrupts.

This driver is only supported as a loadable module at this time.  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 the
documentation supplied with your Intel Gigabit adapter.  All hardware
requirements listed apply to use with Linux.

Instructions on updating ethtool can be found in the section "Additional
Configurations" later in this document.

VLANs: There is a limit of a total of 32 shared VLANs to 1 or more VFs.

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

The igbvf driver supports 82576-based virtual function devices that can only
be activated on kernels that support SR-IOV.

For more 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

For the latest Intel network drivers for Linux, refer to the following
website.  In the search field, enter your adapter name or type, or use the
networking link on the left to search for your adapter:

    http://downloadcenter.intel.com/scripts-df-external/Support_Intel.aspx

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

  Ethtool
  -------
  The driver utilizes the ethtool interface for driver configuration and
  diagnostics, as well as displaying statistical information.  Ethtool
  version 3.0 or later is required for this functionality, although we
  strongly recommend downloading the latest version at:

  http://sourceforge.net/projects/gkernel.

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://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
