[v2] net/mlx5: fix jump action validation
Checks
Commit Message
Currently PMD doesn't allow to jump to the same group in order to
avoid dead loop. But this also prevent experienced user to create
flow with less Hops in order to have better performance.
For example, rules in [1] should have better performance then [2].
Furthermore, this protection will not really prevent dead loop, i.e
[3]. So just remove this protection and user should take the
responsibility to avoid dead loop.
This patch enables jumping to the same group.
[1]:
flow create 0 group 1 priority 1 pattern eth / ipv4 / udp / gtp / end
actions raw_decap / raw_encap / jump group 1 / end
flow create 0 group 1 priority 0 pattern eth / ipv4 src is 1.0.0.1 / tcp
/ end actions queues index 1 / end
[2]:
flow create 0 group 1 priority 0 pattern eth / ipv4 / udp / gtp / end
actions raw_decap / raw_encap / jump group 2 / end
flow create 0 group 2 priority 0 pattern eth / ipv4 src is 1.0.0.1 / tcp
/ end actions queues index 1 / end
[3]:
flow create 0 group 1 pattern eth / end actions jump group 2 / end
flow create 0 group 2 pattern eth / end actions jump group 1 / end
Fixes: f78f747f41d0 ("net/mlx5: allow jump to group lower than current")
Cc: dekelp@mellanox.com
Cc: stable@dpdk.org
Signed-off-by: Michael Baum <michaelba@nvidia.com>
Acked-by: Matan Azrad <matan@nvidia.com>
---
V2: change commit message to fix template.
drivers/net/mlx5/mlx5_flow_dv.c | 7 -------
1 file changed, 7 deletions(-)
Comments
Hi,
> -----Original Message-----
> From: Michael Baum <michaelba@nvidia.com>
> Sent: Monday, November 27, 2023 2:43 PM
> To: dev@dpdk.org
> Cc: Matan Azrad <matan@nvidia.com>; Raslan Darawsheh
> <rasland@nvidia.com>; Slava Ovsiienko <viacheslavo@nvidia.com>; Ori Kam
> <orika@nvidia.com>; Suanming Mou <suanmingm@nvidia.com>;
> dekelp@mellanox.com; stable@dpdk.org
> Subject: [PATCH v2] net/mlx5: fix jump action validation
>
> Currently PMD doesn't allow to jump to the same group in order to
> avoid dead loop. But this also prevent experienced user to create
> flow with less Hops in order to have better performance.
>
> For example, rules in [1] should have better performance then [2].
>
> Furthermore, this protection will not really prevent dead loop, i.e
> [3]. So just remove this protection and user should take the
> responsibility to avoid dead loop.
>
> This patch enables jumping to the same group.
>
> [1]:
> flow create 0 group 1 priority 1 pattern eth / ipv4 / udp / gtp / end
> actions raw_decap / raw_encap / jump group 1 / end
> flow create 0 group 1 priority 0 pattern eth / ipv4 src is 1.0.0.1 / tcp
> / end actions queues index 1 / end
>
> [2]:
> flow create 0 group 1 priority 0 pattern eth / ipv4 / udp / gtp / end
> actions raw_decap / raw_encap / jump group 2 / end
> flow create 0 group 2 priority 0 pattern eth / ipv4 src is 1.0.0.1 / tcp
> / end actions queues index 1 / end
>
> [3]:
> flow create 0 group 1 pattern eth / end actions jump group 2 / end
> flow create 0 group 2 pattern eth / end actions jump group 1 / end
>
> Fixes: f78f747f41d0 ("net/mlx5: allow jump to group lower than current")
> Cc: dekelp@mellanox.com
> Cc: stable@dpdk.org
>
> Signed-off-by: Michael Baum <michaelba@nvidia.com>
> Acked-by: Matan Azrad <matan@nvidia.com>
> ---
>
> V2: change commit message to fix template.
Patch applied to next-net-mlx,
Kindest regards
Raslan Darawsheh
@@ -5484,13 +5484,6 @@ flow_dv_validate_action_jump(struct rte_eth_dev *dev,
&grp_info, error);
if (ret)
return ret;
- if (attributes->group == target_group &&
- !(action_flags & (MLX5_FLOW_ACTION_TUNNEL_SET |
- MLX5_FLOW_ACTION_TUNNEL_MATCH)))
- return rte_flow_error_set(error, EINVAL,
- RTE_FLOW_ERROR_TYPE_ACTION, NULL,
- "target group must be other than"
- " the current flow group");
if (table == 0)
return rte_flow_error_set(error, EINVAL,
RTE_FLOW_ERROR_TYPE_ACTION_CONF,