diff --git a/modules b/modules
index 869174fc849941ddee1d2241e408a74b38387182..6a349e8ef78305ff4ffda88642467ecfaa9b1deb 100644
--- a/modules
+++ b/modules
@@ -1,16 +1,16 @@
 GLUON_FEEDS='packages routing gluon'
 
 OPENWRT_REPO=https://github.com/openwrt/openwrt.git
-OPENWRT_BRANCH=openwrt-22.03
-OPENWRT_COMMIT=1ec274a204a65c7f8543cf750a0b027a685818cb
+OPENWRT_BRANCH=openwrt-23.05
+OPENWRT_COMMIT=b055769a487de4f95b8c8ab9f9a1a024d7b76cb2
 
 PACKAGES_PACKAGES_REPO=https://github.com/openwrt/packages.git
-PACKAGES_PACKAGES_BRANCH=openwrt-22.03
-PACKAGES_PACKAGES_COMMIT=336660337ea209413f610bf47cc8fc82131ba37a
+PACKAGES_PACKAGES_BRANCH=openwrt-23.05
+PACKAGES_PACKAGES_COMMIT=9f4707527e24eacd90cb3245ee7683eb063a359c
 
 PACKAGES_ROUTING_REPO=https://github.com/openwrt/routing.git
-PACKAGES_ROUTING_BRANCH=openwrt-22.03
-PACKAGES_ROUTING_COMMIT=1a40d7c7f303c626c457213e3e77721b55f46e51
+PACKAGES_ROUTING_BRANCH=openwrt-23.05
+PACKAGES_ROUTING_COMMIT=b844d67864d6486dc8f68054970c5195ec7c45a8
 
 PACKAGES_GLUON_REPO=https://github.com/freifunk-gluon/packages.git
 PACKAGES_GLUON_COMMIT=29912ec6308fd10b47763b4cf28a638d07f59973
diff --git a/patches/openwrt/0004-ramips-mt7621-make-DSA-images-swconfig-upgradable.patch b/patches/openwrt/0004-ramips-mt7621-make-DSA-images-swconfig-upgradable.patch
deleted file mode 100644
index 349b4d994fa1ac501db410675f89c48a6e82ec5e..0000000000000000000000000000000000000000
--- a/patches/openwrt/0004-ramips-mt7621-make-DSA-images-swconfig-upgradable.patch
+++ /dev/null
@@ -1,64 +0,0 @@
-From: David Bauer <mail@david-bauer.net>
-Date: Sun, 5 Jun 2022 23:43:38 +0200
-Subject: ramips-mt7621: make DSA images swconfig upgradable
-
-diff --git a/target/linux/ramips/image/mt7621.mk b/target/linux/ramips/image/mt7621.mk
-index ab0ff95f7529aa43e69e67a4e3a303242c9b2605..4c3a38db442f06d6c1acf77fb729d93a67e2d52a 100644
---- a/target/linux/ramips/image/mt7621.mk
-+++ b/target/linux/ramips/image/mt7621.mk
-@@ -180,7 +180,6 @@ endef
- TARGET_DEVICES += asiarf_ap7621-nv1
- 
- define Device/asus_rt-ac57u
--  $(Device/dsa-migration)
-   DEVICE_VENDOR := ASUS
-   DEVICE_MODEL := RT-AC57U
-   DEVICE_ALT0_VENDOR := ASUS
-@@ -1286,7 +1285,6 @@ endef
- TARGET_DEVICES += mts_wg430223
- 
- define Device/netgear_ex6150
--  $(Device/dsa-migration)
-   $(Device/uimage-lzma-loader)
-   DEVICE_VENDOR := NETGEAR
-   DEVICE_MODEL := EX6150
-@@ -1299,7 +1297,6 @@ endef
- TARGET_DEVICES += netgear_ex6150
- 
- define Device/netgear_sercomm_nand
--  $(Device/dsa-migration)
-   $(Device/uimage-lzma-loader)
-   BLOCKSIZE := 128k
-   PAGESIZE := 2048
-@@ -1482,7 +1479,6 @@ endef
- TARGET_DEVICES += netgear_wax202
- 
- define Device/netgear_wndr3700-v5
--  $(Device/dsa-migration)
-   $(Device/netgear_sercomm_nor)
-   $(Device/uimage-lzma-loader)
-   IMAGE_SIZE := 15232k
-@@ -1819,7 +1815,6 @@ endef
- TARGET_DEVICES += tplink_tl-wpa8631p-v3
- 
- define Device/ubnt_edgerouter_common
--  $(Device/dsa-migration)
-   $(Device/uimage-lzma-loader)
-   DEVICE_VENDOR := Ubiquiti
-   IMAGE_SIZE := 256768k
-@@ -2235,7 +2230,6 @@ endef
- TARGET_DEVICES += zbtlink_zbt-wg2626
- 
- define Device/zbtlink_zbt-wg3526-16m
--  $(Device/dsa-migration)
-   $(Device/uimage-lzma-loader)
-   IMAGE_SIZE := 16064k
-   DEVICE_VENDOR := Zbtlink
-@@ -2248,7 +2242,6 @@ endef
- TARGET_DEVICES += zbtlink_zbt-wg3526-16m
- 
- define Device/zbtlink_zbt-wg3526-32m
--  $(Device/dsa-migration)
-   $(Device/uimage-lzma-loader)
-   IMAGE_SIZE := 32448k
-   DEVICE_VENDOR := Zbtlink
diff --git a/patches/openwrt/0009-xrx200-migrate-fritz7360-v2-using-incorrect-image.patch b/patches/openwrt/0004-xrx200-migrate-fritz7360-v2-using-incorrect-image.patch
similarity index 100%
rename from patches/openwrt/0009-xrx200-migrate-fritz7360-v2-using-incorrect-image.patch
rename to patches/openwrt/0004-xrx200-migrate-fritz7360-v2-using-incorrect-image.patch
diff --git a/patches/openwrt/0007-kernel-bridge-Implement-MLD-Querier-wake-up-calls-Android-bug-workaround.patch b/patches/openwrt/0005-kernel-bridge-Implement-MLD-Querier-wake-up-calls-Android-bug-workaround.patch
similarity index 76%
rename from patches/openwrt/0007-kernel-bridge-Implement-MLD-Querier-wake-up-calls-Android-bug-workaround.patch
rename to patches/openwrt/0005-kernel-bridge-Implement-MLD-Querier-wake-up-calls-Android-bug-workaround.patch
index 56021388e373d56357fb5105d1256aff46316b1d..2ac522d82f8c5f65868542932a6460d9f8dadac3 100644
--- a/patches/openwrt/0007-kernel-bridge-Implement-MLD-Querier-wake-up-calls-Android-bug-workaround.patch
+++ b/patches/openwrt/0005-kernel-bridge-Implement-MLD-Querier-wake-up-calls-Android-bug-workaround.patch
@@ -27,11 +27,11 @@ Signed-off-by: Linus Lüssing <linus.luessing@c0d3.blue>
 
 diff --git a/package/network/config/netifd/patches/0001-bridge-Add-multicast_wakeupcall-option.patch b/package/network/config/netifd/patches/0001-bridge-Add-multicast_wakeupcall-option.patch
 new file mode 100644
-index 0000000000000000000000000000000000000000..e3da684dc950ea4c226705d27b23b0470499d54b
+index 0000000000000000000000000000000000000000..a00a60d63d37d94cbba116eaa0f9640683ae7fa9
 --- /dev/null
 +++ b/package/network/config/netifd/patches/0001-bridge-Add-multicast_wakeupcall-option.patch
-@@ -0,0 +1,176 @@
-+From 6db5050d9e046a486260ea23a77118db4f8a6672 Mon Sep 17 00:00:00 2001
+@@ -0,0 +1,151 @@
++From d23a49e6542dc068b12fbc7b6a4520f9fb3626f9 Mon Sep 17 00:00:00 2001
 +From: =?UTF-8?q?Linus=20L=C3=BCssing?= <linus.luessing@c0d3.blue>
 +Date: Sun, 5 Jul 2020 23:33:51 +0200
 +Subject: [PATCH] bridge: Add multicast_wakeupcall option
@@ -66,13 +66,15 @@ index 0000000000000000000000000000000000000000..e3da684dc950ea4c226705d27b23b047
 +Signed-off-by: Linus Lüssing <linus.luessing@c0d3.blue>
 +---
 + device.c       |  9 +++++++++
-+ device.h       | 37 ++++++++++++++++++++-----------------
++ device.h       |  3 +++
 + system-linux.c | 13 +++++++++++++
-+ 3 files changed, 42 insertions(+), 17 deletions(-)
++ 3 files changed, 25 insertions(+)
 +
++diff --git a/device.c b/device.c
++index 1e892191d0ec..67111895b0f9 100644
 +--- a/device.c
 ++++ b/device.c
