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

Reply via email to