aboutsummaryrefslogtreecommitdiffstats
path: root/package/network/services/hostapd/patches/800-acs-don-t-select-indoor-channel-on-outdoor-operation.patch
blob: 1d9e9564ecfb143a0c4c9a7dc93c2047a20b7cae (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
From 37528a5205cb0b9e2238b7d97fb2ff5457448f1c Mon Sep 17 00:00:00 2001
From: David Bauer <mail@david-bauer.net>
Date: Thu, 8 Sep 2022 01:45:41 +0200
Subject: [PATCH] acs: don't select indoor channel on outdoor operation

Don't select channels designated for exclusive-indoor use when the
country3 element is set on outdoor operation.

Signed-off-by: David Bauer <mail@david-bauer.net>
---
 src/ap/acs.c | 9 +++++++++
 src/ap/dfs.c | 3 +++
 2 files changed, 12 insertions(+)

--- a/src/ap/acs.c
+++ b/src/ap/acs.c
@@ -552,6 +552,9 @@ static void acs_survey_mode_interference
 		if (chan->max_tx_power < iface->conf->min_tx_power)
 			continue;
 
+		if (chan->flag & HOSTAPD_CHAN_INDOOR_ONLY && iface->conf->country[2] == 0x4f)
+			continue;
+
 		wpa_printf(MSG_DEBUG, "ACS: Survey analysis for channel %d (%d MHz)",
 			   chan->chan, chan->freq);
 
@@ -686,6 +689,9 @@ acs_find_ideal_chan_mode(struct hostapd_
 		if (chan->max_tx_power < iface->conf->min_tx_power)
 			continue;
 
+		if (chan->flag & HOSTAPD_CHAN_INDOOR_ONLY && iface->conf->country[2] == 0x4f)
+			continue;
+
 		if (!chan_bw_allowed(chan, bw, 1, 1)) {
 			wpa_printf(MSG_DEBUG,
 				   "ACS: Channel %d: BW %u is not supported",
@@ -1067,6 +1073,9 @@ static int * acs_request_scan_add_freqs(
 		if (chan->max_tx_power < iface->conf->min_tx_power)
 			continue;
 
+		if (chan->flag & HOSTAPD_CHAN_INDOOR_ONLY && iface->conf->country[2] == 0x4f)
+			continue;
+
 		*freq++ = chan->freq;
 	}
 
--- a/src/ap/dfs.c
+++ b/src/ap/dfs.c
@@ -282,6 +282,9 @@ static int dfs_find_channel(struct hosta
 		if (chan->max_tx_power < iface->conf->min_tx_power)
 			continue;
 
+		if (chan->flag & HOSTAPD_CHAN_INDOOR_ONLY && iface->conf->country[2] == 0x4f)
+			continue;
+
 		if (ret_chan && idx == channel_idx) {
 			wpa_printf(MSG_DEBUG, "Selected channel %d (%d)",
 				   chan->freq, chan->chan);