[v2] Documentation: i40evf: Update kernel documentation

Message ID 20180412162904.9337-2-jeffrey.t.kirsher@intel.com
State Changes Requested
Delegated to: Jeff Kirsher
Headers show
Series
  • [v2] Documentation: i40evf: Update kernel documentation
Related show

Commit Message

Jeff Kirsher April 12, 2018, 4:29 p.m.
Updated the i40evf.txt kernel documentation with the latest information.

Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
---
v2: fixed up documentation based on community feedback and internal
    review

---
 Documentation/networking/i40evf.txt | 324 ++++++++++++++++++++++++++++++++----
 1 file changed, 292 insertions(+), 32 deletions(-)

Comments

Bowers, AndrewX April 12, 2018, 6:08 p.m. | #1
> -----Original Message-----
> From: Intel-wired-lan [mailto:intel-wired-lan-bounces@osuosl.org] On
> Behalf Of Jeff Kirsher
> Sent: Thursday, April 12, 2018 9:29 AM
> To: intel-wired-lan@lists.osuosl.org
> Subject: [Intel-wired-lan] [PATCH v2] Documentation: i40evf: Update kernel
> documentation
> 
> Updated the i40evf.txt kernel documentation with the latest information.
> 
> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
> ---
> v2: fixed up documentation based on community feedback and internal
>     review
> 
> ---
>  Documentation/networking/i40evf.txt | 324
> ++++++++++++++++++++++++++++++++----
>  1 file changed, 292 insertions(+), 32 deletions(-)

Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Shannon Nelson April 12, 2018, 8:13 p.m. | #2
On 4/12/2018 9:29 AM, Jeff Kirsher wrote:
> Updated the i40evf.txt kernel documentation with the latest information.
> 
> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
> ---
> v2: fixed up documentation based on community feedback and internal
>      review
> 
> ---
>   Documentation/networking/i40evf.txt | 324 ++++++++++++++++++++++++++++++++----
>   1 file changed, 292 insertions(+), 32 deletions(-)
> 
> diff --git a/Documentation/networking/i40evf.txt b/Documentation/networking/i40evf.txt
> index e9b3035b95d0..a333ed688c00 100644
> --- a/Documentation/networking/i40evf.txt
> +++ b/Documentation/networking/i40evf.txt
> @@ -1,54 +1,314 @@
> -Linux* Base Driver for Intel(R) Network Connection
> -==================================================
> +Linux* Driver for Intel(R) Ethernet Virtual Function 700 Series
> +======================================================
>   
> -Intel Ethernet Adaptive Virtual Function Linux driver.
> -Copyright(c) 2013-2017 Intel Corporation.
> +February 26, 2018

Copyright?

sln

