P2P: Do not allow 40 MHz co-ex PRI/SEC switch to force MCC

Do not allow 40 MHz co-ex PRI/SEC switch to force us to change our PRI
channel if we have an existing connection on the selected PRI channel
since doing multi-channel concurrency is likely to cause more harm than
using different PRI/SEC selection in environment with multiple BSSes on
these two channels with mixed 20 MHz or PRI channel selection.

Signed-off-by: Jouni Malinen <j@w1.fi>
This commit is contained in:
Jouni Malinen 2015-06-28 18:14:58 +03:00
parent 8c43ef8449
commit 55413ce072
3 changed files with 32 additions and 2 deletions

View file

@ -619,6 +619,7 @@ struct hostapd_config {
u16 ht_capab; u16 ht_capab;
int ieee80211n; int ieee80211n;
int secondary_channel; int secondary_channel;
int no_pri_sec_switch;
int require_ht; int require_ht;
int obss_interval; int obss_interval;
u32 vht_capab; u32 vht_capab;

View file

@ -260,8 +260,14 @@ static int ieee80211n_check_40mhz_5g(struct hostapd_iface *iface,
res = check_40mhz_5g(iface->current_mode, scan_res, pri_chan, sec_chan); res = check_40mhz_5g(iface->current_mode, scan_res, pri_chan, sec_chan);
if (res == 2) if (res == 2) {
ieee80211n_switch_pri_sec(iface); if (iface->conf->no_pri_sec_switch) {
wpa_printf(MSG_DEBUG,
"Cannot switch PRI/SEC channels due to local constraint");
} else {
ieee80211n_switch_pri_sec(iface);
}
}
return !!res; return !!res;
} }

View file

@ -142,6 +142,29 @@ void wpa_supplicant_conf_ap_ht(struct wpa_supplicant *wpa_s,
} }
} }
} }
if (conf->secondary_channel) {
struct wpa_supplicant *iface;
for (iface = wpa_s->global->ifaces; iface; iface = iface->next)
{
if (iface == wpa_s ||
iface->wpa_state < WPA_AUTHENTICATING ||
(int) iface->assoc_freq != ssid->frequency)
continue;
/*
* Do not allow 40 MHz co-ex PRI/SEC switch to force us
* to change our PRI channel since we have an existing,
* concurrent connection on that channel and doing
* multi-channel concurrency is likely to cause more
* harm than using different PRI/SEC selection in
* environment with multiple BSSes on these two channels
* with mixed 20 MHz or PRI channel selection.
*/
conf->no_pri_sec_switch = 1;
}
}
#endif /* CONFIG_IEEE80211N */ #endif /* CONFIG_IEEE80211N */
} }