Template table reuses DR5 action handle for non-masked indirect
actions. Flow rule must explicitly translate non-masked indirect
action and update DR5 handle with the rule indirect object.

Current PMD assumed DR5 handle of non-masked indirect action was
always NULL before the action translation.

The patch always translates non-masked indirect list meter object.

Fixes: e26f50adbf38 ("net/mlx5: support indirect list meter mark action")

Cc: sta...@dpdk.org

Signed-off-by: Gregory Etelson <getel...@nvidia.com>
Acked-by: Dariusz Sosnowski <dsosnow...@nvidia.com>
Acked-by: Viacheslav Ovsiienko <viachesl...@nvidia.com>
---
 drivers/net/mlx5/mlx5_flow_hw.c | 12 +++---------
 1 file changed, 3 insertions(+), 9 deletions(-)

diff --git a/drivers/net/mlx5/mlx5_flow_hw.c b/drivers/net/mlx5/mlx5_flow_hw.c
index 9620b7f576..9833654aac 100644
--- a/drivers/net/mlx5/mlx5_flow_hw.c
+++ b/drivers/net/mlx5/mlx5_flow_hw.c
@@ -1702,15 +1702,9 @@ flow_hw_translate_indirect_meter(struct rte_eth_dev *dev,
        const struct rte_flow_indirect_update_flow_meter_mark **flow_conf =
                (typeof(flow_conf))action_conf->conf;
 
-       /*
-        * Masked indirect handle set dr5 action during template table
-        * translation.
-        */
-       if (!dr_rule->action) {
-               ret = flow_dr_set_meter(priv, dr_rule, action_conf);
-               if (ret)
-                       return ret;
-       }
+       ret = flow_dr_set_meter(priv, dr_rule, action_conf);
+       if (ret)
+               return ret;
        if (!act_data->shared_meter.conf_masked) {
                if (flow_conf && flow_conf[0] && flow_conf[0]->init_color < 
RTE_COLORS)
                        flow_dr_mtr_flow_color(dr_rule, 
flow_conf[0]->init_color);
-- 
2.39.2

Reply via email to