This patch uses the temp variable to check the current action type, to avoid overlap the sample action following the decap.
Fixes: 7356aec64c48 ("net/mlx5: fix mirror flow split with L3 encapsulation") Cc: sta...@dpdk.org Signed-off-by: Jiawei Wang <jiaw...@nvidia.com> Acked-by: Suanming Mou <suanmi...@nvidia.com> --- drivers/net/mlx5/mlx5_flow.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/drivers/net/mlx5/mlx5_flow.c b/drivers/net/mlx5/mlx5_flow.c index 8ad85e6027..772f6afb66 100644 --- a/drivers/net/mlx5/mlx5_flow.c +++ b/drivers/net/mlx5/mlx5_flow.c @@ -6159,6 +6159,7 @@ flow_check_match_action(const struct rte_flow_action actions[], { const struct rte_flow_action_sample *sample; const struct rte_flow_action_raw_decap *decap; + const struct rte_flow_action *action_cur = NULL; int actions_n = 0; uint32_t ratio = 0; int sub_type = 0; @@ -6219,12 +6220,12 @@ flow_check_match_action(const struct rte_flow_action actions[], break; case RTE_FLOW_ACTION_TYPE_RAW_DECAP: decap = actions->conf; - while ((++actions)->type == RTE_FLOW_ACTION_TYPE_VOID) + action_cur = actions; + while ((++action_cur)->type == RTE_FLOW_ACTION_TYPE_VOID) ; - actions_n++; - if (actions->type == RTE_FLOW_ACTION_TYPE_RAW_ENCAP) { + if (action_cur->type == RTE_FLOW_ACTION_TYPE_RAW_ENCAP) { const struct rte_flow_action_raw_encap *encap = - actions->conf; + action_cur->conf; if (decap->size <= MLX5_ENCAPSULATION_DECISION_SIZE && encap->size > -- 2.18.1