Commit 675ab650 authored by Jeff Kirsher's avatar Jeff Kirsher

Documentation: iavf: Update the Intel LAN driver doc for iavf

Update the LAN driver documentation to include the latest feature
implementation and driver capabilities.
Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
Tested-by: default avatarAaron Brown <aaron.f.brown@intel.com>
parent 10ce2c00
...@@ -10,11 +10,15 @@ Copyright(c) 2013-2018 Intel Corporation. ...@@ -10,11 +10,15 @@ Copyright(c) 2013-2018 Intel Corporation.
Contents Contents
======== ========
- Overview
- Identifying Your Adapter - Identifying Your Adapter
- Additional Configurations - Additional Configurations
- Known Issues/Troubleshooting - Known Issues/Troubleshooting
- Support - Support
Overview
========
This file describes the iavf Linux* Base Driver. This driver was formerly This file describes the iavf Linux* Base Driver. This driver was formerly
called i40evf. called i40evf.
...@@ -27,6 +31,7 @@ The guest OS loading the iavf driver must support MSI-X interrupts. ...@@ -27,6 +31,7 @@ The guest OS loading the iavf driver must support MSI-X interrupts.
Identifying Your Adapter Identifying Your Adapter
======================== ========================
The driver in this kernel is compatible with devices based on the following: The driver in this kernel is compatible with devices based on the following:
* Intel(R) XL710 X710 Virtual Function * Intel(R) XL710 X710 Virtual Function
* Intel(R) X722 Virtual Function * Intel(R) X722 Virtual Function
...@@ -50,9 +55,10 @@ Link messages will not be displayed to the console if the distribution is ...@@ -50,9 +55,10 @@ 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 restricting system messages. In order to see network driver link messages on
your console, set dmesg to eight by entering the following:: your console, set dmesg to eight by entering the following::
dmesg -n 8 # dmesg -n 8
NOTE: This setting is not saved across reboots. NOTE:
This setting is not saved across reboots.
ethtool ethtool
------- -------
...@@ -72,11 +78,11 @@ then requests from that VF to set VLAN tag stripping will be ignored. ...@@ -72,11 +78,11 @@ 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 To enable/disable VLAN tag stripping for a VF, issue the following command
from inside the VM in which you are running the VF:: from inside the VM in which you are running the VF::
ethtool -K <if_name> rxvlan on/off # ethtool -K <if_name> rxvlan on/off
or alternatively:: or alternatively::
ethtool --offload <if_name> rxvlan on/off # ethtool --offload <if_name> rxvlan on/off
Adaptive Virtual Function Adaptive Virtual Function
------------------------- -------------------------
...@@ -91,21 +97,21 @@ additional features depending on what features are available in the PF with ...@@ -91,21 +97,21 @@ additional features depending on what features are available in the PF with
which the AVF is associated. The following are base mode features: which the AVF is associated. The following are base mode features:
- 4 Queue Pairs (QP) and associated Configuration Status Registers (CSRs) - 4 Queue Pairs (QP) and associated Configuration Status Registers (CSRs)
for Tx/Rx. for Tx/Rx
- i40e descriptors and ring format. - i40e descriptors and ring format
- Descriptor write-back completion. - Descriptor write-back completion
- 1 control queue, with i40e descriptors, CSRs and ring format. - 1 control queue, with i40e descriptors, CSRs and ring format
- 5 MSI-X interrupt vectors and corresponding i40e CSRs. - 5 MSI-X interrupt vectors and corresponding i40e CSRs
- 1 Interrupt Throttle Rate (ITR) index. - 1 Interrupt Throttle Rate (ITR) index
- 1 Virtual Station Interface (VSI) per VF. - 1 Virtual Station Interface (VSI) per VF
- 1 Traffic Class (TC), TC0 - 1 Traffic Class (TC), TC0
- Receive Side Scaling (RSS) with 64 entry indirection table and key, - Receive Side Scaling (RSS) with 64 entry indirection table and key,
configured through the PF. configured through the PF
- 1 unicast MAC address reserved per VF. - 1 unicast MAC address reserved per VF
- 16 MAC address filters for each VF. - 16 MAC address filters for each VF
- Stateless offloads - non-tunneled checksums. - Stateless offloads - non-tunneled checksums
- AVF device ID. - AVF device ID
- HW mailbox is used for VF to PF communications (including on Windows). - HW mailbox is used for VF to PF communications (including on Windows)
IEEE 802.1ad (QinQ) Support IEEE 802.1ad (QinQ) Support
--------------------------- ---------------------------
...@@ -117,8 +123,8 @@ VLAN ID, among other uses. ...@@ -117,8 +123,8 @@ VLAN ID, among other uses.
The following are examples of how to configure 802.1ad (QinQ):: 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 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 # ip link add link eth0.24 eth0.24.371 type vlan proto 802.1Q id 371
Where "24" and "371" are example VLAN IDs. Where "24" and "371" are example VLAN IDs.
...@@ -133,6 +139,19 @@ specific application. This can reduce latency for the specified application, ...@@ -133,6 +139,19 @@ specific application. This can reduce latency for the specified application,
and allow Tx traffic to be rate limited per application. Follow the steps below and allow Tx traffic to be rate limited per application. Follow the steps below
to set ADq. to set ADq.
Requirements:
- The sch_mqprio, act_mirred and cls_flower modules must be loaded
- The latest version of iproute2
- If another driver (for example, DPDK) has set cloud filters, you cannot
enable ADQ
- Depending on the underlying PF device, ADQ cannot be enabled when the
following features are enabled:
+ Data Center Bridging (DCB)
+ Multiple Functions per Port (MFP)
+ Sideband Filters
1. Create traffic classes (TCs). Maximum of 8 TCs can be created per interface. 1. Create traffic classes (TCs). Maximum of 8 TCs can be created per interface.
The shaper bw_rlimit parameter is optional. The shaper bw_rlimit parameter is optional.
...@@ -141,7 +160,7 @@ to 1Gbit for tc0 and 3Gbit for tc1. ...@@ -141,7 +160,7 @@ 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 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 queues 16@0 16@16 hw 1 mode channel shaper bw_rlimit min_rate 1Gbit 2Gbit
max_rate 1Gbit 3Gbit max_rate 1Gbit 3Gbit
...@@ -162,6 +181,10 @@ Totals must be equal or less than port speed. ...@@ -162,6 +181,10 @@ Totals must be equal or less than port speed.
For example: min_rate 1Gbit 3Gbit: Verify bandwidth limit using network For example: min_rate 1Gbit 3Gbit: Verify bandwidth limit using network
monitoring tools such as ifstat or sar –n DEV [interval] [number of samples] 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:: 2. Enable HW TC offload on interface::
# ethtool -K <interface> hw-tc-offload on # ethtool -K <interface> hw-tc-offload on
...@@ -171,16 +194,16 @@ monitoring tools such as ifstat or sar –n DEV [interval] [number of samples] ...@@ -171,16 +194,16 @@ monitoring tools such as ifstat or sar –n DEV [interval] [number of samples]
# tc qdisc add dev <interface> ingress # tc qdisc add dev <interface> ingress
NOTES: NOTES:
- Run all tc commands from the iproute2 <pathtoiproute2>/tc/ directory. - Run all tc commands from the iproute2 <pathtoiproute2>/tc/ directory
- ADq is not compatible with cloud filters. - ADq is not compatible with cloud filters
- Setting up channels via ethtool (ethtool -L) is not supported when the TCs - Setting up channels via ethtool (ethtool -L) is not supported when the TCs
are configured using mqprio. are configured using mqprio
- You must have iproute2 latest version - You must have iproute2 latest version
- NVM version 6.01 or later is required. - NVM version 6.01 or later is required
- ADq cannot be enabled when any the following features are enabled: Data - ADq cannot be enabled when any the following features are enabled: Data
Center Bridging (DCB), Multiple Functions per Port (MFP), or Sideband Filters. Center Bridging (DCB), Multiple Functions per Port (MFP), or Sideband Filters
- If another driver (for example, DPDK) has set cloud filters, you cannot - If another driver (for example, DPDK) has set cloud filters, you cannot
enable ADq. enable ADq
- Tunnel filters are not supported in ADq. If encapsulated packets do arrive - 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, 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 for VXLAN traffic in non-tunnel mode, PCTYPE is identified as a VXLAN
...@@ -198,6 +221,16 @@ NOTES: ...@@ -198,6 +221,16 @@ NOTES:
Known Issues/Troubleshooting Known Issues/Troubleshooting
============================ ============================
Bonding fails with VFs bound to an Intel(R) Ethernet Controller 700 series device
---------------------------------------------------------------------------------
If you bind Virtual Functions (VFs) to an Intel(R) Ethernet Controller 700
series based device, the VF slaves may fail when they become the active slave.
If the MAC address of the VF is set by the PF (Physical Function) of the
device, when you add a slave, or change the active-backup slave, Linux bonding
tries to sync the backup slave's MAC address to the same MAC address as the
active slave. Linux bonding will fail at this point. This issue will not occur
if the VF's MAC address is not set by the PF.
Traffic Is Not Being Passed Between VM and Client Traffic Is Not Being Passed Between VM and Client
------------------------------------------------- -------------------------------------------------
You may not be able to pass traffic between a client system and a You may not be able to pass traffic between a client system and a
...@@ -215,13 +248,28 @@ Do not unload a port's driver if a Virtual Function (VF) with an active Virtual ...@@ -215,13 +248,28 @@ 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. 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. Once the VM shuts down, or otherwise releases the VF, the command will complete.
Using four traffic classes fails
--------------------------------
Do not try to reserve more than three traffic classes in the iavf driver. Doing
so will fail to set any traffic classes and will cause the driver to write
errors to stdout. Use a maximum of three queues to avoid this issue.
Multiple log error messages on iavf driver removal
--------------------------------------------------
If you have several VFs and you remove the iavf driver, several instances of
the following log errors are written to the log::
Unable to send opcode 2 to PF, err I40E_ERR_QUEUE_EMPTY, aq_err ok
Unable to send the message to VF 2 aq_err 12
ARQ Overflow Error detected
Virtual machine does not get link Virtual machine does not get link
--------------------------------- ---------------------------------
If the virtual machine has more than one virtual port assigned to it, and those 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 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:: all of the virtual ports. The following command may work around the issue::
ethtool -r <PF> # ethtool -r <PF>
Where <PF> is the PF interface in the host, for example: p5p1. You may need to 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. run the command more than once to get link on all virtual ports.
...@@ -251,10 +299,11 @@ traffic. ...@@ -251,10 +299,11 @@ traffic.
If you have multiple interfaces in a server, either turn on ARP filtering by If you have multiple interfaces in a server, either turn on ARP filtering by
entering:: entering::
echo 1 > /proc/sys/net/ipv4/conf/all/arp_filter # echo 1 > /proc/sys/net/ipv4/conf/all/arp_filter
NOTE: This setting is not saved across reboots. The configuration change can be NOTE:
made permanent by adding the following line to the file /etc/sysctl.conf:: 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 net.ipv4.conf.all.arp_filter = 1
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment