net/mlx5: fix shared RSS translation and cleanup
[dpdk.git] / doc / guides / vdpadevs / mlx5.rst
index 9813a87..1f2ae6f 100644 (file)
@@ -7,16 +7,14 @@ MLX5 vDPA driver
 ================
 
 The MLX5 vDPA (vhost data path acceleration) driver library
 ================
 
 The MLX5 vDPA (vhost data path acceleration) driver library
-(**librte_pmd_mlx5_vdpa**) provides support for **Mellanox ConnectX-6**,
+(**librte_vdpa_mlx5**) provides support for **Mellanox ConnectX-6**,
 **Mellanox ConnectX-6 Dx** and **Mellanox BlueField** families of
 10/25/40/50/100/200 Gb/s adapters as well as their virtual functions (VF) in
 SR-IOV context.
 
 .. note::
 
 **Mellanox ConnectX-6 Dx** and **Mellanox BlueField** families of
 10/25/40/50/100/200 Gb/s adapters as well as their virtual functions (VF) in
 SR-IOV context.
 
 .. note::
 
-   Due to external dependencies, this driver is disabled in default
-   configuration of the "make" build. It can be enabled with
-   ``CONFIG_RTE_LIBRTE_MLX5_VDPA_PMD=y`` or by using "meson" build system which
+   This driver is enabled automatically when using "meson" build system which
    will detect dependencies.
 
 
    will detect dependencies.
 
 
@@ -39,7 +37,7 @@ to get the best performances:
 - DevX allows to access firmware objects
 - Direct Rules manages flow steering at low-level hardware layer
 
 - DevX allows to access firmware objects
 - Direct Rules manages flow steering at low-level hardware layer
 
-Enabling librte_pmd_mlx5_vdpa causes DPDK applications to be linked against
+Enabling librte_vdpa_mlx5 causes DPDK applications to be linked against
 libibverbs.
 
 A Mellanox mlx5 PCI device can be probed by either net/mlx5 driver or vdpa/mlx5
 libibverbs.
 
 A Mellanox mlx5 PCI device can be probed by either net/mlx5 driver or vdpa/mlx5
@@ -51,6 +49,7 @@ Supported NICs
 --------------
 
 * Mellanox\ |reg| ConnectX\ |reg|-6 200G MCX654106A-HCAT (2x200G)
 --------------
 
 * Mellanox\ |reg| ConnectX\ |reg|-6 200G MCX654106A-HCAT (2x200G)
+* Mellanox\ |reg| ConnectX\ |reg|-6 Dx EN 25G MCX621102AN-ADAT (2x25G)
 * Mellanox\ |reg| ConnectX\ |reg|-6 Dx EN 100G MCX623106AN-CDAT (2x100G)
 * Mellanox\ |reg| ConnectX\ |reg|-6 Dx EN 200G MCX623105AN-VDAT (1x200G)
 * Mellanox\ |reg| BlueField SmartNIC 25G MBF1M332A-ASCAT (2x25G)
 * Mellanox\ |reg| ConnectX\ |reg|-6 Dx EN 100G MCX623106AN-CDAT (2x100G)
 * Mellanox\ |reg| ConnectX\ |reg|-6 Dx EN 200G MCX623105AN-VDAT (1x200G)
 * Mellanox\ |reg| BlueField SmartNIC 25G MBF1M332A-ASCAT (2x25G)
@@ -61,16 +60,13 @@ Prerequisites
 - Mellanox OFED version: **5.0**
   see :doc:`../../nics/mlx5` guide for more Mellanox OFED details.
 
 - Mellanox OFED version: **5.0**
   see :doc:`../../nics/mlx5` guide for more Mellanox OFED details.
 
-Compilation options
-~~~~~~~~~~~~~~~~~~~
+Compilation option
+~~~~~~~~~~~~~~~~~~
 
 
-These options can be modified in the ``.config`` file.
+The meson option ``ibverbs_link`` is **shared** by default,
+but can be configured to have the following values:
 
 
-- ``CONFIG_RTE_LIBRTE_MLX5_VDPA_PMD`` (default **n**)
-
-  Toggle compilation of librte_pmd_mlx5 itself.
-
-- ``CONFIG_RTE_IBVERBS_LINK_DLOPEN`` (default **n**)
+- ``dlopen``
 
   Build PMD with additional code to make it loadable without hard
   dependencies on **libibverbs** nor **libmlx5**, which may not be installed
 
   Build PMD with additional code to make it loadable without hard
   dependencies on **libibverbs** nor **libmlx5**, which may not be installed
