mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-28 17:48:58 +00:00
34705946e2
Drop outdated and by now broken patchset originally supplied by Peter Oh in August 2018 but never merged upstream. Instead add the more promissing rework recently submitted by Markus Theil who picked up Peter's patchset, fixed and completed it and added support for HE (802.11ax) in mesh mode. This is only compile tested and needs some real-life testing. Fixes: FS#3214 Fixes:167028b750
("hostapd: Update to version 2.9 (2019-08-08)") Fixes:0a3ec87a66
("hostapd: update to latest Git hostap_2_9-1238-gdd2daf0848ed") Fixes:017320ead3
("hostapd: bring back mesh patches") Signed-off-by: Daniel Golle <daniel@makrotopia.org>
81 lines
2.4 KiB
Diff
81 lines
2.4 KiB
Diff
From 8de8cd8380af0c43d4fde67a668d79ef73b26b26 Mon Sep 17 00:00:00 2001
|
|
From: Peter Oh <peter.oh@bowerswilkins.com>
|
|
Date: Tue, 30 Jun 2020 14:18:58 +0200
|
|
Subject: [PATCH 10/19] mesh: Allow DFS channels to be selected if dfs is
|
|
enabled
|
|
|
|
Note: DFS is assumed to be usable if a country code has been set
|
|
|
|
Signed-off-by: Benjamin Berg <benjamin@sipsolutions.net>
|
|
Signed-off-by: Peter Oh <peter.oh@bowerswilkins.com>
|
|
---
|
|
wpa_supplicant/wpa_supplicant.c | 25 +++++++++++++++++++------
|
|
1 file changed, 19 insertions(+), 6 deletions(-)
|
|
|
|
--- a/wpa_supplicant/wpa_supplicant.c
|
|
+++ b/wpa_supplicant/wpa_supplicant.c
|
|
@@ -2349,6 +2349,8 @@ void ibss_mesh_setup_freq(struct wpa_sup
|
|
int chwidth, seg0, seg1;
|
|
u32 vht_caps = 0;
|
|
int is_24ghz;
|
|
+ int dfs_enabled = wpa_s->conf->country[0] &&
|
|
+ (wpa_s->drv_flags & WPA_DRIVER_FLAGS_RADAR);
|
|
|
|
freq->freq = ssid->frequency;
|
|
|
|
@@ -2436,8 +2438,11 @@ void ibss_mesh_setup_freq(struct wpa_sup
|
|
return;
|
|
|
|
/* Check primary channel flags */
|
|
- if (pri_chan->flag & (HOSTAPD_CHAN_DISABLED | HOSTAPD_CHAN_NO_IR))
|
|
+ if (pri_chan->flag & HOSTAPD_CHAN_DISABLED)
|
|
return;
|
|
+ if (pri_chan->flag & (HOSTAPD_CHAN_RADAR | HOSTAPD_CHAN_NO_IR))
|
|
+ if (!dfs_enabled)
|
|
+ return;
|
|
|
|
freq->channel = pri_chan->chan;
|
|
|
|
@@ -2470,8 +2475,11 @@ void ibss_mesh_setup_freq(struct wpa_sup
|
|
return;
|
|
|
|
/* Check secondary channel flags */
|
|
- if (sec_chan->flag & (HOSTAPD_CHAN_DISABLED | HOSTAPD_CHAN_NO_IR))
|
|
+ if (sec_chan->flag & HOSTAPD_CHAN_DISABLED)
|
|
return;
|
|
+ if (sec_chan->flag & (HOSTAPD_CHAN_RADAR | HOSTAPD_CHAN_NO_IR))
|
|
+ if (!dfs_enabled)
|
|
+ return;
|
|
|
|
if (ht40 == -1) {
|
|
if (!(pri_chan->flag & HOSTAPD_CHAN_HT40MINUS))
|
|
@@ -2564,8 +2572,11 @@ skip_ht40:
|
|
return;
|
|
|
|
/* Back to HT configuration if channel not usable */
|
|
- if (chan->flag & (HOSTAPD_CHAN_DISABLED | HOSTAPD_CHAN_NO_IR))
|
|
+ if (chan->flag & HOSTAPD_CHAN_DISABLED)
|
|
return;
|
|
+ if (chan->flag & (HOSTAPD_CHAN_RADAR | HOSTAPD_CHAN_NO_IR))
|
|
+ if (!dfs_enabled)
|
|
+ return;
|
|
}
|
|
|
|
chwidth = CHANWIDTH_80MHZ;
|
|
@@ -2585,10 +2596,12 @@ skip_ht40:
|
|
if (!chan)
|
|
continue;
|
|
|
|
- if (chan->flag & (HOSTAPD_CHAN_DISABLED |
|
|
- HOSTAPD_CHAN_NO_IR |
|
|
- HOSTAPD_CHAN_RADAR))
|
|
+ if (chan->flag & HOSTAPD_CHAN_DISABLED)
|
|
continue;
|
|
+ if (chan->flag & (HOSTAPD_CHAN_RADAR |
|
|
+ HOSTAPD_CHAN_NO_IR))
|
|
+ if (!dfs_enabled)
|
|
+ continue;
|
|
|
|
/* Found a suitable second segment for 80+80 */
|
|
chwidth = CHANWIDTH_80P80MHZ;
|