|
@@ -3459,20 +3459,23 @@ void wpa_supplicant_event(void *ctx, enum wpa_event_type event,
|
|
|
data->rx_from_unknown.wds);
|
|
|
break;
|
|
|
case EVENT_CH_SWITCH:
|
|
|
- if (!data)
|
|
|
- break;
|
|
|
- if (!wpa_s->ap_iface) {
|
|
|
- wpa_dbg(wpa_s, MSG_DEBUG, "AP: Ignore channel switch "
|
|
|
- "event in non-AP mode");
|
|
|
+ if (!data || !wpa_s->current_ssid)
|
|
|
break;
|
|
|
- }
|
|
|
|
|
|
- wpas_ap_ch_switch(wpa_s, data->ch_switch.freq,
|
|
|
- data->ch_switch.ht_enabled,
|
|
|
- data->ch_switch.ch_offset,
|
|
|
- data->ch_switch.ch_width,
|
|
|
- data->ch_switch.cf1,
|
|
|
- data->ch_switch.cf2);
|
|
|
+ wpa_s->assoc_freq = data->ch_switch.freq;
|
|
|
+ wpa_s->current_ssid->frequency = data->ch_switch.freq;
|
|
|
+
|
|
|
+ if (wpa_s->current_ssid->mode == WPAS_MODE_AP ||
|
|
|
+ wpa_s->current_ssid->mode == WPAS_MODE_P2P_GO ||
|
|
|
+ wpa_s->current_ssid->mode ==
|
|
|
+ WPAS_MODE_P2P_GROUP_FORMATION) {
|
|
|
+ wpas_ap_ch_switch(wpa_s, data->ch_switch.freq,
|
|
|
+ data->ch_switch.ht_enabled,
|
|
|
+ data->ch_switch.ch_offset,
|
|
|
+ data->ch_switch.ch_width,
|
|
|
+ data->ch_switch.cf1,
|
|
|
+ data->ch_switch.cf2);
|
|
|
+ }
|
|
|
|
|
|
wpas_p2p_update_channel_list(wpa_s, WPAS_P2P_CHANNEL_UPDATE_CS);
|
|
|
break;
|