aboutsummaryrefslogtreecommitdiffstats
path: root/net/sched/sch_red.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/sched/sch_red.c')
-rw-r--r--net/sched/sch_red.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/net/sched/sch_red.c b/net/sched/sch_red.c
index 689157555fa4..6649463da1b6 100644
--- a/net/sched/sch_red.c
+++ b/net/sched/sch_red.c
@@ -93,7 +93,6 @@ static int red_enqueue(struct sk_buff *skb, struct Qdisc *sch)
93 93
94 ret = qdisc_enqueue(skb, child); 94 ret = qdisc_enqueue(skb, child);
95 if (likely(ret == NET_XMIT_SUCCESS)) { 95 if (likely(ret == NET_XMIT_SUCCESS)) {
96 qdisc_bstats_update(sch, skb);
97 sch->q.qlen++; 96 sch->q.qlen++;
98 } else if (net_xmit_drop_count(ret)) { 97 } else if (net_xmit_drop_count(ret)) {
99 q->stats.pdrop++; 98 q->stats.pdrop++;
@@ -113,11 +112,13 @@ static struct sk_buff *red_dequeue(struct Qdisc *sch)
113 struct Qdisc *child = q->qdisc; 112 struct Qdisc *child = q->qdisc;
114 113
115 skb = child->dequeue(child); 114 skb = child->dequeue(child);
116 if (skb) 115 if (skb) {
116 qdisc_bstats_update(sch, skb);
117 sch->q.qlen--; 117 sch->q.qlen--;
118 else if (!red_is_idling(&q->parms)) 118 } else {
119 red_start_of_idle_period(&q->parms); 119 if (!red_is_idling(&q->parms))
120 120 red_start_of_idle_period(&q->parms);
121 }
121 return skb; 122 return skb;
122} 123}
123 124