mac80211: fix aggregation action frame handling with AP VLANs
authorFelix Fietkau <nbd@openwrt.org>
Sat, 17 Jul 2010 13:59:07 +0000 (15:59 +0200)
committerJohn W. Linville <linville@tuxdriver.com>
Tue, 20 Jul 2010 20:02:58 +0000 (16:02 -0400)
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>
net/mac80211/iface.c

index 910729f..8ef2fde 100644 (file)
@@ -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;