mac80211: fix sta lookup for received action frames on an AP VLAN
authorFelix Fietkau <nbd@openwrt.org>
Sun, 31 Jan 2010 20:50:12 +0000 (21:50 +0100)
committerJohn W. Linville <linville@tuxdriver.com>
Mon, 1 Feb 2010 20:40:08 +0000 (15:40 -0500)
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>
net/mac80211/rx.c

index 7e0b3e340389c24fc5e145d49ddb5b31326eb45f..5709307fcb9b90ff1d578cbc9593508bd04070f3 100644 (file)
@@ -2359,7 +2359,7 @@ static void __ieee80211_rx_handle_packet(struct ieee80211_hw *hw,
                                continue;
                        }
 
-                       rx.sta = sta_info_get(prev, hdr->addr2);
+                       rx.sta = sta_info_get_bss(prev, hdr->addr2);
 
                        rx.flags |= IEEE80211_RX_RA_MATCH;
                        prepares = prepare_for_handlers(prev, &rx, hdr);
@@ -2395,7 +2395,7 @@ next:
                }
 
                if (prev) {
-                       rx.sta = sta_info_get(prev, hdr->addr2);
+                       rx.sta = sta_info_get_bss(prev, hdr->addr2);
 
                        rx.flags |= IEEE80211_RX_RA_MATCH;
                        prepares = prepare_for_handlers(prev, &rx, hdr);