From d9bad05024994c89e4f80b310e26ddc1e8daed43 Mon Sep 17 00:00:00 2001 From: Suanming Mou Date: Sun, 6 Nov 2022 05:26:16 +0200 Subject: [PATCH] net/mlx5: fix flow table and queue routine on Windows The macro HAVE_MLX5_HWS_SUPPORT was introduced for HWS only. And HWS was not supported on Windows. So macro HAVE_MLX5_HWS_SUPPORT should be only around the code which HWS uses, but avoid including the code block shared by Linux and Windows. Fixes: 22681deead3e ("net/mlx5/hws: enable hardware steering") Signed-off-by: Suanming Mou Acked-by: Viacheslav Ovsiienko --- drivers/net/mlx5/mlx5.c | 4 +++- drivers/net/mlx5/mlx5_devx.c | 2 ++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/drivers/net/mlx5/mlx5.c b/drivers/net/mlx5/mlx5.c index b85a56ec24..1cf6df6049 100644 --- a/drivers/net/mlx5/mlx5.c +++ b/drivers/net/mlx5/mlx5.c @@ -1833,12 +1833,14 @@ mlx5_alloc_table_hash_list(struct mlx5_priv *priv __rte_unused) int err = 0; /* Tables are only used in DV and DR modes. */ -#ifdef HAVE_MLX5_HWS_SUPPORT +#if defined(HAVE_IBV_FLOW_DV_SUPPORT) || !defined(HAVE_INFINIBAND_VERBS_H) struct mlx5_dev_ctx_shared *sh = priv->sh; char s[MLX5_NAME_SIZE]; +#ifdef HAVE_MLX5_HWS_SUPPORT if (priv->sh->config.dv_flow_en == 2) return mlx5_alloc_hw_group_hash_list(priv); +#endif MLX5_ASSERT(sh); snprintf(s, sizeof(s), "%s_flow_table", priv->sh->ibdev_name); sh->flow_tbls = mlx5_hlist_create(s, MLX5_FLOW_TABLE_HLIST_ARRAY_SIZE, diff --git a/drivers/net/mlx5/mlx5_devx.c b/drivers/net/mlx5/mlx5_devx.c index 137e7dd4ac..c1305836cf 100644 --- a/drivers/net/mlx5/mlx5_devx.c +++ b/drivers/net/mlx5/mlx5_devx.c @@ -907,6 +907,7 @@ mlx5_devx_hrxq_new(struct rte_eth_dev *dev, struct mlx5_hrxq *hrxq, rte_errno = errno; goto error; } +#if defined(HAVE_IBV_FLOW_DV_SUPPORT) || !defined(HAVE_INFINIBAND_VERBS_H) #ifdef HAVE_MLX5_HWS_SUPPORT if (hrxq->hws_flags) { hrxq->action = mlx5dr_action_create_dest_tir @@ -916,6 +917,7 @@ mlx5_devx_hrxq_new(struct rte_eth_dev *dev, struct mlx5_hrxq *hrxq, goto error; return 0; } +#endif if (mlx5_flow_os_create_flow_action_dest_devx_tir(hrxq->tir, &hrxq->action)) { rte_errno = errno;