projects
/
cascardo
/
linux.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Support to encoding decoding skb prio on IFE action
[cascardo/linux.git]
/
net
/
sched
/
sch_qfq.c
diff --git
a/net/sched/sch_qfq.c
b/net/sched/sch_qfq.c
index
3dc3a6e
..
8d2d8d9
100644
(file)
--- a/
net/sched/sch_qfq.c
+++ b/
net/sched/sch_qfq.c
@@
-220,9
+220,10
@@
static struct qfq_class *qfq_find_class(struct Qdisc *sch, u32 classid)
static void qfq_purge_queue(struct qfq_class *cl)
{
unsigned int len = cl->qdisc->q.qlen;
static void qfq_purge_queue(struct qfq_class *cl)
{
unsigned int len = cl->qdisc->q.qlen;
+ unsigned int backlog = cl->qdisc->qstats.backlog;
qdisc_reset(cl->qdisc);
qdisc_reset(cl->qdisc);
- qdisc_tree_
decrease_qlen(cl->qdisc, len
);
+ qdisc_tree_
reduce_backlog(cl->qdisc, len, backlog
);
}
static const struct nla_policy qfq_policy[TCA_QFQ_MAX + 1] = {
}
static const struct nla_policy qfq_policy[TCA_QFQ_MAX + 1] = {
@@
-617,11
+618,7
@@
static int qfq_graft_class(struct Qdisc *sch, unsigned long arg,
new = &noop_qdisc;
}
new = &noop_qdisc;
}
- sch_tree_lock(sch);
- qfq_purge_queue(cl);
- *old = cl->qdisc;
- cl->qdisc = new;
- sch_tree_unlock(sch);
+ *old = qdisc_replace(sch, new, &cl->qdisc);
return 0;
}
return 0;
}