summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOri Kam <orika@mellanox.com>2019-11-19 12:38:33 +0000
committerFerruh Yigit <ferruh.yigit@intel.com>2019-11-20 17:36:06 +0100
commit2e715e53deb52cf2c0fee5744702a0340fc8625e (patch)
tree2825e3a9217cde9925f7bf38cfe4227f67bf9a30
parentc4d314a352d14af5e98e3391e38b92a1c16db7f7 (diff)
downloaddpdk-next-net-intel-2e715e53deb52cf2c0fee5744702a0340fc8625e.zip
dpdk-next-net-intel-2e715e53deb52cf2c0fee5744702a0340fc8625e.tar.gz
dpdk-next-net-intel-2e715e53deb52cf2c0fee5744702a0340fc8625e.tar.xz
net/mlx5: fix hairpin split detection
When creating a flow, the flow is checked if it should be split into 2 flows based on the queue/rss acton. If the RSS action with given without any queues, it will result in crash due to the fact that the function checks the queue type. This commit fixes this issue by checking if the rss action is not empty, and at least one queue. Fixes: d85c7b5ea59f ("net/mlx5: split hairpin flows") Signed-off-by: Ori Kam <orika@mellanox.com> Acked-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
-rw-r--r--drivers/net/mlx5/mlx5_flow.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/net/mlx5/mlx5_flow.c b/drivers/net/mlx5/mlx5_flow.c
index d677de8..b488b67 100644
--- a/drivers/net/mlx5/mlx5_flow.c
+++ b/drivers/net/mlx5/mlx5_flow.c
@@ -2814,6 +2814,8 @@ flow_check_hairpin_split(struct rte_eth_dev *dev,
switch (actions->type) {
case RTE_FLOW_ACTION_TYPE_QUEUE:
queue = actions->conf;
+ if (queue == NULL)
+ return 0;
if (mlx5_rxq_get_type(dev, queue->index) !=
MLX5_RXQ_TYPE_HAIRPIN)
return 0;
@@ -2822,6 +2824,8 @@ flow_check_hairpin_split(struct rte_eth_dev *dev,
break;
case RTE_FLOW_ACTION_TYPE_RSS:
rss = actions->conf;
+ if (rss == NULL || rss->queue_num == 0)
+ return 0;
if (mlx5_rxq_get_type(dev, rss->queue[0]) !=
MLX5_RXQ_TYPE_HAIRPIN)
return 0;