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
new file mode 100644
index 0000000000000000000000000000000000000000..90d9d2d3e830984d1fbda9c5902088970496ee61
--- /dev/null
+++ b/patches/openwrt/0013-mac80211-mask-nested-A-MSDU-support-for-mesh.patch
@@ -0,0 +1,55 @@
+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);