diff options
Diffstat (limited to 'net/sched/sch_drr.c')
-rw-r--r-- | net/sched/sch_drr.c | 12 |
1 files changed, 4 insertions, 8 deletions
diff --git a/net/sched/sch_drr.c b/net/sched/sch_drr.c index b74046a95397..6b7fe4a84f13 100644 --- a/net/sched/sch_drr.c +++ b/net/sched/sch_drr.c | |||
@@ -110,7 +110,7 @@ static int drr_change_class(struct Qdisc *sch, u32 classid, u32 parentid, | |||
110 | cl->refcnt = 1; | 110 | cl->refcnt = 1; |
111 | cl->common.classid = classid; | 111 | cl->common.classid = classid; |
112 | cl->quantum = quantum; | 112 | cl->quantum = quantum; |
113 | cl->qdisc = qdisc_create_dflt(qdisc_dev(sch), sch->dev_queue, | 113 | cl->qdisc = qdisc_create_dflt(sch->dev_queue, |
114 | &pfifo_qdisc_ops, classid); | 114 | &pfifo_qdisc_ops, classid); |
115 | if (cl->qdisc == NULL) | 115 | if (cl->qdisc == NULL) |
116 | cl->qdisc = &noop_qdisc; | 116 | cl->qdisc = &noop_qdisc; |
@@ -218,7 +218,7 @@ static int drr_graft_class(struct Qdisc *sch, unsigned long arg, | |||
218 | struct drr_class *cl = (struct drr_class *)arg; | 218 | struct drr_class *cl = (struct drr_class *)arg; |
219 | 219 | ||
220 | if (new == NULL) { | 220 | if (new == NULL) { |
221 | new = qdisc_create_dflt(qdisc_dev(sch), sch->dev_queue, | 221 | new = qdisc_create_dflt(sch->dev_queue, |
222 | &pfifo_qdisc_ops, cl->common.classid); | 222 | &pfifo_qdisc_ops, cl->common.classid); |
223 | if (new == NULL) | 223 | if (new == NULL) |
224 | new = &noop_qdisc; | 224 | new = &noop_qdisc; |
@@ -351,7 +351,6 @@ static int drr_enqueue(struct sk_buff *skb, struct Qdisc *sch) | |||
351 | { | 351 | { |
352 | struct drr_sched *q = qdisc_priv(sch); | 352 | struct drr_sched *q = qdisc_priv(sch); |
353 | struct drr_class *cl; | 353 | struct drr_class *cl; |
354 | unsigned int len; | ||
355 | int err; | 354 | int err; |
356 | 355 | ||
357 | cl = drr_classify(skb, sch, &err); | 356 | cl = drr_classify(skb, sch, &err); |
@@ -362,7 +361,6 @@ static int drr_enqueue(struct sk_buff *skb, struct Qdisc *sch) | |||
362 | return err; | 361 | return err; |
363 | } | 362 | } |
364 | 363 | ||
365 | len = qdisc_pkt_len(skb); | ||
366 | err = qdisc_enqueue(skb, cl->qdisc); | 364 | err = qdisc_enqueue(skb, cl->qdisc); |
367 | if (unlikely(err != NET_XMIT_SUCCESS)) { | 365 | if (unlikely(err != NET_XMIT_SUCCESS)) { |
368 | if (net_xmit_drop_count(err)) { | 366 | if (net_xmit_drop_count(err)) { |
@@ -377,10 +375,7 @@ static int drr_enqueue(struct sk_buff *skb, struct Qdisc *sch) | |||
377 | cl->deficit = cl->quantum; | 375 | cl->deficit = cl->quantum; |
378 | } | 376 | } |
379 | 377 | ||
380 | cl->bstats.packets++; | 378 | bstats_update(&cl->bstats, skb); |
381 | cl->bstats.bytes += len; | ||
382 | sch->bstats.packets++; | ||
383 | sch->bstats.bytes += len; | ||
384 | 379 | ||
385 | sch->q.qlen++; | 380 | sch->q.qlen++; |
386 | return err; | 381 | return err; |
@@ -407,6 +402,7 @@ static struct sk_buff *drr_dequeue(struct Qdisc *sch) | |||
407 | skb = qdisc_dequeue_peeked(cl->qdisc); | 402 | skb = qdisc_dequeue_peeked(cl->qdisc); |
408 | if (cl->qdisc->q.qlen == 0) | 403 | if (cl->qdisc->q.qlen == 0) |
409 | list_del(&cl->alist); | 404 | list_del(&cl->alist); |
405 | qdisc_bstats_update(sch, skb); | ||
410 | sch->q.qlen--; | 406 | sch->q.qlen--; |
411 | return skb; | 407 | return skb; |
412 | } | 408 | } |