sch_tree_lock(sch);
*old = cl->q;
cl->q = new;
+ sch->q.qlen -= (*old)->q.qlen;
qdisc_reset(*old);
sch_tree_unlock(sch);
*old = xchg(&p->q,new);
if (*old)
qdisc_reset(*old);
+ sch->q.qlen = 0;
sch_tree_unlock(sch); /* @@@ move up ? */
return 0;
}
sch_tree_lock(sch);
*old = q->queues[band];
q->queues[band] = new;
+ sch->q.qlen -= (*old)->q.qlen;
qdisc_reset(*old);
sch_tree_unlock(sch);
sch_tree_lock(sch);
*old = xchg(&q->qdisc, new);
qdisc_reset(*old);
+ sch->q.qlen = 0;
+ sch->stats.backlog = 0;
sch_tree_unlock(sch);
return 0;