Adds a new qdisc operation dump_stats which qdiscs can use
to dump statistics. The op is invoked between gnet_stats_start_copy
and gnet_stats_finish_copy and therefore stats_lock is already
held. This is required to ensure proper locking throughout the
whole statistic dumping procedure.
Signed-off-by: Thomas Graf <tgraf@xxxxxxx>
--- linux-2.6.9-rc5.orig/include/net/pkt_sched.h 2004-10-21
10:44:44.000000000 +0200
+++ linux-2.6.9-rc5/include/net/pkt_sched.h 2004-10-21 11:11:45.000000000
+0200
@@ -64,6 +64,7 @@
int (*change)(struct Qdisc *, struct rtattr *arg);
int (*dump)(struct Qdisc *, struct sk_buff *);
+ int (*dump_stats)(struct Qdisc *, struct gnet_dump
*);
struct module *owner;
};
--- linux-2.6.9-rc5.orig/net/sched/sch_api.c 2004-10-21 10:45:08.000000000
+0200
+++ linux-2.6.9-rc5/net/sched/sch_api.c 2004-10-21 11:11:45.000000000 +0200
@@ -767,6 +767,9 @@
TCA_XSTATS, q->stats_lock, &d) < 0)
goto rtattr_failure;
+ if (q->ops->dump_stats && q->ops->dump_stats(q, &d) < 0)
+ goto rtattr_failure;
+
if (gnet_stats_copy_basic(&d, &q->bstats) < 0 ||
#ifdef CONFIG_NET_ESTIMATOR
gnet_stats_copy_rate_est(&d, &q->rate_est) < 0 ||
|