wifi: mac80211: fix CSA processing while scanning
The channel switch parsing code would simply return if a scan is in-progress. Supposedly, this was because channel switch announcements from other APs should be ignored. For the beacon case, the function is already only called if we are associated with the sender. For the action frame cases, add the appropriate check whether the frame is coming from the AP we are associated with. Finally, drop the scanning check from ieee80211_sta_process_chanswitch. Signed-off-by: Benjamin Berg <benjamin.berg@intel.com> Signed-off-by: Gregory Greenman <gregory.greenman@intel.com> Link: https://lore.kernel.org/r/20230608163202.3366e9302468.I6c7e0b58c33b7fb4c675374cfe8c3a5cddcec416@changeid Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
parent
b580a372b8
commit
556f16b834
@ -1857,9 +1857,6 @@ ieee80211_sta_process_chanswitch(struct ieee80211_link_data *link,
|
||||
if (!cbss)
|
||||
return;
|
||||
|
||||
if (local->scanning)
|
||||
return;
|
||||
|
||||
current_band = cbss->channel->band;
|
||||
bss = (void *)cbss->priv;
|
||||
res = ieee80211_parse_ch_switch_ie(sdata, elems, current_band,
|
||||
@ -5997,6 +5994,10 @@ void ieee80211_sta_rx_queued_mgmt(struct ieee80211_sub_if_data *sdata,
|
||||
ieee80211_rx_mgmt_assoc_resp(sdata, mgmt, skb->len);
|
||||
break;
|
||||
case IEEE80211_STYPE_ACTION:
|
||||
if (!sdata->u.mgd.associated ||
|
||||
!ether_addr_equal(mgmt->bssid, sdata->vif.cfg.ap_addr))
|
||||
break;
|
||||
|
||||
if (mgmt->u.action.category == WLAN_CATEGORY_SPECTRUM_MGMT) {
|
||||
struct ieee802_11_elems *elems;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user