Previously, the identification of hairpin queue was done using mlx5_rxq_get_type() function. Recent patch replaced it with use of mlx5_rxq_get_hairpin_conf(), and check of the return value conf != NULL. The case of return value is NULL (queue is not hairpin) was not handled. As result, non-hairpin flows were wrongly handled. This patch adds the required check for return value is NULL.
Fixes: 509f8470de55 ("net/mlx5: do not split hairpin flow in explicit mode") Cc: sta...@dpdk.org Signed-off-by: Dekel Peled <dek...@nvidia.com> Acked-by: Matan Azrad <ma...@nvidia.com> --- drivers/net/mlx5/mlx5_flow.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/net/mlx5/mlx5_flow.c b/drivers/net/mlx5/mlx5_flow.c index f110c6b714..0ba1dc8c70 100644 --- a/drivers/net/mlx5/mlx5_flow.c +++ b/drivers/net/mlx5/mlx5_flow.c @@ -3524,7 +3524,7 @@ flow_check_hairpin_split(struct rte_eth_dev *dev, if (queue == NULL) return 0; conf = mlx5_rxq_get_hairpin_conf(dev, queue->index); - if (conf != NULL && !!conf->tx_explicit) + if (!conf || !!conf->tx_explicit) return 0; queue_action = 1; action_n++; @@ -3534,7 +3534,7 @@ flow_check_hairpin_split(struct rte_eth_dev *dev, if (rss == NULL || rss->queue_num == 0) return 0; conf = mlx5_rxq_get_hairpin_conf(dev, rss->queue[0]); - if (conf != NULL && !!conf->tx_explicit) + if (!conf || !!conf->tx_explicit) return 0; queue_action = 1; action_n++; -- 2.25.1