From 144d222305407504c16433d5f997b2937c93af7e Mon Sep 17 00:00:00 2001 From: Jiawei Wang Date: Fri, 19 Nov 2021 15:02:01 +0200 Subject: [PATCH] net/mlx5: fix mismatch metadata flow with meter action The mlx5 PMD introduced the table id attribute to allow multiple flow tables on the same table level for flow metering, there can be multiple flow table objects with the same table level but different table ids. If the extended metadata mode is enabled, all flows containing destination Queue/RSS actions are split into two subflows - prefix one jumps to the MLX5_FLOW_MREG_CP_TABLE_GROUP flow table to copy MARK action data, and suffix one to perform the destination Queue/RSS action. The table_id for the jump in the metadata split prefix flow is always 0. If flow itself was the metering split suffix subflow the table id was set to 1 in the flow split structure and the metadata split suffix subflow was created in the table with wrong table id, causing the metadata suffix flow mismatch. This patch resets the table id to 0 while creating the metadata suffix flows. Fixes: 51ec04dc7bcf ("net/mlx5: connect meter policy to created flows") Cc: stable@dpdk.org Signed-off-by: Jiawei Wang Acked-by: Viacheslav Ovsiienko --- drivers/net/mlx5/mlx5_flow.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/net/mlx5/mlx5_flow.c b/drivers/net/mlx5/mlx5_flow.c index 84e6f3048c..a30ce695aa 100644 --- a/drivers/net/mlx5/mlx5_flow.c +++ b/drivers/net/mlx5/mlx5_flow.c @@ -5881,6 +5881,7 @@ flow_create_split_metadata(struct rte_eth_dev *dev, /* Add suffix subflow to execute Q/RSS. */ flow_split_info->prefix_layers = layers; flow_split_info->prefix_mark = 0; + flow_split_info->table_id = 0; ret = flow_create_split_inner(dev, flow, &dev_flow, &q_attr, mtr_sfx ? items : q_items, q_actions, -- 2.20.1