[Intel-wired-lan] [PATCH v2] Documentation: i40evf: Update kernel documentation

Jeff Kirsher jeffrey.t.kirsher at intel.com
Thu Apr 12 16:29:04 UTC 2018


Updated the i40evf.txt kernel documentation with the latest information.

Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher at 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
+
+======================================================
 
 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 at 0 16 at 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 at 0 16 at 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 at 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 at lists.sf.net.
-- 
2.14.3



More information about the Intel-wired-lan mailing list