summaryrefslogtreecommitdiff
path: root/package/kernel/mac80211/patches/332-mac80211-support-AP-4-addr-mode-fast-rx.patch
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@nbd.name>2018-02-23 10:10:01 +0100
committerFelix Fietkau <nbd@nbd.name>2018-02-23 10:15:23 +0100
commit393661640b0ec9e5eec83b44e9084b8df687bc03 (patch)
treea42cc96c8fa98ba0939d7adab0cf0cc6b7f4e22b /package/kernel/mac80211/patches/332-mac80211-support-AP-4-addr-mode-fast-rx.patch
parent50641a0f9a6a4b32aaa17d2c735883f3b2f19270 (diff)
downloadmtk-20170518-393661640b0ec9e5eec83b44e9084b8df687bc03.zip
mtk-20170518-393661640b0ec9e5eec83b44e9084b8df687bc03.tar.gz
mtk-20170518-393661640b0ec9e5eec83b44e9084b8df687bc03.tar.bz2
mac80211: fix various issues with fast-rx mode
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Diffstat (limited to 'package/kernel/mac80211/patches/332-mac80211-support-AP-4-addr-mode-fast-rx.patch')
-rw-r--r--package/kernel/mac80211/patches/332-mac80211-support-AP-4-addr-mode-fast-rx.patch25
1 files changed, 25 insertions, 0 deletions
diff --git a/package/kernel/mac80211/patches/332-mac80211-support-AP-4-addr-mode-fast-rx.patch b/package/kernel/mac80211/patches/332-mac80211-support-AP-4-addr-mode-fast-rx.patch
new file mode 100644
index 0000000..3f3eb0a
--- /dev/null
+++ b/package/kernel/mac80211/patches/332-mac80211-support-AP-4-addr-mode-fast-rx.patch
@@ -0,0 +1,25 @@
+From: Felix Fietkau <nbd@nbd.name>
+Date: Fri, 23 Feb 2018 10:00:22 +0100
+Subject: [PATCH] mac80211: support AP 4-addr mode fast-rx
+
+Signed-off-by: Felix Fietkau <nbd@nbd.name>
+---
+
+--- a/net/mac80211/rx.c
++++ b/net/mac80211/rx.c
+@@ -3774,6 +3774,15 @@ void ieee80211_check_fast_rx(struct sta_
+ !(sdata->flags & IEEE80211_SDATA_DONT_BRIDGE_PACKETS) &&
+ (sdata->vif.type != NL80211_IFTYPE_AP_VLAN ||
+ !sdata->u.vlan.sta);
++
++ if (sdata->vif.type == NL80211_IFTYPE_AP_VLAN &&
++ sdata->u.vlan.sta) {
++ fastrx.expected_ds_bits |=
++ cpu_to_le16(IEEE80211_FCTL_FROMDS);
++ fastrx.sa_offs = offsetof(struct ieee80211_hdr, addr4);
++ fastrx.internal_forward = 0;
++ }
++
+ break;
+ default:
+ goto clear;