aboutsummaryrefslogtreecommitdiffstats
path: root/net/mac80211/iface.c
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@openwrt.org>2010-07-17 09:59:07 -0400
committerJohn W. Linville <linville@tuxdriver.com>2010-07-20 16:02:58 -0400
commit875ae5f68883c75aad826e715df8ec0619551a07 (patch)
tree6fd0fb7822a5c58b210e256738756355363e5cd7 /net/mac80211/iface.c
parentb807b8a16bee27eb93a3393c173ce209a992ef18 (diff)
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>
Diffstat (limited to 'net/mac80211/iface.c')
-rw-r--r--net/mac80211/iface.c4
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)
741 int len = skb->len; 741 int len = skb->len;
742 742
743 mutex_lock(&local->sta_mtx); 743 mutex_lock(&local->sta_mtx);
744 sta = sta_info_get(sdata, mgmt->sa); 744 sta = sta_info_get_bss(sdata, mgmt->sa);
745 if (sta) { 745 if (sta) {
746 switch (mgmt->u.action.u.addba_req.action_code) { 746 switch (mgmt->u.action.u.addba_req.action_code) {
747 case WLAN_ACTION_ADDBA_REQ: 747 case WLAN_ACTION_ADDBA_REQ:
@@ -782,7 +782,7 @@ static void ieee80211_iface_work(struct work_struct *work)
782 * right, so terminate the session. 782 * right, so terminate the session.
783 */ 783 */
784 mutex_lock(&local->sta_mtx); 784 mutex_lock(&local->sta_mtx);
785 sta = sta_info_get(sdata, mgmt->sa); 785 sta = sta_info_get_bss(sdata, mgmt->sa);
786 if (sta) { 786 if (sta) {
787 u16 tid = *ieee80211_get_qos_ctl(hdr) & 787 u16 tid = *ieee80211_get_qos_ctl(hdr) &
788 IEEE80211_QOS_CTL_TID_MASK; 788 IEEE80211_QOS_CTL_TID_MASK;