* [PATCH v2] net/nfp: store counter reset before zeroing flow query
[not found] <20221209062259.22341-1-chaoyong.he@corigine.com>
@ 2022-12-09 8:17 ` Chaoyong He
2023-01-17 17:00 ` Ferruh Yigit
0 siblings, 1 reply; 2+ messages in thread
From: Chaoyong He @ 2022-12-09 8:17 UTC (permalink / raw)
To: dev; +Cc: oss-drivers, niklas.soderlund, Chaoyong He, stable
The reset flag in the query structure are cleared by mistake, cause
the flow count never be reset, so the query API will always has count
value even the flow has stopped, and this will cause the flow never
been aged.
Fixes: 30ecce522732 ("net/nfp: support flow API")
Cc: stable@dpdk.org
Signed-off-by: Chaoyong He <chaoyong.he@corigine.com>
Reviewed-by: Niklas Söderlund <niklas.soderlund@corigine.com>
---
V2:
* cc to stable
* revise the logic
---
drivers/net/nfp/nfp_flow.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/drivers/net/nfp/nfp_flow.c b/drivers/net/nfp/nfp_flow.c
index 6f79d950db..d1d209ce13 100644
--- a/drivers/net/nfp/nfp_flow.c
+++ b/drivers/net/nfp/nfp_flow.c
@@ -3809,6 +3809,7 @@ nfp_flow_stats_get(struct rte_eth_dev *dev,
struct rte_flow *nfp_flow,
void *data)
{
+ bool reset;
uint32_t ctx_id;
struct rte_flow *flow;
struct nfp_flow_priv *priv;
@@ -3823,6 +3824,7 @@ nfp_flow_stats_get(struct rte_eth_dev *dev,
}
query = (struct rte_flow_query_count *)data;
+ reset = query->reset;
memset(query, 0, sizeof(*query));
ctx_id = rte_be_to_cpu_32(nfp_flow->payload.meta->host_ctx_id);
@@ -3834,7 +3836,7 @@ nfp_flow_stats_get(struct rte_eth_dev *dev,
query->bytes = stats->bytes;
query->hits_set = 1;
query->bytes_set = 1;
- if (query->reset != 0) {
+ if (reset) {
stats->pkts = 0;
stats->bytes = 0;
}
--
2.29.3
^ permalink raw reply [flat|nested] 2+ messages in thread