[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <8b99e6732da7820457d3c0dde841d25fefb8c30a.camel@redhat.com>
Date: Tue, 14 Feb 2023 10:22:20 +0100
From: Paolo Abeni <pabeni@...hat.com>
To: Pedro Tammela <pctammela@...atatu.com>, netdev@...r.kernel.org
Cc: jhs@...atatu.com, xiyou.wangcong@...il.com, jiri@...nulli.us,
davem@...emloft.net, edumazet@...gle.com, kuba@...nel.org
Subject: Re: [PATCH net-next 3/3] net/sched: act_gate: use percpu stats
On Fri, 2023-02-10 at 17:27 -0300, Pedro Tammela wrote:
>
> diff --git a/net/sched/act_gate.c b/net/sched/act_gate.c
> index 9b8def0be..684b7a79f 100644
> --- a/net/sched/act_gate.c
> +++ b/net/sched/act_gate.c
> @@ -120,10 +120,10 @@ TC_INDIRECT_SCOPE int tcf_gate_act(struct sk_buff *skb,
> {
> struct tcf_gate *gact = to_gate(a);
>
> - spin_lock(&gact->tcf_lock);
> -
> tcf_lastuse_update(&gact->tcf_tm);
> - bstats_update(&gact->tcf_bstats, skb);
> + tcf_action_update_bstats(&gact->common, skb);
> +
> + spin_lock(&gact->tcf_lock);
I think that RCU-ifying the 'current_gate_status' field, setting its
value with WRITE_ONCE (both in _init and in gate_timer_func()) and
finally accessing it here with READ_ONCE, you could move pretty much
everything except the code touching *_octets update outside the
spinlock.
I'm not sure how much that will be relevant - e.g. how frequently we
expect to hit the
if (gact->current_max_octets >= 0) {
code path.
For sure the current code allocates per_cpu stats, but they are never
used.
Cheers,
Paolo
Powered by blists - more mailing lists