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 | d6091cee771ba59a6ba0b89721c0815ad445f569 (patch) | |
tree | cbdf4b11dbc78ec7cdd192d19a120f3ba3afcb0e /package/kernel/mac80211/patches/314-mac80211-mesh-avoid-pointless-station-lookup.patch | |
parent | 4b36b50775c4691212d5dcd37e712e8cad0540b2 (diff) | |
download | master-187ad058-d6091cee771ba59a6ba0b89721c0815ad445f569.tar.gz master-187ad058-d6091cee771ba59a6ba0b89721c0815ad445f569.tar.bz2 master-187ad058-d6091cee771ba59a6ba0b89721c0815ad445f569.zip |
mac80211: merge a few performance enhancements
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@44910 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'package/kernel/mac80211/patches/314-mac80211-mesh-avoid-pointless-station-lookup.patch')
-rw-r--r-- | package/kernel/mac80211/patches/314-mac80211-mesh-avoid-pointless-station-lookup.patch | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/package/kernel/mac80211/patches/314-mac80211-mesh-avoid-pointless-station-lookup.patch b/package/kernel/mac80211/patches/314-mac80211-mesh-avoid-pointless-station-lookup.patch new file mode 100644 index 0000000000..c476dd463c --- /dev/null +++ b/package/kernel/mac80211/patches/314-mac80211-mesh-avoid-pointless-station-lookup.patch @@ -0,0 +1,33 @@ +From: Johannes Berg <johannes.berg@intel.com> +Date: Fri, 20 Mar 2015 16:24:23 +0100 +Subject: [PATCH] mac80211: mesh: avoid pointless station lookup + +In ieee80211_build_hdr(), the station is looked up to build the +header correctly (QoS field) and to check for authorization. For +mesh, authorization isn't checked here, and QoS capability is +mandatory, so the station lookup can be avoided. + +Signed-off-by: Johannes Berg <johannes.berg@intel.com> +--- + +--- a/net/mac80211/tx.c ++++ b/net/mac80211/tx.c +@@ -2131,12 +2131,14 @@ static struct sk_buff *ieee80211_build_h + } + + /* +- * There's no need to try to look up the destination +- * if it is a multicast address (which can only happen +- * in AP mode) ++ * There's no need to try to look up the destination station ++ * if it is a multicast address. In mesh, there's no need to ++ * look up the station at all as it always must be QoS capable ++ * and mesh mode checks authorization later. + */ + multicast = is_multicast_ether_addr(hdr.addr1); +- if (!multicast && !have_station) { ++ if (!multicast && !have_station && ++ !ieee80211_vif_is_mesh(&sdata->vif)) { + sta = sta_info_get(sdata, hdr.addr1); + if (sta) { + authorized = test_sta_flag(sta, WLAN_STA_AUTHORIZED); |