From 0adf23adcbb521cd45e2eb88e15aa57317828433 Mon Sep 17 00:00:00 2001 From: Dekel Peled Date: Tue, 26 Nov 2019 10:34:22 +0200 Subject: [PATCH] net/mlx5: fix flow engine choice Commit in fixes line 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. Fixes: cd4569d2bf3c ("net/mlx5: change default flow engine to DV") Signed-off-by: Dekel Peled Acked-by: Ori Kam --- 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 2080766966..771970f626 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 8498fa8aeb..901e7c4e9c 100644 --- a/doc/guides/rel_notes/release_19_11.rst +++ b/doc/guides/rel_notes/release_19_11.rst @@ -210,6 +210,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 59ae40828c..8abd1b1474 100644 --- a/drivers/net/mlx5/mlx5.c +++ b/drivers/net/mlx5/mlx5.c @@ -2428,7 +2428,7 @@ mlx5_dev_spawn(struct rte_device *dpdk_dev, !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; -- 2.20.1