[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20160714062338.8270.69636.stgit@john-Precision-Tower-5810>
Date: Wed, 13 Jul 2016 23:23:38 -0700
From: John Fastabend <john.fastabend@...il.com>
To: fw@...len.de, jhs@...atatu.com, alexei.starovoitov@...il.com,
eric.dumazet@...il.com, brouer@...hat.com
Cc: netdev@...r.kernel.org
Subject: [RFC PATCH v2 09/10] net: sched: helper to sum qlen
Reporting qlen when qlen is per cpu requires aggregating the per
cpu counters. This adds a helper routine for this.
Signed-off-by: John Fastabend <john.r.fastabend@...el.com>
---
include/net/sch_generic.h | 15 +++++++++++++++
1 file changed, 15 insertions(+)
diff --git a/include/net/sch_generic.h b/include/net/sch_generic.h
index 149f079..d370fee 100644
--- a/include/net/sch_generic.h
+++ b/include/net/sch_generic.h
@@ -271,6 +271,21 @@ static inline int qdisc_qlen(const struct Qdisc *q)
return q->q.qlen;
}
+static inline int qdisc_qlen_sum(const struct Qdisc *q)
+{
+ __u32 qlen = 0;
+ int i;
+
+ if (q->flags & TCQ_F_NOLOCK) {
+ for_each_possible_cpu(i)
+ qlen += per_cpu_ptr(q->cpu_qstats, i)->qlen;
+ } else {
+ qlen = q->q.qlen;
+ }
+
+ return qlen;
+}
+
static inline struct qdisc_skb_cb *qdisc_skb_cb(const struct sk_buff *skb)
{
return (struct qdisc_skb_cb *)skb->cb;
Powered by blists - more mailing lists