Files
wifipineapple-openwrt/package/kernel/mac80211/patches/314-mac80211-mesh-avoid-pointless-station-lookup.patch
Felix Fietkau 9ddff7b767 mac80211: update the software queue patch to the version accepted upstream
Signed-off-by: Felix Fietkau <nbd@openwrt.org>

git-svn-id: svn://svn.openwrt.org/openwrt/trunk@45265 3c298f89-4303-0410-b956-a3cf2f4a3e73
2015-04-03 19:42:33 +00:00

34 lines
1.2 KiB
Diff

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
@@ -2130,12 +2130,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);