aboutsummaryrefslogtreecommitdiffstats
path: root/doc/guides/nics/i40e.rst
diff options
context:
space:
mode:
Diffstat (limited to 'doc/guides/nics/i40e.rst')
-rw-r--r--doc/guides/nics/i40e.rst147
1 files changed, 113 insertions, 34 deletions
diff --git a/doc/guides/nics/i40e.rst b/doc/guides/nics/i40e.rst
index cd468748..e1b8083c 100644
--- a/doc/guides/nics/i40e.rst
+++ b/doc/guides/nics/i40e.rst
@@ -1,32 +1,5 @@
-.. BSD LICENSE
- Copyright(c) 2016 Intel Corporation. All rights reserved.
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in
- the documentation and/or other materials provided with the
- distribution.
- * Neither the name of Intel Corporation nor the names of its
- contributors may be used to endorse or promote products derived
- from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+.. SPDX-License-Identifier: BSD-3-Clause
+ Copyright(c) 2016 Intel Corporation.
I40E Poll Mode Driver
======================
@@ -65,7 +38,8 @@ Features of the I40E PMD are:
- Hot plug
- IEEE1588/802.1AS timestamping
- VF Daemon (VFD) - EXPERIMENTAL
-
+- Dynamic Device Personalization (DDP)
+- Queue region configuration
Prerequisites
-------------
@@ -115,10 +89,6 @@ Please note that enabling debugging options may affect system performance.
Number of queues reserved for PF.
-- ``CONFIG_RTE_LIBRTE_I40E_QUEUE_NUM_PER_VF`` (default ``4``)
-
- Number of queues reserved for each SR-IOV VF.
-
- ``CONFIG_RTE_LIBRTE_I40E_QUEUE_NUM_PER_VM`` (default ``4``)
Number of queues reserved for each VMDQ Pool.
@@ -128,6 +98,29 @@ Please note that enabling debugging options may affect system performance.
Interrupt Throttling interval.
+Runtime Config Options
+~~~~~~~~~~~~~~~~~~~~~~
+
+- ``Number of Queues per VF`` (default ``4``)
+
+ The number of queue per VF is determined by its host PF. If the PCI address
+ of an i40e PF is aaaa:bb.cc, the number of queues per VF can be configured
+ with EAL parameter like -w aaaa:bb.cc,queue-num-per-vf=n. The value n can be
+ 1, 2, 4, 8 or 16. If no such parameter is configured, the number of queues
+ per VF is 4 by default.
+
+- ``Support multiple driver`` (default ``disable``)
+
+ There was a multiple driver support issue during use of 700 series Ethernet
+ Adapter with both Linux kernel and DPDK PMD. To fix this issue, ``devargs``
+ parameter ``support-multi-driver`` is introduced, for example::
+
+ -w 84:00.0,support-multi-driver=1
+
+ With the above configuration, DPDK PMD will not change global registers, and
+ will switch PF interrupt from IntN to Int0 to avoid interrupt conflict between
+ DPDK and Linux Kernel.
+
Driver compilation and testing
------------------------------
@@ -374,6 +367,75 @@ configuration passed on the EAL command line.
The floating VEB functionality requires a NIC firmware version of 5.0
or greater.
+Dynamic Device Personalization (DDP)
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+The IntelĀ® Ethernet Controller X*710 support a feature called "Dynamic Device
+Personalization (DDP)", which is used to configure hardware by downloading
+a profile to support protocols/filters which are not supported by default.
+The DDP functionality requires a NIC firmware version of 6.0 or greater.
+
+Current implementation supports MPLSoUDP/MPLSoGRE/GTP-C/GTP-U/PPPoE/PPPoL2TP,
+steering can be used with rte_flow API.
+
+Load a profile which supports MPLSoUDP/MPLSoGRE and store backup profile:
+
+.. code-block:: console
+
+ testpmd> ddp add 0 ./mpls.pkgo,./backup.pkgo
+
+Delete a MPLS profile and restore backup profile:
+
+.. code-block:: console
+
+ testpmd> ddp del 0 ./backup.pkgo
+
+Get loaded DDP package info list:
+
+.. code-block:: console
+
+ testpmd> ddp get list 0
+
+Display information about a MPLS profile:
+
+.. code-block:: console
+
+ testpmd> ddp get info ./mpls.pkgo
+
+Input set configuration
+~~~~~~~~~~~~~~~~~~~~~~~
+Input set for any PCTYPE can be configured with user defined configuration,
+For example, to use only 48bit prefix for IPv6 src address for IPv6 TCP RSS:
+
+.. code-block:: console
+
+ testpmd> port config 0 pctype 43 hash_inset clear all
+ testpmd> port config 0 pctype 43 hash_inset set field 13
+ testpmd> port config 0 pctype 43 hash_inset set field 14
+ testpmd> port config 0 pctype 43 hash_inset set field 15
+
+Queue region configuration
+~~~~~~~~~~~~~~~~~~~~~~~~~~~
+The Ethernet Controller X710/XL710 supports a feature of queue regions
+configuration for RSS in the PF, so that different traffic classes or
+different packet classification types can be separated to different
+queues in different queue regions. There is an API for configuration
+of queue regions in RSS with a command line. It can parse the parameters
+of the region index, queue number, queue start index, user priority, traffic
+classes and so on. Depending on commands from the command line, it will call
+i40e private APIs and start the process of setting or flushing the queue
+region configuration. As this feature is specific for i40e only private
+APIs are used. These new ``test_pmd`` commands are as shown below. For
+details please refer to :doc:`../testpmd_app_ug/index`.
+
+.. code-block:: console
+
+ testpmd> set port (port_id) queue-region region_id (value) \
+ queue_start_index (value) queue_num (value)
+ testpmd> set port (port_id) queue-region region_id (value) flowtype (value)
+ testpmd> set port (port_id) queue-region UP (value) region_id (value)
+ testpmd> set port (port_id) queue-region flush (on|off)
+ testpmd> show port (port_id) queue-region
Limitations or Known issues
---------------------------
@@ -483,6 +545,23 @@ Vlan strip of VF
The VF vlan strip function is only supported in the i40e kernel driver >= 2.1.26.
+DCB function
+~~~~~~~~~~~~
+
+DCB works only when RSS is enabled.
+
+Global configuration warning
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+I40E PMD will set some global registers to enable some function or set some
+configure. Then when using different ports of the same NIC with Linux kernel
+and DPDK, the port with Linux kernel will be impacted by the port with DPDK.
+For example, register I40E_GL_SWT_L2TAGCTRL is used to control L2 tag, i40e
+PMD uses I40E_GL_SWT_L2TAGCTRL to set vlan TPID. If setting TPID in port A
+with DPDK, then the configuration will also impact port B in the NIC with
+kernel driver, which don't want to use the TPID.
+So PMD reports warning to clarify what is changed by writing global register.
+
High Performance of Small Packets on 40G NIC
--------------------------------------------