From 49b74430d94cf84157f77ce025004f5de2e75c37 Mon Sep 17 00:00:00 2001 From: Jouni Malinen Date: Sat, 15 Mar 2014 16:42:29 +0200 Subject: [PATCH] Fix HT40 co-ex scan for some pri/sec channel switches Secondary channel was compared incorrectly (-4/4 vs. actual channel number) which broke matching neighboring 40 MHz BSSes and only the no-beacons-on-secondary-channel rule was applied in practice. Once sec_chan was fixed, this triggered another issue in this function where both rules to switch pri/sec channels could end up getting applied in a way that effectively canceled the switch. Signed-off-by: Jouni Malinen --- src/ap/hw_features.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/ap/hw_features.c b/src/ap/hw_features.c index 28e92fd8d..d319ce007 100644 --- a/src/ap/hw_features.c +++ b/src/ap/hw_features.c @@ -327,7 +327,7 @@ static int ieee80211n_check_40mhz_5g(struct hostapd_iface *iface, int match; pri_chan = iface->conf->channel; - sec_chan = iface->conf->secondary_channel * 4; + sec_chan = pri_chan + iface->conf->secondary_channel * 4; pri_freq = hostapd_hw_get_freq(iface->bss[0], pri_chan); if (iface->conf->secondary_channel > 0) sec_freq = pri_freq + 20; @@ -351,6 +351,7 @@ static int ieee80211n_check_40mhz_5g(struct hostapd_iface *iface, "channel to get secondary channel with no Beacons " "from other BSSes"); ieee80211n_switch_pri_sec(iface); + return 1; } /*