@@ -78,28 +74,23 @@ These options can be modified in the ``.config`` file.
 
   In this mode, their presence is still required for it to run properly,
   however their absence won't prevent a DPDK application from starting (with
 
   In this mode, their presence is still required for it to run properly,
   however their absence won't prevent a DPDK application from starting (with
-  ``CONFIG_RTE_BUILD_SHARED_LIB`` disabled) and they won't show up as
-  missing with ``ldd(1)``.
+  DPDK shared build disabled) and they won't show up as missing with ``ldd(1)``.
 
   It works by moving these dependencies to a purpose-built rdma-core "glue"
 
   It works by moving these dependencies to a purpose-built rdma-core "glue"
-  plug-in which must either be installed in a directory whose name is based
-  on ``CONFIG_RTE_EAL_PMD_PATH`` suffixed with ``-glue`` if set, or in a
-  standard location for the dynamic linker (e.g. ``/lib``) if left to the
-  default empty string (``""``).
+  plug-in which must be installed in a directory whose name is based
+  on ``RTE_EAL_PMD_PATH`` suffixed with ``-glue``.
 
   This option has no performance impact.
 
 
   This option has no performance impact.
 
-- ``CONFIG_RTE_IBVERBS_LINK_STATIC`` (default **n**)
+- ``static``
 
   Embed static flavor of the dependencies **libibverbs** and **libmlx5**
   in the PMD shared library or the executable static binary.
 
 .. note::
 
 
   Embed static flavor of the dependencies **libibverbs** and **libmlx5**
   in the PMD shared library or the executable static binary.
 
 .. note::
 
-   For BlueField, target should be set to ``arm64-bluefield-linux-gcc``. This
-   will enable ``CONFIG_RTE_LIBRTE_MLX5_VDPA_PMD`` and set
-   ``RTE_CACHE_LINE_SIZE`` to 64. Default armv8a configuration of make build and
-   meson build set it to 128 then brings performance degradation.
+   Default armv8a configuration of meson build sets ``RTE_CACHE_LINE_SIZE``
+   to 128 then brings performance degradation.
 
 Run-time configuration
 ~~~~~~~~~~~~~~~~~~~~~~
 
 Run-time configuration
 ~~~~~~~~~~~~~~~~~~~~~~
@@ -125,7 +116,7 @@ Driver options
   - 2, Completion queue scheduling will be managed by interrupts. Each CQ burst
     arms the CQ in order to get an interrupt event in the next traffic burst.
 
   - 2, Completion queue scheduling will be managed by interrupts. Each CQ burst
     arms the CQ in order to get an interrupt event in the next traffic burst.
 
-  - Default mode is 0.
+  - Default mode is 1.
 
 - ``event_us`` parameter [int]
 
 
 - ``event_us`` parameter [int]
 
@@ -134,8 +125,7 @@ Driver options
   - 0, A nonzero value to set timer step in micro-seconds. The timer thread
     dynamic delay change steps according to this value. Default value is 1us.
 
   - 0, A nonzero value to set timer step in micro-seconds. The timer thread
     dynamic delay change steps according to this value. Default value is 1us.
 
-  - 1, A nonzero value to set fixed timer delay in micro-seconds. Default value
-    is 100us.
+  - 1, A value to set fixed timer delay in micro-seconds. Default value is 0us.
 
 - ``no_traffic_time`` parameter [int]
 
 
 - ``no_traffic_time`` parameter [int]
 
@@ -143,3 +133,40 @@ Driver options
   driver to no-traffic mode. In this mode the timer events are stopped and
   interrupts are configured to the device in order to notify traffic for the
   driver. Default value is 2s.
   driver to no-traffic mode. In this mode the timer events are stopped and
   interrupts are configured to the device in order to notify traffic for the
   driver. Default value is 2s.
+
+- ``event_core`` parameter [int]
+
+  CPU core number to set polling thread affinity to, default to control plane
+  cpu.
+
+- ``hw_latency_mode`` parameter [int]
+
+  The completion queue moderation mode:
+
+  - 0, HW default.
+
+  - 1, Latency is counted from the first packet completion report.
+
+  - 2, Latency is counted from the last packet completion.
+
+- ``hw_max_latency_us`` parameter [int]
+
+  - 1 - 4095, The maximum time in microseconds that packet completion report
+    can be delayed.
+
+  - 0, HW default.
+
+- ``hw_max_pending_comp`` parameter [int]
+
+  - 1 - 65535, The maximum number of pending packets completions in an HW queue.
+
+  - 0, HW default.
+
+
+Error handling
+^^^^^^^^^^^^^^
+
+Upon potential hardware errors, mlx5 PMD try to recover, give up if failed 3
+times in 3 seconds, virtq will be put in disable state. User should check log
+to get error information, or query vdpa statistics counter to know error type
+and count report.