aboutsummaryrefslogtreecommitdiffstats
path: root/net/mac80211
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@openwrt.org>2010-01-31 15:50:12 -0500
committerJohn W. Linville <linville@tuxdriver.com>2010-02-01 15:40:08 -0500
commit4754ffd68bc14de8db01451c49bb07adebe1e422 (patch)
tree4ca57be079cc9b46b66898e8a9f0966b83d06645 /net/mac80211
parente0b20f1c67fc4379fce430ff720969f35e123eed (diff)
mac80211: fix sta lookup for received action frames on an AP VLAN
When looking for a matching interface, __ieee80211_rx_handle_packet loops over all active interfaces, looking for matching stations. Because AP VLAN interfaces are not processed as part of this loop, it needs to use sta_info_get_bss instead of sta_info_get in order to find a STA that has been moved to a VLAN. This fixes issues with aggregation setup/teardown. Signed-off-by: Felix Fietkau <nbd@openwrt.org> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'net/mac80211')
-rw-r--r--net/mac80211/rx.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c
index 7e0b3e34038..5709307fcb9 100644
--- a/net/mac80211/rx.c
+++ b/net/mac80211/rx.c
@@ -2359,7 +2359,7 @@ static void __ieee80211_rx_handle_packet(struct ieee80211_hw *hw,
2359 continue; 2359 continue;
2360 } 2360 }
2361 2361
2362 rx.sta = sta_info_get(prev, hdr->addr2); 2362 rx.sta = sta_info_get_bss(prev, hdr->addr2);
2363 2363
2364 rx.flags |= IEEE80211_RX_RA_MATCH; 2364 rx.flags |= IEEE80211_RX_RA_MATCH;
2365 prepares = prepare_for_handlers(prev, &rx, hdr); 2365 prepares = prepare_for_handlers(prev, &rx, hdr);
@@ -2395,7 +2395,7 @@ next:
2395 } 2395 }
2396 2396
2397 if (prev) { 2397 if (prev) {
2398 rx.sta = sta_info_get(prev, hdr->addr2); 2398 rx.sta = sta_info_get_bss(prev, hdr->addr2);
2399 2399
2400 rx.flags |= IEEE80211_RX_RA_MATCH; 2400 rx.flags |= IEEE80211_RX_RA_MATCH;
2401 prepares = prepare_for_handlers(prev, &rx, hdr); 2401 prepares = prepare_for_handlers(prev, &rx, hdr);