aboutsummaryrefslogtreecommitdiffstats
path: root/include/net
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2009-09-06 04:58:51 -0400
committerDavid S. Miller <davem@davemloft.net>2009-09-06 05:07:05 -0400
commit6ec1c69a8f6492fd25722f4762721921da074c12 (patch)
treea78323d1f7f84acbe08c25d7300b935ae4bb7c62 /include/net
parent589983cd21f4a2e4ed74a958805a90fa676845c5 (diff)
net_sched: add classful multiqueue dummy scheduler
This patch adds a classful dummy scheduler which can be used as root qdisc for multiqueue devices and exposes each device queue as a child class. This allows to address queues individually and graft them similar to regular classes. Additionally it presents an accumulated view of the statistics of all real root qdiscs in the dummy root. Two new callbacks are added to the qdisc_ops and qdisc_class_ops: - cl_ops->select_queue selects the tx queue number for new child classes. - qdisc_ops->attach() overrides root qdisc device grafting to attach non-shared qdiscs to the queues. Signed-off-by: Patrick McHardy <kaber@trash.net> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/net')
-rw-r--r--include/net/sch_generic.h4
1 files changed, 4 insertions, 0 deletions
diff --git a/include/net/sch_generic.h b/include/net/sch_generic.h
index a92dc6208eff..9c69585a1be8 100644
--- a/include/net/sch_generic.h
+++ b/include/net/sch_generic.h
@@ -80,6 +80,7 @@ struct Qdisc
80struct Qdisc_class_ops 80struct Qdisc_class_ops
81{ 81{
82 /* Child qdisc manipulation */ 82 /* Child qdisc manipulation */
83 unsigned int (*select_queue)(struct Qdisc *, struct tcmsg *);
83 int (*graft)(struct Qdisc *, unsigned long cl, 84 int (*graft)(struct Qdisc *, unsigned long cl,
84 struct Qdisc *, struct Qdisc **); 85 struct Qdisc *, struct Qdisc **);
85 struct Qdisc * (*leaf)(struct Qdisc *, unsigned long cl); 86 struct Qdisc * (*leaf)(struct Qdisc *, unsigned long cl);
@@ -122,6 +123,7 @@ struct Qdisc_ops
122 void (*reset)(struct Qdisc *); 123 void (*reset)(struct Qdisc *);
123 void (*destroy)(struct Qdisc *); 124 void (*destroy)(struct Qdisc *);
124 int (*change)(struct Qdisc *, struct nlattr *arg); 125 int (*change)(struct Qdisc *, struct nlattr *arg);
126 void (*attach)(struct Qdisc *);
125 127
126 int (*dump)(struct Qdisc *, struct sk_buff *); 128 int (*dump)(struct Qdisc *, struct sk_buff *);
127 int (*dump_stats)(struct Qdisc *, struct gnet_dump *); 129 int (*dump_stats)(struct Qdisc *, struct gnet_dump *);
@@ -255,6 +257,8 @@ static inline void sch_tree_unlock(struct Qdisc *q)
255 257
256extern struct Qdisc noop_qdisc; 258extern struct Qdisc noop_qdisc;
257extern struct Qdisc_ops noop_qdisc_ops; 259extern struct Qdisc_ops noop_qdisc_ops;
260extern struct Qdisc_ops pfifo_fast_ops;
261extern struct Qdisc_ops mq_qdisc_ops;
258 262
259struct Qdisc_class_common 263struct Qdisc_class_common
260{ 264{