hostapd: Add config option chanlist for DFS channels
Different channels allow different transmission power, at least in ETSI countries. Also, ETSI requires a "channel plan" for DFS operation, and channels should be randomly choosen from these channels. Add a channel list configuration option for users to add channels hostapd may pick from. Signed-hostap: Simon Wunderlich <sw@simonwunderlich.de>
This commit is contained in:
parent
2ca47da4f7
commit
70ee1be248
5 changed files with 36 additions and 0 deletions
|
@ -562,6 +562,7 @@ void hostapd_config_free(struct hostapd_config *conf)
|
|||
os_free(conf->bss);
|
||||
os_free(conf->supported_rates);
|
||||
os_free(conf->basic_rates);
|
||||
os_free(conf->chanlist);
|
||||
|
||||
os_free(conf);
|
||||
}
|
||||
|
|
|
@ -525,6 +525,7 @@ struct hostapd_config {
|
|||
int fragm_threshold;
|
||||
u8 send_probe_response;
|
||||
u8 channel;
|
||||
int *chanlist;
|
||||
enum hostapd_hw_mode hw_mode; /* HOSTAPD_MODE_IEEE80211A, .. */
|
||||
enum {
|
||||
LONG_PREAMBLE = 0,
|
||||
|
|
19
src/ap/dfs.c
19
src/ap/dfs.c
|
@ -139,6 +139,22 @@ static int dfs_chan_range_available(struct hostapd_hw_modes *mode,
|
|||
}
|
||||
|
||||
|
||||
static int is_in_chanlist(struct hostapd_iface *iface,
|
||||
struct hostapd_channel_data *chan)
|
||||
{
|
||||
int *entry;
|
||||
|
||||
if (!iface->conf->chanlist)
|
||||
return 1;
|
||||
|
||||
for (entry = iface->conf->chanlist; *entry != -1; entry++) {
|
||||
if (*entry == chan->chan)
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* The function assumes HT40+ operation.
|
||||
* Make sure to adjust the following variables after calling this:
|
||||
|
@ -171,6 +187,9 @@ static int dfs_find_channel(struct hostapd_iface *iface,
|
|||
if (!dfs_chan_range_available(mode, i, n_chans, skip_radar))
|
||||
continue;
|
||||
|
||||
if (!is_in_chanlist(iface, chan))
|
||||
continue;
|
||||
|
||||
if (ret_chan && idx == channel_idx) {
|
||||
wpa_printf(MSG_DEBUG, "Selected ch. #%d", chan->chan);
|
||||
*ret_chan = chan;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue