diff options
author | David S. Miller <davem@davemloft.net> | 2008-07-08 19:55:56 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2008-07-08 19:55:56 -0400 |
commit | bb949fbd1878973c3539d9aecff52f284482a937 (patch) | |
tree | e8bde854b18be79723502167c16e2131914a75b7 /net/sched/sch_htb.c | |
parent | e65d22e18038eed7307276e46810d884c402d57d (diff) |
netdev: Create netdev_queue abstraction.
A netdev_queue is an entity managed by a qdisc.
Currently there is one RX and one TX queue, and a netdev_queue merely
contains a backpointer to the net_device.
The Qdisc struct is augmented with a netdev_queue pointer as well.
Eventually the 'dev' Qdisc member will go away and we will have the
resulting hierarchy:
net_device --> netdev_queue --> Qdisc
Also, qdisc_alloc() and qdisc_create_dflt() now take a netdev_queue
pointer argument.
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/sched/sch_htb.c')
-rw-r--r-- | net/sched/sch_htb.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/net/sched/sch_htb.c b/net/sched/sch_htb.c index ee8b4ffe110c..956a67f66b9c 100644 --- a/net/sched/sch_htb.c +++ b/net/sched/sch_htb.c | |||
@@ -1129,7 +1129,8 @@ static int htb_graft(struct Qdisc *sch, unsigned long arg, struct Qdisc *new, | |||
1129 | 1129 | ||
1130 | if (cl && !cl->level) { | 1130 | if (cl && !cl->level) { |
1131 | if (new == NULL && | 1131 | if (new == NULL && |
1132 | (new = qdisc_create_dflt(sch->dev, &pfifo_qdisc_ops, | 1132 | (new = qdisc_create_dflt(sch->dev, sch->dev_queue, |
1133 | &pfifo_qdisc_ops, | ||
1133 | cl->common.classid)) | 1134 | cl->common.classid)) |
1134 | == NULL) | 1135 | == NULL) |
1135 | return -ENOBUFS; | 1136 | return -ENOBUFS; |
@@ -1256,8 +1257,9 @@ static int htb_delete(struct Qdisc *sch, unsigned long arg) | |||
1256 | return -EBUSY; | 1257 | return -EBUSY; |
1257 | 1258 | ||
1258 | if (!cl->level && htb_parent_last_child(cl)) { | 1259 | if (!cl->level && htb_parent_last_child(cl)) { |
1259 | new_q = qdisc_create_dflt(sch->dev, &pfifo_qdisc_ops, | 1260 | new_q = qdisc_create_dflt(sch->dev, sch->dev_queue, |
1260 | cl->parent->common.classid); | 1261 | &pfifo_qdisc_ops, |
1262 | cl->parent->common.classid); | ||
1261 | last_child = 1; | 1263 | last_child = 1; |
1262 | } | 1264 | } |
1263 | 1265 | ||
@@ -1376,7 +1378,8 @@ static int htb_change_class(struct Qdisc *sch, u32 classid, | |||
1376 | /* create leaf qdisc early because it uses kmalloc(GFP_KERNEL) | 1378 | /* create leaf qdisc early because it uses kmalloc(GFP_KERNEL) |
1377 | so that can't be used inside of sch_tree_lock | 1379 | so that can't be used inside of sch_tree_lock |
1378 | -- thanks to Karlis Peisenieks */ | 1380 | -- thanks to Karlis Peisenieks */ |
1379 | new_q = qdisc_create_dflt(sch->dev, &pfifo_qdisc_ops, classid); | 1381 | new_q = qdisc_create_dflt(sch->dev, sch->dev_queue, |
1382 | &pfifo_qdisc_ops, classid); | ||
1380 | sch_tree_lock(sch); | 1383 | sch_tree_lock(sch); |
1381 | if (parent && !parent->level) { | 1384 | if (parent && !parent->level) { |
1382 | unsigned int qlen = parent->un.leaf.q->q.qlen; | 1385 | unsigned int qlen = parent->un.leaf.q->q.qlen; |