diff options
-rw-r--r-- | net/sched/sch_drr.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/net/sched/sch_drr.c b/net/sched/sch_drr.c index a63e879e8975..bf8af2c43c2c 100644 --- a/net/sched/sch_drr.c +++ b/net/sched/sch_drr.c | |||
@@ -375,6 +375,7 @@ static int drr_enqueue(struct sk_buff *skb, struct Qdisc *sch) | |||
375 | cl->deficit = cl->quantum; | 375 | cl->deficit = cl->quantum; |
376 | } | 376 | } |
377 | 377 | ||
378 | qdisc_qstats_backlog_inc(sch, skb); | ||
378 | sch->q.qlen++; | 379 | sch->q.qlen++; |
379 | return err; | 380 | return err; |
380 | } | 381 | } |
@@ -407,6 +408,7 @@ static struct sk_buff *drr_dequeue(struct Qdisc *sch) | |||
407 | 408 | ||
408 | bstats_update(&cl->bstats, skb); | 409 | bstats_update(&cl->bstats, skb); |
409 | qdisc_bstats_update(sch, skb); | 410 | qdisc_bstats_update(sch, skb); |
411 | qdisc_qstats_backlog_dec(sch, skb); | ||
410 | sch->q.qlen--; | 412 | sch->q.qlen--; |
411 | return skb; | 413 | return skb; |
412 | } | 414 | } |
@@ -428,6 +430,7 @@ static unsigned int drr_drop(struct Qdisc *sch) | |||
428 | if (cl->qdisc->ops->drop) { | 430 | if (cl->qdisc->ops->drop) { |
429 | len = cl->qdisc->ops->drop(cl->qdisc); | 431 | len = cl->qdisc->ops->drop(cl->qdisc); |
430 | if (len > 0) { | 432 | if (len > 0) { |
433 | sch->qstats.backlog -= len; | ||
431 | sch->q.qlen--; | 434 | sch->q.qlen--; |
432 | if (cl->qdisc->q.qlen == 0) | 435 | if (cl->qdisc->q.qlen == 0) |
433 | list_del(&cl->alist); | 436 | list_del(&cl->alist); |
@@ -463,6 +466,7 @@ static void drr_reset_qdisc(struct Qdisc *sch) | |||
463 | qdisc_reset(cl->qdisc); | 466 | qdisc_reset(cl->qdisc); |
464 | } | 467 | } |
465 | } | 468 | } |
469 | sch->qstats.backlog = 0; | ||
466 | sch->q.qlen = 0; | 470 | sch->q.qlen = 0; |
467 | } | 471 | } |
468 | 472 | ||