| 123456789101112131415161718192021222324252627282930313233 |
- From: Johannes Berg <[email protected]>
- 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 <[email protected]>
- ---
- --- 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);
|