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

Intel Ethernet Adaptive Virtual Function Linux driver.
Copyright(c) 2013-2017 Intel Corporation.

Contents
========

- Identifying Your Adapter
- Known Issues/Troubleshooting
- Support

This file describes the i40evf Linux* Base Driver.

The i40evf driver supports the below mentioned virtual function
devices and can only be activated on kernels running the i40e or
newer Physical Function (PF) driver compiled with CONFIG_PCI_IOV.
The i40evf driver requires CONFIG_PCI_MSI to be enabled.

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

Supported Hardware
==================
Intel XL710 X710 Virtual Function
Intel Ethernet Adaptive Virtual Function
Intel X722 Virtual Function

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/go/network/adapter/idguide.htm

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


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