> +
> +======================================================
>   
>   Contents
>   ========
> -
> -- Identifying Your Adapter
> -- Known Issues/Troubleshooting
> +- Overview
> +- Additional Configurations
> +- Known Issues
>   - Support
> +- License
> +
> +This driver supports XL710- and X710-based virtual function devices
> +with CONFIG_PCI_IOV enabled.
> +
> +SR-IOV requires the correct platform and OS support.
>   
> -This file describes the i40evf Linux* Base Driver.
> +The guest OS loading this driver must support MSI-X interrupts.
>   
> -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.
> +For questions related to hardware requirements, refer to the documentation
> +supplied with your Intel adapter. All hardware requirements listed apply to use
> +with Linux.
> +
> +Driver information can be obtained using ethtool, lspci, and ifconfig.
> +Instructions on updating ethtool can be found in the section Additional
> +Configurations later in this document.
> +
> +The i40evf driver supports virtual functions generated by the i40e driver,
> +with one or more VFs enabled through sysfs.
>   
> -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
> -========================
> +------------------------
> +The driver in this kernel is compatible with devices based on the following:
> +  * Intel(R) Ethernet Controller X710
> +  * Intel(R) Ethernet Controller XL710
> +  * Intel(R) Ethernet Network Connection X722
> +  * Intel(R) Ethernet Controller XXV710
> +
> +For the best performance, make sure the latest NVM/FW is installed on your
> +device.
> +
> +For information on how to identify your adapter, and for the latest NVM/FW
> +images and Intel network drivers, refer to the Intel Support website:
> +http://www.intel.com/support
> +
> +
> +Additional Features and Configurations
> +-------------------------------------------
> +
> +Viewing Link Messages
> +---------------------
> +Link messages will not be displayed to the console if the distribution is
> +restricting system messages. In order to see network driver link messages on
> +your console, set dmesg to eight by entering the following:
> +dmesg -n 8
> +
> +NOTE: This setting is not saved across reboots.
> +
> +
> +ethtool
> +-------
> +The driver utilizes the ethtool interface for driver configuration and
> +diagnostics, as well as displaying statistical information. The latest ethtool
> +version is required for this functionality. Download it at:
> +http://ftp.kernel.org/pub/software/network/ethtool/
> +
> +
> +Setting VLAN Tag Stripping
> +--------------------------
> +
> +If you have applications that require Virtual Functions (VFs) to receive
> +packets with VLAN tags, you can disable VLAN tag stripping for the VF. The
> +Physical Function (PF) processes requests issued from the VF to enable or
> +disable VLAN tag stripping. Note that if the PF has assigned a VLAN to a VF,
> +then requests from that VF to set VLAN tag stripping will be ignored.
> +
> +To enable/disable VLAN tag stripping for a VF, issue the following command
> +from inside the VM in which you are running the VF:
> +  ethtool -K <if_name> rxvlan on/off
> +  or alternatively:
> +  ethtool --offload <if_name> rxvlan on/off
> +
> +
> +Adaptive Virtual Function
> +-------------------------
> +Adaptive Virtual Function (AVF) allows the virtual function driver, or VF, to
> +adapt to changing feature sets of the physical function driver (PF) with which
> +it is associated. This allows system administrators to update a PF without
> +having to update all the VFs associated with it. All AVFs have a single common
> +device ID and branding string.
> +
> +AVFs have a minimum set of features known as "base mode," but may provide
> +additional features depending on what features are available in the PF with
> +which the AVF is associated. The following are base mode features:
> +
> +- 4 Queue Pairs (QP) and associated Configuration Status Registers (CSRs)
> +  for Tx/Rx.
> +- i40e descriptors and ring format.
> +- Descriptor write-back completion.
> +- 1 control queue, with i40e descriptors, CSRs and ring format.
> +- 5 MSI-X interrupt vectors and corresponding i40e CSRs.
> +- 1 Interrupt Throttle Rate (ITR) index.
> +- 1 Virtual Station Interface (VSI) per VF.
> +- 1 Traffic Class (TC), TC0
> +- Receive Side Scaling (RSS) with 64 entry indirection table and key,
> +  configured through the PF.
> +- 1 unicast MAC address reserved per VF.
> +- 16 MAC address filters for each VF.
> +- Stateless offloads - non-tunneled checksums.
> +- AVF device ID.
> +- HW mailbox is used for VF to PF communications (including on Windows).
> +
> +
> +IEEE 802.1ad (QinQ) Support
> +---------------------------
> +
> +The IEEE 802.1ad standard, informally known as QinQ, allows for multiple VLAN
> +IDs within a single Ethernet frame. VLAN IDs are sometimes referred to as
> +"tags," and multiple VLAN IDs are thus referred to as a "tag stack." Tag stacks
> +allow L2 tunneling and the ability to segregate traffic within a particular
> +VLAN ID, among other uses.
> +
> +The following are examples of how to configure 802.1ad (QinQ):
> +  ip link add link eth0 eth0.24 type vlan proto 802.1ad id 24
> +  ip link add link eth0.24 eth0.24.371 type vlan proto 802.1Q id 371
> +Where "24" and "371" are example VLAN IDs.
> +
> +NOTES:
> +- 802.1ad (QinQ)is supported in 3.19 and later kernels.
> +- Receive checksum offloads, cloud filters, and VLAN acceleration are not
> +supported for 802.1ad (QinQ) packets.
> +
> +
> +Application Device Queues (ADq)
> +-------------------------------
> +
> +Application Device Queues (ADq) allows you to dedicate one or more queues to a
> +specific application. This can reduce latency for the specified application,
> +and allow Tx traffic to be rate limited per application. Follow the steps below
> +to set ADq.
> +
> +NOTE: Run all tc commands from the iproute2 <pathtoiproute2>/tc/ directory.
> +  1. Create traffic classes (TCs). Maximum of 8 TCs can be created per
> +  interface. The shaper bw_rlimit parameter is optional.
> +  Example:
> +  Sets up two tcs, tc0 and tc1, with 16 queues each and max tx rate set
> +  to 1Gbit for tc0 and 3Gbit for tc1.
> +  # tc qdisc add dev <interface> root mqprio num_tc 2 map 0 0 0 0 1 1 1 1
> +  queues 16@0 16@16 hw 1 mode channel shaper bw_rlimit min_rate 1Gbit 2Gbit
> +  max_rate 1Gbit 3Gbit
> +
> +  map: priority mapping for up to 16 priorities to tcs
> +  (e.g. map 0 0 0 0 1 1 1 1 sets priorities 0-3 to use tc0 and 4-7 to
> +  use tc1)
>   
> -For more information on how to identify your adapter, go to the
> -Adapter & Driver ID Guide at:
> +  queues: for each tc, <num queues>@<offset> (e.g. queues 16@0 16@16 assigns
> +  16 queues to tc0 at offset 0 and 16 queues to tc1 at offset 16. Max total
> +  number of queues for all tcs is 64 or number of cores, whichever is
> +  lower.)
> +
> +  hw 1 mode channel: ‘channel’ with ‘hw’ set to 1 is a new new hardware
> +  offload mode in mqprio that makes full use of the mqprio options, the
> +  TCs, the queue configurations, and the QoS parameters.
> +
> +  shaper bw_rlimit: for each tc, sets minimum and maximum bandwidth rates.
> +  Totals must be equal or less than port speed.
> +  For example: min_rate 1Gbit 3Gbit:
> +  Verify bandwidth limit using network monitoring tools such as ifstat
> +  or sar –n DEV [interval] [number of samples]
> +
> +NOTE: Setting up channels via ethtool (ethtool -L) is not supported when the
> +TCs are configured using mqprio.
> +
> +  2. Enable HW TC offload on interface:
> +  # ethtool -K <interface> hw-tc-offload on
> +  3. Apply TCs to ingress (RX) flow of interface:
> +  # tc qdisc add dev <interface> ingress
> +NOTES:
> +- You must have kernel version 4.15 or later and the sch_mqprio, act_mirred
> +  and cls_flower modules loaded to set ADq
> +- You must have iproute2 latest version
> +- NVM version 6.01 or later is required.
> +- ADq cannot be enabled when any the following features are enabled: Data
> +  Center Bridging (DCB), Multiple Functions per Port (MFP), or Sideband
> +  Filters.
> +- If another driver (for example, DPDK) has set cloud filters, you cannot
> +  enable ADq.
> +- Tunnel filters are not supported in ADq. If encapsulated packets do
> +  arrive in non-tunnel mode, filtering will be done on the inner headers.
> +  For example, for VXLAN traffic in non-tunnel mode, PCTYPE is identified
> +  as a VXLAN encapsulated packet, outer headers are ignored. Therefore,
> +  inner headers are matched.
> +- If a TC filter on a PF matches traffic over a VF (on the PF), that
> +  traffic will be routed to the appropriate queue of the PF, and will
> +  not be passed on the VF. Such traffic will end up getting dropped higher
> +  up in the TCP/IP stack as it does not match PF address data.
> +- If traffic matches multiple TC filters that point to different TCs,
> +  that traffic will be duplicated and sent to all matching TC queues.
> +  The hardware switch mirrors the packet to a VSI list when multiple
> +  filters are matched.
>   
> -    http://support.intel.com/support/go/network/adapter/idguide.htm
>   
>   Known Issues/Troubleshooting
> -============================
> +----------------------------
>   
> +Traffic Is Not Being Passed Between VM and Client
> +-------------------------------------------------
> +You may not be able to pass traffic between a client system and a
> +Virtual Machine (VM) running on a separate host if the Virtual Function
> +(VF, or Virtual NIC) is not in trusted mode and spoof checking is enabled
> +on the VF. Note that this situation can occur in any combination of client,
> +host, and guest operating system. For information on how to set the VF to
> +trusted mode, refer to the section "VLAN Tag Packet Steering" in this
> +readme document. For information on setting spoof checking, refer to the
> +section "MAC and VLAN anti-spoofing feature" in this readme document.
>   
> -Support
> -=======
>   
> -For general information, go to the Intel support website at:
> +Do not unload port driver if VF with active VM is bound to it
> +-------------------------------------------------------------
> +Do not unload a port's driver if a Virtual Function (VF) with an active Virtual
> +Machine (VM) is bound to it. Doing so will cause the port to appear to hang.
> +Once the VM shuts down, or otherwise releases the VF, the command will complete.
>   
> -    http://support.intel.com
>   
> -or the Intel Wired Networking project hosted by Sourceforge at:
> +Virtual machine does not get link
> +---------------------------------
> +If the virtual machine has more than one virtual port assigned to it, and those
> +virtual ports are bound to different physical ports, you may not get link on
> +all of the virtual ports. The following command may work around the issue:
> +ethtool -r <PF>
> +Where <PF> is the PF interface in the host, for example: p5p1. You may need to
> +run the command more than once to get link on all virtual ports.
> +
> +
> +MAC address of Virtual Function changes unexpectedly
> +----------------------------------------------------
> +If a Virtual Function's MAC address is not assigned in the host, then the VF
> +(virtual function) driver will use a random MAC address. This random MAC
> +address may change each time the VF driver is reloaded. You can assign a static
> +MAC address in the host machine. This static MAC address will survive
> +a VF driver reload.
> +
> +
> +Hardware Issues
> +---------------
> +
> +For known hardware and troubleshooting issues, either refer to the "Release
> +Notes" in your User Guide, or for more detailed information, go to
> +http://www.intel.com.
> +
> +In the search box enter your devices controller ID followed by "spec update"
> +(i.e., XL710 spec update). The specification update file has complete
> +information on known hardware issues.
> +
> +
> +Software Issues
> +---------------
> +
> +NOTE: After installing the driver, if your Intel Ethernet Network Connection
> +is not working, verify that you have installed the correct driver.
>   
> -    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
> +Driver Buffer Overflow Fix
> +--------------------------
> +The fix to resolve CVE-2016-8105, referenced in Intel SA-00069
> +<https://security-center.intel.com/advisory.aspx?intelid=INTEL-SA-00069&language
> +id=en-fr>, is included in this and future versions of the driver.
> +
> +
> +Multiple Interfaces on Same Ethernet Broadcast Network
> +------------------------------------------------------
> +Due to the default ARP behavior on Linux, it is not possible to have one system
> +on two IP networks in the same Ethernet broadcast domain (non-partitioned
> +switch) behave as expected. All Ethernet interfaces will respond to IP traffic
> +for any IP address assigned to the system. This results in unbalanced receive
> +traffic.
> +
> +If you have multiple interfaces in a server, either turn on ARP filtering by
> +entering:
> +echo 1 > /proc/sys/net/ipv4/conf/all/arp_filter
> +
> +This only works if your kernel's version is higher than 2.4.5.
> +
> +
> +NOTE: This setting is not saved across reboots. The configuration change can be
> +made permanent by adding the following line to the file /etc/sysctl.conf:
> +net.ipv4.conf.all.arp_filter = 1
> +
> +Another alternative is to install the interfaces in separate broadcast domains
> +(either in different switches or in a switch partitioned to VLANs).
> +
> +
> +Rx Page Allocation Errors
> +-------------------------
> +'Page allocation failure. order:0' errors may occur under stress.
> +This is caused by the way the Linux kernel reports this stressed condition.
> +
> +
> +
> +Support
> +-------
> +For general information, go to the Intel support website at:
> +http://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 a supported kernel
> +with a supported adapter, email the specific information related to the issue
> +to e1000-devel@lists.sf.net.
>

