From a4322eba2b129adde45e3f7ac6c3805889623dd5 Mon Sep 17 00:00:00 2001 From: Daniel Golle Date: Fri, 20 Apr 2018 07:41:03 +0200 Subject: hostapd: fix encrypted mesh channel settings 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. This time also make sure to add all files to the patch before committing it... Signed-off-by: Daniel Golle --- .../services/hostapd/patches/301-mesh-noscan.patch | 78 ++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 package/network/services/hostapd/patches/301-mesh-noscan.patch (limited to 'package/network/services/hostapd/patches/301-mesh-noscan.patch') diff --git a/package/network/services/hostapd/patches/301-mesh-noscan.patch b/package/network/services/hostapd/patches/301-mesh-noscan.patch new file mode 100644 index 0000000000..09b67a392b --- /dev/null +++ b/package/network/services/hostapd/patches/301-mesh-noscan.patch @@ -0,0 +1,78 @@ +Index: hostapd-2018-04-09-fa617ee6/wpa_supplicant/config.c +=================================================================== +--- hostapd-2018-04-09-fa617ee6.orig/wpa_supplicant/config.c ++++ hostapd-2018-04-09-fa617ee6/wpa_supplicant/config.c +@@ -2216,6 +2216,7 @@ static const struct parse_data ssid_fiel + #else /* CONFIG_MESH */ + { INT_RANGE(mode, 0, 4) }, + #endif /* CONFIG_MESH */ ++ { INT_RANGE(noscan, 0, 1) }, + { INT_RANGE(proactive_key_caching, 0, 1) }, + { INT_RANGE(disabled, 0, 2) }, + { STR(id_str) }, +Index: hostapd-2018-04-09-fa617ee6/wpa_supplicant/config_file.c +=================================================================== +--- hostapd-2018-04-09-fa617ee6.orig/wpa_supplicant/config_file.c ++++ hostapd-2018-04-09-fa617ee6/wpa_supplicant/config_file.c +@@ -816,6 +816,7 @@ static void wpa_config_write_network(FIL + #endif /* IEEE8021X_EAPOL */ + INT(mode); + INT(no_auto_peer); ++ INT(noscan); + INT(mesh_fwding); + INT(frequency); + INT(fixed_freq); +Index: hostapd-2018-04-09-fa617ee6/wpa_supplicant/mesh.c +=================================================================== +--- hostapd-2018-04-09-fa617ee6.orig/wpa_supplicant/mesh.c ++++ hostapd-2018-04-09-fa617ee6/wpa_supplicant/mesh.c +@@ -287,6 +287,8 @@ static int wpa_supplicant_mesh_init(stru + frequency); + goto out_free; + } ++ if (ssid->noscan) ++ conf->noscan = 1; + if (ssid->ht40) + conf->secondary_channel = ssid->ht40; + if (conf->hw_mode == HOSTAPD_MODE_IEEE80211A && ssid->vht) { +Index: hostapd-2018-04-09-fa617ee6/wpa_supplicant/wpa_supplicant.c +=================================================================== +--- hostapd-2018-04-09-fa617ee6.orig/wpa_supplicant/wpa_supplicant.c ++++ hostapd-2018-04-09-fa617ee6/wpa_supplicant/wpa_supplicant.c +@@ -2024,12 +2024,12 @@ void ibss_mesh_setup_freq(struct wpa_sup + { + enum hostapd_hw_mode hw_mode; + struct hostapd_hw_modes *mode = NULL; +- int ht40plus[] = { 36, 44, 52, 60, 100, 108, 116, 124, 132, 149, 157, ++ int ht40plus[] = { 1, 2, 3, 4, 5, 6, 36, 44, 52, 60, 100, 108, 116, 124, 132, 149, 157, + 184, 192 }; + int vht80[] = { 36, 52, 100, 116, 132, 149 }; + struct hostapd_channel_data *pri_chan = NULL, *sec_chan = NULL; + u8 channel; +- int i, chan_idx, ht40 = -1, res, obss_scan = 1; ++ int i, chan_idx, ht40 = -1, res, obss_scan = !(ssid->noscan); + unsigned int j, k; + struct hostapd_freq_params vht_freq; + int chwidth, seg0, seg1; +@@ -2099,7 +2099,7 @@ void ibss_mesh_setup_freq(struct wpa_sup + return; + + /* Setup higher BW only for 5 GHz */ +- if (mode->mode != HOSTAPD_MODE_IEEE80211A) ++ if (mode->mode != HOSTAPD_MODE_IEEE80211A && !(ssid->noscan)) + return; + + for (chan_idx = 0; chan_idx < mode->num_channels; chan_idx++) { +Index: hostapd-2018-04-09-fa617ee6/wpa_supplicant/config_ssid.h +=================================================================== +--- hostapd-2018-04-09-fa617ee6.orig/wpa_supplicant/config_ssid.h ++++ hostapd-2018-04-09-fa617ee6/wpa_supplicant/config_ssid.h +@@ -835,6 +835,8 @@ struct wpa_ssid { + */ + int no_auto_peer; + ++ int noscan; ++ + /** + * mesh_rssi_threshold - Set mesh parameter mesh_rssi_threshold (dBm) + * -- cgit v1.2.3