mlx5: allow operation in secondary processes
[dpdk.git] / doc / guides / nics / mlx5.rst
index fdb621c..5cd09b2 100644 (file)
@@ -31,7 +31,7 @@ MLX5 poll mode driver
 =====================
 
 The MLX5 poll mode driver library (**librte_pmd_mlx5**) provides support for
-**Mellanox ConnectX-4 EN** and **Mellanox ConnectX-4 Lx EN** families of
+**Mellanox ConnectX-4** and **Mellanox ConnectX-4 Lx** families of
 10/25/40/50/100 Gb/s adapters as well as their virtual functions (VF) in
 SR-IOV context.
 
@@ -48,11 +48,6 @@ There is also a `section dedicated to this poll mode driver
    be enabled manually by setting ``CONFIG_RTE_LIBRTE_MLX5_PMD=y`` and
    recompiling DPDK.
 
-.. warning::
-
-   ``CONFIG_RTE_BUILD_COMBINE_LIBS`` with ``CONFIG_RTE_BUILD_SHARED_LIB``
-   is not supported and thus the compilation will fail with this configuration.
-
 Implementation details
 ----------------------
 
@@ -73,6 +68,32 @@ long as they share the same MAC address.
 Enabling librte_pmd_mlx5 causes DPDK applications to be linked against
 libibverbs.
 
+Features
+--------
+
+- Multiple TX and RX queues.
+- Support for scattered TX and RX frames.
+- IPv4, IPv6, TCPv4, TCPv6, UDPv4 and UDPv6 RSS on any number of queues.
+- Several RSS hash keys, one for each flow type.
+- Configurable RETA table.
+- Support for multiple MAC addresses.
+- VLAN filtering.
+- RX VLAN stripping.
+- Promiscuous mode.
+- Multicast promiscuous mode.
+- Hardware checksum offloads.
+- Flow director (RTE_FDIR_MODE_PERFECT and RTE_FDIR_MODE_PERFECT_MAC_VLAN).
+- Secondary process TX is supported.
+
+Limitations
+-----------
+
+- KVM and VMware ESX SR-IOV modes are not supported yet.
+- Inner RSS for VXLAN frames is not supported yet.
+- Port statistics through software counters only.
+- Hardware checksum offloads for VXLAN inner header are not supported yet.
+- Secondary process RX is not supported.
+
 Configuration
 -------------
 
@@ -100,8 +121,13 @@ These options can be modified in the ``.config`` file.
 
 - ``CONFIG_RTE_LIBRTE_MLX5_MAX_INLINE`` (default **0**)
 
-  Amount of data to be inlined during TX operations. Improves latency but
-  lowers throughput.
+  Amount of data to be inlined during TX operations. Improves latency.
+  Can improve PPS performance when PCI backpressure is detected and may be
+  useful for scenarios involving heavy traffic on many queues.
+
+  Since the additional software logic necessary to handle this mode can
+  lower performance when there is no backpressure, it is not enabled by
+  default.
 
 - ``CONFIG_RTE_LIBRTE_MLX5_TX_MP_CACHE`` (default **8**)
 
@@ -111,6 +137,19 @@ 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
+~~~~~~~~~~~~~~~~~~~~~
+
+- ``MLX5_ENABLE_CQE_COMPRESSION``
+
+  A nonzero value lets ConnectX-4 return smaller completion entries to
+  improve performance when PCI backpressure is detected. It is most useful
+  for scenarios involving heavy traffic on many queues.
+
+  Since the additional software logic necessary to handle this mode can
+  lower performance when there is no backpressure, it is not enabled by
+  default.
+
 Run-time configuration
 ~~~~~~~~~~~~~~~~~~~~~~
 
@@ -171,6 +210,41 @@ DPDK and must be installed separately:
    Both libraries are BSD and GPL licensed. Linux kernel modules are GPL
    licensed.
 
+Currently supported by DPDK:
+
+- Mellanox OFED **3.1-1.0.3**, **3.1-1.5.7.1** or **3.2-2.0.0.0** depending
+  on usage.
+
+    The following features are supported with version **3.1-1.5.7.1** and
+    above only:
+
+    - IPv6, UPDv6, TCPv6 RSS.
+    - RX checksum offloads.
+    - IBM POWER8.
+
+    The following features are supported with version **3.2-2.0.0.0** and
+    above only:
+
+    - Flow director.
+    - RX VLAN stripping.
+
+- Minimum firmware version:
+
+  With MLNX_OFED **3.1-1.0.3**:
+
+  - ConnectX-4: **12.12.1240**
+  - ConnectX-4 Lx: **14.12.1100**
+
+  With MLNX_OFED **3.1-1.5.7.1**:
+
+  - ConnectX-4: **12.13.0144**
+  - ConnectX-4 Lx: **14.13.0144**
+
+  With MLNX_OFED **3.2-2.0.0.0**:
+
+  - ConnectX-4: **12.14.2036**
+  - ConnectX-4 Lx: **14.14.2036**
+
 Getting Mellanox OFED
 ~~~~~~~~~~~~~~~~~~~~~
 
@@ -191,6 +265,23 @@ required from that distribution.
    this DPDK release was developed and tested against is strongly
    recommended. Please check the `prerequisites`_.
 
+Notes for testpmd
+-----------------
+
+Compared to librte_pmd_mlx4 that implements a single RSS configuration per
+port, librte_pmd_mlx5 supports per-protocol RSS configuration.
+
+Since ``testpmd`` defaults to IP RSS mode and there is currently no
+command-line parameter to enable additional protocols (UDP and TCP as well
+as IP), the following commands must be entered from its CLI to get the same
+behavior as librte_pmd_mlx4:
+
+.. code-block:: console
+
+   > port stop all
+   > port config all rss all
+   > port start all
+
 Usage example
 -------------
 
@@ -203,6 +294,13 @@ devices managed by librte_pmd_mlx5.
 
       modprobe -a ib_uverbs mlx5_core mlx5_ib
 
+   Alternatively if MLNX_OFED is fully installed, the following script can
+   be run:
+
+   .. code-block:: console
+
+      /etc/init.d/openibd restart
+
    .. note::
 
       User space I/O kernel modules (uio and igb_uio) are not used and do