Patch

diff --git a/Documentation/networking/i40evf.txt b/Documentation/networking/i40evf.txt
index e9b3035b95d0..a333ed688c00 100644
--- a/Documentation/networking/i40evf.txt
+++ b/Documentation/networking/i40evf.txt
@@ -1,54 +1,314 @@ 
-Linux* Base Driver for Intel(R) Network Connection
-==================================================
+Linux* Driver for Intel(R) Ethernet Virtual Function 700 Series
+======================================================
 
-Intel Ethernet Adaptive Virtual Function Linux driver.
-Copyright(c) 2013-2017 Intel Corporation.
+February 26, 2018
+
+======================================================
 
 Contents
 ========
-
-- Identifying Your Adapter
-- Known Issues/Troubleshooting
+- Overview
+- Additional Configurations
+- Known Issues
 - Support
+- License
+
+This driver supports XL710- and X710-based virtual function devices
+with CONFIG_PCI_IOV enabled.
+
+SR-IOV requires the correct platform and OS support.
 
-This file describes the i40evf Linux* Base Driver.
+The guest OS loading this driver must support MSI-X interrupts.
 
-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.
+For questions related to hardware requirements, refer to the documentation
+supplied with your Intel adapter. All hardware requirements listed apply to use
+with Linux.
+
+Driver information can be obtained using ethtool, lspci, and ifconfig.
+Instructions on updating ethtool can be found in the section Additional
+Configurations later in this document.
+
+The i40evf driver supports virtual functions generated by the i40e driver,
+with one or more VFs enabled through sysfs.
 
