diff options
author | WANG Cong <xiyou.wangcong@gmail.com> | 2016-06-01 19:15:17 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2016-06-03 19:24:04 -0400 |
commit | 6a73b571b63075ef408c83f07c2565b5652f93cc (patch) | |
tree | c5050040e3c7ac6501c635e0686ef43e342f06ec /net | |
parent | 6529d75ad9228f4d8a8f6c5c5244ceb945ac9bc2 (diff) |
sch_drr: update backlog as well
Fixes: 2ccccf5fb43f ("net_sched: update hierarchical backlog too")
Cc: Jamal Hadi Salim <jhs@mojatatu.com>
Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net')
-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 | ||