diff options
author | Patrick McHardy <kaber@trash.net> | 2009-09-04 02:41:20 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2009-09-06 05:07:05 -0400 |
commit | 589983cd21f4a2e4ed74a958805a90fa676845c5 (patch) | |
tree | 21ce556958da203400d3e9d30911ff330be39e90 /net/sched/sch_api.c | |
parent | af356afa010f3cd2c8b8fcc3bce90f7a7b7ec02a (diff) |
net_sched: move dev_graft_qdisc() to sch_generic.c
It will be used in a following patch by the multiqueue qdisc.
Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/sched/sch_api.c')
-rw-r--r-- | net/sched/sch_api.c | 26 |
1 files changed, 0 insertions, 26 deletions
diff --git a/net/sched/sch_api.c b/net/sched/sch_api.c index 8aa9a0c5a9eb..d71f12be6e29 100644 --- a/net/sched/sch_api.c +++ b/net/sched/sch_api.c | |||
@@ -610,32 +610,6 @@ static u32 qdisc_alloc_handle(struct net_device *dev) | |||
610 | return i>0 ? autohandle : 0; | 610 | return i>0 ? autohandle : 0; |
611 | } | 611 | } |
612 | 612 | ||
613 | /* Attach toplevel qdisc to device queue. */ | ||
614 | |||
615 | static struct Qdisc *dev_graft_qdisc(struct netdev_queue *dev_queue, | ||
616 | struct Qdisc *qdisc) | ||
617 | { | ||
618 | struct Qdisc *oqdisc = dev_queue->qdisc_sleeping; | ||
619 | spinlock_t *root_lock; | ||
620 | |||
621 | root_lock = qdisc_lock(oqdisc); | ||
622 | spin_lock_bh(root_lock); | ||
623 | |||
624 | /* Prune old scheduler */ | ||
625 | if (oqdisc && atomic_read(&oqdisc->refcnt) <= 1) | ||
626 | qdisc_reset(oqdisc); | ||
627 | |||
628 | /* ... and graft new one */ | ||
629 | if (qdisc == NULL) | ||
630 | qdisc = &noop_qdisc; | ||
631 | dev_queue->qdisc_sleeping = qdisc; | ||
632 | rcu_assign_pointer(dev_queue->qdisc, &noop_qdisc); | ||
633 | |||
634 | spin_unlock_bh(root_lock); | ||
635 | |||
636 | return oqdisc; | ||
637 | } | ||
638 | |||
639 | void qdisc_tree_decrease_qlen(struct Qdisc *sch, unsigned int n) | 613 | void qdisc_tree_decrease_qlen(struct Qdisc *sch, unsigned int n) |
640 | { | 614 | { |
641 | const struct Qdisc_class_ops *cops; | 615 | const struct Qdisc_class_ops *cops; |