-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
-========================
+------------------------
+The driver in this kernel is compatible with devices based on the following:
+  * Intel(R) Ethernet Controller X710
+  * Intel(R) Ethernet Controller XL710
+  * Intel(R) Ethernet Network Connection X722
+  * Intel(R) Ethernet Controller XXV710
+
+For the best performance, make sure the latest NVM/FW is installed on your
+device.
+
+For information on how to identify your adapter, and for the latest NVM/FW
+images and Intel network drivers, refer to the Intel Support website:
+http://www.intel.com/support
+
+
+Additional Features and Configurations
+-------------------------------------------
+
+Viewing Link Messages
+---------------------
+Link messages will not be displayed to the console if the distribution is
+restricting system messages. In order to see network driver link messages on
+your console, set dmesg to eight by entering the following:
+dmesg -n 8
+
+NOTE: This setting is not saved across reboots.
+
+
+ethtool
+-------
+The driver utilizes the ethtool interface for driver configuration and
+diagnostics, as well as displaying statistical information. The latest ethtool
+version is required for this functionality. Download it at:
+http://ftp.kernel.org/pub/software/network/ethtool/
+
+
+Setting VLAN Tag Stripping
+--------------------------
+
+If you have applications that require Virtual Functions (VFs) to receive
+packets with VLAN tags, you can disable VLAN tag stripping for the VF. The
+Physical Function (PF) processes requests issued from the VF to enable or
+disable VLAN tag stripping. Note that if the PF has assigned a VLAN to a VF,
+then requests from that VF to set VLAN tag stripping will be ignored.
+
+To enable/disable VLAN tag stripping for a VF, issue the following command
+from inside the VM in which you are running the VF:
+  ethtool -K <if_name> rxvlan on/off
+  or alternatively:
+  ethtool --offload <if_name> rxvlan on/off
+
+
+Adaptive Virtual Function
+-------------------------
+Adaptive Virtual Function (AVF) allows the virtual function driver, or VF, to
+adapt to changing feature sets of the physical function driver (PF) with which
+it is associated. This allows system administrators to update a PF without
+having to update all the VFs associated with it. All AVFs have a single common
+device ID and branding string.
+
+AVFs have a minimum set of features known as "base mode," but may provide
+additional features depending on what features are available in the PF with
+which the AVF is associated. The following are base mode features:
+
+- 4 Queue Pairs (QP) and associated Configuration Status Registers (CSRs)
+  for Tx/Rx.
+- i40e descriptors and ring format.
+- Descriptor write-back completion.
+- 1 control queue, with i40e descriptors, CSRs and ring format.
+- 5 MSI-X interrupt vectors and corresponding i40e CSRs.
+- 1 Interrupt Throttle Rate (ITR) index.
+- 1 Virtual Station Interface (VSI) per VF.
+- 1 Traffic Class (TC), TC0
+- Receive Side Scaling (RSS) with 64 entry indirection table and key,
+  configured through the PF.
+- 1 unicast MAC address reserved per VF.
+- 16 MAC address filters for each VF.
+- Stateless offloads - non-tunneled checksums.
+- AVF device ID.
+- HW mailbox is used for VF to PF communications (including on Windows).
+
+
+IEEE 802.1ad (QinQ) Support
+---------------------------
+
+The IEEE 802.1ad standard, informally known as QinQ, allows for multiple VLAN
+IDs within a single Ethernet frame. VLAN IDs are sometimes referred to as
+"tags," and multiple VLAN IDs are thus referred to as a "tag stack." Tag stacks
+allow L2 tunneling and the ability to segregate traffic within a particular
+VLAN ID, among other uses.
+
+The following are examples of how to configure 802.1ad (QinQ):
+  ip link add link eth0 eth0.24 type vlan proto 802.1ad id 24
+  ip link add link eth0.24 eth0.24.371 type vlan proto 802.1Q id 371
+Where "24" and "371" are example VLAN IDs.
+
+NOTES:
+- 802.1ad (QinQ)is supported in 3.19 and later kernels.
+- Receive checksum offloads, cloud filters, and VLAN acceleration are not
+supported for 802.1ad (QinQ) packets.
+
+
+Application Device Queues (ADq)
+-------------------------------
+
+Application Device Queues (ADq) allows you to dedicate one or more queues to a
+specific application. This can reduce latency for the specified application,
+and allow Tx traffic to be rate limited per application. Follow the steps below
+to set ADq.
+
+NOTE: Run all tc commands from the iproute2 <pathtoiproute2>/tc/ directory.
+  1. Create traffic classes (TCs). Maximum of 8 TCs can be created per
+  interface. The shaper bw_rlimit parameter is optional.
+  Example:
+  Sets up two tcs, tc0 and tc1, with 16 queues each and max tx rate set
+  to 1Gbit for tc0 and 3Gbit for tc1.
+  # tc qdisc add dev <interface> root mqprio num_tc 2 map 0 0 0 0 1 1 1 1
+  queues 16@0 16@16 hw 1 mode channel shaper bw_rlimit min_rate 1Gbit 2Gbit
+  max_rate 1Gbit 3Gbit
+
+  map: priority mapping for up to 16 priorities to tcs
+  (e.g. map 0 0 0 0 1 1 1 1 sets priorities 0-3 to use tc0 and 4-7 to
+  use tc1)
 
