aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/generic/hack-5.4/662-remove_pfifo_fast.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/generic/hack-5.4/662-remove_pfifo_fast.patch')
-rw-r--r--target/linux/generic/hack-5.4/662-remove_pfifo_fast.patch38
1 files changed, 21 insertions, 17 deletions
diff --git a/target/linux/generic/hack-5.4/662-remove_pfifo_fast.patch b/target/linux/generic/hack-5.4/662-remove_pfifo_fast.patch
index e49507a590..149a923dcb 100644
--- a/target/linux/generic/hack-5.4/662-remove_pfifo_fast.patch
+++ b/target/linux/generic/hack-5.4/662-remove_pfifo_fast.patch
@@ -10,7 +10,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
--- a/net/sched/sch_generic.c
+++ b/net/sched/sch_generic.c
-@@ -612,207 +612,6 @@ struct Qdisc_ops noqueue_qdisc_ops __rea
+@@ -594,211 +594,6 @@ struct Qdisc_ops noqueue_qdisc_ops __rea
.owner = THIS_MODULE,
};
@@ -49,14 +49,14 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
-
- 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_qstats_atomic_qlen_inc(qdisc);
-- /* Note: skb can not be used after skb_array_produce(),
-- * so we better not use qdisc_qstats_cpu_backlog_inc()
-- */
-- this_cpu_add(qdisc->cpu_qstats->backlog, pkt_len);
+- qdisc_update_stats_at_enqueue(qdisc, pkt_len);
- return NET_XMIT_SUCCESS;
-}
-
@@ -75,9 +75,9 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
- skb = __skb_array_consume(q);
- }
- if (likely(skb)) {
-- qdisc_qstats_cpu_backlog_dec(qdisc, skb);
-- qdisc_bstats_cpu_update(qdisc, skb);
-- qdisc_qstats_atomic_qlen_dec(qdisc);
+- qdisc_update_stats_at_dequeue(qdisc, skb);
+- } else {
+- WRITE_ONCE(qdisc->empty, true);
- }
-
- return skb;
@@ -117,10 +117,14 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
- 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 = per_cpu_ptr(qdisc->cpu_qstats, i);
+- q->backlog = 0;
+- q->qlen = 0;
+- }
- }
-}
-
@@ -215,6 +219,6 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
-};
-EXPORT_SYMBOL(pfifo_fast_ops);
-
- static struct lock_class_key qdisc_tx_busylock;
- static struct lock_class_key qdisc_running_key;
-
+ struct Qdisc *qdisc_alloc(struct netdev_queue *dev_queue,
+ const struct Qdisc_ops *ops,
+ struct netlink_ext_ack *extack)