mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-28 17:48:58 +00:00
323e249ce8
This updates mac80211 to version 6.1.97-1. This code is based on Linux 6.1.97 and contains all fixes included in the upstream wireless subsystem from that kernel version. This includes many bugfixes and also some security fixes. The removed patches are already integrated in upstream Linux 6.1.97 or in backports. The following patches were integrated in upstream Linux: ath11k/0013-wifi-ath11k-synchronize-ath11k_mac_he_gi_to_nl80211_.patch ath11k/0035-wifi-ath11k-Use-platform_get_irq-to-get-the-interrup.patch ath11k/0036-wifi-ath11k-fix-SAC-bug-on-peer-addition-with-sta-ba.patch ath11k/0047-wifi-ath11k-fix-deinitialization-of-firmware-resourc.patch ath11k/0053-wifi-ath11k-fix-writing-to-unintended-memory-region.patch ath11k/0060-wifi-ath11k-Ignore-frags-from-uninitialized-peer-in-.patch ath11k/0065-wifi-ath11k-fix-tx-status-reporting-in-encap-offload.patch ath11k/0067-wifi-ath11k-Fix-SKB-corruption-in-REO-destination-ri.patch ath11k/0069-wifi-ath11k-fix-registration-of-6Ghz-only-phy-withou.patch ath11k/0080-wifi-ath11k-add-support-default-regdb-while-searchin.patch ath11k/0085-wifi-ath11k-fix-memory-leak-in-WMI-firmware-stats.patch ath11k/0086-wifi-ath11k-Add-missing-check-for-ioremap.patch ath11k/0096-wifi-ath11k-fix-boot-failure-with-one-MSI-vector.patch subsys/337-wifi-mac80211-fix-race-condition-on-enabling-fast-xm.patch The following patches were integrated in upstream backports: ath11k/901-wifi-ath11k-pci-fix-compilation-in-5.16-and-older.patch build/080-resv_start_op.patch build/110-backport_napi_build_skb.patch The following files are missing in backports, we do not have to remove them any more. Some were already missing before some were removed in this update: include/linux/cordic.h include/linux/crc8.h include/linux/eeprom_93cx6.h include/linux/wl12xx.h include/net/ieee80211.h backport-include/linux/bcm47xx_nvram.h include/linux/ath9k_platform.h include/net/bluetooth/ backports ships a dummy Mediatek wed header for older kernel versions. We backported the feature in our kernel, remove the dummy header: backport-include/linux/soc/mediatek/mtk_wed.h Remove header files for subsystems used form the mainline kernel: include/trace/events/qrtr.h include/net/rsi_91x.h backport-include/linux/platform_data/brcmnand.h Link: https://github.com/openwrt/openwrt/pull/15827 Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
53 lines
1.5 KiB
Diff
53 lines
1.5 KiB
Diff
From: Felix Fietkau <nbd@nbd.name>
|
|
Date: Sun, 26 Feb 2023 20:30:20 +0100
|
|
Subject: [PATCH] wifi: mac80211: fix mesh path discovery based on unicast
|
|
packets
|
|
|
|
If a packet has reached its intended destination, it was bumped to the code
|
|
that accepts it, without first checking if a mesh_path needs to be created
|
|
based on the discovered source.
|
|
Fix this by moving the destination address check further down
|
|
|
|
Fixes: 986e43b19ae9 ("wifi: mac80211: fix receiving A-MSDU frames on mesh interfaces")
|
|
Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|
---
|
|
|
|
--- a/net/mac80211/rx.c
|
|
+++ b/net/mac80211/rx.c
|
|
@@ -2830,17 +2830,6 @@ ieee80211_rx_mesh_data(struct ieee80211_
|
|
mesh_rmc_check(sdata, eth->h_source, mesh_hdr))
|
|
return RX_DROP_MONITOR;
|
|
|
|
- /* Frame has reached destination. Don't forward */
|
|
- if (ether_addr_equal(sdata->vif.addr, eth->h_dest))
|
|
- goto rx_accept;
|
|
-
|
|
- if (!ifmsh->mshcfg.dot11MeshForwarding) {
|
|
- if (is_multicast_ether_addr(eth->h_dest))
|
|
- goto rx_accept;
|
|
-
|
|
- return RX_DROP_MONITOR;
|
|
- }
|
|
-
|
|
/* forward packet */
|
|
if (sdata->crypto_tx_tailroom_needed_cnt)
|
|
tailroom = IEEE80211_ENCRYPT_TAILROOM;
|
|
@@ -2887,6 +2876,17 @@ ieee80211_rx_mesh_data(struct ieee80211_
|
|
rcu_read_unlock();
|
|
}
|
|
|
|
+ /* Frame has reached destination. Don't forward */
|
|
+ if (ether_addr_equal(sdata->vif.addr, eth->h_dest))
|
|
+ goto rx_accept;
|
|
+
|
|
+ if (!ifmsh->mshcfg.dot11MeshForwarding) {
|
|
+ if (is_multicast_ether_addr(eth->h_dest))
|
|
+ goto rx_accept;
|
|
+
|
|
+ return RX_DROP_MONITOR;
|
|
+ }
|
|
+
|
|
skb_set_queue_mapping(skb, ieee802_1d_to_ac[skb->priority]);
|
|
|
|
if (!multicast &&
|