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

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

Contents
========

- Identifying Your Adapter
- Known Issues/Troubleshooting
- Support

This file describes the iavf Linux* Base Driver. This driver
was formerly called i40evf.

The iavf 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 iavf driver requires CONFIG_PCI_MSI to be enabled.

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

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

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

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

    https://www.intel.com/content/www/us/en/support/articles/000005584/network-and-i-o/ethernet-products.html


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
