Subject: Re: [net-next PATCH 04/15] net: sched: provide per cpu qstat helpers

From: John Fastabend <[email-masked]>
Date: Tue, 23 Aug 2016 16:50:54 -0700

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 <[email-masked]>
>> ---
>>  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.