P2P: Trigger channel selection correctly during CSA
Do not consider moving GOs to a new channel if one of them is in the middle of CSA. In addition, call wpas_p2p_update_channel_list() after EVENT_CH_SWITCH is handled. Signed-off-by: Andrei Otcheretianski <andrei.otcheretianski@intel.com>
This commit is contained in:
parent
4e0ab656d2
commit
3bafb0d842
2 changed files with 19 additions and 0 deletions
|
@ -3473,6 +3473,8 @@ void wpa_supplicant_event(void *ctx, enum wpa_event_type event,
|
||||||
data->ch_switch.ch_width,
|
data->ch_switch.ch_width,
|
||||||
data->ch_switch.cf1,
|
data->ch_switch.cf1,
|
||||||
data->ch_switch.cf2);
|
data->ch_switch.cf2);
|
||||||
|
|
||||||
|
wpas_p2p_update_channel_list(wpa_s, WPAS_P2P_CHANNEL_UPDATE_CS);
|
||||||
break;
|
break;
|
||||||
#ifdef NEED_AP_MLME
|
#ifdef NEED_AP_MLME
|
||||||
case EVENT_DFS_RADAR_DETECTED:
|
case EVENT_DFS_RADAR_DETECTED:
|
||||||
|
|
|
@ -8667,6 +8667,13 @@ static void wpas_p2p_move_go(void *eloop_ctx, void *timeout_ctx)
|
||||||
|
|
||||||
wpas_p2p_go_update_common_freqs(wpa_s);
|
wpas_p2p_go_update_common_freqs(wpa_s);
|
||||||
|
|
||||||
|
/* Do not move GO in the middle of a CSA */
|
||||||
|
if (hostapd_csa_in_progress(wpa_s->ap_iface)) {
|
||||||
|
wpa_printf(MSG_DEBUG,
|
||||||
|
"P2P: CSA is in progress - not moving GO");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* First, try a channel switch flow. If it is not supported or fails,
|
* First, try a channel switch flow. If it is not supported or fails,
|
||||||
* take down the GO and bring it up again.
|
* take down the GO and bring it up again.
|
||||||
|
@ -8777,6 +8784,16 @@ static void wpas_p2p_consider_moving_one_go(struct wpa_supplicant *wpa_s,
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Do not consider moving GO if it is in the middle of a CSA. When the
|
||||||
|
* CSA is finished this flow should be retriggered.
|
||||||
|
*/
|
||||||
|
if (hostapd_csa_in_progress(wpa_s->ap_iface)) {
|
||||||
|
wpa_dbg(wpa_s, MSG_DEBUG,
|
||||||
|
"P2P: Not initiating a GO frequency change - CSA is in progress");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (invalid_freq && !wpas_p2p_disallowed_freq(wpa_s->global, freq))
|
if (invalid_freq && !wpas_p2p_disallowed_freq(wpa_s->global, freq))
|
||||||
timeout = P2P_GO_FREQ_CHANGE_TIME;
|
timeout = P2P_GO_FREQ_CHANGE_TIME;
|
||||||
else
|
else
|
||||||
|
|
Loading…
Reference in a new issue