diff options
author | 2019-03-28 16:53:13 +0100 | |
---|---|---|
committer | 2019-04-01 14:50:13 -0700 | |
commit | e5f0e8f8e456589d56e4955154ed5d468cd6d286 (patch) | |
tree | 394e064316a0965588c3784a36a24fca3a7b352d /net/sched/sch_sfb.c | |
parent | net: sched: introduce and use qstats read helpers (diff) | |
download | linux-e5f0e8f8e456589d56e4955154ed5d468cd6d286.tar.gz linux-e5f0e8f8e456589d56e4955154ed5d468cd6d286.tar.bz2 linux-e5f0e8f8e456589d56e4955154ed5d468cd6d286.zip |
net: sched: introduce and use qdisc tree flush/purge helpers
The same code to flush qdisc tree and purge the qdisc queue
is duplicated in many places and in most cases it does not
respect NOLOCK qdisc: the global backlog len is used and the
per CPU values are ignored.
This change addresses the above, factoring-out the relevant
code and using the helpers introduced by the previous patch
to fetch the correct backlog len.
Fixes: c5ad119fb6c0 ("net: sched: pfifo_fast use skb_array")
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/sched/sch_sfb.c')
-rw-r--r-- | net/sched/sch_sfb.c | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/net/sched/sch_sfb.c b/net/sched/sch_sfb.c index bab506b01a32..2419fdb75966 100644 --- a/net/sched/sch_sfb.c +++ b/net/sched/sch_sfb.c @@ -521,8 +521,7 @@ static int sfb_change(struct Qdisc *sch, struct nlattr *opt, qdisc_hash_add(child, true); sch_tree_lock(sch); - qdisc_tree_reduce_backlog(q->qdisc, q->qdisc->q.qlen, - q->qdisc->qstats.backlog); + qdisc_tree_flush_backlog(q->qdisc); qdisc_put(q->qdisc); q->qdisc = child; |