net: sched: provide per cpu qstat helpers
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.fastabend@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
29b86cdac0
commit
40bd036219
@ -632,12 +632,39 @@ static inline void qdisc_qstats_backlog_dec(struct Qdisc *sch,
|
|||||||
sch->qstats.backlog -= qdisc_pkt_len(skb);
|
sch->qstats.backlog -= qdisc_pkt_len(skb);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline void qdisc_qstats_cpu_backlog_dec(struct Qdisc *sch,
|
||||||
|
const struct sk_buff *skb)
|
||||||
|
{
|
||||||
|
this_cpu_sub(sch->cpu_qstats->backlog, qdisc_pkt_len(skb));
|
||||||
|
}
|
||||||
|
|
||||||
static inline void qdisc_qstats_backlog_inc(struct Qdisc *sch,
|
static inline void qdisc_qstats_backlog_inc(struct Qdisc *sch,
|
||||||
const struct sk_buff *skb)
|
const struct sk_buff *skb)
|
||||||
{
|
{
|
||||||
sch->qstats.backlog += qdisc_pkt_len(skb);
|
sch->qstats.backlog += qdisc_pkt_len(skb);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline void qdisc_qstats_cpu_backlog_inc(struct Qdisc *sch,
|
||||||
|
const struct sk_buff *skb)
|
||||||
|
{
|
||||||
|
this_cpu_add(sch->cpu_qstats->backlog, qdisc_pkt_len(skb));
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void qdisc_qstats_cpu_qlen_inc(struct Qdisc *sch)
|
||||||
|
{
|
||||||
|
this_cpu_inc(sch->cpu_qstats->qlen);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void qdisc_qstats_cpu_qlen_dec(struct Qdisc *sch)
|
||||||
|
{
|
||||||
|
this_cpu_dec(sch->cpu_qstats->qlen);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void qdisc_qstats_cpu_requeues_inc(struct Qdisc *sch)
|
||||||
|
{
|
||||||
|
this_cpu_inc(sch->cpu_qstats->requeues);
|
||||||
|
}
|
||||||
|
|
||||||
static inline void __qdisc_qstats_drop(struct Qdisc *sch, int count)
|
static inline void __qdisc_qstats_drop(struct Qdisc *sch, int count)
|
||||||
{
|
{
|
||||||
sch->qstats.drops += count;
|
sch->qstats.drops += count;
|
||||||
@ -845,6 +872,14 @@ static inline void rtnl_qdisc_drop(struct sk_buff *skb, struct Qdisc *sch)
|
|||||||
qdisc_qstats_drop(sch);
|
qdisc_qstats_drop(sch);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline int qdisc_drop_cpu(struct sk_buff *skb, struct Qdisc *sch,
|
||||||
|
struct sk_buff **to_free)
|
||||||
|
{
|
||||||
|
__qdisc_drop(skb, to_free);
|
||||||
|
qdisc_qstats_cpu_drop(sch);
|
||||||
|
|
||||||
|
return NET_XMIT_DROP;
|
||||||
|
}
|
||||||
|
|
||||||
static inline int qdisc_drop(struct sk_buff *skb, struct Qdisc *sch,
|
static inline int qdisc_drop(struct sk_buff *skb, struct Qdisc *sch,
|
||||||
struct sk_buff **to_free)
|
struct sk_buff **to_free)
|
||||||
|
Reference in New Issue
Block a user