- Dynamic Device Personalization (DDP)
- Queue region configuration
- Virtual Function Port Representors
+- Malicious Device Drive event catch and notify
+- Generic flow API
Prerequisites
-------------
- Upgrade the NVM/FW version following the `Intel® Ethernet NVM Update Tool Quick Usage Guide for Linux
<https://www-ssl.intel.com/content/www/us/en/embedded/products/networking/nvm-update-tool-quick-linux-usage-guide.html>`_ and `Intel® Ethernet NVM Update Tool: Quick Usage Guide for EFI <https://www.intel.com/content/www/us/en/embedded/products/networking/nvm-update-tool-quick-efi-usage-guide.html>`_ if needed.
+- For information about supported media, please refer to this document: `Intel® Ethernet Controller X710/XXV710/XL710 Feature Support Matrix
+ <http://www.intel.com/content/dam/www/public/us/en/documents/release-notes/xl710-ethernet-controller-feature-matrix.pdf>`_.
+
+ .. Note::
+
+ * Some adapters based on the Intel(R) Ethernet Controller 700 Series only
+ support Intel Ethernet Optics modules. On these adapters, other modules are not
+ supported and will not function.
+
+ * For connections based on Intel(R) Ethernet Controller 700 Series,
+ support is dependent on your system board. Please see your vendor for details.
+
+ * In all cases Intel recommends using Intel Ethernet Optics; other modules
+ may function but are not validated by Intel. Contact Intel for supported media types.
+
Recommended Matching List
-------------------------
list which has been tested and verified. The detailed information can refer
to chapter Tested Platforms/Tested NICs in release notes.
+For X710/XL710/XXV710,
+
+--------------+-----------------------+------------------+
| DPDK version | Kernel driver version | Firmware version |
+==============+=======================+==================+
+ | 20.05 | 2.11.27 | 7.30 |
+ +--------------+-----------------------+------------------+
+ | 20.02 | 2.10.19 | 7.20 |
+ +--------------+-----------------------+------------------+
+ | 19.11 | 2.9.21 | 7.00 |
+ +--------------+-----------------------+------------------+
+ | 19.08 | 2.8.43 | 7.00 |
+ +--------------+-----------------------+------------------+
+ | 19.05 | 2.7.29 | 6.80 |
+ +--------------+-----------------------+------------------+
+ | 19.02 | 2.7.26 | 6.80 |
+ +--------------+-----------------------+------------------+
+ | 18.11 | 2.4.6 | 6.01 |
+ +--------------+-----------------------+------------------+
+ | 18.08 | 2.4.6 | 6.01 |
+ +--------------+-----------------------+------------------+
| 18.05 | 2.4.6 | 6.01 |
+--------------+-----------------------+------------------+
| 18.02 | 2.4.3 | 6.01 |
| 16.04 | 1.4.25 | 5.02 |
+--------------+-----------------------+------------------+
+
+For X722,
+
+ +--------------+-----------------------+------------------+
+ | DPDK version | Kernel driver version | Firmware version |
+ +==============+=======================+==================+
+ | 20.05 | 2.11.27 | 4.11 |
+ +--------------+-----------------------+------------------+
+ | 20.02 | 2.10.19 | 4.11 |
+ +--------------+-----------------------+------------------+
+ | 19.11 | 2.9.21 | 4.10 |
+ +--------------+-----------------------+------------------+
+ | 19.08 | 2.9.21 | 4.10 |
+ +--------------+-----------------------+------------------+
+ | 19.05 | 2.7.29 | 3.33 |
+ +--------------+-----------------------+------------------+
+ | 19.02 | 2.7.26 | 3.33 |
+ +--------------+-----------------------+------------------+
+ | 18.11 | 2.4.6 | 3.33 |
+ +--------------+-----------------------+------------------+
+
+
Pre-Installation Configuration
------------------------------
Runtime Config Options
~~~~~~~~~~~~~~~~~~~~~~
-- ``Number of Queues per VF`` (default ``4``)
+- ``Reserved number of Queues per VF`` (default ``4``)
+
+ The number of reserved queue per VF is determined by its host PF. If the
+ PCI address of an i40e PF is aaaa:bb.cc, the number of reserved 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 reserved queues per VF is 4 by default. If VF request more than
+ reserved queues per VF, PF will able to allocate max to 16 queues after a VF
+ reset.
- 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``)
Currently hot-plugging of representor ports is not supported so all required
representors must be specified on the creation of the PF.
+- ``Use latest supported vector`` (default ``disable``)
+
+ Latest supported vector path may not always get the best perf so vector path was
+ recommended to use only on later platform. But users may want the latest vector path
+ since it can get better perf in some real work loading cases. So ``devargs`` param
+ ``use-latest-supported-vec`` is introduced, for example::
+
+ -w 84:00.0,use-latest-supported-vec=1
+
+- ``Enable validation for VF message`` (default ``not enabled``)
+
+ The PF counts messages from each VF. If in any period of seconds the message
+ statistic from a VF exceeds maximal limitation, the PF will ignore any new message
+ from that VF for some seconds.
+ Format -- "maximal-message@period-seconds:ignore-seconds"
+ For example::
+
+ -w 84:00.0,vf_msg_cfg=80@120:180
+
+Vector RX Pre-conditions
+~~~~~~~~~~~~~~~~~~~~~~~~
+For Vector RX it is assumed that the number of descriptor rings will be a power
+of 2. With this pre-condition, the ring pointer can easily scroll back to the
+head after hitting the tail without a conditional check. In addition Vector RX
+can use this assumption to do a bit mask using ``ring_size - 1``.
+
Driver compilation and testing
------------------------------
protocols/filters which are not supported by default. The DDP
functionality requires a NIC firmware version of 6.0 or greater.
-Current implementation supports GTP-C/GTP-U/PPPoE/PPPoL2TP,
+Current implementation supports GTP-C/GTP-U/PPPoE/PPPoL2TP/ESP,
steering can be used with rte_flow API.
+GTPv1 package is released, and it can be downloaded from
+https://downloadcenter.intel.com/download/27587.
+
+PPPoE package is released, and it can be downloaded from
+https://downloadcenter.intel.com/download/28040.
+
+ESP-AH package is released, and it can be downloaded from
+https://downloadcenter.intel.com/download/29446.
+
Load a profile which supports GTP and store backup profile:
.. code-block:: console
testpmd> set port (port_id) queue-region flush (on|off)
testpmd> show port (port_id) queue-region
+Generic flow API
+~~~~~~~~~~~~~~~~~~~
+
+- ``RSS Flow``
+
+ RSS Flow supports to set hash input set, hash function, enable hash
+ and configure queue region.
+ For example:
+ Configure queue region as queue 0, 1, 2, 3.
+
+ .. code-block:: console
+
+ testpmd> flow create 0 ingress pattern end actions rss types end \
+ queues 0 1 2 3 end / end
+
+ Enable hash and set input set for ipv4-tcp.
+
+ .. code-block:: console
+
+ testpmd> flow create 0 ingress pattern eth / ipv4 / tcp / end \
+ actions rss types ipv4-tcp l3-src-only end queues end / end
+
+ Set symmetric hash enable for flow type ipv4-tcp.
+
+ .. code-block:: console
+
+ testpmd> flow create 0 ingress pattern eth / ipv4 / tcp / end \
+ actions rss types ipv4-tcp end queues end func symmetric_toeplitz / end
+
+ Set hash function as simple xor.
+
+ .. code-block:: console
+
+ testpmd> flow create 0 ingress pattern end actions rss types end \
+ queues end func simple_xor / end
+
Limitations or Known issues
---------------------------
TC TX scheduling mode setting
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-There're 2 TX scheduling modes for TCs, round robin and strict priority mode.
+There are 2 TX scheduling modes for TCs, round robin and strict priority mode.
If a TC is set to strict priority mode, it can consume unlimited bandwidth.
It means if APP has set the max bandwidth for that TC, it comes to no
effect.
As i40e PMD supports both 16 and 32 bytes RX descriptor sizes, and 16 bytes size can provide helps to high performance of small packets.
Configuration of ``CONFIG_RTE_LIBRTE_I40E_16BYTE_RX_DESC`` in config files can be changed to use 16 bytes size RX descriptors.
+Input set requirement of each pctype for FDIR
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Each PCTYPE can only have one specific FDIR input set at one time.
+For example, if creating 2 rte_flow rules with different input set for one PCTYPE,
+it will fail and return the info "Conflict with the first rule's input set",
+which means the current rule's input set conflicts with the first rule's.
+Remove the first rule if want to change the input set of the PCTYPE.
+
Example of getting best performance with l3fwd example
------------------------------------------------------
* Start creating a stream on packet generator.
* Set the Ethernet II type to 0x0800.
+
+Tx bytes affected by the link status change
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+For firmware versions prior to 6.01 for X710 series and 3.33 for X722 series, the tx_bytes statistics data is affected by
+the link down event. Each time the link status changes to down, the tx_bytes decreases 110 bytes.