diff options
author | Jarek Poplawski <jarkao2@gmail.com> | 2009-09-17 13:26:07 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2009-09-17 13:26:07 -0400 |
commit | a19d2158439d6fba8160d7d2446f233f525f09e7 (patch) | |
tree | 85f54105fb6939efac2c26c3a08db7e543141b6d /net/sched | |
parent | 0522fea6505f7b03a82787acdc6ad3066d9b4de3 (diff) |
pkt_sched: Fix qstats.qlen updating in dump_stats
Some classful qdiscs miss qstats.qlen updating with q.qlen of their
child qdiscs in dump_stats methods.
Signed-off-by: Jarek Poplawski <jarkao2@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/sched')
-rw-r--r-- | net/sched/sch_drr.c | 4 | ||||
-rw-r--r-- | net/sched/sch_mq.c | 1 | ||||
-rw-r--r-- | net/sched/sch_multiq.c | 1 | ||||
-rw-r--r-- | net/sched/sch_prio.c | 1 |
4 files changed, 6 insertions, 1 deletions
diff --git a/net/sched/sch_drr.c b/net/sched/sch_drr.c index 12b2fb04b29b..5a888af7e5da 100644 --- a/net/sched/sch_drr.c +++ b/net/sched/sch_drr.c | |||
@@ -274,8 +274,10 @@ static int drr_dump_class_stats(struct Qdisc *sch, unsigned long arg, | |||
274 | struct tc_drr_stats xstats; | 274 | struct tc_drr_stats xstats; |
275 | 275 | ||
276 | memset(&xstats, 0, sizeof(xstats)); | 276 | memset(&xstats, 0, sizeof(xstats)); |
277 | if (cl->qdisc->q.qlen) | 277 | if (cl->qdisc->q.qlen) { |
278 | xstats.deficit = cl->deficit; | 278 | xstats.deficit = cl->deficit; |
279 | cl->qdisc->qstats.qlen = cl->qdisc->q.qlen; | ||
280 | } | ||
279 | 281 | ||
280 | if (gnet_stats_copy_basic(d, &cl->bstats) < 0 || | 282 | if (gnet_stats_copy_basic(d, &cl->bstats) < 0 || |
281 | gnet_stats_copy_rate_est(d, &cl->rate_est) < 0 || | 283 | gnet_stats_copy_rate_est(d, &cl->rate_est) < 0 || |
diff --git a/net/sched/sch_mq.c b/net/sched/sch_mq.c index 600c50143cc7..d1dea3d5dc92 100644 --- a/net/sched/sch_mq.c +++ b/net/sched/sch_mq.c | |||
@@ -193,6 +193,7 @@ static int mq_dump_class_stats(struct Qdisc *sch, unsigned long cl, | |||
193 | struct netdev_queue *dev_queue = mq_queue_get(sch, cl); | 193 | struct netdev_queue *dev_queue = mq_queue_get(sch, cl); |
194 | 194 | ||
195 | sch = dev_queue->qdisc_sleeping; | 195 | sch = dev_queue->qdisc_sleeping; |
196 | sch->qstats.qlen = sch->q.qlen; | ||
196 | if (gnet_stats_copy_basic(d, &sch->bstats) < 0 || | 197 | if (gnet_stats_copy_basic(d, &sch->bstats) < 0 || |
197 | gnet_stats_copy_queue(d, &sch->qstats) < 0) | 198 | gnet_stats_copy_queue(d, &sch->qstats) < 0) |
198 | return -1; | 199 | return -1; |
diff --git a/net/sched/sch_multiq.c b/net/sched/sch_multiq.c index 069f81c97277..7db2c88ce585 100644 --- a/net/sched/sch_multiq.c +++ b/net/sched/sch_multiq.c | |||
@@ -359,6 +359,7 @@ static int multiq_dump_class_stats(struct Qdisc *sch, unsigned long cl, | |||
359 | struct Qdisc *cl_q; | 359 | struct Qdisc *cl_q; |
360 | 360 | ||
361 | cl_q = q->queues[cl - 1]; | 361 | cl_q = q->queues[cl - 1]; |
362 | cl_q->qstats.qlen = cl_q->q.qlen; | ||
362 | if (gnet_stats_copy_basic(d, &cl_q->bstats) < 0 || | 363 | if (gnet_stats_copy_basic(d, &cl_q->bstats) < 0 || |
363 | gnet_stats_copy_queue(d, &cl_q->qstats) < 0) | 364 | gnet_stats_copy_queue(d, &cl_q->qstats) < 0) |
364 | return -1; | 365 | return -1; |
diff --git a/net/sched/sch_prio.c b/net/sched/sch_prio.c index 0f73c412d04b..93285cecb246 100644 --- a/net/sched/sch_prio.c +++ b/net/sched/sch_prio.c | |||
@@ -322,6 +322,7 @@ static int prio_dump_class_stats(struct Qdisc *sch, unsigned long cl, | |||
322 | struct Qdisc *cl_q; | 322 | struct Qdisc *cl_q; |
323 | 323 | ||
324 | cl_q = q->queues[cl - 1]; | 324 | cl_q = q->queues[cl - 1]; |
325 | cl_q->qstats.qlen = cl_q->q.qlen; | ||
325 | if (gnet_stats_copy_basic(d, &cl_q->bstats) < 0 || | 326 | if (gnet_stats_copy_basic(d, &cl_q->bstats) < 0 || |
326 | gnet_stats_copy_queue(d, &cl_q->qstats) < 0) | 327 | gnet_stats_copy_queue(d, &cl_q->qstats) < 0) |
327 | return -1; | 328 | return -1; |