net/sched: TC, fix raw counter initialization
Freed counters may be reused by fs core. As such, raw counters may not be initialized to zero. Cache the counter values when the action stats object is initialized to have a proper base value for calculating the difference from the previous query. Fixes: 2b68d659a704 ("net/mlx5e: TC, support per action stats") Signed-off-by: Oz Shlomo <ozsh@nvidia.com> Reviewed-by: Paul Blakey <paulb@nvidia.com> Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
This commit is contained in:
parent
78dee7befd
commit
d1a0075ad6
@ -64,6 +64,7 @@ mlx5e_tc_act_stats_add(struct mlx5e_tc_act_stats_handle *handle,
|
||||
{
|
||||
struct mlx5e_tc_act_stats *act_stats, *old_act_stats;
|
||||
struct rhashtable *ht = &handle->ht;
|
||||
u64 lastused;
|
||||
int err = 0;
|
||||
|
||||
act_stats = kvzalloc(sizeof(*act_stats), GFP_KERNEL);
|
||||
@ -73,6 +74,10 @@ mlx5e_tc_act_stats_add(struct mlx5e_tc_act_stats_handle *handle,
|
||||
act_stats->tc_act_cookie = act_cookie;
|
||||
act_stats->counter = counter;
|
||||
|
||||
mlx5_fc_query_cached_raw(counter,
|
||||
&act_stats->lastbytes,
|
||||
&act_stats->lastpackets, &lastused);
|
||||
|
||||
rcu_read_lock();
|
||||
old_act_stats = rhashtable_lookup_get_insert_fast(ht,
|
||||
&act_stats->hash,
|
||||
|
Loading…
x
Reference in New Issue
Block a user