mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-02 08:34:20 +08:00
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:
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);
|
||||
}
|
||||
|
||||
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,
|
||||
const struct sk_buff *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)
|
||||
{
|
||||
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);
|
||||
}
|
||||
|
||||
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,
|
||||
struct sk_buff **to_free)
|
||||
|
Loading…
Reference in New Issue
Block a user