diff options
author | Patrick McHardy <kaber@trash.net> | 2006-11-29 20:35:18 -0500 |
---|---|---|
committer | David S. Miller <davem@sunset.davemloft.net> | 2006-12-03 00:31:41 -0500 |
commit | 9f9afec48221fe4a19f84a9341f5b304bf7d7783 (patch) | |
tree | 26a906902a7af4a835d59d452f567ca641fa1917 /net/sched/sch_generic.c | |
parent | 814a175e7b1531a4bcaa63be47bf58cacdcb5010 (diff) |
[NET_SCHED]: Set parent classid in default qdiscs
Set parent classids in default qdiscs to allow walking up the tree
from outside the qdiscs. This is needed by the next patch.
Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/sched/sch_generic.c')
-rw-r--r-- | net/sched/sch_generic.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/net/sched/sch_generic.c b/net/sched/sch_generic.c index 88c6a99ce53c..deafeb9cb70e 100644 --- a/net/sched/sch_generic.c +++ b/net/sched/sch_generic.c | |||
@@ -450,13 +450,15 @@ errout: | |||
450 | return ERR_PTR(-err); | 450 | return ERR_PTR(-err); |
451 | } | 451 | } |
452 | 452 | ||
453 | struct Qdisc * qdisc_create_dflt(struct net_device *dev, struct Qdisc_ops *ops) | 453 | struct Qdisc * qdisc_create_dflt(struct net_device *dev, struct Qdisc_ops *ops, |
454 | unsigned int parentid) | ||
454 | { | 455 | { |
455 | struct Qdisc *sch; | 456 | struct Qdisc *sch; |
456 | 457 | ||
457 | sch = qdisc_alloc(dev, ops); | 458 | sch = qdisc_alloc(dev, ops); |
458 | if (IS_ERR(sch)) | 459 | if (IS_ERR(sch)) |
459 | goto errout; | 460 | goto errout; |
461 | sch->parent = parentid; | ||
460 | 462 | ||
461 | if (!ops->init || ops->init(sch, NULL) == 0) | 463 | if (!ops->init || ops->init(sch, NULL) == 0) |
462 | return sch; | 464 | return sch; |
@@ -520,7 +522,8 @@ void dev_activate(struct net_device *dev) | |||
520 | if (dev->qdisc_sleeping == &noop_qdisc) { | 522 | if (dev->qdisc_sleeping == &noop_qdisc) { |
521 | struct Qdisc *qdisc; | 523 | struct Qdisc *qdisc; |
522 | if (dev->tx_queue_len) { | 524 | if (dev->tx_queue_len) { |
523 | qdisc = qdisc_create_dflt(dev, &pfifo_fast_ops); | 525 | qdisc = qdisc_create_dflt(dev, &pfifo_fast_ops, |
526 | TC_H_ROOT); | ||
524 | if (qdisc == NULL) { | 527 | if (qdisc == NULL) { |
525 | printk(KERN_INFO "%s: activation failed\n", dev->name); | 528 | printk(KERN_INFO "%s: activation failed\n", dev->name); |
526 | return; | 529 | return; |