-For more information on how to identify your adapter, go to the
-Adapter & Driver ID Guide at:
+  queues: for each tc, <num queues>@<offset> (e.g. queues 16@0 16@16 assigns
+  16 queues to tc0 at offset 0 and 16 queues to tc1 at offset 16. Max total
+  number of queues for all tcs is 64 or number of cores, whichever is
+  lower.)
+
+  hw 1 mode channel: ‘channel’ with ‘hw’ set to 1 is a new new hardware
+  offload mode in mqprio that makes full use of the mqprio options, the
+  TCs, the queue configurations, and the QoS parameters.
+
+  shaper bw_rlimit: for each tc, sets minimum and maximum bandwidth rates.
+  Totals must be equal or less than port speed.
+  For example: min_rate 1Gbit 3Gbit:
+  Verify bandwidth limit using network monitoring tools such as ifstat
+  or sar –n DEV [interval] [number of samples]
+
+NOTE: Setting up channels via ethtool (ethtool -L) is not supported when the
+TCs are configured using mqprio.
+
+  2. Enable HW TC offload on interface:
+  # ethtool -K <interface> hw-tc-offload on
+  3. Apply TCs to ingress (RX) flow of interface:
+  # tc qdisc add dev <interface> ingress
+NOTES:
+- You must have kernel version 4.15 or later and the sch_mqprio, act_mirred
+  and cls_flower modules loaded to set ADq
+- You must have iproute2 latest version
+- NVM version 6.01 or later is required.
+- ADq cannot be enabled when any the following features are enabled: Data
+  Center Bridging (DCB), Multiple Functions per Port (MFP), or Sideband
+  Filters.
+- If another driver (for example, DPDK) has set cloud filters, you cannot
+  enable ADq.
+- Tunnel filters are not supported in ADq. If encapsulated packets do
+  arrive in non-tunnel mode, filtering will be done on the inner headers.
+  For example, for VXLAN traffic in non-tunnel mode, PCTYPE is identified
+  as a VXLAN encapsulated packet, outer headers are ignored. Therefore,
+  inner headers are matched.
+- If a TC filter on a PF matches traffic over a VF (on the PF), that
+  traffic will be routed to the appropriate queue of the PF, and will
+  not be passed on the VF. Such traffic will end up getting dropped higher
+  up in the TCP/IP stack as it does not match PF address data.
+- If traffic matches multiple TC filters that point to different TCs,
+  that traffic will be duplicated and sent to all matching TC queues.
+  The hardware switch mirrors the packet to a VSI list when multiple
+  filters are matched.
 
