aboutsummaryrefslogtreecommitdiffstats
path: root/package/kernel
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@nbd.name>2020-12-18 22:58:10 +0100
committerFelix Fietkau <nbd@nbd.name>2020-12-18 23:05:50 +0100
commit3ab695368a5c8dc6228055bd05bd05f1974d818c (patch)
tree67a3c86a38ac78e10f6be5dd026eaea7150a7cc0 /package/kernel
parent5950397e1486548c2736d653fdf177e986b3e896 (diff)
downloadupstream-3ab695368a5c8dc6228055bd05bd05f1974d818c.tar.gz
upstream-3ab695368a5c8dc6228055bd05bd05f1974d818c.tar.bz2
upstream-3ab695368a5c8dc6228055bd05bd05f1974d818c.zip
mac80211: do not drop tx nulldata packets on encrypted links
Fixes sending out nulldata probing frames Signed-off-by: Felix Fietkau <nbd@nbd.name>
Diffstat (limited to 'package/kernel')
-rw-r--r--package/kernel/mac80211/patches/subsys/336-mac80211-do-not-drop-tx-nulldata-packets-on-encrypte.patch25
1 files changed, 25 insertions, 0 deletions
diff --git a/package/kernel/mac80211/patches/subsys/336-mac80211-do-not-drop-tx-nulldata-packets-on-encrypte.patch b/package/kernel/mac80211/patches/subsys/336-mac80211-do-not-drop-tx-nulldata-packets-on-encrypte.patch
new file mode 100644
index 0000000000..378c37455d
--- /dev/null
+++ b/package/kernel/mac80211/patches/subsys/336-mac80211-do-not-drop-tx-nulldata-packets-on-encrypte.patch
@@ -0,0 +1,25 @@
+From: Felix Fietkau <nbd@nbd.name>
+Date: Fri, 18 Dec 2020 20:08:06 +0100
+Subject: [PATCH] mac80211: do not drop tx nulldata packets on encrypted links
+
+ieee80211_tx_h_select_key drops any non-mgmt packets without a key when
+encryption is used. This is wrong for nulldata packets that can't be
+encrypted and are sent out for probing clients and indicating 4-address
+mode.
+
+Reported-by: Sebastian Gottschall <s.gottschall@dd-wrt.com>
+Fixes: a0761a301746 ("mac80211: drop data frames without key on encrypted links")
+Signed-off-by: Felix Fietkau <nbd@nbd.name>
+---
+
+--- a/net/mac80211/tx.c
++++ b/net/mac80211/tx.c
+@@ -657,7 +657,7 @@ ieee80211_tx_h_select_key(struct ieee802
+ if (!skip_hw && tx->key &&
+ tx->key->flags & KEY_FLAG_UPLOADED_TO_HARDWARE)
+ info->control.hw_key = &tx->key->conf;
+- } else if (!ieee80211_is_mgmt(hdr->frame_control) && tx->sta &&
++ } else if (ieee80211_is_data_present(hdr->frame_control) && tx->sta &&
+ test_sta_flag(tx->sta, WLAN_STA_USES_ENCRYPTION)) {
+ return TX_DROP;
+ }