diff options
author | Felix Fietkau <nbd@openwrt.org> | 2010-07-17 15:59:07 +0200 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2010-07-20 16:02:58 -0400 |
commit | 875ae5f68883c75aad826e715df8ec0619551a07 (patch) | |
tree | 6fd0fb7822a5c58b210e256738756355363e5cd7 | |
parent | b807b8a16bee27eb93a3393c173ce209a992ef18 (diff) | |
download | linux-875ae5f68883c75aad826e715df8ec0619551a07.tar.gz linux-875ae5f68883c75aad826e715df8ec0619551a07.tar.bz2 linux-875ae5f68883c75aad826e715df8ec0619551a07.zip |
mac80211: fix aggregation action frame handling with AP VLANs
When aggregation related action frames are enqueued for further work,
and they originate from a STA that is part of an AP VLAN, they are
currently enqueued for the AP interface. This breaks the sta_info_get()
lookup in the actual work function, and because of that, aggregation
sessions are not established for this STA.
Fix this by replacing the sta_info_get call with a call to
sta_info_get_bss.
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
-rw-r--r-- | net/mac80211/iface.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/net/mac80211/iface.c b/net/mac80211/iface.c index 910729fc18cd..8ef2fde6e920 100644 --- a/net/mac80211/iface.c +++ b/net/mac80211/iface.c @@ -741,7 +741,7 @@ static void ieee80211_iface_work(struct work_struct *work) int len = skb->len; mutex_lock(&local->sta_mtx); - sta = sta_info_get(sdata, mgmt->sa); + sta = sta_info_get_bss(sdata, mgmt->sa); if (sta) { switch (mgmt->u.action.u.addba_req.action_code) { case WLAN_ACTION_ADDBA_REQ: @@ -782,7 +782,7 @@ static void ieee80211_iface_work(struct work_struct *work) * right, so terminate the session. */ mutex_lock(&local->sta_mtx); - sta = sta_info_get(sdata, mgmt->sa); + sta = sta_info_get_bss(sdata, mgmt->sa); if (sta) { u16 tid = *ieee80211_get_qos_ctl(hdr) & IEEE80211_QOS_CTL_TID_MASK; |