Recent patch [1] sets the DV (Direct Verbs) flow engine as default.
Newer versions of DV flow engine use the DR (Direct Rules) features.
DR is supported from RDMA Core library version rdma-core-24.0.
This cause failure to start port when using older rdma-core version,
without DR support.

This patch selects DV flow engine if rdma-core version is v24.0 or
higher. Verbs flow engine is selected otherwise.

[1] http://patches.dpdk.org/patch/61900/

Fixes: cd4569d2bf3c ("net/mlx5: change default flow engine to DV")

Signed-off-by: Dekel Peled <dek...@mellanox.com>
Acked-by: Ori Kam <or...@mellanox.com>
---
 doc/guides/nics/mlx5.rst               | 2 +-
 doc/guides/rel_notes/release_19_11.rst | 3 +++
 drivers/net/mlx5/mlx5.c                | 2 +-
 3 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/doc/guides/nics/mlx5.rst b/doc/guides/nics/mlx5.rst
index 2080766..771970f 100644
--- a/doc/guides/nics/mlx5.rst
+++ b/doc/guides/nics/mlx5.rst
@@ -673,7 +673,7 @@ Run-time configuration
 - ``dv_flow_en`` parameter [int]
 
   A nonzero value enables the DV flow steering assuming it is supported
-  by the driver.
+  by the driver (RDMA Core library version is rdma-core-24.0 or higher).
 
   Enabled by default if supported.
 
diff --git a/doc/guides/rel_notes/release_19_11.rst 
b/doc/guides/rel_notes/release_19_11.rst
index 48c80e5..928698e 100644
--- a/doc/guides/rel_notes/release_19_11.rst
+++ b/doc/guides/rel_notes/release_19_11.rst
@@ -193,6 +193,9 @@ New Features
   * Added support for matching on packets withe Geneve tunnel header.
   * Added hairpin support.
   * Added ConnectX6-DX support.
+  * Flow engine selected based on RDMA Core library version.
+    DV flow engine selected if version is rdma-core-24.0 or higher.
+    Verbs flow engine selected otherwise.
 
 * **Updated the AF_XDP PMD.**
 
diff --git a/drivers/net/mlx5/mlx5.c b/drivers/net/mlx5/mlx5.c
index 59ae408..8abd1b1 100644
--- a/drivers/net/mlx5/mlx5.c
+++ b/drivers/net/mlx5/mlx5.c
@@ -2428,7 +2428,7 @@ struct mlx5_flow_id_pool *
        !defined(HAVE_IBV_DEVICE_COUNTERS_SET_V45)
        DRV_LOG(DEBUG, "counters are not supported");
 #endif
-#ifndef HAVE_IBV_FLOW_DV_SUPPORT
+#if !defined(HAVE_IBV_FLOW_DV_SUPPORT) || !defined(HAVE_MLX5DV_DR)
        if (config.dv_flow_en) {
                DRV_LOG(WARNING, "DV flow is not supported");
                config.dv_flow_en = 0;
-- 
1.8.3.1

Reply via email to