|
@@ -0,0 +1,61 @@
|
|
|
+From: Masashi Honma <[email protected]>
|
|
|
+Date: Tue, 26 Jul 2016 11:45:40 +0900
|
|
|
+Subject: [PATCH] mesh: Set correct secondary channel offset if HT40 is
|
|
|
+ disabled
|
|
|
+
|
|
|
+Previously, secondary channel offset could be non zero even though
|
|
|
+disable_ht40=1. This patch fixes it.
|
|
|
+
|
|
|
+Signed-off-by: Masashi Honma <[email protected]>
|
|
|
+---
|
|
|
+
|
|
|
+--- a/wpa_supplicant/wpa_supplicant.c
|
|
|
++++ b/wpa_supplicant/wpa_supplicant.c
|
|
|
+@@ -1901,20 +1901,27 @@ void ibss_mesh_setup_freq(struct wpa_sup
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
++#ifdef CONFIG_HT_OVERRIDES
|
|
|
++ if (ssid->disable_ht40)
|
|
|
++ ht40 = 0;
|
|
|
++#endif /* CONFIG_HT_OVERRIDES */
|
|
|
+
|
|
|
+- /* Find secondary channel */
|
|
|
+- for (i = 0; i < mode->num_channels; i++) {
|
|
|
+- sec_chan = &mode->channels[i];
|
|
|
+- if (sec_chan->chan == channel + ht40 * 4)
|
|
|
+- break;
|
|
|
+- sec_chan = NULL;
|
|
|
+- }
|
|
|
+- if (!sec_chan)
|
|
|
+- return;
|
|
|
++ if (ht40) {
|
|
|
++ /* Find secondary channel */
|
|
|
++ for (i = 0; i < mode->num_channels; i++) {
|
|
|
++ sec_chan = &mode->channels[i];
|
|
|
++ if (sec_chan->chan == channel + ht40 * 4)
|
|
|
++ break;
|
|
|
++ sec_chan = NULL;
|
|
|
++ }
|
|
|
++ if (!sec_chan)
|
|
|
++ return;
|
|
|
+
|
|
|
+- /* Check secondary channel flags */
|
|
|
+- if (sec_chan->flag & (HOSTAPD_CHAN_DISABLED | HOSTAPD_CHAN_NO_IR))
|
|
|
+- return;
|
|
|
++ /* Check secondary channel flags */
|
|
|
++ if (sec_chan->flag &
|
|
|
++ (HOSTAPD_CHAN_DISABLED | HOSTAPD_CHAN_NO_IR))
|
|
|
++ return;
|
|
|
++ }
|
|
|
+
|
|
|
+ freq->channel = pri_chan->chan;
|
|
|
+
|
|
|
+@@ -1930,6 +1937,7 @@ void ibss_mesh_setup_freq(struct wpa_sup
|
|
|
+ freq->sec_channel_offset = 1;
|
|
|
+ break;
|
|
|
+ default:
|
|
|
++ freq->sec_channel_offset = 0;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|