[PATCH 3/4] hostapd: DFS fix overlapped() function
Janusz Dziedzic
janusz.dziedzic
Thu Oct 24 08:40:27 PDT 2013
Fix dfs_are_channels_overlapped() function.
Check only DFS channels.
This fix a problem when works on non-DFS
channel and get radar event for the same
channel - without this patch we decide to
switch the channel.
Signed-hostap: Janusz Dziedzic <janusz.dziedzic at tieto.com>
---
src/ap/dfs.c | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/src/ap/dfs.c b/src/ap/dfs.c
index 10e7e48..dffbea0 100644
--- a/src/ap/dfs.c
+++ b/src/ap/dfs.c
@@ -411,14 +411,15 @@ static int dfs_are_channels_overlapped(struct hostapd_data *hapd, int freq,
u8 radar_chan;
int res = 0;
- if (hapd->iface->freq == freq)
- res++;
-
/* Our configuration */
mode = hapd->iface->current_mode;
start_chan_idx = dfs_get_start_chan_idx(hapd);
n_chans = dfs_get_used_n_chans(hapd);
+ /* Check we are on DFS channel(s) */
+ if (!dfs_check_chans_radar(hapd, start_chan_idx, n_chans))
+ return 0;
+
/* Reported via radar event */
switch (chan_width) {
case CHAN_WIDTH_20_NOHT:
@@ -448,6 +449,8 @@ static int dfs_are_channels_overlapped(struct hostapd_data *hapd, int freq,
for (i = 0; i < n_chans; i++) {
chan = &mode->channels[start_chan_idx + i];
+ if (!(chan->flag & HOSTAPD_CHAN_RADAR))
+ continue;
for (j = 0; j < radar_n_chans; j++) {
wpa_printf(MSG_DEBUG, "checking our: %d, radar: %d",
chan->chan, radar_chan + j * 4);
--
1.7.9.5
More information about the Hostap
mailing list