From: David S. Miller Date: Mon, 24 Jan 2011 22:09:35 +0000 (-0800) Subject: Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 X-Git-Tag: v2.6.39-rc1~468^2~484 X-Git-Url: https://git.openpandora.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5bdc22a56549e7983c6b443298672641952ea035;p=pandora-kernel.git Merge branch 'master' of /linux/kernel/git/davem/net-2.6 Conflicts: net/sched/sch_hfsc.c net/sched/sch_htb.c net/sched/sch_tbf.c --- 5bdc22a56549e7983c6b443298672641952ea035 diff --cc net/sched/sch_cbq.c index 25ed522b2891,5f63ec58942c..24d94c097b35 --- a/net/sched/sch_cbq.c +++ b/net/sched/sch_cbq.c @@@ -973,8 -969,9 +971,9 @@@ cbq_dequeue(struct Qdisc *sch skb = cbq_dequeue_1(sch); if (skb) { + qdisc_bstats_update(sch, skb); sch->q.qlen--; - sch->flags &= ~TCQ_F_THROTTLED; + qdisc_unthrottled(sch); return skb; } diff --cc net/sched/sch_fifo.c index f7290d2542c2,d468b479aa93..be33f9ddf9dd --- a/net/sched/sch_fifo.c +++ b/net/sched/sch_fifo.c @@@ -43,9 -44,8 +43,8 @@@ static int pfifo_enqueue(struct sk_buf return qdisc_reshape_fail(skb, sch); } -static int pfifo_tail_enqueue(struct sk_buff *skb, struct Qdisc* sch) +static int pfifo_tail_enqueue(struct sk_buff *skb, struct Qdisc *sch) { - struct sk_buff *skb_head; struct fifo_sched_data *q = qdisc_priv(sch); if (likely(skb_queue_len(&sch->q) < q->limit)) diff --cc net/sched/sch_hfsc.c index b632d9251913,14a799de1c35..6488e6425652 --- a/net/sched/sch_hfsc.c +++ b/net/sched/sch_hfsc.c @@@ -1664,7 -1664,8 +1663,8 @@@ hfsc_dequeue(struct Qdisc *sch set_passive(cl); } - sch->flags &= ~TCQ_F_THROTTLED; + qdisc_unthrottled(sch); + qdisc_bstats_update(sch, skb); sch->q.qlen--; return skb; diff --cc net/sched/sch_htb.c index 39db75cd8c17,fc12fe6f5597..e1429a85091f --- a/net/sched/sch_htb.c +++ b/net/sched/sch_htb.c @@@ -865,7 -850,9 +864,9 @@@ static struct sk_buff *htb_dequeue(stru /* try to dequeue direct packets as high prio (!) to minimize cpu work */ skb = __skb_dequeue(&q->direct_queue); if (skb != NULL) { + ok: + qdisc_bstats_update(sch, skb); - sch->flags &= ~TCQ_F_THROTTLED; + qdisc_unthrottled(sch); sch->q.qlen--; return skb; } @@@ -896,14 -883,10 +897,11 @@@ m = ~q->row_mask[level]; while (m != (int)(-1)) { int prio = ffz(m); + m |= 1 << prio; skb = htb_dequeue_tree(q, prio, level); - if (likely(skb != NULL)) { - sch->q.qlen--; - qdisc_unthrottled(sch); - goto fin; - } + if (likely(skb != NULL)) + goto ok; } } sch->qstats.overlimits++; diff --cc net/sched/sch_tbf.c index 86c016696977,e93165820c3f..1dcfb5223a86 --- a/net/sched/sch_tbf.c +++ b/net/sched/sch_tbf.c @@@ -185,7 -185,8 +184,8 @@@ static struct sk_buff *tbf_dequeue(stru q->tokens = toks; q->ptokens = ptoks; sch->q.qlen--; - sch->flags &= ~TCQ_F_THROTTLED; + qdisc_unthrottled(sch); + qdisc_bstats_update(sch, skb); return skb; }