Commit 875ae5f6 authored by Felix Fietkau's avatar Felix Fietkau Committed by John W. Linville

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: default avatarFelix Fietkau <nbd@openwrt.org>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent b807b8a1
...@@ -741,7 +741,7 @@ static void ieee80211_iface_work(struct work_struct *work) ...@@ -741,7 +741,7 @@ static void ieee80211_iface_work(struct work_struct *work)
int len = skb->len; int len = skb->len;
mutex_lock(&local->sta_mtx); mutex_lock(&local->sta_mtx);
sta = sta_info_get(sdata, mgmt->sa); sta = sta_info_get_bss(sdata, mgmt->sa);
if (sta) { if (sta) {
switch (mgmt->u.action.u.addba_req.action_code) { switch (mgmt->u.action.u.addba_req.action_code) {
case WLAN_ACTION_ADDBA_REQ: case WLAN_ACTION_ADDBA_REQ:
...@@ -782,7 +782,7 @@ static void ieee80211_iface_work(struct work_struct *work) ...@@ -782,7 +782,7 @@ static void ieee80211_iface_work(struct work_struct *work)
* right, so terminate the session. * right, so terminate the session.
*/ */
mutex_lock(&local->sta_mtx); mutex_lock(&local->sta_mtx);
sta = sta_info_get(sdata, mgmt->sa); sta = sta_info_get_bss(sdata, mgmt->sa);
if (sta) { if (sta) {
u16 tid = *ieee80211_get_qos_ctl(hdr) & u16 tid = *ieee80211_get_qos_ctl(hdr) &
IEEE80211_QOS_CTL_TID_MASK; IEEE80211_QOS_CTL_TID_MASK;
......
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