diff --git a/target/linux/generic/config-5.10 b/target/linux/generic/config-5.10
index 27e3e90488..4c31c21bcd 100644
--- a/target/linux/generic/config-5.10
+++ b/target/linux/generic/config-5.10
@@ -1329,11 +1329,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
@@ -3907,7 +3910,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
index 70200f3eb3..0000000000
--- a/target/linux/generic/hack-5.10/661-use_fq_codel_by_default.patch
+++ /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)