-    http://support.intel.com/support/go/network/adapter/idguide.htm
 
 Known Issues/Troubleshooting
-============================
+----------------------------
 
+Traffic Is Not Being Passed Between VM and Client
+-------------------------------------------------
+You may not be able to pass traffic between a client system and a
+Virtual Machine (VM) running on a separate host if the Virtual Function
+(VF, or Virtual NIC) is not in trusted mode and spoof checking is enabled
+on the VF. Note that this situation can occur in any combination of client,
+host, and guest operating system. For information on how to set the VF to
+trusted mode, refer to the section "VLAN Tag Packet Steering" in this
+readme document. For information on setting spoof checking, refer to the
+section "MAC and VLAN anti-spoofing feature" in this readme document.
 
-Support
-=======
 
-For general information, go to the Intel support website at:
+Do not unload port driver if VF with active VM is bound to it
+-------------------------------------------------------------
+Do not unload a port's driver if a Virtual Function (VF) with an active Virtual
+Machine (VM) is bound to it. Doing so will cause the port to appear to hang.
+Once the VM shuts down, or otherwise releases the VF, the command will complete.
 
-    http://support.intel.com
 
-or the Intel Wired Networking project hosted by Sourceforge at:
+Virtual machine does not get link
+---------------------------------
+If the virtual machine has more than one virtual port assigned to it, and those
+virtual ports are bound to different physical ports, you may not get link on
+all of the virtual ports. The following command may work around the issue:
+ethtool -r <PF>
+Where <PF> is the PF interface in the host, for example: p5p1. You may need to
+run the command more than once to get link on all virtual ports.
+
+
+MAC address of Virtual Function changes unexpectedly
+----------------------------------------------------
+If a Virtual Function's MAC address is not assigned in the host, then the VF
+(virtual function) driver will use a random MAC address. This random MAC
+address may change each time the VF driver is reloaded. You can assign a static
+MAC address in the host machine. This static MAC address will survive
+a VF driver reload.
+
+
+Hardware Issues
+---------------
+
+For known hardware and troubleshooting issues, either refer to the "Release
+Notes" in your User Guide, or for more detailed information, go to
+http://www.intel.com.
+
+In the search box enter your devices controller ID followed by "spec update"
+(i.e., XL710 spec update). The specification update file has complete
+information on known hardware issues.
+
+
+Software Issues
+---------------
+
+NOTE: After installing the driver, if your Intel Ethernet Network Connection
+is not working, verify that you have installed the correct driver.
 
