diff options
author | Moritz Fischer <mdf@kernel.org> | 2019-09-03 19:35:07 -0700 |
---|---|---|
committer | Moritz Fischer <mdf@kernel.org> | 2019-09-03 19:35:07 -0700 |
commit | af9ca4b0bd0502bb134f18d394a613be371d2352 (patch) | |
tree | 37b1159d4456e223981dddde4795f2061c83d14c /net/sched/sch_generic.c | |
parent | cbb4a74478e9eef0f8ef437e95ef7645008988f7 (diff) | |
parent | 99097a214b0c15f7595ac8f2788662f3941c1992 (diff) | |
download | kernel_replicant_linux-af9ca4b0bd0502bb134f18d394a613be371d2352.tar.gz kernel_replicant_linux-af9ca4b0bd0502bb134f18d394a613be371d2352.tar.bz2 kernel_replicant_linux-af9ca4b0bd0502bb134f18d394a613be371d2352.zip |
Merge branch 'char-misc-next' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc into fpga-dfl-for-5.4
Diffstat (limited to 'net/sched/sch_generic.c')
-rw-r--r-- | net/sched/sch_generic.c | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/net/sched/sch_generic.c b/net/sched/sch_generic.c index 11c03cf4aa74..137db1cbde85 100644 --- a/net/sched/sch_generic.c +++ b/net/sched/sch_generic.c @@ -624,8 +624,12 @@ static int pfifo_fast_enqueue(struct sk_buff *skb, struct Qdisc *qdisc, err = skb_array_produce(q, skb); - if (unlikely(err)) - return qdisc_drop_cpu(skb, qdisc, to_free); + if (unlikely(err)) { + if (qdisc_is_percpu_stats(qdisc)) + return qdisc_drop_cpu(skb, qdisc, to_free); + else + return qdisc_drop(skb, qdisc, to_free); + } qdisc_update_stats_at_enqueue(qdisc, pkt_len); return NET_XMIT_SUCCESS; @@ -688,11 +692,14 @@ static void pfifo_fast_reset(struct Qdisc *qdisc) kfree_skb(skb); } - for_each_possible_cpu(i) { - struct gnet_stats_queue *q = per_cpu_ptr(qdisc->cpu_qstats, i); + if (qdisc_is_percpu_stats(qdisc)) { + for_each_possible_cpu(i) { + struct gnet_stats_queue *q; - q->backlog = 0; - q->qlen = 0; + q = per_cpu_ptr(qdisc->cpu_qstats, i); + q->backlog = 0; + q->qlen = 0; + } } } |