diff options
author | Felix Fietkau <nbd@openwrt.org> | 2015-03-20 16:24:14 +0000 |
---|---|---|
committer | Felix Fietkau <nbd@openwrt.org> | 2015-03-20 16:24:14 +0000 |
commit | 9143cf5fc9e06af4a9bcf07f0009666ccf66961f (patch) | |
tree | d39b123341dde99e9339f22af0d17f3b877e3b72 /package/kernel/mac80211/patches/313-mac80211-drop-4-addr-VLAN-frames-earlier-if-not-conn.patch | |
parent | f7a861615cc9496f988ccf13cb00f7854a8eaae7 (diff) | |
download | upstream-9143cf5fc9e06af4a9bcf07f0009666ccf66961f.tar.gz upstream-9143cf5fc9e06af4a9bcf07f0009666ccf66961f.tar.bz2 upstream-9143cf5fc9e06af4a9bcf07f0009666ccf66961f.zip |
mac80211: merge a few performance enhancements
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
SVN-Revision: 44910
Diffstat (limited to 'package/kernel/mac80211/patches/313-mac80211-drop-4-addr-VLAN-frames-earlier-if-not-conn.patch')
-rw-r--r-- | package/kernel/mac80211/patches/313-mac80211-drop-4-addr-VLAN-frames-earlier-if-not-conn.patch | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/package/kernel/mac80211/patches/313-mac80211-drop-4-addr-VLAN-frames-earlier-if-not-conn.patch b/package/kernel/mac80211/patches/313-mac80211-drop-4-addr-VLAN-frames-earlier-if-not-conn.patch new file mode 100644 index 0000000000..f493f654f8 --- /dev/null +++ b/package/kernel/mac80211/patches/313-mac80211-drop-4-addr-VLAN-frames-earlier-if-not-conn.patch @@ -0,0 +1,27 @@ +From: Johannes Berg <johannes.berg@intel.com> +Date: Fri, 20 Mar 2015 16:24:22 +0100 +Subject: [PATCH] mac80211: drop 4-addr VLAN frames earlier if not + connected + +If there's no station on the 4-addr VLAN interface, then frames +cannot be transmitted. Drop such frames earlier, before setting +up all the information for them. + +We should keep the old check though since that code might be used +for other internally-generated frames. + +Signed-off-by: Johannes Berg <johannes.berg@intel.com> +--- + +--- a/net/mac80211/tx.c ++++ b/net/mac80211/tx.c +@@ -1921,6 +1921,9 @@ static struct sk_buff *ieee80211_build_h + authorized = test_sta_flag(sta, WLAN_STA_AUTHORIZED); + wme_sta = sta->sta.wme; + have_station = true; ++ } else if (sdata->wdev.use_4addr) { ++ ret = -ENOLINK; ++ goto free; + } + ap_sdata = container_of(sdata->bss, struct ieee80211_sub_if_data, + u.ap); |