Commit 4754ffd6 authored by Felix Fietkau's avatar Felix Fietkau Committed by John W. Linville

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: default avatarFelix Fietkau <nbd@openwrt.org>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent e0b20f1c
...@@ -2359,7 +2359,7 @@ static void __ieee80211_rx_handle_packet(struct ieee80211_hw *hw, ...@@ -2359,7 +2359,7 @@ static void __ieee80211_rx_handle_packet(struct ieee80211_hw *hw,
continue; continue;
} }
rx.sta = sta_info_get(prev, hdr->addr2); rx.sta = sta_info_get_bss(prev, hdr->addr2);
rx.flags |= IEEE80211_RX_RA_MATCH; rx.flags |= IEEE80211_RX_RA_MATCH;
prepares = prepare_for_handlers(prev, &rx, hdr); prepares = prepare_for_handlers(prev, &rx, hdr);
...@@ -2395,7 +2395,7 @@ static void __ieee80211_rx_handle_packet(struct ieee80211_hw *hw, ...@@ -2395,7 +2395,7 @@ static void __ieee80211_rx_handle_packet(struct ieee80211_hw *hw,
} }
if (prev) { 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; rx.flags |= IEEE80211_RX_RA_MATCH;
prepares = prepare_for_handlers(prev, &rx, hdr); prepares = prepare_for_handlers(prev, &rx, hdr);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment