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-19 18:07:19 +0000
commit3093713cb76aca4154f06e9afb197e2af1cb5403 (patch)
treef25ec04191f0b963957f9f4e1335393166fc3ca1
parent977c8976a35ddd85104c19de75b349ce3d91ee30 (diff)
downloaddpdk-next-net-brcm-3093713cb76aca4154f06e9afb197e2af1cb5403.zip
dpdk-next-net-brcm-3093713cb76aca4154f06e9afb197e2af1cb5403.tar.gz
dpdk-next-net-brcm-3093713cb76aca4154f06e9afb197e2af1cb5403.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;