From mboxrd@z Thu Jan 1 00:00:00 1970 From: Samudrala, Sridhar Date: Fri, 19 Jul 2019 13:18:58 -0700 Subject: [Intel-wired-lan] [PATCH v2] Documentation: iavf: Update the Intel LAN driver doc for iavf In-Reply-To: <20190719200723.27851-1-jeffrey.t.kirsher@intel.com> References: <20190719200723.27851-1-jeffrey.t.kirsher@intel.com> Message-ID: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: intel-wired-lan@osuosl.org List-ID: On 7/19/2019 1:07 PM, Jeff Kirsher wrote: > Update the LAN driver documentation to include the latest feature > implementation and driver capabilities. > > Signed-off-by: Jeff Kirsher > --- > v2: fixed SOB and cleaned up the trailing whitespace > > .../networking/device_drivers/intel/iavf.rst | 331 ++++++++++++++++-- > 1 file changed, 298 insertions(+), 33 deletions(-) > > diff --git a/Documentation/networking/device_drivers/intel/iavf.rst b/Documentation/networking/device_drivers/intel/iavf.rst > index 2d0c3baa1752..fd3d045ca6d1 100644 > --- a/Documentation/networking/device_drivers/intel/iavf.rst > +++ b/Documentation/networking/device_drivers/intel/iavf.rst > @@ -10,11 +10,15 @@ Copyright(c) 2013-2018 Intel Corporation. > Contents > ======== > > +- Overview > - Identifying Your Adapter > - Additional Configurations > - Known Issues/Troubleshooting > - Support > > +Overview > +======== > + > This file describes the iavf Linux* Base Driver. This driver was formerly > called i40evf. > > @@ -27,6 +31,7 @@ The guest OS loading the iavf driver must support MSI-X interrupts. > > Identifying Your Adapter > ======================== > + > The driver in this kernel is compatible with devices based on the following: > * Intel(R) XL710 X710 Virtual Function > * Intel(R) X722 Virtual Function > @@ -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 > 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 > ------- > @@ -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 > from inside the VM in which you are running the VF:: > > - ethtool -K rxvlan on/off > + # ethtool -K rxvlan on/off > > or alternatively:: > > - ethtool --offload rxvlan on/off > + # ethtool --offload rxvlan on/off > > Adaptive Virtual Function > ------------------------- > @@ -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: > > - 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. > + 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). > + 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 > --------------------------- > @@ -117,8 +123,8 @@ 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 > + # 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. > > @@ -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 > 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. > The shaper bw_rlimit parameter is optional. > > @@ -141,9 +160,9 @@ to 1Gbit for tc0 and 3Gbit for tc1. > > :: > > - # tc qdisc add dev 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 > + tc qdisc add dev 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) > @@ -162,6 +181,10 @@ 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 hw-tc-offload on > @@ -171,16 +194,16 @@ monitoring tools such as ifstat or sar ?n DEV [interval] [number of samples] > # tc qdisc add dev ingress > > NOTES: > - - Run all tc commands from the iproute2 /tc/ directory. > - - ADq is not compatible with cloud filters. > + - Run all tc commands from the iproute2 /tc/ directory > + - ADq is not compatible with cloud filters > - 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 > - - 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 > - 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 > - enable ADq. > + 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 > @@ -194,10 +217,236 @@ NOTES: > 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. > > +SR-IOV Hypervisor Management Interface > +-------------------------------------- > +The sysfs file structure below supports the SR-IOV hypervisor management > +interface. > + > +| /sys/class/net//device/sriov (see [1]_) > +| +-- [VF-id, 0 .. 127] (see [2]_) > +| | +-- trunk > +| | +-- vlan_mirror > +| | +-- engress_mirror > +| | +-- ingress_mirror > +| | +-- mac_anti_spoof > +| | +-- vlan_anti_spoof > +| | +-- loopback > +| | +-- mac > +| | +-- mac_list > +| | +-- promisc > +| | +-- vlan_strip > +| | +-- stats > +| | +-- link_state > +| | +-- max_tx_rate > +| | +-- min_tx_rate > +| | +-- spoofcheck > +| | +-- trust > +| | +-- vlan > + > +.. [1] kobject started from ?sriov? is not available from existing kernel > + sysfs, and it requires device driver to implement this interface. > +.. [2] assume maximum # of VF supported by a PF is 128. To support a device > + that supports more than 128 SR-IOV instances, a ?vfx? is added to 0..127. > + With ?vfx? kboject, users need to add vf index as the first parameter and > + followed by ?:?. Is this sysfs mgmt interface and patch targeted for upstream iavf?