DFS: Allow switch to DFS channel after radar detection in ETSI

This is to comply with uniform spreading requirement for ETSI domain
(section 4.7.2.7 in EN 301 893 - V1.8.1). ETSI uniform spreading
requires equal probability for the usable channels. The previous channel
selection logic after a radar detection did not fully comply with the
uniform spreading requirement for the domain by ignoring DFS channels.
Consider DFS channels also during channel selection when the current DFS
domain is ETSI.

Signed-off-by: Vasanthakumar Thiagarajan <vthiagar@qti.qualcomm.com>
This commit is contained in:
Vasanthakumar Thiagarajan 2017-05-12 13:18:01 +05:30 committed by Jouni Malinen
parent aa56e36d66
commit 04f667fcdd
3 changed files with 10 additions and 0 deletions

View file

@ -889,6 +889,13 @@ static int hostapd_dfs_start_channel_switch(struct hostapd_iface *iface)
if (iface->cac_started) if (iface->cac_started)
return hostapd_dfs_start_channel_switch_cac(iface); return hostapd_dfs_start_channel_switch_cac(iface);
/*
* Allow selection of DFS channel in ETSI to comply with
* uniform spreading.
*/
if (iface->dfs_domain == HOSTAPD_DFS_REGION_ETSI)
skip_radar = 0;
/* Perform channel switch/CSA */ /* Perform channel switch/CSA */
channel = dfs_get_valid_channel(iface, &secondary_channel, channel = dfs_get_valid_channel(iface, &secondary_channel,
&vht_oper_centr_freq_seg0_idx, &vht_oper_centr_freq_seg0_idx,

View file

@ -475,6 +475,8 @@ struct hostapd_iface {
struct dl_list sta_seen; /* struct hostapd_sta_info */ struct dl_list sta_seen; /* struct hostapd_sta_info */
unsigned int num_sta_seen; unsigned int num_sta_seen;
u8 dfs_domain;
}; };
/* hostapd.c */ /* hostapd.c */

View file

@ -93,6 +93,7 @@ int hostapd_get_hw_features(struct hostapd_iface *iface)
} }
iface->hw_flags = flags; iface->hw_flags = flags;
iface->dfs_domain = dfs_domain;
hostapd_free_hw_features(iface->hw_features, iface->num_hw_features); hostapd_free_hw_features(iface->hw_features, iface->num_hw_features);
iface->hw_features = modes; iface->hw_features = modes;