On 16-08-23 04:25 PM, Eric Dumazet wrote: > On Tue, 2016-08-23 at 13:24 -0700, John Fastabend wrote: >> The per cpu qstats support was added with per cpu bstat support which >> is currently used by the ingress qdisc. This patch adds a set of >> helpers needed to make other qdiscs that use qstats per cpu as well. >> >> Signed-off-by: John Fastabend <john.r.fastab...@intel.com> >> --- >> include/net/sch_generic.h | 39 +++++++++++++++++++++++++++++++++++++++ >> 1 file changed, 39 insertions(+) >> >> diff --git a/include/net/sch_generic.h b/include/net/sch_generic.h >> index 3de6a8c..f1b8268 100644 >> --- a/include/net/sch_generic.h >> +++ b/include/net/sch_generic.h >> @@ -565,12 +565,43 @@ static inline void qdisc_qstats_backlog_dec(struct >> Qdisc *sch, >> sch->qstats.backlog -= qdisc_pkt_len(skb); >> } >> >> +static inline void qdisc_qstats_cpu_backlog_dec(struct Qdisc *sch, >> + const struct sk_buff *skb) >> +{ >> + struct gnet_stats_queue *q = this_cpu_ptr(sch->cpu_qstats); >> + >> + q->backlog -= qdisc_pkt_len(skb); > > Probably could use > this_cpu_sub(sch->cpu_qstats->backlog, qdisc_pkt_len(skb)) > >
Sure, should probably create a patch to do the same for some existing cases matching this pattern as well then.