-+@@ -47,6 +47,7 @@ static const struct blobmsg_policy dev_a
++@@ -47,6 +47,7 @@ static const struct blobmsg_policy dev_attrs[__DEV_ATTR_MAX] = {
 + 	[DEV_ATTR_NEIGHGCSTALETIME] = { .name = "neighgcstaletime", .type = BLOBMSG_TYPE_INT32 },
 + 	[DEV_ATTR_DADTRANSMITS] = { .name = "dadtransmits", .type = BLOBMSG_TYPE_INT32 },
 + 	[DEV_ATTR_MULTICAST_TO_UNICAST] = { .name = "multicast_to_unicast", .type = BLOBMSG_TYPE_BOOL },
@@ -80,7 +82,7 @@ index 0000000000000000000000000000000000000000..e3da684dc950ea4c226705d27b23b047
 + 	[DEV_ATTR_MULTICAST_ROUTER] = { .name = "multicast_router", .type = BLOBMSG_TYPE_INT32 },
 + 	[DEV_ATTR_MULTICAST_FAST_LEAVE] = { .name = "multicast_fast_leave", . type = BLOBMSG_TYPE_BOOL },
 + 	[DEV_ATTR_MULTICAST] = { .name ="multicast", .type = BLOBMSG_TYPE_BOOL },
-+@@ -261,6 +262,7 @@ device_merge_settings(struct device *dev
++@@ -261,6 +262,7 @@ device_merge_settings(struct device *dev, struct device_settings *n)
 + 	n->multicast = s->flags & DEV_OPT_MULTICAST ?
 + 		s->multicast : os->multicast;
 + 	n->multicast_to_unicast = s->multicast_to_unicast;
@@ -88,7 +90,7 @@ index 0000000000000000000000000000000000000000..e3da684dc950ea4c226705d27b23b047
 + 	n->multicast_router = s->multicast_router;
 + 	n->multicast_fast_leave = s->multicast_fast_leave;
 + 	n->learning = s->learning;
-+@@ -386,6 +388,11 @@ device_init_settings(struct device *dev,
++@@ -386,6 +388,11 @@ device_init_settings(struct device *dev, struct blob_attr **tb)
 + 		s->flags |= DEV_OPT_MULTICAST_TO_UNICAST;
 + 	}
 + 
@@ -100,7 +102,7 @@ index 0000000000000000000000000000000000000000..e3da684dc950ea4c226705d27b23b047
 + 	if ((cur = tb[DEV_ATTR_MULTICAST_ROUTER])) {
 + 		s->multicast_router = blobmsg_get_u32(cur);
 + 		if (s->multicast_router <= 2)
-+@@ -1186,6 +1193,8 @@ device_dump_status(struct blob_buf *b, s
++@@ -1203,6 +1210,8 @@ device_dump_status(struct blob_buf *b, struct device *dev)
 + 			blobmsg_add_u32(b, "dadtransmits", st.dadtransmits);
 + 		if (st.flags & DEV_OPT_MULTICAST_TO_UNICAST)
 + 			blobmsg_add_u8(b, "multicast_to_unicast", st.multicast_to_unicast);
@@ -109,6 +111,8 @@ index 0000000000000000000000000000000000000000..e3da684dc950ea4c226705d27b23b047
 + 		if (st.flags & DEV_OPT_MULTICAST_ROUTER)
 + 			blobmsg_add_u32(b, "multicast_router", st.multicast_router);
 + 		if (st.flags & DEV_OPT_MULTICAST_FAST_LEAVE)
++diff --git a/device.h b/device.h
++index 6751628b9b33..41583ac3da4f 100644
 +--- a/device.h
 ++++ b/device.h
 +@@ -44,6 +44,7 @@ enum {
@@ -119,45 +123,11 @@ index 0000000000000000000000000000000000000000..e3da684dc950ea4c226705d27b23b047
 + 	DEV_ATTR_MULTICAST_ROUTER,
 + 	DEV_ATTR_MULTICAST_FAST_LEAVE,
 + 	DEV_ATTR_MULTICAST,
-+@@ -109,23 +110,24 @@ enum {
-+ 	DEV_OPT_MTU6			= (1ULL << 12),
-+ 	DEV_OPT_DADTRANSMITS		= (1ULL << 13),
-+ 	DEV_OPT_MULTICAST_TO_UNICAST	= (1ULL << 14),
-+-	DEV_OPT_MULTICAST_ROUTER	= (1ULL << 15),
-+-	DEV_OPT_MULTICAST		= (1ULL << 16),
-+-	DEV_OPT_LEARNING		= (1ULL << 17),
-+-	DEV_OPT_UNICAST_FLOOD		= (1ULL << 18),
-+-	DEV_OPT_NEIGHGCSTALETIME	= (1ULL << 19),
-+-	DEV_OPT_MULTICAST_FAST_LEAVE	= (1ULL << 20),
-+-	DEV_OPT_SENDREDIRECTS		= (1ULL << 21),
-+-	DEV_OPT_NEIGHLOCKTIME		= (1ULL << 22),
-+-	DEV_OPT_ISOLATE			= (1ULL << 23),
-+-	DEV_OPT_IP6SEGMENTROUTING	= (1ULL << 24),
-+-	DEV_OPT_DROP_V4_UNICAST_IN_L2_MULTICAST = (1ULL << 25),
-+-	DEV_OPT_DROP_V6_UNICAST_IN_L2_MULTICAST = (1ULL << 26),
-+-	DEV_OPT_DROP_GRATUITOUS_ARP	= (1ULL << 27),
-+-	DEV_OPT_DROP_UNSOLICITED_NA	= (1ULL << 28),
-+-	DEV_OPT_ARP_ACCEPT		= (1ULL << 29),
-+-	DEV_OPT_SPEED			= (1ULL << 30),
-+-	DEV_OPT_DUPLEX			= (1ULL << 31),
-++	DEV_OPT_MULTICAST_WAKEUPCALL	= (1ULL << 15),
-++	DEV_OPT_MULTICAST_ROUTER	= (1ULL << 16),
-++	DEV_OPT_MULTICAST		= (1ULL << 17),
-++	DEV_OPT_LEARNING		= (1ULL << 18),
-++	DEV_OPT_UNICAST_FLOOD		= (1ULL << 19),
-++	DEV_OPT_NEIGHGCSTALETIME	= (1ULL << 20),
-++	DEV_OPT_MULTICAST_FAST_LEAVE	= (1ULL << 21),
-++	DEV_OPT_SENDREDIRECTS		= (1ULL << 22),
-++	DEV_OPT_NEIGHLOCKTIME		= (1ULL << 23),
-++	DEV_OPT_ISOLATE			= (1ULL << 24),
-++	DEV_OPT_IP6SEGMENTROUTING	= (1ULL << 25),
-++	DEV_OPT_DROP_V4_UNICAST_IN_L2_MULTICAST = (1ULL << 26),
-++	DEV_OPT_DROP_V6_UNICAST_IN_L2_MULTICAST = (1ULL << 27),
-++	DEV_OPT_DROP_GRATUITOUS_ARP	= (1ULL << 28),
-++	DEV_OPT_DROP_UNSOLICITED_NA	= (1ULL << 29),
-++	DEV_OPT_ARP_ACCEPT		= (1ULL << 30),
-++	DEV_OPT_SPEED			= (1ULL << 31),
-++	DEV_OPT_DUPLEX			= (1ULL << 32),
++@@ -126,6 +127,7 @@ enum {
++ 	DEV_OPT_ARP_ACCEPT		= (1ULL << 29),
++ 	DEV_OPT_SPEED			= (1ULL << 30),
++ 	DEV_OPT_DUPLEX			= (1ULL << 31),
+++	DEV_OPT_MULTICAST_WAKEUPCALL	= (1ULL << 63),
 + };
 + 
 + /* events broadcasted to all users of a device */
@@ -169,9 +139,11 @@ index 0000000000000000000000000000000000000000..e3da684dc950ea4c226705d27b23b047
 + 	unsigned int multicast_router;
 + 	bool multicast_fast_leave;
 + 	bool multicast;
++diff --git a/system-linux.c b/system-linux.c
++index cc15537ba3ad..5148a7eacce0 100644
 +--- a/system-linux.c
 ++++ b/system-linux.c
-+@@ -465,6 +465,11 @@ static void system_bridge_set_multicast_
++@@ -534,6 +534,11 @@ static void system_bridge_set_multicast_to_unicast(struct device *dev, const cha
 + 	system_set_dev_sysfs("brport/multicast_to_unicast", dev->ifname, val);
 + }
 + 
@@ -183,7 +155,7 @@ index 0000000000000000000000000000000000000000..e3da684dc950ea4c226705d27b23b047
 + static void system_bridge_set_multicast_fast_leave(struct device *dev, const char *val)
 + {
 + 	system_set_dev_sysfs("brport/multicast_fast_leave", dev->ifname, val);
-+@@ -844,8 +849,10 @@ static char *system_get_bridge(const cha
++@@ -913,8 +918,10 @@ static char *system_get_bridge(const char *name, char *buf, int buflen)
 + static void
 + system_bridge_set_wireless(struct device *bridge, struct device *dev)
 + {
@@ -192,9 +164,9 @@ index 0000000000000000000000000000000000000000..e3da684dc950ea4c226705d27b23b047
 + 	bool hairpin;
 ++	char buf[64];
 + 
-+ 	if (bridge->settings.flags & DEV_OPT_MULTICAST_TO_UNICAST &&
-+ 	    !bridge->settings.multicast_to_unicast)
-+@@ -858,6 +865,12 @@ system_bridge_set_wireless(struct device
++ 	if (dev->settings.flags & DEV_OPT_MULTICAST_TO_UNICAST)
++ 		mcast_to_ucast = dev->settings.multicast_to_unicast;
++@@ -929,6 +936,12 @@ system_bridge_set_wireless(struct device *bridge, struct device *dev)
 + 	system_bridge_set_multicast_to_unicast(dev, mcast_to_ucast ? "1" : "0");
 + 	system_bridge_set_hairpin_mode(dev, hairpin ? "1" : "0");
 + 	system_bridge_set_proxyarp_wifi(dev, dev->wireless_proxyarp ? "1" : "0");
@@ -207,11 +179,14 @@ index 0000000000000000000000000000000000000000..e3da684dc950ea4c226705d27b23b047
 + }
 + 
 + int system_bridge_addif(struct device *bridge, struct device *dev)
-diff --git a/target/linux/generic/config-5.10 b/target/linux/generic/config-5.10
-index e17991500481407d6e9110038be856d119476a37..ab4db1bf7701b508195fda32c30c5dd541f0bfde 100644
---- a/target/linux/generic/config-5.10
-+++ b/target/linux/generic/config-5.10
-@@ -737,6 +737,7 @@ CONFIG_BRIDGE=y
++-- 
++2.40.1
++
+diff --git a/target/linux/generic/config-5.15 b/target/linux/generic/config-5.15
+index 5cac839f593c704a8f5bc38b55102644773481b1..026e19993c52c45464c000e74594245be70949f7 100644
+--- a/target/linux/generic/config-5.15
++++ b/target/linux/generic/config-5.15
+@@ -761,6 +761,7 @@ CONFIG_BRIDGE=y
  # CONFIG_BRIDGE_EBT_T_NAT is not set
  # CONFIG_BRIDGE_EBT_VLAN is not set
  CONFIG_BRIDGE_IGMP_SNOOPING=y
@@ -219,13 +194,13 @@ index e17991500481407d6e9110038be856d119476a37..ab4db1bf7701b508195fda32c30c5dd5
  # CONFIG_BRIDGE_MRP is not set
  # CONFIG_BRIDGE_NETFILTER is not set
  # CONFIG_BRIDGE_NF_EBTABLES is not set
-diff --git a/target/linux/generic/hack-5.10/601-bridge-Implement-MLD-Querier-wake-up-calls-Android-b.patch b/target/linux/generic/hack-5.10/601-bridge-Implement-MLD-Querier-wake-up-calls-Android-b.patch
+diff --git a/target/linux/generic/hack-5.15/602-bridge-Implement-MLD-Querier-wake-up-calls-Android-b.patch b/target/linux/generic/hack-5.15/602-bridge-Implement-MLD-Querier-wake-up-calls-Android-b.patch
 new file mode 100644
-index 0000000000000000000000000000000000000000..17df35fe4a812b5b5118beb9239bf825be7b67ed
+index 0000000000000000000000000000000000000000..84f872ddc2433514ca5c210f73b37855723e5763
 --- /dev/null
-+++ b/target/linux/generic/hack-5.10/601-bridge-Implement-MLD-Querier-wake-up-calls-Android-b.patch
-@@ -0,0 +1,687 @@
-+From e0fd3ecf9b4f6825ad0380b759baf88ef508bed5 Mon Sep 17 00:00:00 2001
++++ b/target/linux/generic/hack-5.15/602-bridge-Implement-MLD-Querier-wake-up-calls-Android-b.patch
+@@ -0,0 +1,690 @@
++From 4529dcf18d4c5e05d30cd2d6fabfbae201e6c347 Mon Sep 17 00:00:00 2001
 +From: =?UTF-8?q?Linus=20L=C3=BCssing?= <linus.luessing@c0d3.blue>
 +Date: Mon, 29 Jun 2020 19:04:05 +0200
 +Subject: [PATCH] bridge: Implement MLD Querier wake-up calls / Android bug
@@ -263,31 +238,31 @@ index 0000000000000000000000000000000000000000..17df35fe4a812b5b5118beb9239bf825
 + net/bridge/Kconfig           |  26 ++++
 + net/bridge/br_fdb.c          |  10 ++
 + net/bridge/br_input.c        |   4 +-
-+ net/bridge/br_multicast.c    | 289 ++++++++++++++++++++++++++++++++++-
++ net/bridge/br_multicast.c    | 291 ++++++++++++++++++++++++++++++++++-
 + net/bridge/br_netlink.c      |  19 +++
-+ net/bridge/br_private.h      |  19 +++
++ net/bridge/br_private.h      |  20 +++
 + net/bridge/br_sysfs_if.c     |  18 +++
 + net/core/rtnetlink.c         |   2 +-
 + net/ipv6/mcast_snoop.c       |   3 +-
-+ 12 files changed, 383 insertions(+), 10 deletions(-)
++ 12 files changed, 386 insertions(+), 10 deletions(-)
 +
 +diff --git a/include/linux/if_bridge.h b/include/linux/if_bridge.h
-+index ea1c7d151f46..d7714f60b88a 100644
++index 18d3b264b754..5ee206fb5ee7 100644
 +--- a/include/linux/if_bridge.h
 ++++ b/include/linux/if_bridge.h
-+@@ -58,6 +58,7 @@ struct br_ip_list {
++@@ -59,6 +59,7 @@ struct br_ip_list {
 + #define BR_MRP_LOST_IN_CONT	BIT(19)
-+ #define BR_BPDU_FILTER		BIT(20)
-+ #define BR_OFFLOAD		BIT(21)
++ #define BR_TX_FWD_OFFLOAD	BIT(20)
++ #define BR_BPDU_FILTER		BIT(21)
 ++#define BR_MULTICAST_WAKEUPCALL	BIT(22)
 + 
 + #define BR_DEFAULT_AGEING_TIME	(300 * HZ)
 + 
 +diff --git a/include/net/addrconf.h b/include/net/addrconf.h
-+index e7ce719838b5..af8f153e1b5f 100644
++index 53627afab104..f31ea1726efa 100644
 +--- a/include/net/addrconf.h
 ++++ b/include/net/addrconf.h
-+@@ -235,6 +235,7 @@ void ipv6_mc_unmap(struct inet6_dev *idev);
++@@ -233,6 +233,7 @@ void ipv6_mc_unmap(struct inet6_dev *idev);
 + void ipv6_mc_remap(struct inet6_dev *idev);
 + void ipv6_mc_init_dev(struct inet6_dev *idev);
 + void ipv6_mc_destroy_dev(struct inet6_dev *idev);
@@ -296,19 +271,19 @@ index 0000000000000000000000000000000000000000..17df35fe4a812b5b5118beb9239bf825
 + void addrconf_dad_failure(struct sk_buff *skb, struct inet6_ifaddr *ifp);
 + 
 +diff --git a/include/uapi/linux/if_link.h b/include/uapi/linux/if_link.h
-+index ffeb05c061d2..1956ab99e97d 100644
++index be0ad9a79da8..baf07b15e481 100644
 +--- a/include/uapi/linux/if_link.h
 ++++ b/include/uapi/linux/if_link.h
-+@@ -525,6 +525,7 @@ enum {
-+ 	IFLA_BRPORT_MRP_RING_OPEN,
-+ 	IFLA_BRPORT_MRP_IN_OPEN,
++@@ -537,6 +537,7 @@ enum {
++ 	IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT,
++ 	IFLA_BRPORT_MCAST_EHT_HOSTS_CNT,
 + 	IFLA_BRPORT_BPDU_FILTER,
 ++	IFLA_BRPORT_MCAST_WAKEUPCALL,
 + 	__IFLA_BRPORT_MAX
 + };
 + #define IFLA_BRPORT_MAX (__IFLA_BRPORT_MAX - 1)
 +diff --git a/net/bridge/Kconfig b/net/bridge/Kconfig
-+index 80879196560c..056e80bf00c4 100644
++index 3c8ded7d3e84..1a11e22c7d51 100644
 +--- a/net/bridge/Kconfig
 ++++ b/net/bridge/Kconfig
 +@@ -48,6 +48,32 @@ config BRIDGE_IGMP_SNOOPING
@@ -345,10 +320,10 @@ index 0000000000000000000000000000000000000000..17df35fe4a812b5b5118beb9239bf825
 + 	bool "VLAN filtering"
 + 	depends on BRIDGE
 +diff --git a/net/bridge/br_fdb.c b/net/bridge/br_fdb.c
-+index bc6c8d5cd1e1..98ca86b7ca42 100644
++index 46812b659710..eec5f3770ff8 100644
 +--- a/net/bridge/br_fdb.c
 ++++ b/net/bridge/br_fdb.c
-+@@ -85,6 +85,10 @@ static void fdb_rcu_free(struct rcu_head *head)
++@@ -84,6 +84,10 @@ static void fdb_rcu_free(struct rcu_head *head)
 + {
 + 	struct net_bridge_fdb_entry *ent
 + 		= container_of(head, struct net_bridge_fdb_entry, rcu);
@@ -359,10 +334,10 @@ index 0000000000000000000000000000000000000000..17df35fe4a812b5b5118beb9239bf825
 + 	kmem_cache_free(br_fdb_cache, ent);
 + }
 + 
-+@@ -516,6 +520,12 @@ static struct net_bridge_fdb_entry *fdb_create(struct net_bridge *br,
++@@ -518,6 +522,12 @@ static struct net_bridge_fdb_entry *fdb_create(struct net_bridge *br,
++ 		fdb->key.vlan_id = vid;
++ 		fdb->flags = flags;
 + 		fdb->updated = fdb->used = jiffies;
-+ 		INIT_HLIST_HEAD(&fdb->offload_in);
-+ 		INIT_HLIST_HEAD(&fdb->offload_out);
 ++
 ++#ifdef CONFIG_BRIDGE_IGMP_SNOOPING_WAKEUPCALLS
 ++		timer_setup(&fdb->wakeupcall_timer,
@@ -373,26 +348,26 @@ index 0000000000000000000000000000000000000000..17df35fe4a812b5b5118beb9239bf825
 + 						  &fdb->rhnode,
 + 						  br_fdb_rht_params)) {
 +diff --git a/net/bridge/br_input.c b/net/bridge/br_input.c
-+index 64f3eaa3879d..a449a1f60f1b 100644
++index fe80b8e4c2d7..879ae7adb845 100644
 +--- a/net/bridge/br_input.c
 ++++ b/net/bridge/br_input.c
-+@@ -163,8 +163,10 @@ int br_handle_frame_finish(struct net *net, struct sock *sk, struct sk_buff *skb
++@@ -164,8 +164,10 @@ int br_handle_frame_finish(struct net *net, struct sock *sk, struct sk_buff *skb
 + 	if (dst) {
 + 		unsigned long now = jiffies;
 + 
 +-		if (test_bit(BR_FDB_LOCAL, &dst->flags))
 ++		if (test_bit(BR_FDB_LOCAL, &dst->flags)) {
-++			br_multicast_wakeupcall_rcv(br, p, skb, vid);
+++			br_multicast_wakeupcall_rcv(brmctx, pmctx, skb, vid);
 + 			return br_pass_frame_up(skb);
 ++		}
 + 
 + 		if (now != dst->used)
 + 			dst->used = now;
 +diff --git a/net/bridge/br_multicast.c b/net/bridge/br_multicast.c
-+index e5328a2777ec..a2f45bd523ab 100644
++index db4f2641d1cd..6822dfbafa71 100644
 +--- a/net/bridge/br_multicast.c
 ++++ b/net/bridge/br_multicast.c
-+@@ -833,15 +833,16 @@ static struct sk_buff *br_ip6_multicast_alloc_query(struct net_bridge *br,
++@@ -950,15 +950,16 @@ static struct sk_buff *br_ip6_multicast_alloc_query(struct net_bridge_mcast *brm
 + 						    const struct in6_addr *group,
 + 						    bool with_srcs, bool over_llqt,
 + 						    u8 sflag, u8 *igmp_type,
@@ -411,24 +386,24 @@ index 0000000000000000000000000000000000000000..17df35fe4a812b5b5118beb9239bf825
 + 	__sum16 *csum = NULL;
 + 	struct ipv6hdr *ip6h;
 + 	struct mld_msg *mldq;
-+@@ -922,9 +923,13 @@ static struct sk_buff *br_ip6_multicast_alloc_query(struct net_bridge *br,
++@@ -1040,9 +1041,13 @@ static struct sk_buff *br_ip6_multicast_alloc_query(struct net_bridge_mcast *brm
 + 
 + 	/* ICMPv6 */
 + 	skb_set_transport_header(skb, skb->len);
 +-	interval = ipv6_addr_any(group) ?
-+-			br->multicast_query_response_interval :
-+-			br->multicast_last_member_interval;
++-			brmctx->multicast_query_response_interval :
++-			brmctx->multicast_last_member_interval;
 ++	if (delay) {
 ++		interval = ipv6_addr_any(group) ?
-++				br->multicast_query_response_interval :
-++				br->multicast_last_member_interval;
+++				brmctx->multicast_query_response_interval :
+++				brmctx->multicast_last_member_interval;
 ++		interval = jiffies_to_msecs(interval);
 ++	}
 ++
 + 	*igmp_type = ICMPV6_MGM_QUERY;
-+ 	switch (br->multicast_mld_version) {
++ 	switch (brmctx->multicast_mld_version) {
 + 	case 1:
-+@@ -932,7 +937,7 @@ static struct sk_buff *br_ip6_multicast_alloc_query(struct net_bridge *br,
++@@ -1050,7 +1055,7 @@ static struct sk_buff *br_ip6_multicast_alloc_query(struct net_bridge_mcast *brm
 + 		mldq->mld_type = ICMPV6_MGM_QUERY;
 + 		mldq->mld_code = 0;
 + 		mldq->mld_cksum = 0;
@@ -437,7 +412,7 @@ index 0000000000000000000000000000000000000000..17df35fe4a812b5b5118beb9239bf825
 + 		mldq->mld_reserved = 0;
 + 		mldq->mld_mca = *group;
 + 		csum = &mldq->mld_cksum;
-+@@ -1022,7 +1027,7 @@ static struct sk_buff *br_multicast_alloc_query(struct net_bridge *br,
++@@ -1141,7 +1146,7 @@ static struct sk_buff *br_multicast_alloc_query(struct net_bridge_mcast *brmctx,
 + 						    &ip6_dst, &group->dst.ip6,
 + 						    with_srcs, over_lmqt,
 + 						    sflag, igmp_type,
@@ -446,7 +421,7 @@ index 0000000000000000000000000000000000000000..17df35fe4a812b5b5118beb9239bf825
 + 	}
 + #endif
 + 	}
-+@@ -1427,6 +1432,168 @@ static void br_multicast_select_own_querier(struct net_bridge *br,
++@@ -1619,6 +1624,169 @@ static void br_multicast_select_own_querier(struct net_bridge_mcast *brmctx,
 + #endif
 + }
 + 
@@ -580,16 +555,17 @@ index 0000000000000000000000000000000000000000..17df35fe4a812b5b5118beb9239bf825
 ++	}
 ++}
 ++
-++static void br_multicast_schedule_wakeupcalls(struct net_bridge *br,
-++					      struct net_bridge_port *port,
-++					      const struct in6_addr *group)
+++static void
+++br_multicast_schedule_wakeupcalls(struct net_bridge_mcast *brmctx,
+++				  struct net_bridge_mcast_port *pmctx,
+++				  const struct in6_addr *group)
 ++{
 ++	struct net_bridge_fdb_entry *fdb;
 ++	unsigned long delay;
 ++
 ++	rcu_read_lock();
-++	hlist_for_each_entry_rcu(fdb, &br->fdb_list, fdb_node) {
-++		if (!fdb->dst || fdb->dst->dev != port->dev)
+++	hlist_for_each_entry_rcu(fdb, &brmctx->br->fdb_list, fdb_node) {
+++		if (!fdb->dst || fdb->dst->dev != pmctx->port->dev)
 ++			continue;
 ++
 ++		/* Wake-up calls to VLANs unsupported for now */
@@ -602,8 +578,8 @@ index 0000000000000000000000000000000000000000..17df35fe4a812b5b5118beb9239bf825
 ++		 * than max response delay to anticipate the extra round trip.
 ++		 */
 ++		delay =	ipv6_addr_any(group) ?
-++				br->multicast_query_response_interval :
-++				br->multicast_last_member_interval;
+++				brmctx->multicast_query_response_interval :
+++				brmctx->multicast_last_member_interval;
 ++		delay = prandom_u32() % (3 * delay / 4);
 ++
 ++		timer_reduce(&fdb->wakeupcall_timer, jiffies + delay);
@@ -612,24 +588,24 @@ index 0000000000000000000000000000000000000000..17df35fe4a812b5b5118beb9239bf825
 ++}
 ++#endif /* CONFIG_BRIDGE_IGMP_SNOOPING_WAKEUPCALLS */
 ++
-+ static void __br_multicast_send_query(struct net_bridge *br,
-+ 				      struct net_bridge_port *port,
++ static void __br_multicast_send_query(struct net_bridge_mcast *brmctx,
++ 				      struct net_bridge_mcast_port *pmctx,
 + 				      struct net_bridge_port_group *pg,
-+@@ -1455,6 +1622,13 @@ static void __br_multicast_send_query(struct net_bridge *br,
-+ 			dev_net(port->dev), NULL, skb, NULL, skb->dev,
++@@ -1651,6 +1819,13 @@ static void __br_multicast_send_query(struct net_bridge_mcast *brmctx,
++ 			dev_net(pmctx->port->dev), NULL, skb, NULL, skb->dev,
 + 			br_dev_queue_push_xmit);
 + 
 ++#ifdef CONFIG_BRIDGE_IGMP_SNOOPING_WAKEUPCALLS
-++		if (port->wakeupcall_num_rings &&
+++		if (pmctx->port->wakeupcall_num_rings &&
 ++		    group->proto == htons(ETH_P_IPV6))
-++			br_multicast_schedule_wakeupcalls(br, port,
+++			br_multicast_schedule_wakeupcalls(brmctx, pmctx,
 ++							  &group->dst.ip6);
 ++#endif
 ++
 + 		if (over_lmqt && with_srcs && sflag) {
 + 			over_lmqt = false;
 + 			goto again_under_lmqt;
-+@@ -3164,6 +3338,98 @@ int br_multicast_rcv(struct net_bridge *br, struct net_bridge_port *port,
++@@ -3801,6 +3976,99 @@ int br_multicast_rcv(struct net_bridge_mcast **brmctx,
 + 	return ret;
 + }
 + 
@@ -683,8 +659,8 @@ index 0000000000000000000000000000000000000000..17df35fe4a812b5b5118beb9239bf825
 ++	return true;
 ++}
 ++
-++static void br_multicast_wakeupcall_send_mldq(struct net_bridge *br,
-++					      struct net_bridge_port *port,
+++static void br_multicast_wakeupcall_send_mldq(struct net_bridge_mcast *brmctx,
+++					      struct net_bridge_mcast_port *pmctx,
 ++					      const u8 *eth_dst)
 ++{
 ++	const struct in6_addr group = BR_MC_IN6_ZERO;
@@ -697,38 +673,39 @@ index 0000000000000000000000000000000000000000..17df35fe4a812b5b5118beb9239bf825
 ++	 */
 ++	ipv6_addr_set(&ip6_dst, htonl(0xff020000), 0, 0, htonl(1));
 ++
-++	skb = br_ip6_multicast_alloc_query(br, NULL, &ip6_dst, &group, false,
-++					   false, false, &igmp_type, NULL,
-++					   false);
+++	skb = br_ip6_multicast_alloc_query(brmctx, pmctx, NULL, &ip6_dst,
+++					   &group, false, false, false,
+++					   &igmp_type, NULL, false);
 ++	if (!skb)
 ++		return;
 ++
-++	skb->dev = port->dev;
+++	skb->dev = pmctx->port->dev;
 ++	ether_addr_copy(eth_hdr(skb)->h_dest, eth_dst);
 ++
-++	br_multicast_count(br, port, skb, igmp_type,
+++	br_multicast_count(brmctx->br, pmctx->port, skb, igmp_type,
 ++			   BR_MCAST_DIR_TX);
 ++	NF_HOOK(NFPROTO_BRIDGE, NF_BR_LOCAL_OUT,
-++		dev_net(port->dev), NULL, skb, NULL, skb->dev,
+++		dev_net(pmctx->port->dev), NULL, skb, NULL, skb->dev,
 ++		br_dev_queue_push_xmit);
 ++}
 ++
-++void br_multicast_wakeupcall_rcv(struct net_bridge *br,
-++				 struct net_bridge_port *port,
+++void br_multicast_wakeupcall_rcv(struct net_bridge_mcast *brmctx,
+++				 struct net_bridge_mcast_port *pmctx,
 ++				 struct sk_buff *skb, u16 vid)
 ++{
-++	if (!br_multicast_wakeupcall_check(br, port, skb, vid))
+++	if (!br_multicast_wakeupcall_check(brmctx->br, pmctx->port, skb, vid))
 ++		return;
 ++
-++	br_multicast_wakeupcall_send_mldq(br, port, eth_hdr(skb)->h_source);
+++	br_multicast_wakeupcall_send_mldq(brmctx, pmctx,
+++					  eth_hdr(skb)->h_source);
 ++}
 ++
 ++#endif /* CONFIG_BRIDGE_IGMP_SNOOPING_WAKEUPCALLS */
 ++
-+ static void br_multicast_query_expired(struct net_bridge *br,
++ static void br_multicast_query_expired(struct net_bridge_mcast *brmctx,
 + 				       struct bridge_mcast_own_query *query,
 + 				       struct bridge_mcast_querier *querier)
-+@@ -3444,6 +3710,15 @@ int br_multicast_set_port_router(struct net_bridge_port *p, unsigned long val)
++@@ -4325,6 +4593,15 @@ int br_multicast_set_vlan_router(struct net_bridge_vlan *v, u8 mcast_router)
 + 	return err;
 + }
 + 
@@ -741,14 +718,14 @@ index 0000000000000000000000000000000000000000..17df35fe4a812b5b5118beb9239bf825
 ++	return 0;
 ++}
 ++
-+ static void br_multicast_start_querier(struct net_bridge *br,
++ static void br_multicast_start_querier(struct net_bridge_mcast *brmctx,
 + 				       struct bridge_mcast_own_query *query)
 + {
 +diff --git a/net/bridge/br_netlink.c b/net/bridge/br_netlink.c
-+index e8116a4438b9..b544889fb7fe 100644
++index ae6007309a17..09d4861b7336 100644
 +--- a/net/bridge/br_netlink.c
 ++++ b/net/bridge/br_netlink.c
-+@@ -151,6 +151,9 @@ static inline size_t br_port_info_size(void)
++@@ -198,6 +198,9 @@ static inline size_t br_port_info_size(void)
 + 		+ nla_total_size_64bit(sizeof(u64)) /* IFLA_BRPORT_HOLD_TIMER */
 + #ifdef CONFIG_BRIDGE_IGMP_SNOOPING
 + 		+ nla_total_size(sizeof(u8))	/* IFLA_BRPORT_MULTICAST_ROUTER */
@@ -758,8 +735,8 @@ index 0000000000000000000000000000000000000000..17df35fe4a812b5b5118beb9239bf825
 + #endif
 + 		+ nla_total_size(sizeof(u16))	/* IFLA_BRPORT_GROUP_FWD_MASK */
 + 		+ nla_total_size(sizeof(u8))	/* IFLA_BRPORT_MRP_RING_OPEN */
-+@@ -243,6 +246,11 @@ static int br_port_fill_attrs(struct sk_buff *skb,
-+ 		       p->multicast_router))
++@@ -296,6 +299,11 @@ static int br_port_fill_attrs(struct sk_buff *skb,
++ 			p->multicast_eht_hosts_cnt))
 + 		return -EMSGSIZE;
 + #endif
 ++#ifdef CONFIG_BRIDGE_IGMP_SNOOPING_WAKEUPCALLS
@@ -770,7 +747,7 @@ index 0000000000000000000000000000000000000000..17df35fe4a812b5b5118beb9239bf825
 + 
 + 	/* we might be called only with br->lock */
 + 	rcu_read_lock();
-+@@ -723,6 +731,7 @@ static const struct nla_policy br_port_policy[IFLA_BRPORT_MAX + 1] = {
++@@ -823,6 +831,7 @@ static const struct nla_policy br_port_policy[IFLA_BRPORT_MAX + 1] = {
 + 	[IFLA_BRPORT_PROXYARP_WIFI] = { .type = NLA_U8 },
 + 	[IFLA_BRPORT_MULTICAST_ROUTER] = { .type = NLA_U8 },
 + 	[IFLA_BRPORT_MCAST_TO_UCAST] = { .type = NLA_U8 },
@@ -778,7 +755,7 @@ index 0000000000000000000000000000000000000000..17df35fe4a812b5b5118beb9239bf825
 + 	[IFLA_BRPORT_MCAST_FLOOD] = { .type = NLA_U8 },
 + 	[IFLA_BRPORT_BCAST_FLOOD] = { .type = NLA_U8 },
 + 	[IFLA_BRPORT_VLAN_TUNNEL] = { .type = NLA_U8 },
-+@@ -872,6 +881,16 @@ static int br_setport(struct net_bridge_port *p, struct nlattr *tb[])
++@@ -952,6 +961,16 @@ static int br_setport(struct net_bridge_port *p, struct nlattr *tb[],
 + 	}
 + #endif
 + 
@@ -796,13 +773,13 @@ index 0000000000000000000000000000000000000000..17df35fe4a812b5b5118beb9239bf825
 + 		u16 fwd_mask = nla_get_u16(tb[IFLA_BRPORT_GROUP_FWD_MASK]);
 + 
 +diff --git a/net/bridge/br_private.h b/net/bridge/br_private.h
-+index 61b5b81b6828..6390d2fe88f6 100644
++index bd218c2b2cd9..32191519b500 100644
 +--- a/net/bridge/br_private.h
 ++++ b/net/bridge/br_private.h
-+@@ -214,6 +214,10 @@ struct net_bridge_fdb_entry {
-+ 		};
-+ 		struct rcu_head			rcu;
-+ 	};
++@@ -269,6 +269,10 @@ struct net_bridge_fdb_entry {
++ 	unsigned long			used;
++ 
++ 	struct rcu_head			rcu;
 ++
 ++#ifdef CONFIG_BRIDGE_IGMP_SNOOPING_WAKEUPCALLS
 ++	struct timer_list		wakeupcall_timer;
@@ -810,28 +787,29 @@ index 0000000000000000000000000000000000000000..17df35fe4a812b5b5118beb9239bf825
 + };
 + 
 + #define MDB_PG_FLAGS_PERMANENT	BIT(0)
-+@@ -333,6 +337,7 @@ struct net_bridge_port {
-+ 	struct timer_list		multicast_router_timer;
++@@ -382,6 +386,7 @@ struct net_bridge_port {
++ 	u32				multicast_eht_hosts_limit;
++ 	u32				multicast_eht_hosts_cnt;
 + 	struct hlist_head		mglist;
-+ 	struct hlist_node		rlist;
 ++	u8				wakeupcall_num_rings;
 + #endif
 + 
 + #ifdef CONFIG_SYSFS
-+@@ -1065,6 +1070,20 @@ static inline int br_multicast_igmp_type(const struct sk_buff *skb)
++@@ -1418,6 +1423,21 @@ br_multicast_ctx_options_equal(const struct net_bridge_mcast *brmctx1,
 + }
 + #endif
 + 
 ++#ifdef CONFIG_BRIDGE_IGMP_SNOOPING_WAKEUPCALLS
-++void br_multicast_wakeupcall_rcv(struct net_bridge *br,
-++				 struct net_bridge_port *port,
+++void br_multicast_wakeupcall_rcv(struct net_bridge_mcast *brmctx,
+++				 struct net_bridge_mcast_port *pmctx,
 ++				 struct sk_buff *skb, u16 vid);
 ++void br_multicast_send_wakeupcall(struct timer_list *t);
 ++int br_multicast_set_wakeupcall(struct net_bridge_port *p, unsigned long val);
 ++#else
-++static inline void br_multicast_wakeupcall_rcv(struct net_bridge *br,
-++					       struct net_bridge_port *port,
-++					       struct sk_buff *skb, u16 vid)
+++static inline void
+++br_multicast_wakeupcall_rcv(struct net_bridge_mcast *brmctx,
+++			    struct net_bridge_mcast_port *pmctx,
+++			    struct sk_buff *skb, u16 vid)
 ++{
 ++}
 ++#endif /* CONFIG_BRIDGE_IGMP_SNOOPING_WAKEUPCALLS */
@@ -840,10 +818,10 @@ index 0000000000000000000000000000000000000000..17df35fe4a812b5b5118beb9239bf825
 + #ifdef CONFIG_BRIDGE_VLAN_FILTERING
 + bool br_allowed_ingress(const struct net_bridge *br,
 +diff --git a/net/bridge/br_sysfs_if.c b/net/bridge/br_sysfs_if.c
-+index 969eb6ca0776..88b74a5a7ccb 100644
++index 9ee9c60738e2..9dcd4a9204db 100644
 +--- a/net/bridge/br_sysfs_if.c
 ++++ b/net/bridge/br_sysfs_if.c
-+@@ -254,6 +254,21 @@ BRPORT_ATTR_FLAG(multicast_fast_leave, BR_MULTICAST_FAST_LEAVE);
++@@ -260,6 +260,21 @@ BRPORT_ATTR_FLAG(multicast_fast_leave, BR_MULTICAST_FAST_LEAVE);
 + BRPORT_ATTR_FLAG(multicast_to_unicast, BR_MULTICAST_TO_UNICAST);
 + #endif
 + 
@@ -865,7 +843,7 @@ index 0000000000000000000000000000000000000000..17df35fe4a812b5b5118beb9239bf825
 + static const struct brport_attribute *brport_attrs[] = {
 + 	&brport_attr_path_cost,
 + 	&brport_attr_priority,
-+@@ -279,6 +294,9 @@ static const struct brport_attribute *brport_attrs[] = {
++@@ -285,6 +300,9 @@ static const struct brport_attribute *brport_attrs[] = {
 + 	&brport_attr_multicast_router,
 + 	&brport_attr_multicast_fast_leave,
 + 	&brport_attr_multicast_to_unicast,
@@ -876,15 +854,15 @@ index 0000000000000000000000000000000000000000..17df35fe4a812b5b5118beb9239bf825
 + 	&brport_attr_proxyarp,
 + 	&brport_attr_proxyarp_wifi,
 +diff --git a/net/core/rtnetlink.c b/net/core/rtnetlink.c
-+index ccb62f7d1054..3b269aafd3b5 100644
++index e0fa875832a0..caf454185dc8 100644
 +--- a/net/core/rtnetlink.c
 ++++ b/net/core/rtnetlink.c
 +@@ -55,7 +55,7 @@
 + #include <net/net_namespace.h>
 + 
 + #define RTNL_MAX_TYPE		50
-+-#define RTNL_SLAVE_MAX_TYPE	37
-++#define RTNL_SLAVE_MAX_TYPE	38
++-#define RTNL_SLAVE_MAX_TYPE	41
+++#define RTNL_SLAVE_MAX_TYPE	42
 + 
 + struct rtnl_link {
 + 	rtnl_doit_func		doit;
@@ -910,5 +888,5 @@ index 0000000000000000000000000000000000000000..17df35fe4a812b5b5118beb9239bf825
 + /**
 +  * ipv6_mc_check_mld - checks whether this is a sane MLD packet
 +-- 
-+2.36.1
++2.40.1
 +
diff --git a/patches/openwrt/0005-ramips-add-MT7621-WiFi-devpath-migration.patch b/patches/openwrt/0005-ramips-add-MT7621-WiFi-devpath-migration.patch
deleted file mode 100644
index 5e02c78041054e8c2cd8c7494343718aa68ed699..0000000000000000000000000000000000000000
--- a/patches/openwrt/0005-ramips-add-MT7621-WiFi-devpath-migration.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-From: David Bauer <mail@david-bauer.net>
-Date: Sat, 18 Jun 2022 02:37:56 +0200
-Subject: ramips: add MT7621 WiFi devpath migration
-
-Add a migration script to migrate the device path of PCIe WiFi hardware
-from OpenWrt 19.07 to the one used with OpenWrt 21.02+.
-
-Signed-off-by: David Bauer <mail@david-bauer.net>
-
-diff --git a/target/linux/ramips/mt7621/base-files/etc/hotplug.d/ieee80211/00-wifi-migration b/target/linux/ramips/mt7621/base-files/etc/hotplug.d/ieee80211/00-wifi-migration
-new file mode 100644
-index 0000000000000000000000000000000000000000..17fd4a58ff2d56694743e149292746c136b6f27a
---- /dev/null
-+++ b/target/linux/ramips/mt7621/base-files/etc/hotplug.d/ieee80211/00-wifi-migration
-@@ -0,0 +1,38 @@
-+#!/bin/sh
-+
-+# Migrate WiFi path from 19.07 to 21.02+
-+
-+WIFI_PATH_CHANGED=0
-+
-+. /lib/functions.sh
-+
-+migrate_wifi_path() {
-+	local section="$1"
-+	local path
-+
-+	config_get path ${section} path
-+	case ${path} in
-+		"pci0000:00/0000:00:00.0/0000:01:00.0")
-+			path="1e140000.pcie/pci0000:00/0000:00:00.0/0000:01:00.0"
-+			WIFI_PATH_CHANGED=1
-+		;;
-+		"pci0000:00/0000:00:01.0/0000:02:00.0")
-+			path="1e140000.pcie/pci0000:00/0000:00:01.0/0000:02:00.0"
-+			WIFI_PATH_CHANGED=1
-+		;;
-+		*)
-+			return 0
-+		;;
-+	esac
-+
-+	uci set wireless.${section}.path=${path}
-+}
-+
-+[ "${ACTION}" = "add" ] && {
-+	[ ! -e /etc/config/wireless ] && return 0
-+
-+	config_load wireless
-+	config_foreach migrate_wifi_path wifi-device
-+
-+	[ "${WIFI_PATH_CHANGED}" = "1" ] && uci commit wireless
-+}
diff --git a/patches/openwrt/0006-lantiq-xrx200-make-DSA-images-swconfig-upgradable.patch b/patches/openwrt/0006-lantiq-xrx200-make-DSA-images-swconfig-upgradable.patch
deleted file mode 100644
index 061a898c9ff4c8b6aa1c41de06756f3b1ab4733b..0000000000000000000000000000000000000000
--- a/patches/openwrt/0006-lantiq-xrx200-make-DSA-images-swconfig-upgradable.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From: David Bauer <mail@david-bauer.net>
-Date: Tue, 5 Jul 2022 23:49:31 +0200
-Subject: lantiq-xrx200: make DSA images swconfig upgradable
-
-diff --git a/target/linux/lantiq/image/tp-link.mk b/target/linux/lantiq/image/tp-link.mk
-index 756105b94c7f844439132ab57837c9ac87d231ca..5563968de9ab3f491fa89d755fcc6e6fff79948f 100644
---- a/target/linux/lantiq/image/tp-link.mk
-+++ b/target/linux/lantiq/image/tp-link.mk
-@@ -1,7 +1,7 @@
- DEVICE_VARS += TPLINK_FLASHLAYOUT TPLINK_HWID TPLINK_HWREV TPLINK_HWREVADD TPLINK_HVERSION
- 
- define Device/dsa-migration
--  DEVICE_COMPAT_VERSION := 1.1
-+  DEVICE_COMPAT_VERSION := 1.0
-   DEVICE_COMPAT_MESSAGE := Config cannot be migrated from swconfig to DSA
- endef
- 
-diff --git a/target/linux/lantiq/image/vr9.mk b/target/linux/lantiq/image/vr9.mk
-index deea3996670fcef6d2a546373425c4ca5d92734b..d23b80e94e5548ccb19738f22c29c75fa19ab1e7 100644
---- a/target/linux/lantiq/image/vr9.mk
-+++ b/target/linux/lantiq/image/vr9.mk
-@@ -1,7 +1,7 @@
- DEVICE_VARS += NETGEAR_BOARD_ID NETGEAR_HW_ID
- 
- define Device/dsa-migration
--  DEVICE_COMPAT_VERSION := 1.1
-+  DEVICE_COMPAT_VERSION := 1.0
-   DEVICE_COMPAT_MESSAGE := Config cannot be migrated from swconfig to DSA
- endef
- 
diff --git a/patches/openwrt/0008-hostapd-don-t-select-indoor-channel-on-outdoor-operation.patch b/patches/openwrt/0008-hostapd-don-t-select-indoor-channel-on-outdoor-operation.patch
deleted file mode 100644
index 4d3909e21ace2fbc421f0390f186963b8b47862c..0000000000000000000000000000000000000000
--- a/patches/openwrt/0008-hostapd-don-t-select-indoor-channel-on-outdoor-operation.patch
+++ /dev/null
@@ -1,74 +0,0 @@
-From: David Bauer <mail@david-bauer.net>
-Date: Sat, 10 Sep 2022 01:06:02 +0200
-Subject: hostapd: don't select indoor channel on outdoor operation
-
-Don't select channels designated for exclusive-indoor use when the
-country3 element is set on outdoor operation.
-
-Signed-off-by: David Bauer <mail@david-bauer.net>
-(cherry picked from commit 5110cf7ebdd5af57f98fe4581ce4c5ddb0a2bf86)
-
-diff --git a/package/network/services/hostapd/patches/800-acs-don-t-select-indoor-channel-on-outdoor-operation.patch b/package/network/services/hostapd/patches/800-acs-don-t-select-indoor-channel-on-outdoor-operation.patch
-new file mode 100644
-index 0000000000000000000000000000000000000000..96ebdefae9e710a350fa44a359896071b142af67
---- /dev/null
-+++ b/package/network/services/hostapd/patches/800-acs-don-t-select-indoor-channel-on-outdoor-operation.patch
-@@ -0,0 +1,58 @@
-+From 37528a5205cb0b9e2238b7d97fb2ff5457448f1c Mon Sep 17 00:00:00 2001
-+From: David Bauer <mail@david-bauer.net>
-+Date: Thu, 8 Sep 2022 01:45:41 +0200
-+Subject: [PATCH] acs: don't select indoor channel on outdoor operation
-+
-+Don't select channels designated for exclusive-indoor use when the
-+country3 element is set on outdoor operation.
-+
-+Signed-off-by: David Bauer <mail@david-bauer.net>
-+---
-+ src/ap/acs.c | 9 +++++++++
-+ src/ap/dfs.c | 3 +++
-+ 2 files changed, 12 insertions(+)
-+
-+--- a/src/ap/acs.c
-++++ b/src/ap/acs.c
-+@@ -552,6 +552,9 @@ static void acs_survey_mode_interference
-+ 		if (chan->max_tx_power < iface->conf->min_tx_power)
-+ 			continue;
-+ 
-++		if (chan->flag & HOSTAPD_CHAN_INDOOR_ONLY && iface->conf->country[2] == 0x4f)
-++			continue;
-++
-+ 		wpa_printf(MSG_DEBUG, "ACS: Survey analysis for channel %d (%d MHz)",
-+ 			   chan->chan, chan->freq);
-+ 
-+@@ -686,6 +689,9 @@ acs_find_ideal_chan_mode(struct hostapd_
-+ 		if (chan->max_tx_power < iface->conf->min_tx_power)
-+ 			continue;
-+ 
-++		if (chan->flag & HOSTAPD_CHAN_INDOOR_ONLY && iface->conf->country[2] == 0x4f)
-++			continue;
-++
-+ 		if (!chan_bw_allowed(chan, bw, 1, 1)) {
-+ 			wpa_printf(MSG_DEBUG,
-+ 				   "ACS: Channel %d: BW %u is not supported",
-+@@ -1065,6 +1071,9 @@ static int * acs_request_scan_add_freqs(
-+ 		if (chan->max_tx_power < iface->conf->min_tx_power)
-+ 			continue;
-+ 
-++		if (chan->flag & HOSTAPD_CHAN_INDOOR_ONLY && iface->conf->country[2] == 0x4f)
-++			continue;
-++
-+ 		*freq++ = chan->freq;
-+ 	}
-+ 
-+--- a/src/ap/dfs.c
-++++ b/src/ap/dfs.c
-+@@ -282,6 +282,9 @@ static int dfs_find_channel(struct hosta
-+ 		if (chan->max_tx_power < iface->conf->min_tx_power)
-+ 			continue;
-+ 
-++		if (chan->flag & HOSTAPD_CHAN_INDOOR_ONLY && iface->conf->country[2] == 0x4f)
-++			continue;
-++
-+ 		if (ret_chan && idx == channel_idx) {
-+ 			wpa_printf(MSG_DEBUG, "Selected channel %d (%d)",
-+ 				   chan->freq, chan->chan);
diff --git a/patches/openwrt/0010-kconfig-abort-configuration-on-unset-symbol.patch b/patches/openwrt/0010-kconfig-abort-configuration-on-unset-symbol.patch
deleted file mode 100644
index 5116508c6316a3931247b1de59a3aeff608185b3..0000000000000000000000000000000000000000
--- a/patches/openwrt/0010-kconfig-abort-configuration-on-unset-symbol.patch
+++ /dev/null
@@ -1,75 +0,0 @@
-From: David Bauer <mail@david-bauer.net>
-Date: Fri, 11 Nov 2022 13:37:07 +0100
-Subject: kconfig: abort configuration on unset symbol
-
-This fixes the initial patch to cover all cases where unset symbols are
-handled in the code.
-
-Fixes commit eaa9c94c7574 ("generic: Kconfig: exit on unset symbol")
-
-Signed-off-by: David Bauer <mail@david-bauer.net>
-
-diff --git a/target/linux/generic/hack-5.10/205-kconfig-abort-configuration-on-unset-symbol.patch b/target/linux/generic/hack-5.10/205-kconfig-abort-configuration-on-unset-symbol.patch
-new file mode 100644
-index 0000000000000000000000000000000000000000..bd5c54d4b8b73b36c9f5b809447a8e76fce19e5d
---- /dev/null
-+++ b/target/linux/generic/hack-5.10/205-kconfig-abort-configuration-on-unset-symbol.patch
-@@ -0,0 +1,41 @@
-+From 310e8e04a05d9eb43fa9dd7f00143300afcaa37a Mon Sep 17 00:00:00 2001
-+From: David Bauer <mail@david-bauer.net>
-+Date: Fri, 11 Nov 2022 13:33:44 +0100
-+Subject: [PATCH] kconfig: abort configuration on unset symbol
-+
-+When a target configuration has unset Kconfig symbols, the build will
-+fail when OpenWrt is compiled with V=s and stdin is connected to a tty.
-+
-+In case OpenWrt is compiled without either of these preconditions, the
-+build will succeed with the symbols in question being unset.
-+
-+Modify the kernel configuration in a way it fails on unset symbols
-+regardless of the aforementioned preconditions.
-+
-+Signed-off-by: David Bauer <mail@david-bauer.net>
-+---
-+ scripts/kconfig/conf.c | 6 ++++++
-+ 1 file changed, 6 insertions(+)
-+
-+--- a/scripts/kconfig/conf.c
-++++ b/scripts/kconfig/conf.c
-+@@ -109,6 +109,9 @@ static int conf_askvalue(struct symbol *
-+ 		}
-+ 		/* fall through */
-+ 	case oldaskconfig:
-++		if (!tty_stdio && getenv("FAIL_ON_UNCONFIGURED")) {
-++			exit(1);
-++		}
-+ 		fflush(stdout);
-+ 		xfgets(line, sizeof(line), stdin);
-+ 		return 1;
-+@@ -303,6 +306,9 @@ static int conf_choice(struct menu *menu
-+ 			}
-+ 			/* fall through */
-+ 		case oldaskconfig:
-++			if (!tty_stdio && getenv("FAIL_ON_UNCONFIGURED")) {
-++				exit(1);
-++			}
-+ 			fflush(stdout);
-+ 			xfgets(line, sizeof(line), stdin);
-+ 			strip(line);
-diff --git a/target/linux/generic/hack-5.10/205-kconfig-exit.patch b/target/linux/generic/hack-5.10/205-kconfig-exit.patch
-deleted file mode 100644
-index c3fb7a1f999e56da34b0a15565ce36098cfba7fb..0000000000000000000000000000000000000000
---- a/target/linux/generic/hack-5.10/205-kconfig-exit.patch
-+++ /dev/null
-@@ -1,11 +0,0 @@
----- a/scripts/kconfig/conf.c
--+++ b/scripts/kconfig/conf.c
--@@ -215,6 +215,8 @@ static int conf_sym(struct menu *menu)
-- 				break;
-- 			continue;
-- 		case 0:
--+			if (!sym_has_value(sym) && !tty_stdio && getenv("FAIL_ON_UNCONFIGURED"))
--+				exit(1);
-- 			newval = oldval;
-- 			break;
-- 		case '?':
diff --git a/patches/openwrt/0011-ath79-combine-OCEDO-dual-firmware-partitions.patch b/patches/openwrt/0011-ath79-combine-OCEDO-dual-firmware-partitions.patch
deleted file mode 100644
index 1a217ca06ababa673ad5c97a6e99d2a4bcbe86a1..0000000000000000000000000000000000000000
--- a/patches/openwrt/0011-ath79-combine-OCEDO-dual-firmware-partitions.patch
+++ /dev/null
@@ -1,115 +0,0 @@
-From: David Bauer <mail@david-bauer.net>
-Date: Tue, 15 Nov 2022 15:25:40 +0100
-Subject: ath79: combine OCEDO dual firmware-partitions
-
-In order to maximize the available space on OCEDO boards using a
-dual-image partition layout, combine the two OS partitions into a single
-partition.
-
-This allows users to access more usable space for additional packages.
-
-Don't limit the usable image size to the size of a single OS partition.
-The initial installation has to be done with an older version of OpenWrt
-in case the generated image exceeds the space of a single OS
-partition in the future.
-
-Signed-off-by: David Bauer <mail@david-bauer.net>
-(cherry picked from commit eded295cd7fd53bfa5afcb67a1b91cfda0523ba6)
-
-diff --git a/target/linux/ath79/dts/ar9344_ocedo_raccoon.dts b/target/linux/ath79/dts/ar9344_ocedo_raccoon.dts
-index 0bbeb2b533b3fbbdcce53e094412d459ee762d85..3ecd20e2aa8fe04164cddbc84e0eb800e049c011 100644
---- a/target/linux/ath79/dts/ar9344_ocedo_raccoon.dts
-+++ b/target/linux/ath79/dts/ar9344_ocedo_raccoon.dts
-@@ -91,15 +91,10 @@
- 			};
- 
- 			partition@50000 {
-+				/* Dual-Flash layout combined */
- 				compatible = "denx,uimage";
- 				label = "firmware";
--				reg = <0x050000 0x740000>;
--			};
--
--			partition@790000 {
--				label = "vendor";
--				reg = <0x790000 0x740000>;
--				read-only;
-+				reg = <0x050000 0xe80000>;
- 			};
- 
- 			partition@ed0000 {
-diff --git a/target/linux/ath79/dts/qca9558_ocedo_koala.dts b/target/linux/ath79/dts/qca9558_ocedo_koala.dts
-index 66f8c6589b20221edc41a2f882b28229ff8633b9..de9e1bc19c4d03707f5b921ee5e9fe7422f461bb 100644
---- a/target/linux/ath79/dts/qca9558_ocedo_koala.dts
-+++ b/target/linux/ath79/dts/qca9558_ocedo_koala.dts
-@@ -88,15 +88,10 @@
- 			};
- 
- 			partition@50000 {
-+				/* Dual-Flash layout combined */
- 				compatible = "denx,uimage";
- 				label = "firmware";
--				reg = <0x050000 0x740000>;
--			};
--
--			partition@790000 {
--				label = "vendor";
--				reg = <0x790000 0x740000>;
--				read-only;
-+				reg = <0x050000 0xe80000>;
- 			};
- 
- 			partition@ed0000 {
-diff --git a/target/linux/ath79/dts/qca9558_ocedo_ursus.dts b/target/linux/ath79/dts/qca9558_ocedo_ursus.dts
-index 2dc4c07e918c50eb522100eb7f72c8804d5ba5fb..f8b3681bb7f143a498d5cb64897af335b970c43b 100644
---- a/target/linux/ath79/dts/qca9558_ocedo_ursus.dts
-+++ b/target/linux/ath79/dts/qca9558_ocedo_ursus.dts
-@@ -59,15 +59,10 @@
- 			};
- 
- 			partition@50000 {
-+				/* Dual-Flash layout combined */
- 				compatible = "denx,uimage";
- 				label = "firmware";
--				reg = <0x050000 0x740000>;
--			};
--
--			partition@790000 {
--				label = "vendor";
--				reg = <0x790000 0x740000>;
--				read-only;
-+				reg = <0x050000 0xe80000>;
- 			};
- 
- 			partition@ed0000 {
-diff --git a/target/linux/ath79/image/generic.mk b/target/linux/ath79/image/generic.mk
-index f1542e4e38f7540dd9facf4c40f0b271b9ea1e45..87d01a42eda274f9197f3382d955b87ecf615f7d 100644
---- a/target/linux/ath79/image/generic.mk
-+++ b/target/linux/ath79/image/generic.mk
-@@ -1803,7 +1803,7 @@ define Device/ocedo_koala
-   DEVICE_MODEL := Koala
-   DEVICE_PACKAGES := kmod-ath10k-ct ath10k-firmware-qca988x-ct
-   SUPPORTED_DEVICES += koala
--  IMAGE_SIZE := 7424k
-+  IMAGE_SIZE := 14848k
- endef
- TARGET_DEVICES += ocedo_koala
- 
-@@ -1811,7 +1811,7 @@ define Device/ocedo_raccoon
-   SOC := ar9344
-   DEVICE_VENDOR := Ocedo
-   DEVICE_MODEL := Raccoon
--  IMAGE_SIZE := 7424k
-+  IMAGE_SIZE := 14848k
- endef
- TARGET_DEVICES += ocedo_raccoon
- 
-@@ -1820,7 +1820,7 @@ define Device/ocedo_ursus
-   DEVICE_VENDOR := Ocedo
-   DEVICE_MODEL := Ursus
-   DEVICE_PACKAGES := kmod-ath10k-ct ath10k-firmware-qca988x-ct
--  IMAGE_SIZE := 7424k
-+  IMAGE_SIZE := 14848k
- endef
- TARGET_DEVICES += ocedo_ursus
- 
diff --git a/patches/openwrt/0012-ath79-combine-UniFi-AC-dual-firmware-partitions.patch b/patches/openwrt/0012-ath79-combine-UniFi-AC-dual-firmware-partitions.patch
deleted file mode 100644
index a67277f05f80a6912a87275af651f504f7281e05..0000000000000000000000000000000000000000
--- a/patches/openwrt/0012-ath79-combine-UniFi-AC-dual-firmware-partitions.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-From: David Bauer <mail@david-bauer.net>
-Date: Thu, 17 Nov 2022 22:53:33 +0100
-Subject: ath79: combine UniFi AC dual firmware-partitions
-
-In order to maximize the available space on UniFi AC boards using a
-dual-image partition layout, combine the two OS partitions into a single
-partition.
-
-This allows users to access more usable space for additional packages.
-
-Don't limit the usable image size to the size of a single OS partition.
-The initial installation has to be done with an older version of OpenWrt
-in case the generated image exceeds the space of a single kernel
-partition in the future.
-
-Signed-off-by: David Bauer <mail@david-bauer.net>
-(cherry picked from commit e4a76673ff4f655ba0698d9edb9efbacd0f82fff)
-
-diff --git a/target/linux/ath79/dts/qca9563_ubnt_unifiac.dtsi b/target/linux/ath79/dts/qca9563_ubnt_unifiac.dtsi
-index 2e407c348642cf5145f79c15288856fa141b0512..6704ec983b0beed5421a59f663cf8db6d650f559 100644
---- a/target/linux/ath79/dts/qca9563_ubnt_unifiac.dtsi
-+++ b/target/linux/ath79/dts/qca9563_ubnt_unifiac.dtsi
-@@ -69,17 +69,12 @@
- 			};
- 
- 			partition@70000 {
-+				/* Combine kernel0 & kernel1 */
- 				label = "firmware";
--				reg = <0x070000 0x790000>;
-+				reg = <0x070000 0xf20000>;
- 				compatible = "denx,uimage";
- 			};
- 
--			partition@800000 {
--				label = "kernel1";
--				reg = <0x800000 0x790000>;
--				read-only;
--			};
--
- 			partition@f90000 {
- 				label = "bs";
- 				reg = <0xf90000 0x020000>;
-diff --git a/target/linux/ath79/image/generic-ubnt.mk b/target/linux/ath79/image/generic-ubnt.mk
-index 7642c59e02848741996d6f9dcaf923d5dbaf6880..d6898c79d6b4d51d19813781e086db8086537318 100644
---- a/target/linux/ath79/image/generic-ubnt.mk
-+++ b/target/linux/ath79/image/generic-ubnt.mk
-@@ -221,7 +221,7 @@ TARGET_DEVICES += ubnt_unifi
- define Device/ubnt_unifiac
-   DEVICE_VENDOR := Ubiquiti
-   SOC := qca9563
--  IMAGE_SIZE := 7744k
-+  IMAGE_SIZE := 15488k
-   DEVICE_PACKAGES := kmod-ath10k-ct ath10k-firmware-qca988x-ct
- endef
- 
diff --git a/patches/openwrt/0013-mac80211-mask-nested-A-MSDU-support-for-mesh.patch b/patches/openwrt/0013-mac80211-mask-nested-A-MSDU-support-for-mesh.patch
deleted file mode 100644
index 90d9d2d3e830984d1fbda9c5902088970496ee61..0000000000000000000000000000000000000000
--- a/patches/openwrt/0013-mac80211-mask-nested-A-MSDU-support-for-mesh.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-From: David Bauer <mail@david-bauer.net>
-Date: Fri, 8 Oct 2021 00:30:23 +0200
-Subject: mac80211: mask nested A-MSDU support for mesh
-
-mac80211 incorrectly processes A-MSDUs contained in A-MPDU frames. This
-results in dropped packets and severely impacted throughput.
-
-As a workaround, don't indicate support for A-MSDUs contained in
-A-MPDUs. This improves throughput over mesh links by factor 10.
-
-This patch can be dropped after verifying OpenWrt 23.xx fixes do indeed
-fix this issue.
-
-Ref: https://github.com/openwrt/mt76/issues/450
-
-Signed-off-by: David Bauer <mail@david-bauer.net>
-(cherry picked from commit f96744ba6b2fd444f4f7575d234c7579bd3030cd)
-
-diff --git a/package/kernel/mac80211/patches/subsys/800-mac80211-mask-nested-A-MSDU-support-for-mesh.patch b/package/kernel/mac80211/patches/subsys/800-mac80211-mask-nested-A-MSDU-support-for-mesh.patch
-new file mode 100644
-index 0000000000000000000000000000000000000000..415c6dfb803639cd726ee3f9b35359712b3e075d
---- /dev/null
-+++ b/package/kernel/mac80211/patches/subsys/800-mac80211-mask-nested-A-MSDU-support-for-mesh.patch
-@@ -0,0 +1,31 @@
-+From 313d8c18385f10957402b475f9b0c209ceab6c5a Mon Sep 17 00:00:00 2001
-+From: David Bauer <mail@david-bauer.net>
-+Date: Fri, 8 Oct 2021 00:25:19 +0200
-+Subject: [PATCH] mac80211: mask nested A-MSDU support for mesh
-+
-+mac80211 incorrectly processes A-MSDUs contained in A-MPDU frames. This
-+results in dropped packets and severely impacted throughput.
-+
-+As a workaround, don't indicate support for A-MSDUs contained in
-+A-MPDUs. This improves throughput over mesh links by factor 10.
-+
-+Ref: https://github.com/openwrt/mt76/issues/450
-+
-+Signed-off-by: David Bauer <mail@david-bauer.net>
-+---
-+ net/mac80211/agg-rx.c | 4 +++-
-+ 1 file changed, 3 insertions(+), 1 deletion(-)
-+
-+--- a/net/mac80211/agg-rx.c
-++++ b/net/mac80211/agg-rx.c
-+@@ -251,7 +251,9 @@ static void ieee80211_send_addba_resp(st
-+ 	mgmt->u.action.u.addba_resp.action_code = WLAN_ACTION_ADDBA_RESP;
-+ 	mgmt->u.action.u.addba_resp.dialog_token = dialog_token;
-+ 
-+-	capab = u16_encode_bits(amsdu, IEEE80211_ADDBA_PARAM_AMSDU_MASK);
-++	capab = 0;
-++	if (!sta->mesh)
-++		capab = u16_encode_bits(amsdu, IEEE80211_ADDBA_PARAM_AMSDU_MASK);
-+ 	capab |= u16_encode_bits(policy, IEEE80211_ADDBA_PARAM_POLICY_MASK);
-+ 	capab |= u16_encode_bits(tid, IEEE80211_ADDBA_PARAM_TID_MASK);
-+ 	capab |= u16_encode_bits(buf_size, IEEE80211_ADDBA_PARAM_BUF_SIZE_MASK);
diff --git a/patches/packages/packages/0001-perl-don-t-build-in-parallel-and-bump-release.patch b/patches/packages/packages/0001-perl-don-t-build-in-parallel-and-bump-release.patch
index 35c03582e63dd835af361ba53b30a87ef0afad05..49e0da3d64e143ec0c29a6b56dbd01b2f76b7d42 100644
--- a/patches/packages/packages/0001-perl-don-t-build-in-parallel-and-bump-release.patch
+++ b/patches/packages/packages/0001-perl-don-t-build-in-parallel-and-bump-release.patch
@@ -8,7 +8,7 @@ https://github.com/openwrt/packages/issues/8238
 https://github.com/openwrt/packages/pull/17274
 
 diff --git a/lang/perl/Makefile b/lang/perl/Makefile
-index 99302cb1a4414c309b238342d3f1b8bc7f43dd47..66c6ce7aaf342e404b8d9a133a7e396d0108a31f 100644
+index 40532b5f0163ffffc3ce8dfb697592c3a81e0af0..17e9202847b555a8e78a14f22b3536c2ceef9dd7 100644
 --- a/lang/perl/Makefile
 +++ b/lang/perl/Makefile
 @@ -34,8 +34,8 @@ PKG_BUILD_DIR:=$(BUILD_DIR)/perl/$(PKG_NAME)-$(PKG_VERSION)
diff --git a/patches/packages/routing/0004-oonf-olsrd2-add-support-to-check-if-service-is-running.patch b/patches/packages/routing/0004-oonf-olsrd2-add-support-to-check-if-service-is-running.patch
deleted file mode 100644
index 4b8c9aad769d693440b910ebdbbbc6400ff4368d..0000000000000000000000000000000000000000
--- a/patches/packages/routing/0004-oonf-olsrd2-add-support-to-check-if-service-is-running.patch
+++ /dev/null
@@ -1,20 +0,0 @@
-From: Maciej Krüger <mkg20001@gmail.com>
-Date: Sun, 10 Apr 2022 01:58:41 +0200
-Subject: oonf-olsrd2: add support to check if service is running
-
-diff --git a/oonf-olsrd2/files/olsrd2.init b/oonf-olsrd2/files/olsrd2.init
-index debae9883258b821a5ea0aecebe879ddc84e29eb..b6c1e9a5522788005db850ceaf6699aa1eee6877 100755
---- a/oonf-olsrd2/files/olsrd2.init
-+++ b/oonf-olsrd2/files/olsrd2.init
-@@ -3,4 +3,11 @@
- START=82
- DAEMON='olsrd2'
- 
-+running() {
-+  test -e "/tmp/run/olsrd2.pid" && test -e "/proc/$(cat "/tmp/run/olsrd2.pid")" && return 0
-+  return 1
-+}
-+
-+extra_command "running" "Check if service is running"
-+
- . /lib/functions/oonf_init.sh
diff --git a/patches/packages/routing/0005-oonf-olsrd2-fix-building-with-multiple-plugins.patch b/patches/packages/routing/0005-oonf-olsrd2-fix-building-with-multiple-plugins.patch
deleted file mode 100644
index df37b7e803692a65786002ffd0d090d7cd4f7ce5..0000000000000000000000000000000000000000
--- a/patches/packages/routing/0005-oonf-olsrd2-fix-building-with-multiple-plugins.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-From: Maciej Krüger <mkg20001@gmail.com>
-Date: Mon, 2 Jan 2023 01:45:37 +0100
-Subject: oonf-olsrd2: fix building with multiple plugins
-
-Code to replace colons wasn't working (debian stable)
-Took it from stackoverflow, works now
-
-diff --git a/oonf-olsrd2/Makefile b/oonf-olsrd2/Makefile
-index 40190edb72547587bc53bb3bee150398b7413aa2..6067003a846340fb0e6221c2473959480b12fb4b 100644
---- a/oonf-olsrd2/Makefile
-+++ b/oonf-olsrd2/Makefile
-@@ -17,8 +17,8 @@ CMAKE_INSTALL:=1
- include $(INCLUDE_DIR)/package.mk
- include $(INCLUDE_DIR)/cmake.mk
- 
--SPACE:=
--SPACE+=
-+# ref https://stackoverflow.com/a/10571900/3990041
-+SPACE:= $(subst ,, )
- CMAKE_OPTIONAL_PLUGINS:= $(subst $(SPACE),;,$(strip \
-         $(if $(filter y,$(CONFIG_OONF_NHDP_AUTOLL4)),auto_ll4,) \
-         $(if $(filter y,$(CONFIG_OONF_OLSRV2_LAN_IMPORT)),lan_import,) \
diff --git a/patches/packages/routing/0006-oonf-olsrd2-add-missing-static-plugin-olsrv2_lan.patch b/patches/packages/routing/0006-oonf-olsrd2-add-missing-static-plugin-olsrv2_lan.patch
deleted file mode 100644
index 7d9c3a4bc16f0e107789402f434f8ae883cf02c5..0000000000000000000000000000000000000000
--- a/patches/packages/routing/0006-oonf-olsrd2-add-missing-static-plugin-olsrv2_lan.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From: Patrick Grimm <patrick@lunatiki.de>
-Date: Sun, 8 Jan 2023 18:14:36 +0100
-Subject: oonf-olsrd2: add missing static plugin olsrv2_lan
-
-Signed-off-by: Patrick Grimm <patrick@lunatiki.de>
-
-diff --git a/oonf-olsrd2/Config.in b/oonf-olsrd2/Config.in
-index 1cc037aff3ebc9a2a1ea2d2c94857d62b8b28006..b0d7d7cb2767f7b12d089ccd44042e6788dcf9de 100644
---- a/oonf-olsrd2/Config.in
-+++ b/oonf-olsrd2/Config.in
-@@ -44,4 +44,16 @@
- 			The MPR plugin reduce the routing graph to limit the overhead of the OLSRv2 protocol
- 		default n
- 
-+	config OONF_OLSRV2_LAN
-+		bool "New config option for Locally attached entries"
-+		help
-+			Adds the 'lan' section to the config to configure LANs without setting multiple settings in a single key/value pair
-+		default y
-+
-+	config OONF_OLSRV2_OLD_LAN
-+		bool "Legacy option for Locally attached entries"
-+		help
-+			Adds the olsr 'lan' config key in the olsrv2 section
-+		default n
-+
- 	endmenu
-diff --git a/oonf-olsrd2/Makefile b/oonf-olsrd2/Makefile
-index 6067003a846340fb0e6221c2473959480b12fb4b..f3d81fcfe61936635280afd997ec487ed0ffa2fc 100644
---- a/oonf-olsrd2/Makefile
-+++ b/oonf-olsrd2/Makefile
-@@ -27,6 +27,8 @@ CMAKE_OPTIONAL_PLUGINS:= $(subst $(SPACE),;,$(strip \
-         $(if $(filter y,$(CONFIG_OONF_GENERIC_REMOTECONTROL)),remotecontrol,) \
-         $(if $(filter y,$(CONFIG_OONF_OLSRV2_MPR)),mpr,) \
-         $(if $(filter y,$(CONFIG_OONF_GENERIC_HTTP)),http,) \
-+        $(if $(filter y,$(CONFIG_OONF_OLSRV2_LAN)),olsrv2_lan,) \
-+        $(if $(filter y,$(CONFIG_OONF_OLSRV2_OLD_LAN)),olsrv2_old_lan,) \
-     ))
- 
- BUILD_TYPE:= $(if $(filter y,$(CONFIG_DEBUG)),Debug,Release)
diff --git a/patches/packages/routing/0007-oonf-olsrd2-change-to-git-version-from-2022-08-25.patch b/patches/packages/routing/0007-oonf-olsrd2-change-to-git-version-from-2022-08-25.patch
deleted file mode 100644
index 29c04eb665caea03683f4c9c3f1c863c357dd774..0000000000000000000000000000000000000000
--- a/patches/packages/routing/0007-oonf-olsrd2-change-to-git-version-from-2022-08-25.patch
+++ /dev/null
@@ -1,238 +0,0 @@
-From: Patrick Grimm <patrick@lunatiki.de>
-Date: Fri, 13 Jan 2023 14:28:28 +0100
-Subject: oonf-olsrd2: change to git version from 2022-08-25
-
-Compile tested: mips_24kc, arm_cortex-a9_vfpv3-d16, i386_pentium4, x86_64, i386_pentium-mmx, mipsel_24kc
-Description:
-fb15d54d (HEAD -> master, origin/master, origin/HEAD) Merge pull request #23 from fhuberts/master
-a8e81e99 Merge pull request #43 from jpo-github-work/no-dh-systemd
-8cc65a10 Merge pull request #48 from jpo-github-work/fix_lan_import
-c7d404f8 build lan_import
-bbbd4f3d the package dh-systemd is not longer present in recent Ubuntu versions
-1bd73550 Merge pull request #42 from jpo-github-work/master
-1a5fa2a7 add missing extern to global symbol
-a0750337 Merge pull request #40 from trofi/fix-gcc-10-build
-5ea168ce fix build for gcc-10 (-fno-common default)
-02f69178 Merge pull request #7 from aaaaalbert/rename-to-BUILDING.md-#4
-9dc46726 Merge pull request #26 from sumpfralle/patch-1
-ced3ace0 Fix schema name for logging in README
-c6dd02a1 test_config_delta: fix the build on GCC 9
-8397c64e Merge pull request #19 in FKIEA/oonf-os from develop to master
-1d227500 Merge pull request #18 in FKIEA/oonf-os from bugfix/MOTOR-65-oonf-does-not-compile-cleanly-on-current-lede to develop
-f40be238 include unistd.h in oonf.h to keep modern GCC (e.g. in LEDE) from complaining about ssize_t
-8f2408f7 Merge pull request #17 in FKIEA/oonf-os from bugfix/MOTOR-62-fix-segfault-in-layer2_import to develop
-95fbcb35 Do avl_for_each_elements_with_key_safe() by hand until we had a closer look at the macro
-3fcd8fc5 Merge pull request #16 in FKIEA/oonf-os from bugfix/MOTOR-61-fix-clock-conversion-to-from-string to develop
-e9b08759 use scaling factor when dealing with fixed integer conversion calls
-65dc25e8 Merge pull request #15 in FKIEA/oonf-os from bugfix/MOTOR-60-prevent-division-by-zero-in-dat-metric to develop
-2f615dab Prevent division by zero through (malformed) RLQ value
-eb59d287 Merge pull request #14 in FKIEA/oonf-os from bugfix/MOTOR-59-fix-nhdp-status-for-ip-level-interfaces to develop
-8d424b24 Fix NHDP link status for interfaces without MAC addresses
-26557e54 Merge pull request #13 in FKIEA/oonf-os from bugfix/MOTOR-54-add-telnet-command-to-manipulate-layer2-data to develop
-eecc3333 Add missing telnet dependency to layer2-config
-0e24b09f Merge pull request #12 in FKIEA/oonf-os from feature/MOTOR-57-allow-import-of-non-unicast-routes to develop
-965c2f73 Allow "non-unicast" routes to be imported
-710b353b Merge pull request #11 in FKIEA/oonf-os from feature/MOTOR-54-add-telnet-command-to-manipulate-layer2-data to develop
-243e17e3 Allow setting l2config via telnet
-40f24ab9 Partly working telnet code for l2config
-1db358dc Merge pull request #10 in FKIEA/oonf-os from feature/MOTOR-54-add-telnet-command-to-manipulate-layer2-data to develop
-c33d680e Add LID capability to oonf_layer2 and l2config subsystem
-312d09d4 Merge pull request #9 in FKIEA/oonf-os from develop to master
-1551b86d Automatic merge from master -> develop
-c154c31b Merge pull request #8 in FKIEA/oonf-os from feature/MOTOR-52-ablehnen-von-konfigurationen-mit-unbekannten-werten to develop
-bad48ebc Do not accept configuration with unknown sections/values if 'global.failfast' is true. Set 'global.failfast' to true by default
-9996fe65 Merge pull request #7 in FKIEA/oonf-os from bugfix/MOTOR-51-vif-socket-is-blocking to develop
-05682c0c Make VIF sockets non-blocking
-9455e50f Automatic merge from master -> develop
-d05cc410 Merge pull request #6 in FKIEA/oonf-os from develop to master
-7416ba8d Merge pull request #5 in FKIEA/oonf-os from bugfix/MOTOR-50-olsr-compilation-fails-on-ubuntu-16.04 to develop
-63345654 Reorder libraries for testcase creation to prevent Ubuntu 16.04 Bug (MOTOR-50)
-3a7e5e8e Automatic merge from master -> develop
-d592fbf7 Merge pull request #4 in FKIEA/oonf-os from develop to master
-e489f97a Merge pull request #3 in FKIEA/oonf-os from feature/MOTOR-48-tracking-von-metadaten-in-layer2-database to develop
-3c1984f8 Fix compilation issue with "no-debug" logging
-52c6b569 Merge pull request #2 in FKIEA/oonf-os from feature/MOTOR-48-tracking-von-metadaten-in-layer2-database to develop
-3765eb01 Cleanup ffdat metric to be able to import rx_throughput.
-bdee26ba Improve combination of DAT speed and L2 throughput values
-a1c3ea66 Allow ffdat metric to consider rx_throughput field
-c8ec8301 Fix token validation
-ad72038e Improve DAT-Metric by shifting hysteresis to the loss side and consider other layer2 parameters
-9addfba4 Fix fixed integer arithmetics handling
-f9ccd26b Track scaling factors of layer2 data elements. Handle different scaling for DLEP conversion.
-603e48e8 Fix router_id for Netjson domain output
-6aebcf99 Merge pull request #1 in FKIEA/oonf-os from develop to master
-234e9109 Improve hello interval overwriting
-7fc0f50b Add SNR to layer2 neighbor data
-f9ebcf8e Fix bad 'is in list' test in stream socket processing
-29a2a385 Set path prefix length in CMakeListsGlobal
-a2ea9186 Replace VIF name pointer with array
-e8f04530 Simplify test case creation
-271ff097 Move 'enable test' to CMakeListsGlobal.cmake
-0482db42 Fix no-debug/no-info compilation
-38edcced Add more doxygen comments for layer2 import
-becd33bd Merge branch 'feature/MOTOR-47-route-redistribution-for-dlep' of ssh://team.fkie.fraunhofer.de:7999/fkiea/oonf-os into feature/MOTOR-47-route-redistribution-for-dlep
-1a709b5c Add missing comment for subsystem shutdown initiation, remove empty files
-c7a68650 Fix the handling of neighbor IPs in dlep radio.
-c255ead5 Add avl_for_each_elements_with_key_safe() macro and do some basic tests
-5f835533 Don't filter for protocol for routes being removed (linux does not report protocol in this case)
-83b19c54 Allow imported routed to be combined by l2import into the same l2 network. Allow multiple IP addresses being reported by DLEP
-d7d69064 (origin/staging) Merge branch 'develop' into staging
-5274ce6a Fix tarball generator
-6dd188ed Use relative path for calling archive builder
-988aac6e Move included cmake files into CMakeListsGlobal to allow inclusion in wrapper projects
-2a072733 Cleanup build installation directories
-fc1fbbed Move test include to include directory
-4043202f Rename "subsystems" directory to "base"
-2e3578ba Add "config query" command to remotecontrol plugin to query a configuration value including default
-48c2cdcb Prevent theoretical buffer overlow to make Coverity more happy (Coverity #181104)
-19583704 Fix possible Null reference in colored logging (Coverity #188445)
-6fa04505 Fix GCC 8 warning about small buffer
-356d3b9b Allow wrapped build directory around OONF directory
-11be4696 Cleanup and simplify OONF directory strucure
-f1a30ade Restructure import of FIB entries to go through the layer2 db allow export of layer2 IP entries to FIB allow transmission of layer2 IP entries over DLEP
-32bf829c Remove debugging code accidently left in for LID preparation
-f6b884b1 (origin/packet_socket_bug) Hotfix for closing UDP socket behavior mentioned in Github Issue 14
-e7e5b685 Add missing build target for test creation
-88efd166 Cleanup build system for tests and add generic 'build_tests' target.
-2e5803bd Add more linklayer data options and a better query function
-2dac53d9 Restructure ffdat plugin as preparation for external metric calculation Fix compiler warning in routing code
-8cb39863 Remove static modifier from olsrv2/nhdp logging sources. Otherwise they cannot be used by the other source files of the plugins.
-3a2dd24e Fix return values of DLEP signal processing callbacks
-b2e18c91 Fix handling of lid-length TLV in DLEP session ACK
-2b7b3ef8 Add doxygen comments for link-id code
-bc24cba0 Implement lid_length mechanism into DLEP
-b12ef6ea Add basic link-id capability to DLEP
-8cc2d03e Add a few example configurations to the repository
-1e3fb288 Add support for Link-ID to layer2 database
-28adaf5a Remove (done) TODO mark for outgoing TCP connection error handling
-2bfbcff3 Improve error handling for failed outgoing TCP connections
-1d1e8876 Add better debugging output to packet socket code
-3b89103e Fix issues with DLEP udp_mode none and reconnect
-d4d64875 Add function to calculate IPv6 address from MAC
-bdc2c2e6 Fixes for doxygen comments
-5e2a7b48 Fix variable used in layer2 generator loop
-a38b6847 Fix DLEP handling of mandatory TLVs
-50e4e1b8 Add netaddr constants for MAC48 prefixes for IPv4/6 multicast
-
-Signed-off-by: Patrick Grimm <patrick@lunatiki.de>
-
-diff --git a/oonf-olsrd2/Makefile b/oonf-olsrd2/Makefile
-index f3d81fcfe61936635280afd997ec487ed0ffa2fc..fe00dd1bc7969016856d5c3a19241d7750366352 100644
---- a/oonf-olsrd2/Makefile
-+++ b/oonf-olsrd2/Makefile
-@@ -1,16 +1,13 @@
- include $(TOPDIR)/rules.mk
- 
- PKG_NAME:=oonf-olsrd2
--PKG_VERSION:=v0.15.1
--PKG_REV:=bffb88b040659b237c4c91b6b42dbbb47431750e
--PKG_RELEASE:=$(PKG_REV)
-+PKG_RELEASE:=1
- 
--PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
--PKG_SOURCE_URL:=https://github.com/OLSR/OONF.git
- PKG_SOURCE_PROTO:=git
--PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
--PKG_SOURCE_VERSION:=$(PKG_REV)
--PKG_MIRROR_HASH:=2e38140e804e7fc0138d0893416c4f19b1ca43bd9de066e8b028bd0d59ac9255
-+PKG_SOURCE_URL:=https://github.com/OLSR/OONF.git
-+PKG_SOURCE_DATE:=2022-08-25
-+PKG_SOURCE_VERSION:=fb15d54d6a7a087cb0c5ec37c49804f6ce432396
-+PKG_MIRROR_HASH:=e8b2e7890f7315694649bb26c22be09554cba3724bae5419ea047101a4f5d03d
- 
- CMAKE_INSTALL:=1
- 
-@@ -40,8 +37,7 @@ CMAKE_OPTIONS+=-D CMAKE_BUILD_TYPE:String=$(BUILD_TYPE) \
-                -D UCI:Bool=true \
-                -D OONF_APP_DEFAULT_CFG_HANDLER:String=uci \
-                -D OONF_STATIC_PLUGINS:String="class;clock;duplicate_set;layer2;packet_socket;rfc5444;socket;stream_socket;telnet;timer;viewer;os_clock;os_fd;os_interface;os_routing;os_system;nhdp;olsrv2;ff_dat_metric;neighbor_probing;nl80211_listener;link_config;layer2info;systeminfo;cfg_uciloader;cfg_compact;nhdpinfo;olsrv2info;netjsoninfo;${CMAKE_OPTIONAL_PLUGINS}" \
--               -D OONF_LIB_GIT:String=v$(PKG_VERSION)-archive \
--               -D OONF_VERSION:String=$(PKG_VERSION) \
-+               -D VERSION_SUB_TAG:String=$(PKG_SOURCE_DATE) \
-                -D INSTALL_LIB_DIR:Path=lib/oonf \
-                -D INSTALL_INCLUDE_DIR:Path=include/oonf \
-                -D INSTALL_CMAKE_DIR:Path=lib/oonf \
-diff --git a/oonf-olsrd2/patches/010-gcc10.patch b/oonf-olsrd2/patches/010-gcc10.patch
-deleted file mode 100644
-index e0b141ac8a764e5e3920d155df102560b9fadf24..0000000000000000000000000000000000000000
---- a/oonf-olsrd2/patches/010-gcc10.patch
-+++ /dev/null
-@@ -1,40 +0,0 @@
----- a/src-plugins/generic/nl80211_listener/nl80211_internal.h
--+++ b/src-plugins/generic/nl80211_listener/nl80211_internal.h
--@@ -49,6 +49,6 @@
-- #include "core/oonf_logging.h"
-- 
-- /* headers only for use inside the NL80211 subsystem */
---enum oonf_log_source LOG_NL80211;
--+extern enum oonf_log_source LOG_NL80211;
-- 
-- #endif /* NL80211_INTERNAL_H_ */
----- a/src-plugins/nhdp/nhdp/nhdp_internal.h
--+++ b/src-plugins/nhdp/nhdp/nhdp_internal.h
--@@ -49,8 +49,8 @@
-- #include "core/oonf_logging.h"
-- 
-- /* headers only for use inside the NHDP subsystem */
---enum oonf_log_source LOG_NHDP;
---enum oonf_log_source LOG_NHDP_R;
---enum oonf_log_source LOG_NHDP_W;
--+extern enum oonf_log_source LOG_NHDP;
--+extern enum oonf_log_source LOG_NHDP_R;
--+extern enum oonf_log_source LOG_NHDP_W;
-- 
-- #endif /* NHDP_INTERNAL_H_ */
----- a/src-plugins/olsrv2/olsrv2/olsrv2_internal.h
--+++ b/src-plugins/olsrv2/olsrv2/olsrv2_internal.h
--@@ -50,9 +50,9 @@
-- #include "core/oonf_logging.h"
-- 
-- /* headers only for use inside the OLSRv2 subsystem */
---EXPORT enum oonf_log_source LOG_OLSRV2;
---EXPORT enum oonf_log_source LOG_OLSRV2_R;
---EXPORT enum oonf_log_source LOG_OLSRV2_ROUTING;
---EXPORT enum oonf_log_source LOG_OLSRV2_W;
--+EXPORT extern enum oonf_log_source LOG_OLSRV2;
--+EXPORT extern enum oonf_log_source LOG_OLSRV2_R;
--+EXPORT extern enum oonf_log_source LOG_OLSRV2_ROUTING;
--+EXPORT extern enum oonf_log_source LOG_OLSRV2_W;
-- 
-- #endif /* OLSRV2_INTERNAL_H_ */
-diff --git a/oonf-olsrd2/patches/020-static.patch b/oonf-olsrd2/patches/020-static.patch
-deleted file mode 100644
-index 87146bf1ae325a59440100b99f4726eb36857c47..0000000000000000000000000000000000000000
---- a/oonf-olsrd2/patches/020-static.patch
-+++ /dev/null
-@@ -1,32 +0,0 @@
----- a/src-plugins/nhdp/nhdp/nhdp.c
--+++ b/src-plugins/nhdp/nhdp/nhdp.c
--@@ -187,9 +187,9 @@ static struct oonf_rfc5444_protocol *_pr
-- static struct netaddr _originator_v4, _originator_v6;
-- 
-- /* logging sources for NHDP subsystem */
---static enum oonf_log_source LOG_NHDP;
---static enum oonf_log_source LOG_NHDP_R;
---static enum oonf_log_source LOG_NHDP_W;
--+enum oonf_log_source LOG_NHDP;
--+enum oonf_log_source LOG_NHDP_R;
--+enum oonf_log_source LOG_NHDP_W;
-- 
-- /**
--  * Initialize additional logging sources for NHDP
----- a/src-plugins/olsrv2/olsrv2/olsrv2.c
--+++ b/src-plugins/olsrv2/olsrv2/olsrv2.c
--@@ -255,10 +255,10 @@ static uint64_t _overwrite_tc_interval;
-- static uint64_t _overwrite_tc_validity;
-- 
-- /* Additional logging sources */
---static enum oonf_log_source LOG_OLSRV2;
---static enum oonf_log_source LOG_OLSRV2_R;
---static enum oonf_log_source LOG_OLSRV2_ROUTING;
---static enum oonf_log_source LOG_OLSRV2_W;
--+enum oonf_log_source LOG_OLSRV2;
--+enum oonf_log_source LOG_OLSRV2_R;
--+enum oonf_log_source LOG_OLSRV2_ROUTING;
--+enum oonf_log_source LOG_OLSRV2_W;
-- 
-- /**
--  * Initialize additional logging sources for NHDP
diff --git a/patches/packages/routing/0008-oonf-olsrd2-add-git-version-for-compile-in.patch b/patches/packages/routing/0008-oonf-olsrd2-add-git-version-for-compile-in.patch
deleted file mode 100644
index 68e985a1e2df61a0d8256f2aec52212fb427c205..0000000000000000000000000000000000000000
--- a/patches/packages/routing/0008-oonf-olsrd2-add-git-version-for-compile-in.patch
+++ /dev/null
@@ -1,20 +0,0 @@
-From: Patrick Grimm <patrick@lunatiki.de>
-Date: Sat, 14 Jan 2023 00:09:34 +0100
-Subject: oonf-olsrd2: add git version for compile in
-
-Compile tested: mips_24kc, arm_cortex-a9_vfpv3-d16, i386_pentium4, x86_64, i386_pentium-mmx, mipsel_24kc
-
-Signed-off-by: Patrick Grimm <patrick@lunatiki.de>
-
-diff --git a/oonf-olsrd2/Makefile b/oonf-olsrd2/Makefile
-index fe00dd1bc7969016856d5c3a19241d7750366352..15e5731a1612ae35cdc1d842dc0087cc31d4b290 100644
---- a/oonf-olsrd2/Makefile
-+++ b/oonf-olsrd2/Makefile
-@@ -37,6 +37,7 @@ CMAKE_OPTIONS+=-D CMAKE_BUILD_TYPE:String=$(BUILD_TYPE) \
-                -D UCI:Bool=true \
-                -D OONF_APP_DEFAULT_CFG_HANDLER:String=uci \
-                -D OONF_STATIC_PLUGINS:String="class;clock;duplicate_set;layer2;packet_socket;rfc5444;socket;stream_socket;telnet;timer;viewer;os_clock;os_fd;os_interface;os_routing;os_system;nhdp;olsrv2;ff_dat_metric;neighbor_probing;nl80211_listener;link_config;layer2info;systeminfo;cfg_uciloader;cfg_compact;nhdpinfo;olsrv2info;netjsoninfo;${CMAKE_OPTIONAL_PLUGINS}" \
-+               -D OONF_LIB_GIT:String=$(PKG_SOURCE_VERSION) \
-                -D VERSION_SUB_TAG:String=$(PKG_SOURCE_DATE) \
-                -D INSTALL_LIB_DIR:Path=lib/oonf \
-                -D INSTALL_INCLUDE_DIR:Path=include/oonf \
diff --git a/patches/packages/routing/0009-oonf-olsrd2-a-usable-default-configuration.patch b/patches/packages/routing/0009-oonf-olsrd2-a-usable-default-configuration.patch
deleted file mode 100644
index 15e36d1dd5130429f062c14570be6ab0668876a7..0000000000000000000000000000000000000000
--- a/patches/packages/routing/0009-oonf-olsrd2-a-usable-default-configuration.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-From: Patrick Grimm <patrick@lunatiki.de>
-Date: Sat, 28 Jan 2023 11:28:00 +0100
-Subject: oonf-olsrd2: a usable default configuration
-
-Compile tested: mips_24kc, arm_cortex-a9_vfpv3-d16, i386_pentium4, x86_64, i386_pentium-mmx, mipsel_24kc
-
-Description:
-- OONF_OLSRV2_LAN_IMPORT for integration off other routing protocol (OLSR1, BGP, ...)
-- OONF_OLSRV2_ROUTE_MODIFIER for overwriting the link qualitty of a neighbor, called LinkQuality Multiplicator in OLSR1
-- OONF_GENERIC_REMOTECONTROL one of the goal of olsrv2
-- OONF_OLSRV2_MPR reduce the routing graph when the network gets bigger
-
-Signed-off-by: Patrick Grimm <patrick@lunatiki.de>
-
-diff --git a/oonf-olsrd2/Config.in b/oonf-olsrd2/Config.in
-index b0d7d7cb2767f7b12d089ccd44042e6788dcf9de..e4621e44e5a4ff55fbfe94ff7b4d5b9f27909034 100644
---- a/oonf-olsrd2/Config.in
-+++ b/oonf-olsrd2/Config.in
-@@ -12,13 +12,13 @@
- 		bool "Lan_import plugin enabled"
- 		help
- 			The lan_import plugin can read routing tables and automatically export them as locally attached networks in olsrd2.
--		default n
-+		default y
- 
- 	config OONF_OLSRV2_ROUTE_MODIFIER
- 		bool "route_modifier plugin enabled"
- 		help
- 			The route_modifier plugin allows you to overwrite aspects of routes (like table/protocol) for certain destinations. 
--		default n
-+		default y
- 
- 	config OONF_GENERIC_DLEP_ROUTER
- 		bool "dlep_router plugin enabled"
-@@ -30,7 +30,7 @@
- 		bool "remotecontrol plugin enabled"
- 		help
- 			The remotecontrol plugin allows you to control configuration and logging over the telnet plugin. Be careful not to open this functionality over the network without securing it.
--		default n
-+		default y
- 
- 	config OONF_GENERIC_HTTP
- 		bool "http plugin enabled"
-@@ -42,7 +42,7 @@
- 		bool "MPR plugin enabled"
- 		help
- 			The MPR plugin reduce the routing graph to limit the overhead of the OLSRv2 protocol
--		default n
-+		default y
- 
- 	config OONF_OLSRV2_LAN
- 		bool "New config option for Locally attached entries"