diff options
Diffstat (limited to 'net/sched/sch_dsmark.c')
-rw-r--r-- | net/sched/sch_dsmark.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/net/sched/sch_dsmark.c b/net/sched/sch_dsmark.c index 11c8a2119b96..d5421816f007 100644 --- a/net/sched/sch_dsmark.c +++ b/net/sched/sch_dsmark.c | |||
@@ -88,15 +88,16 @@ static int dsmark_graft(struct Qdisc *sch, unsigned long arg, | |||
88 | sch, p, new, old); | 88 | sch, p, new, old); |
89 | 89 | ||
90 | if (new == NULL) { | 90 | if (new == NULL) { |
91 | new = qdisc_create_dflt(sch->dev, &pfifo_qdisc_ops); | 91 | new = qdisc_create_dflt(sch->dev, &pfifo_qdisc_ops, |
92 | sch->handle); | ||
92 | if (new == NULL) | 93 | if (new == NULL) |
93 | new = &noop_qdisc; | 94 | new = &noop_qdisc; |
94 | } | 95 | } |
95 | 96 | ||
96 | sch_tree_lock(sch); | 97 | sch_tree_lock(sch); |
97 | *old = xchg(&p->q, new); | 98 | *old = xchg(&p->q, new); |
99 | qdisc_tree_decrease_qlen(*old, (*old)->q.qlen); | ||
98 | qdisc_reset(*old); | 100 | qdisc_reset(*old); |
99 | sch->q.qlen = 0; | ||
100 | sch_tree_unlock(sch); | 101 | sch_tree_unlock(sch); |
101 | 102 | ||
102 | return 0; | 103 | return 0; |
@@ -307,7 +308,7 @@ static struct sk_buff *dsmark_dequeue(struct Qdisc *sch) | |||
307 | if (p->mask[index] != 0xff || p->value[index]) | 308 | if (p->mask[index] != 0xff || p->value[index]) |
308 | printk(KERN_WARNING "dsmark_dequeue: " | 309 | printk(KERN_WARNING "dsmark_dequeue: " |
309 | "unsupported protocol %d\n", | 310 | "unsupported protocol %d\n", |
310 | htons(skb->protocol)); | 311 | ntohs(skb->protocol)); |
311 | break; | 312 | break; |
312 | }; | 313 | }; |
313 | 314 | ||
@@ -387,7 +388,7 @@ static int dsmark_init(struct Qdisc *sch, struct rtattr *opt) | |||
387 | p->default_index = default_index; | 388 | p->default_index = default_index; |
388 | p->set_tc_index = RTA_GET_FLAG(tb[TCA_DSMARK_SET_TC_INDEX-1]); | 389 | p->set_tc_index = RTA_GET_FLAG(tb[TCA_DSMARK_SET_TC_INDEX-1]); |
389 | 390 | ||
390 | p->q = qdisc_create_dflt(sch->dev, &pfifo_qdisc_ops); | 391 | p->q = qdisc_create_dflt(sch->dev, &pfifo_qdisc_ops, sch->handle); |
391 | if (p->q == NULL) | 392 | if (p->q == NULL) |
392 | p->q = &noop_qdisc; | 393 | p->q = &noop_qdisc; |
393 | 394 | ||