-    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
+Driver Buffer Overflow Fix
+--------------------------
+The fix to resolve CVE-2016-8105, referenced in Intel SA-00069
+<https://security-center.intel.com/advisory.aspx?intelid=INTEL-SA-00069&language
+id=en-fr>, is included in this and future versions of the driver.
+
+
+Multiple Interfaces on Same Ethernet Broadcast Network
+------------------------------------------------------
+Due to the default ARP behavior on Linux, it is not possible to have one system
+on two IP networks in the same Ethernet broadcast domain (non-partitioned
+switch) behave as expected. All Ethernet interfaces will respond to IP traffic
+for any IP address assigned to the system. This results in unbalanced receive
+traffic.
+
+If you have multiple interfaces in a server, either turn on ARP filtering by
+entering:
+echo 1 > /proc/sys/net/ipv4/conf/all/arp_filter
+
+This only works if your kernel's version is higher than 2.4.5.
+
+
+NOTE: This setting is not saved across reboots. The configuration change can be
+made permanent by adding the following line to the file /etc/sysctl.conf:
+net.ipv4.conf.all.arp_filter = 1
+
+Another alternative is to install the interfaces in separate broadcast domains
+(either in different switches or in a switch partitioned to VLANs).
+
+
+Rx Page Allocation Errors
+-------------------------
+'Page allocation failure. order:0' errors may occur under stress.
+This is caused by the way the Linux kernel reports this stressed condition.
+
+
+
+Support
+-------
+For general information, go to the Intel support website at:
+http://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 a supported kernel
+with a supported adapter, email the specific information related to the issue
+to e1000-devel@lists.sf.net.