From 4de91bc1a8a19ccdea3cce67dff939ab34cf0275 Mon Sep 17 00:00:00 2001 From: Michael Baum Date: Mon, 28 Feb 2022 09:09:53 +0200 Subject: [PATCH] net/mlx5: fix shared counter flag in flow validation [ upstream commit 8f53c7cf2660a2a5d2a61fefe987491bce50edde ] The AGE action can be implemented by either counters or ASO mechanism. When user ask count action in the flow rule, AGE action is implemented by the same counter. However, if user ask indirect count action, it cannot be used for AGE. The flow_dv_validate() function has a flag named "shared_count" which indicates whether AGE action validate depends on ASO support or not. This flag is initialized to false and is updated if there is indirect count action in the action list. This flag is mistakenly set within the loop that reads the action list and in each iteration it is reinitialized to false, regardless of the existence of an indirect count action in the list. This patch moves the flag initialization out of the loop. Fixes: f3191849f2c2 ("net/mlx5: support flow count action handle") Signed-off-by: Michael Baum Acked-by: Matan Azrad --- drivers/net/mlx5/mlx5_flow_dv.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/mlx5/mlx5_flow_dv.c b/drivers/net/mlx5/mlx5_flow_dv.c index 43d8db14ad..268673a265 100644 --- a/drivers/net/mlx5/mlx5_flow_dv.c +++ b/drivers/net/mlx5/mlx5_flow_dv.c @@ -6915,6 +6915,7 @@ flow_dv_validate(struct rte_eth_dev *dev, const struct rte_flow_attr *attr, const struct rte_flow_item *integrity_items[2] = {NULL, NULL}; const struct rte_flow_item *port_id_item = NULL; bool def_policy = false; + bool shared_count = false; uint16_t udp_dport = 0; if (items == NULL) @@ -7285,7 +7286,6 @@ flow_dv_validate(struct rte_eth_dev *dev, const struct rte_flow_attr *attr, } for (; actions->type != RTE_FLOW_ACTION_TYPE_END; actions++) { int type = actions->type; - bool shared_count = false; if (!mlx5_flow_os_action_supported(type)) return rte_flow_error_set(error, ENOTSUP,