From mboxrd@z Thu Jan 1 00:00:00 1970 From: John Fastabend Subject: [net-next PATCH 10/15] net: sched: qdisc_qlen for per cpu logic Date: Tue, 23 Aug 2016 13:26:58 -0700 Message-ID: <20160823202658.14368.19338.stgit@john-Precision-Tower-5810> References: <20160823202135.14368.62466.stgit@john-Precision-Tower-5810> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Cc: john.r.fastabend@intel.com, netdev@vger.kernel.org, john.fastabend@gmail.com To: eric.dumazet@gmail.com, jhs@mojatatu.com, davem@davemloft.net, brouer@redhat.com, xiyou.wangcong@gmail.com, alexei.starovoitov@gmail.com Return-path: Received: from mail-pf0-f194.google.com ([209.85.192.194]:33333 "EHLO mail-pf0-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755733AbcHWU1Q (ORCPT ); Tue, 23 Aug 2016 16:27:16 -0400 Received: by mail-pf0-f194.google.com with SMTP id i6so8821046pfe.0 for ; Tue, 23 Aug 2016 13:27:16 -0700 (PDT) In-Reply-To: <20160823202135.14368.62466.stgit@john-Precision-Tower-5810> Sender: netdev-owner@vger.kernel.org List-ID: Add qdisc qlen helper routines for lockless qdiscs to use. The qdisc qlen is no longer used in the hotpath but it is reported via stats query on the qdisc so it still needs to be tracked. This adds the per cpu operations needed. Signed-off-by: John Fastabend --- include/net/sch_generic.h | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/include/net/sch_generic.h b/include/net/sch_generic.h index 3597c63..1e8e0ad 100644 --- a/include/net/sch_generic.h +++ b/include/net/sch_generic.h @@ -258,8 +258,16 @@ static inline void qdisc_cb_private_validate(const struct sk_buff *skb, int sz) BUILD_BUG_ON(sizeof(qcb->data) < sz); } +static inline int qdisc_qlen_cpu(const struct Qdisc *q) +{ + return this_cpu_ptr(q->cpu_qstats)->qlen; +} + static inline int qdisc_qlen(const struct Qdisc *q) { + if (q->flags & TCQ_F_NOLOCK) + return qdisc_qlen_cpu(q); + return q->q.qlen; }