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

November 24, 2009

Contents
========

- In This Release
- Identifying Your Adapter
- Known Issues/Troubleshooting
- Support

In This Release
===============

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

The ixgbevf driver supports 82599-based virtual function devices that can only
be activated on kernels with CONFIG_PCI_IOV enabled.

The ixgbevf driver supports virtual functions generated by the ixgbe driver
with a max_vfs value of 1 or greater.

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

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

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

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-008441.htm

Known Issues/Troubleshooting
============================

  Unloading Physical Function (PF) Driver Causes System Reboots When VM is
  Running and VF is Loaded on the VM
  ------------------------------------------------------------------------
  Do not unload the PF driver (ixgbe) while VFs are assigned to guests.

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

License
=======

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

This program is free software; you can redistribute it and/or modify it
under the terms and conditions of the GNU General Public License,
version 2, as published by the Free Software Foundation.

This program is distributed in the hope it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
more details.

You should have received a copy of the GNU General Public License along with
this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.

The full GNU General Public License is included in this distribution in
the file called "COPYING".

Trademarks
==========

Intel, Itanium, and Pentium are trademarks or registered trademarks of
Intel Corporation or its subsidiaries in the United States and other
countries.

* Other names and brands may be claimed as the property of others.
