|
@@ -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)
|