hostapd: Allow to switch to usable DFS channels
If channels are "available", change to "usable" DFS channels as a fallback, too. This requires CAC, but it is still better to do that instead of stopping service completely. Signed-hostap: Simon Wunderlich <sw@simonwunderlich.de>
This commit is contained in:
parent
01b99998bd
commit
e070051207
1 changed files with 26 additions and 2 deletions
28
src/ap/dfs.c
28
src/ap/dfs.c
|
@ -748,9 +748,33 @@ static int hostapd_dfs_start_channel_switch(struct hostapd_iface *iface)
|
||||||
skip_radar);
|
skip_radar);
|
||||||
|
|
||||||
if (!channel) {
|
if (!channel) {
|
||||||
/* FIXME: Wait for channel(s) to become available */
|
/*
|
||||||
|
* If there is no channel to switch immediately to, check if
|
||||||
|
* there is another channel where we can switch even if it
|
||||||
|
* requires to perform a CAC first.
|
||||||
|
*/
|
||||||
|
skip_radar = 0;
|
||||||
|
channel = dfs_get_valid_channel(iface, &secondary_channel,
|
||||||
|
&vht_oper_centr_freq_seg0_idx,
|
||||||
|
&vht_oper_centr_freq_seg1_idx,
|
||||||
|
skip_radar);
|
||||||
|
if (!channel) {
|
||||||
|
/* FIXME: Wait for channel(s) to become available */
|
||||||
|
hostapd_disable_iface(iface);
|
||||||
|
return err;
|
||||||
|
}
|
||||||
|
|
||||||
|
iface->freq = channel->freq;
|
||||||
|
iface->conf->channel = channel->chan;
|
||||||
|
iface->conf->secondary_channel = secondary_channel;
|
||||||
|
iface->conf->vht_oper_centr_freq_seg0_idx =
|
||||||
|
vht_oper_centr_freq_seg0_idx;
|
||||||
|
iface->conf->vht_oper_centr_freq_seg1_idx =
|
||||||
|
vht_oper_centr_freq_seg1_idx;
|
||||||
|
|
||||||
hostapd_disable_iface(iface);
|
hostapd_disable_iface(iface);
|
||||||
return err;
|
hostapd_enable_iface(iface);
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
wpa_printf(MSG_DEBUG, "DFS will switch to a new channel %d",
|
wpa_printf(MSG_DEBUG, "DFS will switch to a new channel %d",
|
||||||
|
|
Loading…
Reference in a new issue