mac80211: mesh: avoid pointless station lookup
authorJohannes Berg <johannes.berg@intel.com>
Fri, 20 Mar 2015 15:01:52 +0000 (16:01 +0100)
committerJohannes Berg <johannes.berg@intel.com>
Fri, 20 Mar 2015 15:27:36 +0000 (16:27 +0100)
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>
net/mac80211/tx.c

index 1d6344679bf1d33a56512b1ac5f69fe005c43f3b..5af35ef353225305c12037b883db173c91ec8b6a 100644 (file)
@@ -2052,12 +2052,14 @@ static struct sk_buff *ieee80211_build_hdr(struct ieee80211_sub_if_data *sdata,
        }
 
        /*
-        * 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);
This page took 0.025349 seconds and 5 git commands to generate.