kernel: generic: select the fq_codel qdisc by default
authorRui Salvaterra <rsalvaterra@gmail.com>
Sun, 19 Dec 2021 19:29:58 +0000 (19:29 +0000)
committerRui Salvaterra <rsalvaterra@gmail.com>
Wed, 9 Feb 2022 16:15:32 +0000 (16:15 +0000)
The kernel configuration allows us to select a default qdisc. Let's do this for
5.10 (as 5.4 is on its way out) and get rid of the hacky patch we've been
carrying.

Acked-by: Jo-Philipp Wich <jo@mein.io>
Signed-off-by: Rui Salvaterra <rsalvaterra@gmail.com>
target/linux/generic/config-5.10
target/linux/generic/hack-5.10/661-use_fq_codel_by_default.patch [deleted file]

index 30c48d521b53017d3c29904cb46670a9b3ef5db4..6fdd27198d9cdcb9493590c80825231252faa2b0 100644 (file)
@@ -1331,11 +1331,14 @@ CONFIG_DEBUG_KERNEL=y
 # CONFIG_DECNET is not set
 CONFIG_DEFAULT_CUBIC=y
 CONFIG_DEFAULT_DEADLINE=y
+CONFIG_DEFAULT_FQ_CODEL=y
 CONFIG_DEFAULT_HOSTNAME="(none)"
 CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=120
 CONFIG_DEFAULT_INIT=""
 CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
+CONFIG_DEFAULT_NET_SCH="fq_codel"
 # CONFIG_DEFAULT_NOOP is not set
+# CONFIG_DEFAULT_PFIFO_FAST is not set
 # CONFIG_DEFAULT_RENO is not set
 CONFIG_DEFAULT_SECURITY=""
 CONFIG_DEFAULT_SECURITY_DAC=y
@@ -3910,7 +3913,7 @@ CONFIG_NET_SCHED=y
 # CONFIG_NET_SCH_CBS is not set
 # CONFIG_NET_SCH_CHOKE is not set
 # CONFIG_NET_SCH_CODEL is not set
-# CONFIG_NET_SCH_DEFAULT is not set
+CONFIG_NET_SCH_DEFAULT=y
 # CONFIG_NET_SCH_DRR is not set
 # CONFIG_NET_SCH_DSMARK is not set
 # CONFIG_NET_SCH_ETF is not set
diff --git a/target/linux/generic/hack-5.10/661-use_fq_codel_by_default.patch b/target/linux/generic/hack-5.10/661-use_fq_codel_by_default.patch
deleted file mode 100644 (file)
index 70200f3..0000000
+++ /dev/null
@@ -1,100 +0,0 @@
-From 1d418f7e88035ed7a94073f6354246c66e9193e9 Mon Sep 17 00:00:00 2001
-From: Felix Fietkau <nbd@nbd.name>
-Date: Fri, 7 Jul 2017 17:22:58 +0200
-Subject: fq_codel: switch default qdisc from pfifo_fast to fq_codel and remove pfifo_fast
-
-Signed-off-by: Felix Fietkau <nbd@nbd.name>
----
- include/net/sch_generic.h | 3 ++-
- net/sched/Kconfig         | 3 ++-
- net/sched/sch_api.c       | 2 +-
- net/sched/sch_fq_codel.c  | 3 ++-
- net/sched/sch_generic.c   | 4 ++--
- 5 files changed, 9 insertions(+), 6 deletions(-)
-
---- a/include/net/sch_generic.h
-+++ b/include/net/sch_generic.h
-@@ -625,12 +625,13 @@ extern struct Qdisc_ops noop_qdisc_ops;
- extern struct Qdisc_ops pfifo_fast_ops;
- extern struct Qdisc_ops mq_qdisc_ops;
- extern struct Qdisc_ops noqueue_qdisc_ops;
-+extern struct Qdisc_ops fq_codel_qdisc_ops;
- extern const struct Qdisc_ops *default_qdisc_ops;
- static inline const struct Qdisc_ops *
- get_default_qdisc_ops(const struct net_device *dev, int ntx)
- {
-       return ntx < dev->real_num_tx_queues ?
--                      default_qdisc_ops : &pfifo_fast_ops;
-+                      default_qdisc_ops : &fq_codel_qdisc_ops;
- }
- struct Qdisc_class_common {
---- a/net/sched/Kconfig
-+++ b/net/sched/Kconfig
-@@ -4,8 +4,9 @@
- #
- menuconfig NET_SCHED
--      bool "QoS and/or fair queueing"
-+      def_bool y
-       select NET_SCH_FIFO
-+      select NET_SCH_FQ_CODEL
-       help
-         When the kernel has several packets to send out over a network
-         device, it has to decide which ones to send first, which ones to
---- a/net/sched/sch_api.c
-+++ b/net/sched/sch_api.c
-@@ -2288,7 +2288,7 @@ static int __init pktsched_init(void)
-               return err;
-       }
--      register_qdisc(&pfifo_fast_ops);
-+      register_qdisc(&fq_codel_qdisc_ops);
-       register_qdisc(&pfifo_qdisc_ops);
-       register_qdisc(&bfifo_qdisc_ops);
-       register_qdisc(&pfifo_head_drop_qdisc_ops);
---- a/net/sched/sch_fq_codel.c
-+++ b/net/sched/sch_fq_codel.c
-@@ -709,7 +709,7 @@ static const struct Qdisc_class_ops fq_c
-       .walk           =       fq_codel_walk,
- };
--static struct Qdisc_ops fq_codel_qdisc_ops __read_mostly = {
-+struct Qdisc_ops fq_codel_qdisc_ops __read_mostly = {
-       .cl_ops         =       &fq_codel_class_ops,
-       .id             =       "fq_codel",
-       .priv_size      =       sizeof(struct fq_codel_sched_data),
-@@ -724,6 +724,7 @@ static struct Qdisc_ops fq_codel_qdisc_o
-       .dump_stats =   fq_codel_dump_stats,
-       .owner          =       THIS_MODULE,
- };
-+EXPORT_SYMBOL(fq_codel_qdisc_ops);
- static int __init fq_codel_module_init(void)
- {
---- a/net/sched/sch_generic.c
-+++ b/net/sched/sch_generic.c
-@@ -32,7 +32,7 @@
- #include <net/xfrm.h>
- /* Qdisc to use by default */
--const struct Qdisc_ops *default_qdisc_ops = &pfifo_fast_ops;
-+const struct Qdisc_ops *default_qdisc_ops = &fq_codel_qdisc_ops;
- EXPORT_SYMBOL(default_qdisc_ops);
- static void qdisc_maybe_clear_missed(struct Qdisc *q,
-@@ -1062,12 +1062,12 @@ static void attach_one_default_qdisc(str
-                                    void *_unused)
- {
-       struct Qdisc *qdisc;
--      const struct Qdisc_ops *ops = default_qdisc_ops;
-+      const struct Qdisc_ops *ops = &fq_codel_qdisc_ops;
-       if (dev->priv_flags & IFF_NO_QUEUE)
-               ops = &noqueue_qdisc_ops;
-       else if(dev->type == ARPHRD_CAN)
--              ops = &pfifo_fast_ops;
-+              ops = &fq_codel_qdisc_ops;
-       qdisc = qdisc_create_dflt(dev_queue, ops, TC_H_ROOT, NULL);
-       if (!qdisc)