aboutsummaryrefslogtreecommitdiffstats
path: root/doc/guides
diff options
context:
space:
mode:
authorLuca Boccassi <luca.boccassi@gmail.com>2017-11-13 10:38:04 +0000
committerLuca Boccassi <luca.boccassi@gmail.com>2017-11-13 10:38:39 +0000
commit976be7358289d46cd5ed8131bbf2e2c5a6838d3c (patch)
tree5e6f873dd1658446539f9d4621e2d16f559c867d /doc/guides
parent055c52583a2794da8ba1e85a48cce3832372b12f (diff)
New upstream version 17.11~rc4
Change-Id: I5cc288310eaa28cb8c2e475afce5e19f8c08ba1e Signed-off-by: Luca Boccassi <luca.boccassi@gmail.com>
Diffstat (limited to 'doc/guides')
-rw-r--r--doc/guides/contributing/stable.rst6
-rw-r--r--doc/guides/contributing/versioning.rst19
-rw-r--r--doc/guides/eventdevs/octeontx.rst28
-rw-r--r--doc/guides/index.rst2
-rw-r--r--doc/guides/mempool/index.rst40
-rw-r--r--doc/guides/mempool/octeontx.rst104
-rw-r--r--doc/guides/nics/features.rst38
-rw-r--r--doc/guides/nics/features/default.ini3
-rw-r--r--doc/guides/nics/features/ixgbe.ini1
-rw-r--r--doc/guides/nics/features/ixgbe_vec.ini1
-rw-r--r--doc/guides/nics/features/ixgbe_vf.ini1
-rw-r--r--doc/guides/nics/features/ixgbe_vf_vec.ini1
-rw-r--r--doc/guides/nics/ixgbe.rst16
-rw-r--r--doc/guides/nics/mlx4.rst114
-rw-r--r--doc/guides/nics/octeontx.rst31
-rw-r--r--doc/guides/nics/qede.rst59
-rw-r--r--doc/guides/platform/index.rst39
-rw-r--r--doc/guides/platform/octeontx.rst81
-rw-r--r--doc/guides/prog_guide/env_abstraction_layer.rst2
-rw-r--r--doc/guides/rel_notes/deprecation.rst18
-rw-r--r--doc/guides/rel_notes/release_17_11.rst569
-rw-r--r--doc/guides/sample_app_ug/ip_pipeline.rst2
-rw-r--r--doc/guides/sample_app_ug/ipv4_multicast.rst2
23 files changed, 841 insertions, 336 deletions
diff --git a/doc/guides/contributing/stable.rst b/doc/guides/contributing/stable.rst
index d52ec477..0f2f1f37 100644
--- a/doc/guides/contributing/stable.rst
+++ b/doc/guides/contributing/stable.rst
@@ -42,10 +42,10 @@ LTS Release
-----------
A stable release can be designated as an LTS release based on community
-agreement and a commitment from a maintainer. An LTS release will have a
-maintenance duration of 2 years.
+agreement and a commitment from a maintainer. The current policy is that each
+year's November release will be maintained as an LTS for 2 years.
-The current DPDK LTS release is 16.11.
+The current DPDK LTS releases are 16.11 and 17.11.
It is anticipated that there will be at least 4 releases per year of the LTS
or approximately 1 every 3 months. However, the cadence can be shorter or
diff --git a/doc/guides/contributing/versioning.rst b/doc/guides/contributing/versioning.rst
index 8d0fdb77..40009062 100644
--- a/doc/guides/contributing/versioning.rst
+++ b/doc/guides/contributing/versioning.rst
@@ -13,7 +13,9 @@ General Guidelines
------------------
#. Whenever possible, ABI should be preserved
-#. The libraries marked in experimental state may change without constraint.
+#. Libraries or APIs marked in ``experimental`` state may change without constraint.
+#. New APIs will be marked as ``experimental`` for at least one release to allow
+ any issues found by users of the new API to be fixed quickly
#. The addition of symbols is generally not problematic
#. The modification of symbols can generally be managed with versioning
#. The removal of symbols generally is an ABI break and requires bumping of the
@@ -41,6 +43,13 @@ ABI versions are set at the time of major release labeling, and the ABI may
change multiple times, without warning, between the last release label and the
HEAD label of the git tree.
+APIs marked as ``experimental`` are not considered part of the ABI and may
+change without warning at any time. Since changes to APIs are most likely
+immediately after their introduction, as users begin to take advantage of
+those new APIs and start finding issues with them, new DPDK APIs will be
+automatically marked as ``experimental`` to allow for a period of stabilization
+before they become part of a tracked ABI.
+
ABI versions, once released, are available until such time as their
deprecation has been noted in the Release Notes for at least one major release
cycle. For example consider the case where the ABI for DPDK 2.0 has been
@@ -58,6 +67,14 @@ being provided. The requirements for doing so are:
#. At least 3 acknowledgments of the need to do so must be made on the
dpdk.org mailing list.
+ - The acknowledgment of the maintainer of the component is mandatory, or if
+ no maintainer is available for the component, the tree/sub-tree maintainer
+ for that component must acknowledge the ABI change instead.
+
+ - It is also recommended that acknowledgments from different "areas of
+ interest" be sought for each deprecation, for example: from NIC vendors,
+ CPU vendors, end-users, etc.
+
#. The changes (including an alternative map file) must be gated with
the ``RTE_NEXT_ABI`` option, and provided with a deprecation notice at the
same time.
diff --git a/doc/guides/eventdevs/octeontx.rst b/doc/guides/eventdevs/octeontx.rst
index 7e601a07..cef004a2 100644
--- a/doc/guides/eventdevs/octeontx.rst
+++ b/doc/guides/eventdevs/octeontx.rst
@@ -63,33 +63,7 @@ Supported OCTEONTX SoCs
Prerequisites
-------------
-There are three main pre-perquisites for executing SSOVF PMD on a OCTEONTX
-compatible board:
-
-1. **OCTEONTX Linux kernel PF driver for Network acceleration HW blocks**
-
- The OCTEONTX Linux kernel drivers (including the required PF driver for the
- SSOVF) are available on Github at `octeontx-kmod <https://github.com/caviumnetworks/octeontx-kmod>`_
- along with build, install and dpdk usage instructions.
-
-2. **ARM64 Tool Chain**
-
- For example, the *aarch64* Linaro Toolchain, which can be obtained from
- `here <https://releases.linaro.org/components/toolchain/binaries/4.9-2017.01/aarch64-linux-gnu>`_.
-
-3. **Rootfile system**
-
- Any *aarch64* supporting filesystem can be used. For example,
- Ubuntu 15.10 (Wily) or 16.04 LTS (Xenial) userland which can be obtained
- from `<http://cdimage.ubuntu.com/ubuntu-base/releases/16.04/release/ubuntu-base-16.04.1-base-arm64.tar.gz>`_.
-
- As an alternative method, SSOVF PMD can also be executed using images provided
- as part of SDK from Cavium. The SDK includes all the above prerequisites necessary
- to bring up a OCTEONTX board.
-
- SDK and related information can be obtained from: `Cavium support site <https://support.cavium.com/>`_.
-
-- Follow the DPDK :ref:`Getting Started Guide for Linux <linux_gsg>` to setup the basic DPDK environment.
+See :doc: `../platform/octeontx` for setup information.
Pre-Installation Configuration
------------------------------
diff --git a/doc/guides/index.rst b/doc/guides/index.rst
index 5b6eb7ec..f924a7cb 100644
--- a/doc/guides/index.rst
+++ b/doc/guides/index.rst
@@ -44,6 +44,8 @@ DPDK documentation
nics/index
cryptodevs/index
eventdevs/index
+ mempool/index
+ platform/index
contributing/index
rel_notes/index
faq/index
diff --git a/doc/guides/mempool/index.rst b/doc/guides/mempool/index.rst
new file mode 100644
index 00000000..b3c8e7f0
--- /dev/null
+++ b/doc/guides/mempool/index.rst
@@ -0,0 +1,40 @@
+.. BSD LICENSE
+ Copyright(c) 2017 Cavium Inc. 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 Cavium Inc 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.
+
+Mempool Device Driver
+=====================
+
+The following are a list of mempool PMDs, which can be used from an
+application through the mempool API.
+
+.. toctree::
+ :maxdepth: 2
+ :numbered:
+
+ octeontx
diff --git a/doc/guides/mempool/octeontx.rst b/doc/guides/mempool/octeontx.rst
new file mode 100644
index 00000000..b262c823
--- /dev/null
+++ b/doc/guides/mempool/octeontx.rst
@@ -0,0 +1,104 @@
+.. BSD LICENSE
+ Copyright (C) Cavium, Inc. 2017. 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 Cavium, Inc 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.
+
+OCTEONTX FPAVF Mempool Driver
+=============================
+
+The OCTEONTX FPAVF PMD (**librte_mempool_octeontx**) is a mempool
+driver for offload mempool device found in **Cavium OCTEONTX** SoC
+family.
+
+More information can be found at `Cavium, Inc Official Website
+<http://www.cavium.com/OCTEON-TX_ARM_Processors.html>`_.
+
+Features
+--------
+
+Features of the OCTEONTX FPAVF PMD are:
+
+- 32 SR-IOV Virtual functions
+- 32 Pools
+- HW mempool manager
+
+Supported OCTEONTX SoCs
+-----------------------
+
+- CN83xx
+
+Prerequisites
+-------------
+
+See :doc: `../platform/octeontx.rst` for setup information.
+
+Pre-Installation Configuration
+------------------------------
+
+Config File Options
+~~~~~~~~~~~~~~~~~~~
+
+The following options can be modified in the ``config`` file.
+Please note that enabling debugging options may affect system performance.
+
+- ``CONFIG_RTE_MBUF_DEFAULT_MEMPOOL_OPS`` ( set to ``octeontx_fpavf``)
+
+ Set default mempool ops to octeontx_fpavf.
+
+- ``CONFIG_RTE_LIBRTE_OCTEONTX_MEMPOOL`` (default ``y``)
+
+ Toggle compilation of the ``librte_mempool_octeontx`` driver.
+
+- ``CONFIG_RTE_LIBRTE_OCTEONTX_MEMPOOL_DEBUG`` (default ``n``)
+
+ Toggle display of generic debugging messages
+
+Driver Compilation
+~~~~~~~~~~~~~~~~~~
+
+To compile the OCTEONTX FPAVF MEMPOOL PMD for Linux arm64 gcc target, run the
+following ``make`` command:
+
+.. code-block:: console
+
+ cd <DPDK-source-directory>
+ make config T=arm64-thunderx-linuxapp-gcc test-build
+
+
+Initialization
+--------------
+
+The octeontx fpavf mempool initialization similar to other mempool
+drivers like ring. However user need to pass --base-virtaddr as
+command line input to application example test_mempool.c application.
+
+Example:
+
+.. code-block:: console
+
+ ./build/app/test -c 0xf --base-virtaddr=0x100000000000 \
+ --mbuf-pool-ops-name="octeontx_fpavf"
diff --git a/doc/guides/nics/features.rst b/doc/guides/nics/features.rst
index bfeae80e..d5bf38a2 100644
--- a/doc/guides/nics/features.rst
+++ b/doc/guides/nics/features.rst
@@ -136,6 +136,18 @@ invoke rte_eth_tx_burst() concurrently on the same Tx queue without SW lock.
* **[related] API**: ``rte_eth_tx_burst()``.
+.. _nic_features_fast_mbuf_free:
+
+Fast mbuf free
+--------------
+
+Supports optimization for fast release of mbufs following successful Tx.
+Requires that per queue, all mbufs come from the same mempool and has refcnt = 1.
+
+* **[uses] rte_eth_txconf,rte_eth_txmode**: ``offloads:DEV_TX_OFFLOAD_MBUF_FAST_FREE``.
+* **[provides] rte_eth_dev_info**: ``tx_offload_capa,tx_queue_offload_capa:DEV_TX_OFFLOAD_MBUF_FAST_FREE``.
+
+
.. _nic_features_free_tx_mbuf_on_demand:
Free Tx mbuf on demand
@@ -494,6 +506,23 @@ Supports adding traffic mirroring rules.
* **[related] API**: ``rte_eth_mirror_rule_set()``, ``rte_eth_mirror_rule_reset()``.
+.. _nic_features_inline_crypto_doc:
+
+Inline crypto
+-------------
+
+Supports inline crypto processing (eg. inline IPsec). See Security library and PMD documentation for more details.
+
+* **[uses] rte_eth_rxconf,rte_eth_rxmode**: ``offloads:DEV_RX_OFFLOAD_SECURITY``,
+* **[uses] rte_eth_txconf,rte_eth_txmode**: ``offloads:DEV_TX_OFFLOAD_SECURITY``.
+* **[implements] rte_security_ops**: ``session_create``, ``session_update``,
+ ``session_stats_get``, ``session_destroy``, ``set_pkt_metadata``, ``capabilities_get``.
+* **[provides] rte_eth_dev_info**: ``rx_offload_capa,rx_queue_offload_capa:DEV_RX_OFFLOAD_SECURITY``,
+ ``tx_offload_capa,tx_queue_offload_capa:DEV_TX_OFFLOAD_SECURITY``.
+* **[provides] mbuf**: ``mbuf.ol_flags:PKT_RX_SEC_OFFLOAD``,
+ ``mbuf.ol_flags:PKT_TX_SEC_OFFLOAD``, ``mbuf.ol_flags:PKT_RX_SEC_OFFLOAD_FAILED``.
+
+
.. _nic_features_crc_offload:
CRC offload
@@ -640,15 +669,6 @@ Supports packet type parsing and returns a list of supported types.
.. _nic_features_timesync:
-Mbuf fast free
---------------
-
-Supports optimization for fast release of mbufs following successful Tx.
-Requires that per queue, all mbufs come from the same mempool and has refcnt = 1.
-
-* **[uses] rte_eth_txconf,rte_eth_txmode**: ``offloads:DEV_TX_OFFLOAD_MBUF_FAST_FREE``.
-* **[provides] rte_eth_dev_info**: ``tx_offload_capa,tx_queue_offload_capa:DEV_TX_OFFLOAD_MBUF_FAST_FREE``.
-
Timesync
--------
diff --git a/doc/guides/nics/features/default.ini b/doc/guides/nics/features/default.ini
index dc527ddf..dae2ad77 100644
--- a/doc/guides/nics/features/default.ini
+++ b/doc/guides/nics/features/default.ini
@@ -14,6 +14,7 @@ Removal event =
Queue status event =
Rx interrupt =
Lock-free Tx queue =
+Fast mbuf free =
Free Tx mbuf on demand =
Queue start/stop =
MTU update =
@@ -43,6 +44,7 @@ Flow control =
Flow API =
Rate limitation =
Traffic mirroring =
+Inline crypto =
CRC offload =
VLAN offload =
QinQ offload =
@@ -76,4 +78,3 @@ x86-64 =
Usage doc =
Design doc =
Perf doc =
-Mbuf fast free =
diff --git a/doc/guides/nics/features/ixgbe.ini b/doc/guides/nics/features/ixgbe.ini
index 9ff5d8f8..1d68ee8e 100644
--- a/doc/guides/nics/features/ixgbe.ini
+++ b/doc/guides/nics/features/ixgbe.ini
@@ -33,6 +33,7 @@ Flow control = Y
Flow API = Y
Rate limitation = Y
Traffic mirroring = Y
+Inline crypto = Y
CRC offload = Y
VLAN offload = Y
QinQ offload = Y
diff --git a/doc/guides/nics/features/ixgbe_vec.ini b/doc/guides/nics/features/ixgbe_vec.ini
index 4d56df4f..28bc0547 100644
--- a/doc/guides/nics/features/ixgbe_vec.ini
+++ b/doc/guides/nics/features/ixgbe_vec.ini
@@ -32,6 +32,7 @@ Flow director = Y
Flow control = Y
Rate limitation = Y
Traffic mirroring = Y
+Inline crypto = Y
Timesync = Y
Rx descriptor status = Y
Tx descriptor status = Y
diff --git a/doc/guides/nics/features/ixgbe_vf.ini b/doc/guides/nics/features/ixgbe_vf.ini
index b63e32ce..0a15500b 100644
--- a/doc/guides/nics/features/ixgbe_vf.ini
+++ b/doc/guides/nics/features/ixgbe_vf.ini
@@ -17,6 +17,7 @@ RSS hash = Y
RSS key update = Y
RSS reta update = Y
VLAN filter = Y
+Inline crypto = Y
CRC offload = Y
VLAN offload = Y
QinQ offload = Y
diff --git a/doc/guides/nics/features/ixgbe_vf_vec.ini b/doc/guides/nics/features/ixgbe_vf_vec.ini
index c994857e..80e7f3bd 100644
--- a/doc/guides/nics/features/ixgbe_vf_vec.ini
+++ b/doc/guides/nics/features/ixgbe_vf_vec.ini
@@ -17,6 +17,7 @@ RSS hash = Y
RSS key update = Y
RSS reta update = Y
VLAN filter = Y
+Inline crypto = Y
Rx descriptor status = Y
Tx descriptor status = Y
Basic stats = Y
diff --git a/doc/guides/nics/ixgbe.rst b/doc/guides/nics/ixgbe.rst
index c687c63f..d477ea05 100644
--- a/doc/guides/nics/ixgbe.rst
+++ b/doc/guides/nics/ixgbe.rst
@@ -239,6 +239,22 @@ There is no RTE API to add a VF's MAC address from the PF. On ixgbe, the
as a workaround.
+Inline crypto processing support
+--------------------------------
+
+Inline IPsec processing is supported for ``RTE_SECURITY_ACTION_TYPE_INLINE_CRYPTO``
+mode for ESP packets only:
+
+- ESP authentication only: AES-128-GMAC (128-bit key)
+- ESP encryption and authentication: AES-128-GCM (128-bit key)
+
+IPsec Security Gateway Sample Application supports inline IPsec processing for
+ixgbe PMD.
+
+For more details see the IPsec Security Gateway Sample Application and Security
+library documentation.
+
+
Supported Chipsets and NICs
---------------------------
diff --git a/doc/guides/nics/mlx4.rst b/doc/guides/nics/mlx4.rst
index 5c3fb764..22341b90 100644
--- a/doc/guides/nics/mlx4.rst
+++ b/doc/guides/nics/mlx4.rst
@@ -74,13 +74,6 @@ long as they share the same MAC address.
Compiling librte_pmd_mlx4 causes DPDK to be linked against libibverbs.
-Features
---------
-
-- Multi arch support: x86_64 and POWER8.
-- Link state information is provided.
-- RX interrupts.
-
Configuration
-------------
@@ -107,11 +100,6 @@ These options can be modified in the ``.config`` file.
to abort with harmless debugging messages as a workaround.
Relevant only when CONFIG_RTE_LIBRTE_MLX4_DEBUG is enabled.
-- ``CONFIG_RTE_LIBRTE_MLX4_MAX_INLINE`` (default **0**)
-
- Amount of data to be inlined during TX operations. Improves latency but
- lowers throughput.
-
- ``CONFIG_RTE_LIBRTE_MLX4_TX_MP_CACHE`` (default **8**)
Maximum number of cached memory pools (MPs) per TX queue. Each MP from
@@ -120,15 +108,6 @@ These options can be modified in the ``.config`` file.
This value is always 1 for RX queues since they use a single MP.
-Environment variables
-~~~~~~~~~~~~~~~~~~~~~
-
-- ``MLX4_INLINE_RECV_SIZE``
-
- A nonzero value enables inline receive for packets up to that size. May
- significantly improve performance in some cases but lower it in
- others. Requires careful testing.
-
Run-time configuration
~~~~~~~~~~~~~~~~~~~~~~
@@ -174,7 +153,7 @@ This driver relies on external libraries and kernel drivers for resources
allocations and initialization. The following dependencies are not part of
DPDK and must be installed separately:
-- **libibverbs**
+- **libibverbs** (provided by rdma-core package)
User space verbs framework used by librte_pmd_mlx4. This library provides
a generic interface between the kernel and low-level user space drivers
@@ -184,7 +163,7 @@ DPDK and must be installed separately:
resources allocations) to be managed by the kernel and fast operations to
never leave user space.
-- **libmlx4**
+- **libmlx4** (provided by rdma-core package)
Low-level user space driver library for Mellanox ConnectX-3 devices,
it is automatically loaded by libibverbs.
@@ -192,7 +171,7 @@ DPDK and must be installed separately:
This library basically implements send/receive calls to the hardware
queues.
-- **Kernel modules** (mlnx-ofed-kernel)
+- **Kernel modules**
They provide the kernel-side verbs API and low level device drivers that
manage actual hardware initialization and resources sharing with user
@@ -218,24 +197,27 @@ DPDK and must be installed separately:
Both libraries are BSD and GPL licensed. Linux kernel modules are GPL
licensed.
-Currently supported by DPDK:
+Depending on system constraints and user preferences either RDMA core library
+with a recent enough Linux kernel release (recommended) or Mellanox OFED,
+which provides compatibility with older releases.
+
+Current RDMA core package and Linux kernel (recommended)
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-- Mellanox OFED **4.1**.
-- Firmware version **2.36.5000** and above.
+- Minimal Linux kernel version: 4.14.
+- Minimal RDMA core version: v15 (see `RDMA core installation documentation`_).
-Getting Mellanox OFED
-~~~~~~~~~~~~~~~~~~~~~
+.. _`RDMA core installation documentation`: https://raw.githubusercontent.com/linux-rdma/rdma-core/master/README.md
-While these libraries and kernel modules are available on OpenFabrics
-Alliance's `website <https://www.openfabrics.org/>`_ and provided by package
-managers on most distributions, this PMD requires Ethernet extensions that
-may not be supported at the moment (this is a work in progress).
+.. _Mellanox_OFED_as_a_fallback:
-`Mellanox OFED
-<http://www.mellanox.com/page/products_dyn?product_family=26&mtag=linux_sw_drivers>`_
-includes the necessary support and should be used in the meantime. For DPDK,
-only libibverbs, libmlx4, mlnx-ofed-kernel packages and firmware updates are
-required from that distribution.
+Mellanox OFED as a fallback
+~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+- `Mellanox OFED`_ version: **4.2**.
+- firmware version: **2.42.5000** and above.
+
+.. _`Mellanox OFED`: http://www.mellanox.com/page/products_dyn?product_family=26&mtag=linux_sw_drivers
.. note::
@@ -243,15 +225,10 @@ required from that distribution.
this DPDK release was developed and tested against is strongly
recommended. Please check the `prerequisites`_.
-Supported NICs
---------------
-
-* Mellanox(R) ConnectX(R)-3 Pro 40G MCX354A-FCC_Ax (2*40G)
-
-Quick Start Guide
------------------
+Installing Mellanox OFED
+^^^^^^^^^^^^^^^^^^^^^^^^
-1. Download latest Mellanox OFED. For more info check the `prerequisites`_.
+1. Download latest Mellanox OFED.
2. Install the required libraries and kernel modules either by installing
only the required set, or by installing the entire Mellanox OFED:
@@ -260,19 +237,19 @@ Quick Start Guide
.. code-block:: console
- ./mlnxofedinstall
+ ./mlnxofedinstall --dpdk --upstream-libs
For SR-IOV hypervisors use:
.. code-block:: console
- ./mlnxofedinstall --enable-sriov -hypervisor
+ ./mlnxofedinstall --dpdk --upstream-libs --enable-sriov --hypervisor
For SR-IOV virtual machine use:
.. code-block:: console
- ./mlnxofedinstall --guest
+ ./mlnxofedinstall --dpdk --upstream-libs --guest
3. Verify the firmware is the correct one:
@@ -286,7 +263,19 @@ Quick Start Guide
connectx_port_config
- Or in the manual way:
+5. Continue with :ref:`section 2 of the Quick Start Guide <QSG_2>`.
+
+Supported NICs
+--------------
+
+* Mellanox(R) ConnectX(R)-3 Pro 40G MCX354A-FCC_Ax (2*40G)
+
+.. _qsg:
+
+Quick Start Guide
+-----------------
+
+1. Set all ports links to Ethernet
.. code-block:: console
@@ -294,7 +283,15 @@ Quick Start Guide
echo eth > "/sys/bus/pci/devices/$PCI/mlx4_port0"
echo eth > "/sys/bus/pci/devices/$PCI/mlx4_port1"
-5. In case of bare metal or hypervisor, configure optimized steering mode
+ .. note::
+
+ If using Mellanox OFED one can permanently set the port link
+ to Ethernet using connectx_port_config tool provided by it.
+ :ref:`Mellanox_OFED_as_a_fallback`:
+
+.. _QSG_2:
+
+2. In case of bare metal or hypervisor, configure optimized steering mode
by adding the following line to ``/etc/modprobe.d/mlx4_core.conf``:
.. code-block:: console
@@ -306,7 +303,7 @@ Quick Start Guide
If VLAN filtering is used, set log_num_mgm_entry_size=-1.
Performance degradation can occur on this case.
-6. Restart the driver:
+3. Restart the driver:
.. code-block:: console
@@ -318,7 +315,7 @@ Quick Start Guide
service openibd restart
-7. Compile DPDK and you are ready to go. See instructions on
+4. Compile DPDK and you are ready to go. See instructions on
:ref:`Development Kit Build System <Development_Kit_Build_System>`
Performance tuning
@@ -330,10 +327,7 @@ Performance tuning
cat /sys/module/mlx4_core/parameters/log_num_mgm_entry_size
-2. Use environment variable MLX4_INLINE_RECV_SIZE=64 to get maximum
- performance for 64B messages.
-
-3. Use the CPU near local NUMA node to which the PCIe adapter is connected,
+2. Use the CPU near local NUMA node to which the PCIe adapter is connected,
for better performance. For VMs, verify that the right CPU
and NUMA node are pinned according to the above. Run:
@@ -343,19 +337,19 @@ Performance tuning
to identify the NUMA node to which the PCIe adapter is connected.
-4. If more than one adapter is used, and root complex capabilities allow
+3. If more than one adapter is used, and root complex capabilities allow
to put both adapters on the same NUMA node without PCI bandwidth degradation,
it is recommended to locate both adapters on the same NUMA node.
This in order to forward packets from one to the other without
NUMA performance penalty.
-5. Disable pause frames:
+4. Disable pause frames:
.. code-block:: console
ethtool -A <netdev> rx off tx off
-6. Verify IO non-posted prefetch is disabled by default. This can be checked
+5. Verify IO non-posted prefetch is disabled by default. This can be checked
via the BIOS configuration. Please contact you server provider for more
information about the settings.
diff --git a/doc/guides/nics/octeontx.rst b/doc/guides/nics/octeontx.rst
index a6631cd0..90bb9e5d 100644
--- a/doc/guides/nics/octeontx.rst
+++ b/doc/guides/nics/octeontx.rst
@@ -71,34 +71,7 @@ The features supported by the device and not yet supported by this PMD include:
Prerequisites
-------------
-There are three main pre-perquisites for executing OCTEONTX PMD on a OCTEONTX
-compatible board:
-
-1. **OCTEONTX Linux kernel PF driver for Network acceleration HW blocks**
-
- The OCTEONTX Linux kernel drivers (including the required PF driver for the
- all network acceleration blocks) are available on GitHub at
- `octeontx-kmod <https://github.com/caviumnetworks/octeontx-kmod>`_
- along with build, install and dpdk usage instructions.
-
-2. **ARM64 Tool Chain**
-
- For example, the *aarch64* Linaro Toolchain, which can be obtained from
- `here <https://releases.linaro.org/components/toolchain/binaries/4.9-2017.01/aarch64-linux-gnu>`_.
-
-3. **Rootfile system**
-
- Any *aarch64* supporting filesystem can be used. For example,
- Ubuntu 15.10 (Wily) or 16.04 LTS (Xenial) userland which can be obtained
- from `<http://cdimage.ubuntu.com/ubuntu-base/releases/16.04/release/ubuntu-base-16.04.1-base-arm64.tar.gz>`_.
-
- As an alternative method, OCTEONTX PMD can also be executed using images provided
- as part of SDK from Cavium. The SDK includes all the above prerequisites necessary
- to bring up a OCTEONTX board.
-
- SDK and related information can be obtained from: `Cavium support site <https://support.cavium.com/>`_.
-
-Follow the DPDK :ref:`Getting Started Guide for Linux <linux_gsg>` to setup the basic DPDK environment.
+See :doc:`../platform/octeontx` for setup information.
Pre-Installation Configuration
------------------------------
@@ -222,7 +195,7 @@ Example:
.. code-block:: console
- ./your_dpdk_application --mbuf-pool-ops="octeontx_fpavf" \
+ ./your_dpdk_application --mbuf-pool-ops-name="octeontx_fpavf" \
--vdev='event_octeontx' \
--vdev="eth_octeontx,nr_port=2"
diff --git a/doc/guides/nics/qede.rst b/doc/guides/nics/qede.rst
index 09a10be1..84becc98 100644
--- a/doc/guides/nics/qede.rst
+++ b/doc/guides/nics/qede.rst
@@ -1,5 +1,6 @@
.. BSD LICENSE
Copyright (c) 2016 QLogic Corporation
+ Copyright (c) 2017 Cavium Inc.
All rights reserved.
Redistribution and use in source and binary forms, with or without
@@ -32,8 +33,7 @@ QEDE Poll Mode Driver
======================
The QEDE poll mode driver library (**librte_pmd_qede**) implements support
-for **QLogic FastLinQ QL4xxxx 10G/25G/40G/50G/100G CNA** family of adapters as well
-as their virtual functions (VF) in SR-IOV context. It is supported on
+for **QLogic FastLinQ QL4xxxx 10G/25G/40G/50G/100G Intelligent Ethernet Adapters (IEA) and Converged Network Adapters (CNA)** family of adapters as well as SR-IOV virtual functions (VF). It is supported on
several standard Linux distros like RHEL7.x, SLES12.x and Ubuntu.
It is compile-tested under FreeBSD OS.
@@ -48,21 +48,22 @@ Supported Features
- Allmulti mode
- Port hardware statistics
- Jumbo frames
-- VLAN offload - Filtering and stripping
-- Stateless checksum offloads (IPv4/TCP/UDP)
-- Multiple Rx/Tx queues
-- RSS (with RETA/hash table/key)
-- TSS
- Multiple MAC address
-- Default pause flow control
-- SR-IOV VF
- MTU change
+- Default pause flow control
- Multiprocess aware
- Scatter-Gather
-- VXLAN tunneling offload
-- N-tuple filter and flow director (limited support)
+- Multiple Rx/Tx queues
+- RSS (with RETA/hash table/key)
+- TSS
+- Stateless checksum offloads (IPv4/IPv6/TCP/UDP)
- LRO/TSO
+- VLAN offload - Filtering and stripping
+- N-tuple filter and flow director (limited support)
- NPAR (NIC Partitioning)
+- SR-IOV VF
+- VXLAN tunneling offload
+- MPLSoUDP Tx tunnel offload
Non-supported Features
----------------------
@@ -73,18 +74,30 @@ Non-supported Features
Supported QLogic Adapters
-------------------------
-- QLogic FastLinQ QL4xxxx 10G/25G/40G/50G/100G CNAs.
+- QLogic FastLinQ QL4xxxx 10G/25G/40G/50G/100G Intelligent Ethernet Adapters (IEA) and Converged Network Adapters (CNA)
Prerequisites
-------------
-- Requires firmware version **8.18.x.** and management firmware
- version **8.18.x or higher**. Firmware may be available
+- Requires storm firmware version **8.30.12.0**. Firmware may be available
inbox in certain newer Linux distros under the standard directory
- ``E.g. /lib/firmware/qed/qed_init_values-8.18.9.0.bin``
+ ``E.g. /lib/firmware/qed/qed_init_values-8.30.12.0.bin``
+ If the required firmware files are not available then download it from
+ `QLogic Driver Download Center <http://driverdownloads.qlogic.com/QLogicDriverDownloads_UI/DefaultNewSearch.aspx>`_.
+ For downloading firmware file, select adapter category, model and DPDK Poll Mode Driver.
+
+- Requires management firmware (MFW) version **8.30.x.x** or higher to be
+ flashed on to the adapter. If the required management firmware is not
+ available then download from
+ `QLogic Driver Download Center <http://driverdownloads.qlogic.com/QLogicDriverDownloads_UI/DefaultNewSearch.aspx>`_.
+ For downloading firmware upgrade utility, select adapter category, model and Linux distro.
+ To flash the management firmware refer to the instructions in the QLogic Firmware Upgrade Utility Readme document.
+
+- SR-IOV requires Linux PF driver version **8.20.x.x** or higher.
+ If the required PF driver is not available then download it from
+ `QLogic Driver Download Center <http://driverdownloads.qlogic.com/QLogicDriverDownloads_UI/DefaultNewSearch.aspx>`_.
+ For downloading PF driver, select adapter category, model and Linux distro.
-- If the required firmware files are not available then visit
- `QLogic Driver Download Center <http://driverdownloads.qlogic.com>`_.
Performance note
~~~~~~~~~~~~~~~~
@@ -117,12 +130,18 @@ enabling debugging options may affect system performance.
Toggle display of receive fast path run-time messages.
+- ``CONFIG_RTE_LIBRTE_QEDE_VF_TX_SWITCH`` (default **"y"**)
+
+ A knob to control per-VF Tx switching feature.
+
- ``CONFIG_RTE_LIBRTE_QEDE_FW`` (default **""**)
Gives absolute path of firmware file.
- ``Eg: "/lib/firmware/qed/qed_init_values_zipped-8.18.9.0.bin"``
+ ``Eg: "/lib/firmware/qed/qed_init_values-8.30.12.0.bin"``
Empty string indicates driver will pick up the firmware file
- from the default location.
+ from the default location /lib/firmware/qed.
+ CAUTION this option is more for custom firmware, it is not
+ recommended for use under normal condition.
Driver compilation and testing
------------------------------
@@ -135,7 +154,7 @@ SR-IOV: Prerequisites and Sample Application Notes
This section provides instructions to configure SR-IOV with Linux OS.
-**Note**: librte_pmd_qede will be used to bind to SR-IOV VF device and Linux native kernel driver (QEDE) will function as SR-IOV PF driver. Requires PF driver to be 8.10.x.x or higher.
+**Note**: librte_pmd_qede will be used to bind to SR-IOV VF device and Linux native kernel driver (qede) will function as SR-IOV PF driver. Requires PF driver to be 8.10.x.x or higher.
#. Verify SR-IOV and ARI capability is enabled on the adapter using ``lspci``:
diff --git a/doc/guides/platform/index.rst b/doc/guides/platform/index.rst
new file mode 100644
index 00000000..69e560cd
--- /dev/null
+++ b/doc/guides/platform/index.rst
@@ -0,0 +1,39 @@
+.. BSD LICENSE
+ Copyright (C) Cavium, Inc. 2017. 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 Cavium Inc 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.
+
+Platform Specific Guides
+========================
+
+The following are platform specific guides and setup information.
+
+.. toctree::
+ :maxdepth: 2
+ :numbered:
+
+ octeontx
diff --git a/doc/guides/platform/octeontx.rst b/doc/guides/platform/octeontx.rst
new file mode 100644
index 00000000..fb708caf
--- /dev/null
+++ b/doc/guides/platform/octeontx.rst
@@ -0,0 +1,81 @@
+.. BSD LICENSE
+ Copyright (C) Cavium, Inc. 2017. 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 Cavium, Inc 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.
+
+OCTEONTX Board Support Package
+==============================
+
+This doc has information about steps to setup octeontx platform
+and information about common offload hw block drivers of
+**Cavium OCTEONTX** SoC family.
+
+
+More information about SoC can be found at `Cavium, Inc Official Website
+<http://www.cavium.com/OCTEON-TX_ARM_Processors.html>`_.
+
+Common Offload HW Block Drivers
+-------------------------------
+
+1. **Eventdev Driver**
+ See :doc: `../eventdevs/octeontx.rst` for octeontx ssovf eventdev driver
+ information.
+
+2. **Mempool Driver**
+ See :doc: `../mempool/octeontx.rst` for octeontx fpavf mempool driver
+ information.
+
+Steps To Setup Platform
+-----------------------
+
+There are three main pre-prerequisites for setting up Platform drivers on
+OCTEONTX compatible board:
+
+1. **OCTEONTX Linux kernel PF driver for Network acceleration HW blocks**
+
+ The OCTEONTX Linux kernel drivers (includes the required PF driver for the
+ Platform drivers) are available on Github at `octeontx-kmod <https://github.com/caviumnetworks/octeontx-kmod>`_
+ along with build, install and dpdk usage instructions.
+
+2. **ARM64 Tool Chain**
+
+ For example, the *aarch64* Linaro Toolchain, which can be obtained from
+ `here <https://releases.linaro.org/components/toolchain/binaries/4.9-2017.01/aarch64-linux-gnu>`_.
+
+3. **Rootfile system**
+
+ Any *aarch64* supporting filesystem can be used. For example,
+ Ubuntu 15.10 (Wily) or 16.04 LTS (Xenial) userland which can be obtained
+ from `<http://cdimage.ubuntu.com/ubuntu-base/releases/16.04/release/ubuntu-base-16.04.1-base-arm64.tar.gz>`_.
+
+ As an alternative method, Platform drivers can also be executed using images provided
+ as part of SDK from Cavium. The SDK includes all the above prerequisites necessary
+ to bring up a OCTEONTX board.
+
+ SDK and related information can be obtained from: `Cavium support site <https://support.cavium.com/>`_.
+
+- Follow the DPDK :doc: `../linux_gsg/index.rst` to setup the basic DPDK environment.
diff --git a/doc/guides/prog_guide/env_abstraction_layer.rst b/doc/guides/prog_guide/env_abstraction_layer.rst
index 9e834fc5..34d871c9 100644
--- a/doc/guides/prog_guide/env_abstraction_layer.rst
+++ b/doc/guides/prog_guide/env_abstraction_layer.rst
@@ -309,7 +309,7 @@ All these impacts are mentioned in :ref:`known_issue_label` section.
Public Thread API
~~~~~~~~~~~~~~~~~
-There are two public APIs ``rte_thread_set_affinity()`` and ``rte_pthread_get_affinity()`` introduced for threads.
+There are two public APIs ``rte_thread_set_affinity()`` and ``rte_thread_get_affinity()`` introduced for threads.
When they're used in any pthread context, the Thread Local Storage(TLS) will be set/get.
Those TLS include *_cpuset* and *_socket_id*:
diff --git a/doc/guides/rel_notes/deprecation.rst b/doc/guides/rel_notes/deprecation.rst
index 7fcebf13..6d9517ef 100644
--- a/doc/guides/rel_notes/deprecation.rst
+++ b/doc/guides/rel_notes/deprecation.rst
@@ -8,14 +8,14 @@ API and ABI deprecation notices are to be posted here.
Deprecation Notices
-------------------
-* eal: several API and ABI changes are planned for ``rte_devargs`` in v17.11.
+* eal: several API and ABI changes are planned for ``rte_devargs`` in v18.02.
The format of device command line parameters will change. The bus will need
to be explicitly stated in the device declaration. The enum ``rte_devtype``
was used to identify a bus and will disappear.
The structure ``rte_devargs`` will change.
The ``rte_devargs_list`` will be made private.
The following functions are deprecated starting from 17.08 and will either be
- modified or removed in 17.11:
+ modified or removed in 18.02:
- ``rte_eal_devargs_add``
- ``rte_eal_devargs_type_count``
@@ -28,12 +28,14 @@ Deprecation Notices
- ``eal_parse_pci_DomBDF`` replaced by ``rte_pci_addr_parse``
- ``rte_eal_compare_pci_addr`` replaced by ``rte_pci_addr_cmp``
-* ethdev: Tx offloads will no longer be enabled by default in 17.11.
- Instead, the ``rte_eth_txmode`` structure will be extended with
- bit field to enable each Tx offload.
- Besides of making the Rx/Tx configuration API more consistent for the
- application, PMDs will be able to provide a better out of the box performance.
- As part of the work, ``ETH_TXQ_FLAGS_NO*`` will be superseded as well.
+* ethdev: a new Tx and Rx offload API was introduced on 17.11.
+ In the new API, offloads are divided into per-port and per-queue offloads.
+ Offloads are disabled by default and enabled per application request.
+ The old offloads API is target to be deprecated on 18.05. This includes:
+
+ - removal of ``ETH_TXQ_FLAGS_NO*`` flags.
+ - removal of ``txq_flags`` field from ``rte_eth_txconf`` struct.
+ - removal of the offloads bit-field from ``rte_eth_rxmode`` struct.
* ethdev: the legacy filter API, including
``rte_eth_dev_filter_supported()``, ``rte_eth_dev_filter_ctrl()`` as well
diff --git a/doc/guides/rel_notes/release_17_11.rst b/doc/guides/rel_notes/release_17_11.rst
index e6e4407c..57966434 100644
--- a/doc/guides/rel_notes/release_17_11.rst
+++ b/doc/guides/rel_notes/release_17_11.rst
@@ -43,40 +43,65 @@ New Features
* **Extended port_id range from uint8_t to uint16_t.**
- Increased port_id range from 8 bits to 16 bits in order to support more than
- 256 ports in dpdk. All ethdev APIs which have port_id as parameter are changed
- in the meantime.
+ Increased the ``port_id`` range from 8 bits to 16 bits in order to support
+ more than 256 ports in DPDK. All ethdev APIs which have ``port_id`` as
+ parameter have been changed.
* **Modified the return type of rte_eth_stats_reset.**
- Changed return type of ``rte_eth_stats_reset`` from ``void`` to ``int``
- so the caller may know whether a device supports the operation or not
+ Changed return type of ``rte_eth_stats_reset`` from ``void`` to ``int`` so
+ that the caller can determine whether a device supports the operation or not
and if the operation was carried out.
* **Added a new driver for Marvell Armada 7k/8k devices.**
- Added the new mrvl net driver for Marvell Armada 7k/8k devices. See the
- "Network Interface Controller Drivers" document for more details on this new
- driver.
+ Added the new ``mrvl`` net driver for Marvell Armada 7k/8k devices. See the
+ :doc:`../nics/mrvl` NIC guide for more details on this new driver.
+
+* **Updated mlx4 driver.**
+
+ Updated the mlx4 driver including the following changes:
+
+ * Isolated mode (rte_flow) can now be enabled anytime, not only during
+ initial device configuration.
+ * Flow rules now support up to 4096 priority levels usable at will by
+ applications.
+ * Enhanced error message to help debugging invalid/unsupported flow rules.
+ * Flow rules matching all multicast and promiscuous traffic are now allowed.
+ * No more software restrictions on flow rules with the RSS action, their
+ configuration is much more flexible.
+ * Significantly reduced memory footprint for Rx and Tx queue objects.
+ * While supported, UDP RSS is temporarily disabled due to a remaining issue
+ with its support in the Linux kernel.
+ * The new RSS implementation does not automatically spread traffic according
+ to the inner packet of VXLAN frames anymore, only the outer one (like
+ other PMDs).
+ * Partial (Tx only) support for secondary processes was broken and had to be
+ removed.
+ * Refactored driver to get rid of dependency on the components provided by
+ Mellanox OFED and instead rely on the current and public rdma-core
+ package and Linux version from now on.
+ * Removed compile-time limitation on number of device instances the PMD
+ can support.
* **Updated mlx5 driver.**
Updated the mlx5 driver including the following changes:
- * Enabled PMD to run on top of upstream linux kernel and rdma-core libs.
- By that removed the dependency on specific Mellanox OFED libraries.
+ * Enabled the PMD to run on top of upstream Linux kernel and rdma-core
+ libs, removing the dependency on specific Mellanox OFED libraries.
* Improved PMD latency performance.
* Improved PMD memory footprint.
- * Supported vectorized Rx/Tx burst for ARMv8.
- * Supported secondary process.
- * Supported flow counters.
- * Supported Rx hardware timestamp offload.
- * Supported device removal event.
+ * Added support for vectorized Rx/Tx burst for ARMv8.
+ * Added support for secondary process.
+ * Added support for flow counters.
+ * Added support for Rx hardware timestamp offload.
+ * Added support for device removal event.
* **Added SoftNIC PMD.**
- Added new SoftNIC PMD. This virtual device offers applications a software
- fallback support for traffic management.
+ Added a new SoftNIC PMD. This virtual device provides applications with
+ software fallback support for traffic management.
* **Added support for NXP DPAA Devices.**
@@ -86,24 +111,23 @@ New Features
* DPAA Mempool driver for supporting offloaded packet memory pool
* DPAA PMD for DPAA devices
- See the "Network Interface Controller Drivers" document for more details of
- this new driver.
+ See the :doc:`../nics/dpaa` document for more details of this new driver.
* **Updated support for Cavium OCTEONTX Device.**
- Updated support for Cavium's OCTEONTX device(CN83xx). This includes:
+ Updated support for Cavium's OCTEONTX device (CN83xx). This includes:
* OCTEONTX Mempool driver for supporting offloaded packet memory pool
* OCTEONTX Ethdev PMD
* OCTEONTX Eventdev-Ethdev Rx adapter
- See the "Network Interface Controller Drivers" document for more details of
- this new driver.
+ See the :doc:`../nics/octeontx` document for more details of this new driver.
-* **nfp: Added PF support.**
+* **Added PF support to the Netronome NFP PMD.**
- Previously Netronome's NFP PMD had just support for VFs. PF support is
- just as a basic DPDK port and has no VF management yet.
+ Added PF support to the Netronome NFP PMD. Previously the NFP PMD only
+ supported VFs. PF support is just as a basic DPDK port and has no VF
+ management yet.
PF support comes with firmware upload support which allows the PMD to
independently work from kernel netdev NFP drivers.
@@ -117,113 +141,115 @@ New Features
* Support for Flow API
* Support for Tx and Rx descriptor status functions
-* **Add bus agnostic functions to cryptodev for PMD initialisation**
+* **Added bus agnostic functions to cryptodev for PMD initialization**
- Adds new PMD assist functions ``rte_cryptodev_pmd_parse_input_args()``,
- ``rte_cryptodev_pmd_create()`` and ``rte_cryptodev_pmd_destroy()`` which
- are bus independent for driver to manage creation and destruction of new
- device instances.
+ Added new PMD assist, bus independent, functions
+ ``rte_cryptodev_pmd_parse_input_args()``, ``rte_cryptodev_pmd_create()`` and
+ ``rte_cryptodev_pmd_destroy()`` for drivers to manage creation and
+ destruction of new device instances.
* **Updated QAT crypto PMD.**
- Performance enhancements:
+ Added several performance enhancements:
* Removed atomics from the internal queue pair structure.
- * Coalesce writes to HEAD CSR on response processing.
- * Coalesce writes to TAIL CSR on request processing.
+ * Added coalesce writes to HEAD CSR on response processing.
+ * Added coalesce writes to TAIL CSR on request processing.
- Additional support for:
-
- * AES CCM algorithm.
+ In addition support was added for the AES CCM algorithm.
* **Updated the AESNI MB PMD.**
The AESNI MB PMD has been updated with additional support for:
- * DES CBC algorithm.
- * DES DOCSIS BPI algorithm.
+ * The DES CBC algorithm.
+ * The DES DOCSIS BPI algorithm.
- This requires the IPSec Multi-buffer library 0.47. For more details,
- check out the AESNI MB PMD documenation.
+ This change requires version 0.47 of the IPSec Multi-buffer library. For
+ more details see the :doc:`../cryptodevs/aesni_mb` documentation.
* **Updated the OpenSSL PMD.**
The OpenSSL PMD has been updated with additional support for:
- * DES CBC algorithm.
- * AES CCM algorithm.
+ * The DES CBC algorithm.
+ * The AES CCM algorithm.
* **Added NXP DPAA SEC crypto PMD.**
- A new "dpaa_sec" hardware based crypto PMD for NXP DPAA devices has been
- added. See the "Crypto Device Drivers" document for more details on this
- driver.
+ A new ``dpaa_sec`` hardware based crypto PMD for NXP DPAA devices has been
+ added. See the :doc:`../cryptodevs/dpaa_sec` document for more details.
* **Added MRVL crypto PMD.**
A new crypto PMD has been added, which provides several ciphering and hashing
algorithms. All cryptography operations use the MUSDK library crypto API.
+ See the :doc:`../cryptodevs/mrvl` document for more details.
* **Add new benchmarking mode to dpdk-test-crypto-perf application.**
- Added new "PMD cyclecount" benchmark mode to dpdk-test-crypto-perf application
- that displays more detailed breakdown of CPU cycles used by hardware
+ Added a new "PMD cyclecount" benchmark mode to the ``dpdk-test-crypto-perf``
+ application to display a detailed breakdown of CPU cycles used by hardware
acceleration.
* **Added the Security Offload Library.**
- Added an experimental library - rte_security. It provide security APIs for
- protocols like IPSec using inline ipsec offload to ethernet device or full
- protocol offload with lookaside crypto device.
+ Added an experimental library - ``rte_security``. This provide security APIs
+ for protocols like IPSec using inline ipsec offload to ethernet devices or
+ full protocol offload with lookaside crypto devices.
- See the "Security_Library" section of the DPDK Programmers Guide document,
- for more information.
+ See the :doc:`../prog_guide/rte_security` section of the DPDK Programmers
+ Guide document for more information.
-* **Updated DPAA2_SEC crypto driver.**
+* **Updated the DPAA2_SEC crypto driver to support rte_security.**
- Updated dpaa2_sec crypto PMD to support rte_security lookaside protocol
- offload for IPSec.
+ Updated the ``dpaa2_sec`` crypto PMD to support ``rte_security`` lookaside
+ protocol offload for IPSec.
-* **Updated IXGBE ethernet driver.**
+* **Updated the IXGBE ethernet driver to support rte_security.**
- Updated ixgbe ethernet PMD to support rte_security inline IPSec offload.
+ Updated ixgbe ethernet PMD to support ``rte_security`` inline IPSec offload.
-* **Updated ipsec-secgw application**
+* **Updated ipsec-secgw application to support rte_security.**
- Updated ipsec-secgw sample application to support rte_security actions for
- ipsec inline and full protocol offload using lookaside crypto offload.
+ Updated the ``ipsec-secgw`` sample application to support ``rte_security``
+ actions for ipsec inline and full protocol offload using lookaside crypto
+ offload.
* **Added IOMMU support to libvhost-user**
- Implemented device IOTLB in Vhost-user backend, and enabled Virtio's IOMMU
- feature. The feature is disabled by default, and can be enabled by setting
- RTE_VHOST_USER_IOMMU_SUPPORT flag at vhost device registration time.
+ Implemented device IOTLB in the Vhost-user backend, and enabled Virtio's
+ IOMMU feature. The feature is disabled by default, and can be enabled by
+ setting ``RTE_VHOST_USER_IOMMU_SUPPORT`` flag at vhost device registration
+ time.
* **Added the Event Ethernet Adapter Library.**
- Added the Event Ethernet Adapter library. It provices APIs for
- eventdev applications to configure the ethdev to eventdev packet flow.
+ Added the Event Ethernet Adapter library. This library provides APIs for
+ eventdev applications to configure the ethdev for eventdev packet flow.
-* **Updated DPAA2 Event PMD.**
+* **Updated DPAA2 Event PMD for the Event Ethernet Adapter.**
- Added support for eventdev ethernet adapter for DPAA2.
+ Added support for the eventdev ethernet adapter for DPAA2.
* **Added Membership library (rte_member).**
- Added membership library. It provides an API for DPDK applications to insert a
- new member, delete an existing member, or query the existence of a member in a
- given set, or a group of sets. For the case of a group of sets the library
- will return not only whether the element has been inserted before in one of
- the sets but also which set it belongs to.
+ Added a new data structure library called the Membership Library.
The Membership Library is an extension and generalization of a traditional
- filter (for example Bloom Filter) structure that has multiple usages in a wide
- variety of workloads and applications. In general, the Membership Library is a
- data structure that provides a “set-summary” and responds to set-membership
- queries whether a certain member belongs to a set(s).
+ filter (for example Bloom Filter) structure that has multiple usages in a
+ wide variety of workloads and applications. In general, the Membership
+ Library is a data structure that provides a "set-summary" and responds to
+ set-membership queries whether a certain member belongs to a set(s).
+
+ The library provides APIs for DPDK applications to insert a new member,
+ delete an existing member, and query the existence of a member in a given
+ set, or a group of sets. For the case of a group of sets the library will
+ return not only whether the element has been inserted in one of the sets but
+ also which set it belongs to.
- See the :ref:`Membership Library <Member_Library>` documentation in
- the Programmers Guide document, for more information.
+ See the :doc:`../prog_guide/member_lib` documentation in the Programmers
+ Guide, for more information.
* **Added the Generic Segmentation Offload Library.**
@@ -243,9 +269,9 @@ New Features
* **Added the Flow Classification Library.**
- Added the Flow Classification library, it provides an API for DPDK
- applications to classify an input packet by matching it against a set of flow
- rules. It uses the librte_table API to manage the flow rules.
+ Added an experimental Flow Classification library to provide APIs for DPDK
+ applications to classify an input packet by matching it against a set of
+ flow rules. It uses the ``librte_table`` API to manage the flow rules.
Resolved Issues
@@ -268,9 +294,6 @@ Resolved Issues
=========================================================
-EAL
-~~~
-
* **Service core fails to call service callback due to atomic lock**
In a specific configuration of multi-thread unsafe services and service
@@ -279,36 +302,6 @@ EAL
looked like another thread was executing the service callback. The logic for
atomic locking of the services has been fixed and refactored for readability.
-Drivers
-~~~~~~~
-
-
-Libraries
-~~~~~~~~~
-
-
-Examples
-~~~~~~~~
-
-
-Other
-~~~~~
-
-
-Known Issues
-------------
-
-.. This section should contain new known issues in this release. Sample format:
-
- * **Add title in present tense with full stop.**
-
- Add a short 1-2 sentence description of the known issue in the present
- tense. Add information on any known workarounds.
-
- This section is a comment. do not overwrite or remove it.
- Also, make sure to start the actual text at the margin.
- =========================================================
-
API Changes
-----------
@@ -323,43 +316,46 @@ API Changes
Also, make sure to start the actual text at the margin.
=========================================================
-* **Ethdev device name length increased**
+* **Ethdev device name length increased.**
- The size of internal device name is increased to 64 characters
- to allow for storing longer bus specific name.
+ The size of internal device name has been increased to 64 characters
+ to allow for storing longer bus specific names.
-* **Ethdev flag RTE_ETH_DEV_DETACHABLE was removed**
+* **Removed the Ethdev RTE_ETH_DEV_DETACHABLE flag.**
- This flag is not necessary anymore, with the new hotplug implementation.
- It is now removed from the ether library. Its semantic is expressed at the bus
- and PMD level.
+ Removed the Ethdev ``RTE_ETH_DEV_DETACHABLE`` flag. This flag is not
+ required anymore, with the new hotplug implementation. It has been removed
+ from the ether library. Its semantics are now expressed at the bus and PMD
+ level.
* **Service cores API updated for usability**
- The service cores API has been changed, removing pointers from the API
- where possible, instead using integer IDs to identify each service. This
- simplifed application code, aids debugging, and provides better
+ The service cores API has been changed, removing pointers from the API where
+ possible, and instead using integer IDs to identify each service. This
+ simplifies application code, aids debugging, and provides better
encapsulation. A summary of the main changes made is as follows:
* Services identified by ID not by ``rte_service_spec`` pointer
* Reduced API surface by using ``set`` functions instead of enable/disable
* Reworked ``rte_service_register`` to provide the service ID to registrar
- * Rework start and stop APIs into ``rte_service_runstate_set``
- * Added API to set runstate of service implementation to indicate readyness
+ * Reworked start and stop APIs into ``rte_service_runstate_set``
+ * Added API to set runstate of service implementation to indicate readiness
-* **The following changes made in mempool library**
+* **The following changes have been made in the mempool library**
- * Moved ``flags`` datatype from int to unsigned int for ``rte_mempool``.
+ * Moved ``flags`` datatype from ``int`` to ``unsigned int`` for
+ ``rte_mempool``.
* Removed ``__rte_unused int flag`` param from ``rte_mempool_generic_put``
and ``rte_mempool_generic_get`` API.
* Added ``flags`` param in ``rte_mempool_xmem_size`` and
``rte_mempool_xmem_usage``.
+ * ``rte_mem_phy2mch`` was used in Xen dom0 to obtain the physical address;
+ remove this API as Xen dom0 support was removed.
-* ``rte_mem_phy2mch`` was used in Xen dom0 to obtain the physical address;
- remove this API as Xen dom0 support was removed.
+* **Added IOVA aliases related to physical address handling.**
-* **Some data type, structure members and functions related to physical address
- are deprecated and have new alias with IOVA wording.**
+ Some data types, structure members and functions related to physical address
+ handling are deprecated and have new aliases with IOVA wording. For example:
* ``phys_addr_t`` can be often replaced by ``rte_iova_t`` of same size.
* ``RTE_BAD_PHYS_ADDR`` is often replaced by ``RTE_BAD_IOVA`` of same value.
@@ -367,10 +363,13 @@ API Changes
* ``rte_mem_virt2phy()`` can often be replaced by ``rte_mem_virt2iova``.
* ``rte_malloc_virt2phy`` is aliased with ``rte_malloc_virt2iova``.
* ``rte_memzone.phys_addr`` is aliased with ``rte_memzone.iova``.
- * ``rte_mempool_objhdr.physaddr`` is aliased with ``rte_mempool_objhdr.iova``.
- * ``rte_mempool_memhdr.phys_addr`` is aliased with ``rte_mempool_memhdr.iova``.
+ * ``rte_mempool_objhdr.physaddr`` is aliased with
+ ``rte_mempool_objhdr.iova``.
+ * ``rte_mempool_memhdr.phys_addr`` is aliased with
+ ``rte_mempool_memhdr.iova``.
* ``rte_mempool_virt2phy()`` can be replaced by ``rte_mempool_virt2iova()``.
- * ``rte_mempool_populate_phys*()`` are aliased with ``rte_mempool_populate_iova*()``
+ * ``rte_mempool_populate_phys*()`` are aliased with
+ ``rte_mempool_populate_iova*()``
* ``rte_mbuf.buf_physaddr`` is aliased with ``rte_mbuf.buf_iova``.
* ``rte_mbuf_data_dma_addr*()`` are aliased with ``rte_mbuf_data_iova*()``.
* ``rte_pktmbuf_mtophys*`` are aliased with ``rte_pktmbuf_iova*()``.
@@ -380,26 +379,26 @@ API Changes
The PCI bus previously implemented within the EAL has been moved.
A first part has been added as an RTE library providing PCI helpers to
parse device locations or other such utilities.
- A second part consisting in the actual bus driver has been moved to its
+ A second part consisting of the actual bus driver has been moved to its
proper subdirectory, without changing its functionalities.
- As such, several PCI-related functions are not proposed by the EAL anymore:
-
- * rte_pci_detach
- * rte_pci_dump
- * rte_pci_ioport_map
- * rte_pci_ioport_read
- * rte_pci_ioport_unmap
- * rte_pci_ioport_write
- * rte_pci_map_device
- * rte_pci_probe
- * rte_pci_probe_one
- * rte_pci_read_config
- * rte_pci_register
- * rte_pci_scan
- * rte_pci_unmap_device
- * rte_pci_unregister
- * rte_pci_write_config
+ As such, several PCI-related functions are not exposed by the EAL anymore:
+
+ * ``rte_pci_detach``
+ * ``rte_pci_dump``
+ * ``rte_pci_ioport_map``
+ * ``rte_pci_ioport_read``
+ * ``rte_pci_ioport_unmap``
+ * ``rte_pci_ioport_write``
+ * ``rte_pci_map_device``
+ * ``rte_pci_probe``
+ * ``rte_pci_probe_one``
+ * ``rte_pci_read_config``
+ * ``rte_pci_register``
+ * ``rte_pci_scan``
+ * ``rte_pci_unmap_device``
+ * ``rte_pci_unregister``
+ * ``rte_pci_write_config``
These functions are made available either as part of ``librte_pci`` or
``librte_bus_pci``.
@@ -407,6 +406,7 @@ API Changes
* **Moved vdev bus APIs outside of the EAL**
Moved the following APIs from ``librte_eal`` to ``librte_bus_vdev``:
+
* ``rte_vdev_init``
* ``rte_vdev_register``
* ``rte_vdev_uninit``
@@ -415,13 +415,14 @@ API Changes
* **Add return value to stats_get dev op API**
The ``stats_get`` dev op API return value has been changed to be int.
- By this way PMDs can return an error value in case of failure at stats
+ In this way PMDs can return an error value in case of failure at stats
getting process time.
-* **Modified the rte_cryptodev_allocate_driver function in the cryptodev library.**
+* **Modified the rte_cryptodev_allocate_driver function.**
- The function ``rte_cryptodev_allocate_driver()`` has been modified.
- An extra parameter ``struct cryptodev_driver *crypto_drv`` has been added.
+ Modified the ``rte_cryptodev_allocate_driver()`` function in the cryptodev
+ library. An extra parameter ``struct cryptodev_driver *crypto_drv`` has been
+ added.
* **Removed virtual device bus specific functions from librte_cryptodev.**
@@ -430,8 +431,9 @@ API Changes
and have been replaced by non bus specific functions
``rte_cryptodev_pmd_parse_input_args()`` and ``rte_cryptodev_pmd_create()``.
-* ``rte_cryptodev_create_vdev`` was removed to avoid the dependency on vdev
- in librte_cryptodev; instead, users can call rte_vdev_init() directly.
+ The ``rte_cryptodev_create_vdev()`` function was removed to avoid the
+ dependency on vdev in librte_cryptodev; instead, users can call
+ ``rte_vdev_init()`` directly.
* **Removed PCI device bus specific functions from librte_cryptodev.**
@@ -444,29 +446,30 @@ API Changes
The functions ``rte_set_log_level()``, ``rte_get_log_level()``,
``rte_set_log_type()`` and ``rte_get_log_type()`` have been removed.
+
They are respectively replaced by ``rte_log_set_global_level()``,
``rte_log_get_global_level()``, ``rte_log_set_level()`` and
``rte_log_get_level()``.
-* **Removed ``mbuf`` flags ``PKT_RX_VLAN_PKT`` and ``PKT_RX_QINQ_PKT``.**
+* **Removed mbuf flags PKT_RX_VLAN_PKT and PKT_RX_QINQ_PKT.**
The ``mbuf`` flags ``PKT_RX_VLAN_PKT`` and ``PKT_RX_QINQ_PKT`` have
- been removed since their behavior were not properly described.
+ been removed since their behavior was not properly described.
-* **Added ``mbuf`` flags ``PKT_RX_VLAN`` and ``PKT_RX_QINQ``.**
+* **Added mbuf flags PKT_RX_VLAN and PKT_RX_QINQ.**
Two ``mbuf`` flags have been added to indicate that the VLAN
identifier has been saved in in the ``mbuf`` structure. For instance:
- - if VLAN is not stripped and TCI is saved: ``PKT_RX_VLAN``
- - if VLAN is stripped and TCI is saved: ``PKT_RX_VLAN | PKT_RX_VLAN_STRIPPED``
+ - If VLAN is not stripped and TCI is saved: ``PKT_RX_VLAN``
+ - If VLAN is stripped and TCI is saved: ``PKT_RX_VLAN | PKT_RX_VLAN_STRIPPED``
* **Modified the vlan_offload_set_t function prototype in the ethdev library.**
- Changed the function prototype of ``vlan_offload_set_t``. The return value
- has been changed from ``void`` to ``int`` so the caller to knows whether
- the backing device supports the operation or if the operation was
- successfully performed.
+ Modified the ``vlan_offload_set_t`` function prototype in the ethdev
+ library. The return value has been changed from ``void`` to ``int`` so the
+ caller can determine whether the backing device supports the operation or if
+ the operation was successfully performed.
ABI Changes
@@ -485,17 +488,17 @@ ABI Changes
* **Extended port_id range.**
The size of the field ``port_id`` in the ``rte_eth_dev_data`` structure
- changed, as described in the `New Features` section.
+ has changed, as described in the `New Features` section above.
* **New parameter added to rte_eth_dev.**
- New parameter ``security_ctx`` added to ``rte_eth_dev`` to support security
- operations like IPSec inline.
+ A new parameter ``security_ctx`` has been added to ``rte_eth_dev`` to
+ support security operations like IPSec inline.
* **New parameter added to rte_cryptodev.**
- New parameter ``security_ctx`` added to ``rte_cryptodev`` to support security
- operations like lookaside crypto.
+ A new parameter ``security_ctx`` has been added to ``rte_cryptodev`` to
+ support security operations like lookaside crypto.
Removed Items
@@ -510,10 +513,10 @@ Removed Items
Also, make sure to start the actual text at the margin.
=========================================================
-* Xen dom0 in EAL was removed, as well as xenvirt PMD and vhost_xen.
+* Xen dom0 in EAL has been removed, as well as the xenvirt PMD and vhost_xen.
* The crypto performance unit tests have been removed,
- replaced by the dpdk-test-crypto-perf application.
+ replaced by the ``dpdk-test-crypto-perf`` application.
Shared Library Versions
@@ -598,3 +601,219 @@ Tested Platforms
This section is a comment. do not overwrite or remove it.
Also, make sure to start the actual text at the margin.
=========================================================
+
+* Intel(R) platforms with Intel(R) NICs combinations
+
+ * CPU
+
+ * Intel(R) Atom(TM) CPU C2758 @ 2.40GHz
+ * Intel(R) Xeon(R) CPU D-1540 @ 2.00GHz
+ * Intel(R) Xeon(R) CPU D-1541 @ 2.10GHz
+ * Intel(R) Xeon(R) CPU E5-4667 v3 @ 2.00GHz
+ * Intel(R) Xeon(R) CPU E5-2680 v2 @ 2.80GHz
+ * Intel(R) Xeon(R) CPU E5-2699 v3 @ 2.30GHz
+ * Intel(R) Xeon(R) CPU E5-2695 v4 @ 2.10GHz
+ * Intel(R) Xeon(R) CPU E5-2658 v2 @ 2.40GHz
+ * Intel(R) Xeon(R) CPU E5-2658 v3 @ 2.20GHz
+
+ * OS:
+
+ * CentOS 7.2
+ * Fedora 25
+ * Fedora 26
+ * FreeBSD 11
+ * Red Hat Enterprise Linux Server release 7.3
+ * SUSE Enterprise Linux 12
+ * Wind River Linux 8
+ * Ubuntu 16.04
+ * Ubuntu 16.10
+
+ * NICs:
+
+ * Intel(R) 82599ES 10 Gigabit Ethernet Controller
+
+ * Firmware version: 0x61bf0001
+ * Device id (pf/vf): 8086:10fb / 8086:10ed
+ * Driver version: 5.2.3 (ixgbe)
+
+ * Intel(R) Corporation Ethernet Connection X552/X557-AT 10GBASE-T
+
+ * Firmware version: 0x800003e7
+ * Device id (pf/vf): 8086:15ad / 8086:15a8
+ * Driver version: 4.4.6 (ixgbe)
+
+ * Intel(R) Ethernet Converged Network Adapter X710-DA4 (4x10G)
+
+ * Firmware version: 6.01 0x80003205
+ * Device id (pf/vf): 8086:1572 / 8086:154c
+ * Driver version: 2.1.26 (i40e)
+
+ * Intel(R) Ethernet Converged Network Adapter X710-DA2 (2x10G)
+
+ * Firmware version: 6.01 0x80003204
+ * Device id (pf/vf): 8086:1572 / 8086:154c
+ * Driver version: 2.1.26 (i40e)
+
+ * Intel(R) Ethernet Converged Network Adapter XXV710-DA2 (2x25G)
+
+ * Firmware version: 6.01 0x80003221
+ * Device id (pf/vf): 8086:158b
+ * Driver version: 2.1.26 (i40e)
+
+ * Intel(R) Ethernet Converged Network Adapter XL710-QDA2 (2X40G)
+
+ * Firmware version: 6.01 0x8000321c
+ * Device id (pf/vf): 8086:1583 / 8086:154c
+ * Driver version: 2.1.26 (i40e)
+
+ * Intel(R) Corporation I350 Gigabit Network Connection
+
+ * Firmware version: 1.63, 0x80000dda
+ * Device id (pf/vf): 8086:1521 / 8086:1520
+ * Driver version: 5.3.0-k (igb)
+
+* Intel(R) platforms with Mellanox(R) NICs combinations
+
+ * Platform details:
+
+ * Intel(R) Xeon(R) CPU E5-2697A v4 @ 2.60GHz
+ * Intel(R) Xeon(R) CPU E5-2697 v3 @ 2.60GHz
+ * Intel(R) Xeon(R) CPU E5-2680 v2 @ 2.80GHz
+ * Intel(R) Xeon(R) CPU E5-2650 v4 @ 2.20GHz
+ * Intel(R) Xeon(R) CPU E5-2640 @ 2.50GHz
+ * Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz
+
+ * OS:
+
+ * Red Hat Enterprise Linux Server release 7.3 (Maipo)
+ * Red Hat Enterprise Linux Server release 7.2 (Maipo)
+ * Ubuntu 16.10
+ * Ubuntu 16.04
+ * Ubuntu 14.04
+
+ * MLNX_OFED: 4.2-1.0.0.0
+
+ * NICs:
+
+ * Mellanox(R) ConnectX(R)-3 Pro 40G MCX354A-FCC_Ax (2x40G)
+
+ * Host interface: PCI Express 3.0 x8
+ * Device ID: 15b3:1007
+ * Firmware version: 2.42.5000
+
+ * Mellanox(R) ConnectX(R)-4 10G MCX4111A-XCAT (1x10G)
+
+ * Host interface: PCI Express 3.0 x8
+ * Device ID: 15b3:1013
+ * Firmware version: 12.21.1000
+
+ * Mellanox(R) ConnectX(R)-4 10G MCX4121A-XCAT (2x10G)
+
+ * Host interface: PCI Express 3.0 x8
+ * Device ID: 15b3:1013
+ * Firmware version: 12.21.1000
+
+ * Mellanox(R) ConnectX(R)-4 25G MCX4111A-ACAT (1x25G)
+
+ * Host interface: PCI Express 3.0 x8
+ * Device ID: 15b3:1013
+ * Firmware version: 12.21.1000
+
+ * Mellanox(R) ConnectX(R)-4 25G MCX4121A-ACAT (2x25G)
+
+ * Host interface: PCI Express 3.0 x8
+ * Device ID: 15b3:1013
+ * Firmware version: 12.21.1000
+
+ * Mellanox(R) ConnectX(R)-4 40G MCX4131A-BCAT/MCX413A-BCAT (1x40G)
+
+ * Host interface: PCI Express 3.0 x8
+ * Device ID: 15b3:1013
+ * Firmware version: 12.21.1000
+
+ * Mellanox(R) ConnectX(R)-4 40G MCX415A-BCAT (1x40G)
+
+ * Host interface: PCI Express 3.0 x16
+ * Device ID: 15b3:1013
+ * Firmware version: 12.21.1000
+
+ * Mellanox(R) ConnectX(R)-4 50G MCX4131A-GCAT/MCX413A-GCAT (1x50G)
+
+ * Host interface: PCI Express 3.0 x8
+ * Device ID: 15b3:1013
+ * Firmware version: 12.21.1000
+
+ * Mellanox(R) ConnectX(R)-4 50G MCX414A-BCAT (2x50G)
+
+ * Host interface: PCI Express 3.0 x8
+ * Device ID: 15b3:1013
+ * Firmware version: 12.21.1000
+
+ * Mellanox(R) ConnectX(R)-4 50G MCX415A-GCAT/MCX416A-BCAT/MCX416A-GCAT
+ (2x50G)
+
+ * Host interface: PCI Express 3.0 x16
+ * Device ID: 15b3:1013
+ * Firmware version: 12.21.1000
+
+ * Mellanox(R) ConnectX(R)-4 50G MCX415A-CCAT (1x100G)
+
+ * Host interface: PCI Express 3.0 x16
+ * Device ID: 15b3:1013
+ * Firmware version: 12.21.1000
+
+ * Mellanox(R) ConnectX(R)-4 100G MCX416A-CCAT (2x100G)
+
+ * Host interface: PCI Express 3.0 x16
+ * Device ID: 15b3:1013
+ * Firmware version: 12.21.1000
+
+ * Mellanox(R) ConnectX(R)-4 Lx 10G MCX4121A-XCAT (2x10G)
+
+ * Host interface: PCI Express 3.0 x8
+ * Device ID: 15b3:1015
+ * Firmware version: 14.21.1000
+
+ * Mellanox(R) ConnectX(R)-4 Lx 25G MCX4121A-ACAT (2x25G)
+
+ * Host interface: PCI Express 3.0 x8
+ * Device ID: 15b3:1015
+ * Firmware version: 14.21.1000
+
+ * Mellanox(R) ConnectX(R)-5 100G MCX556A-ECAT (2x100G)
+
+ * Host interface: PCI Express 3.0 x16
+ * Device ID: 15b3:1017
+ * Firmware version: 16.21.1000
+
+ * Mellanox(R) ConnectX-5 Ex EN 100G MCX516A-CDAT (2x100G)
+
+ * Host interface: PCI Express 4.0 x16
+ * Device ID: 15b3:1019
+ * Firmware version: 16.21.1000
+
+* ARM platforms with Mellanox(R) NICs combinations
+
+ * Platform details:
+
+ * Qualcomm ARM 1.1 2500MHz
+
+ * OS:
+
+ * Ubuntu 16.04
+
+ * MLNX_OFED: 4.2-1.0.0.0
+
+ * NICs:
+
+ * Mellanox(R) ConnectX(R)-4 Lx 25G MCX4121A-ACAT (2x25G)
+
+ * Host interface: PCI Express 3.0 x8
+ * Device ID: 15b3:1015
+ * Firmware version: 14.21.1000
+
+ * Mellanox(R) ConnectX(R)-5 100G MCX556A-ECAT (2x100G)
+
+ * Host interface: PCI Express 3.0 x16
+ * Device ID: 15b3:1017
+ * Firmware version: 16.21.1000
diff --git a/doc/guides/sample_app_ug/ip_pipeline.rst b/doc/guides/sample_app_ug/ip_pipeline.rst
index 693d813c..e0aa1484 100644
--- a/doc/guides/sample_app_ug/ip_pipeline.rst
+++ b/doc/guides/sample_app_ug/ip_pipeline.rst
@@ -233,7 +233,7 @@ The application startup arguments are:
* Default: Not present
* Argument: Path to the CLI script file to be run by the master pipeline at application startup.
- No CLI script file will be run at startup of this argument is not present.
+ No CLI script file will be run at startup if this argument is not present.
``-p PORT_MASK``
diff --git a/doc/guides/sample_app_ug/ipv4_multicast.rst b/doc/guides/sample_app_ug/ipv4_multicast.rst
index fd1af006..7a8e7ebc 100644
--- a/doc/guides/sample_app_ug/ipv4_multicast.rst
+++ b/doc/guides/sample_app_ug/ipv4_multicast.rst
@@ -339,7 +339,7 @@ It is the mcast_out_pkt() function that performs the packet duplication (either
/* update header's fields */
hdr->pkt.pkt_len = (uint16_t)(hdr->pkt.data_len + pkt->pkt.pkt_len);
- hdr->pkt.nb_segs = (uint8_t)(pkt->pkt.nb_segs + 1);
+ hdr->pkt.nb_segs = pkt->pkt.nb_segs + 1;
/* copy metadata from source packet */