7f52919a2f
Import two patches from Peter Oh to allow setting channel bandwidth in the way it already works for managed interfaces. This fixes mesh interfaces on 802.11ac devices always coming up in VHT80 mode. Add a patch to allow HT40 also on 2.4GHz if noscan option is set, which also skips secondary channel scan just like noscan works in AP mode. Signed-off-by: Daniel Golle <daniel@makrotopia.org>
87 lines
2.4 KiB
Diff
87 lines
2.4 KiB
Diff
From 24fc73b2470ff79cd8c92e029ca785c8e95a204c Mon Sep 17 00:00:00 2001
|
|
From: Peter Oh <peter.oh@bowerswilkins.com>
|
|
Date: Wed, 18 Apr 2018 14:14:19 -0700
|
|
Subject: [PATCH 2/2] mesh: implement use of VHT20 config in mesh mode
|
|
|
|
mesh in VHT mode is supposed to be able to use any bandwidth
|
|
that 11ac supports, but we don't have a way to set VHT20
|
|
although there are parameters that are supposed to be used.
|
|
This patch along with the patch of
|
|
"mesh: add VHT_CHANWIDTH_USE_HT to max_oper_chwidth" makes mesh
|
|
available to use of any bandwidth using combination of
|
|
existing parameters like below shown.
|
|
|
|
VHT80:
|
|
default
|
|
do not set any parameters
|
|
VHT40:
|
|
max_oper_chwidth = 0
|
|
VHT20:
|
|
max_oper_chwidth=0
|
|
disable_ht40=1
|
|
HT40:
|
|
disable_vht = 1
|
|
HT20:
|
|
disable_ht40 = 1
|
|
disable HT:
|
|
disable_ht = 1
|
|
|
|
Signed-off-by: Peter Oh <peter.oh@bowerswilkins.com>
|
|
---
|
|
wpa_supplicant/wpa_supplicant.c | 18 +++++++++++++-----
|
|
1 file changed, 13 insertions(+), 5 deletions(-)
|
|
|
|
diff --git a/wpa_supplicant/wpa_supplicant.c b/wpa_supplicant/wpa_supplicant.c
|
|
index ca893f942..8429cfd43 100644
|
|
--- a/wpa_supplicant/wpa_supplicant.c
|
|
+++ b/wpa_supplicant/wpa_supplicant.c
|
|
@@ -2132,9 +2132,15 @@ void ibss_mesh_setup_freq(struct wpa_supplicant *wpa_s,
|
|
if (pri_chan->flag & (HOSTAPD_CHAN_DISABLED | HOSTAPD_CHAN_NO_IR))
|
|
return;
|
|
|
|
+ freq->channel = pri_chan->chan;
|
|
+
|
|
#ifdef CONFIG_HT_OVERRIDES
|
|
- if (ssid->disable_ht40)
|
|
- return;
|
|
+ if (ssid->disable_ht40) {
|
|
+ if (ssid->disable_vht)
|
|
+ return;
|
|
+ else
|
|
+ goto skip_ht40;
|
|
+ }
|
|
#endif /* CONFIG_HT_OVERRIDES */
|
|
|
|
/* Check/setup HT40+/HT40- */
|
|
@@ -2159,8 +2165,6 @@ void ibss_mesh_setup_freq(struct wpa_supplicant *wpa_s,
|
|
if (sec_chan->flag & (HOSTAPD_CHAN_DISABLED | HOSTAPD_CHAN_NO_IR))
|
|
return;
|
|
|
|
- freq->channel = pri_chan->chan;
|
|
-
|
|
if (ht40 == -1) {
|
|
if (!(pri_chan->flag & HOSTAPD_CHAN_HT40MINUS))
|
|
return;
|
|
@@ -2204,6 +2208,7 @@ void ibss_mesh_setup_freq(struct wpa_supplicant *wpa_s,
|
|
wpa_scan_results_free(scan_res);
|
|
}
|
|
|
|
+skip_ht40:
|
|
wpa_printf(MSG_DEBUG,
|
|
"IBSS/mesh: setup freq channel %d, sec_channel_offset %d",
|
|
freq->channel, freq->sec_channel_offset);
|
|
@@ -2295,7 +2300,10 @@ void ibss_mesh_setup_freq(struct wpa_supplicant *wpa_s,
|
|
}
|
|
} else if (ssid->max_oper_chwidth == VHT_CHANWIDTH_USE_HT) {
|
|
chwidth = VHT_CHANWIDTH_USE_HT;
|
|
- seg0 = vht80[j] + 2;
|
|
+ if (ssid->disable_ht40)
|
|
+ seg0 = 0;
|
|
+ else
|
|
+ seg0 = vht80[j] + 2;
|
|
}
|
|
|
|
if (hostapd_set_freq_params(&vht_freq, mode->mode, freq->freq,
|
|
--
|
|
2.17.0
|
|
|