aboutsummaryrefslogtreecommitdiffstats
path: root/include/net/sch_generic.h
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2016-06-10 14:52:24 -0400
committerDavid S. Miller <davem@davemloft.net>2016-06-10 14:52:24 -0400
commit1578b0a5e92825334760741e5c166b8873886f1b (patch)
treeac8299191f37990111f7d4b615601f4356e24fea /include/net/sch_generic.h
parent3d5479e92087f6249231e26a2d7327e86a8d0dfc (diff)
parent698ea54dde6768d4a96080d0fb796cb3a4eadaf8 (diff)
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Conflicts: net/sched/act_police.c net/sched/sch_drr.c net/sched/sch_hfsc.c net/sched/sch_prio.c net/sched/sch_red.c net/sched/sch_tbf.c In net-next the drop methods of the packet schedulers got removed, so the bug fixes to them in 'net' are irrelevant. A packet action unload crash fix conflicts with the addition of the new firstuse timestamp. Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/net/sch_generic.h')
-rw-r--r--include/net/sch_generic.h6
1 files changed, 5 insertions, 1 deletions
diff --git a/include/net/sch_generic.h b/include/net/sch_generic.h
index a4c0f1649e2b..9f3581980c15 100644
--- a/include/net/sch_generic.h
+++ b/include/net/sch_generic.h
@@ -158,6 +158,7 @@ struct Qdisc_class_ops {
158 158
159 /* Filter manipulation */ 159 /* Filter manipulation */
160 struct tcf_proto __rcu ** (*tcf_chain)(struct Qdisc *, unsigned long); 160 struct tcf_proto __rcu ** (*tcf_chain)(struct Qdisc *, unsigned long);
161 bool (*tcf_cl_offload)(u32 classid);
161 unsigned long (*bind_tcf)(struct Qdisc *, unsigned long, 162 unsigned long (*bind_tcf)(struct Qdisc *, unsigned long,
162 u32 classid); 163 u32 classid);
163 void (*unbind_tcf)(struct Qdisc *, unsigned long); 164 void (*unbind_tcf)(struct Qdisc *, unsigned long);
@@ -672,9 +673,11 @@ static inline struct sk_buff *qdisc_peek_dequeued(struct Qdisc *sch)
672 /* we can reuse ->gso_skb because peek isn't called for root qdiscs */ 673 /* we can reuse ->gso_skb because peek isn't called for root qdiscs */
673 if (!sch->gso_skb) { 674 if (!sch->gso_skb) {
674 sch->gso_skb = sch->dequeue(sch); 675 sch->gso_skb = sch->dequeue(sch);
675 if (sch->gso_skb) 676 if (sch->gso_skb) {
676 /* it's still part of the queue */ 677 /* it's still part of the queue */
678 qdisc_qstats_backlog_inc(sch, sch->gso_skb);
677 sch->q.qlen++; 679 sch->q.qlen++;
680 }
678 } 681 }
679 682
680 return sch->gso_skb; 683 return sch->gso_skb;
@@ -687,6 +690,7 @@ static inline struct sk_buff *qdisc_dequeue_peeked(struct Qdisc *sch)
687 690
688 if (skb) { 691 if (skb) {
689 sch->gso_skb = NULL; 692 sch->gso_skb = NULL;
693 qdisc_qstats_backlog_dec(sch, skb);
690 sch->q.qlen--; 694 sch->q.qlen--;
691 } else { 695 } else {
692 skb = sch->dequeue(sch); 696 skb = sch->dequeue(sch);