From: Johannes Berg <johannes.berg@xxxxxxxxx> In the case of the ap_csa_disable test, I frequently see failures due to the kernel *not* having switched, but the CSA-STARTED event having been processed, and thus the frequency having been updated already. This is wrong at least for AP mode, the frequency we store for this case internally in nl80211 should only be updated when the channel switch completes, otherwise we end up in a situation where the switch is aborted and the kernel is thus on the old channel, but the internal information has been updated and every subsequent mgmt-frame TX fails due to being tagged with the wrong channel. Signed-off-by: Johannes Berg <johannes.berg@xxxxxxxxx> --- src/drivers/driver_nl80211_event.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/drivers/driver_nl80211_event.c b/src/drivers/driver_nl80211_event.c index 7abbafcd826b..1758567d5ba2 100644 --- a/src/drivers/driver_nl80211_event.c +++ b/src/drivers/driver_nl80211_event.c @@ -595,7 +595,8 @@ static void mlme_event_ch_switch(struct wpa_driver_nl80211_data *drv, if (cf2) data.ch_switch.cf2 = nla_get_u32(cf2); - bss->freq = data.ch_switch.freq; + if (finished) + bss->freq = data.ch_switch.freq; drv->assoc_freq = data.ch_switch.freq; wpa_supplicant_event(bss->ctx, finished ? -- 2.17.2 _______________________________________________ Hostap mailing list Hostap@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/hostap