[RFC v2 83/99] wpa_supplicant: Add NAN config to disallow freqs and limit bandwidth

Andrei Otcheretianski andrei.otcheretianski at intel.com
Tue Dec 23 03:52:27 PST 2025


Add max_bw and disallowed_freqs NAN configuration options which may be
used to limit maximum bandwidth and configure the list of disallowed
NAN frequencies.

Signed-off-by: Andrei Otcheretianski <andrei.otcheretianski at intel.com>
---
 wpa_supplicant/nan_supplicant.c   | 26 ++++++++++++++++++++++++++
 wpa_supplicant/wpa_supplicant_i.h |  2 ++
 2 files changed, 28 insertions(+)

diff --git a/wpa_supplicant/nan_supplicant.c b/wpa_supplicant/nan_supplicant.c
index 8571d83f58..6bc3f69b85 100644
--- a/wpa_supplicant/nan_supplicant.c
+++ b/wpa_supplicant/nan_supplicant.c
@@ -99,6 +99,9 @@ static bool wpas_nan_valid_chan(struct wpa_supplicant *wpa_s,
 	if (!center)
 		return false;
 
+	if (wpa_s->nan_max_bw && width > wpa_s->nan_max_bw)
+		return false;
+
 	span = (width - 20) / 10;
 	for (c = center - span; c <= center + span; c += 4) {
 		int freq = ieee80211_chan_to_freq(NULL, op_class, c);
@@ -106,6 +109,10 @@ static bool wpas_nan_valid_chan(struct wpa_supplicant *wpa_s,
 		if (freq < 0)
 			return false;
 
+		if (freq_range_list_includes(&wpa_s->nan_disallowed_freqs,
+					     freq))
+			return false;
+
 		if (ieee80211_is_dfs(freq, wpa_s->hw.modes,
 				     wpa_s->hw.num_modes))
 			return false;
@@ -509,6 +516,9 @@ void wpas_nan_deinit(struct wpa_supplicant *wpa_s)
 		clear_sched_config(&wpa_s->nan_sched[i]);
 
 	nan_deinit(wpa_s->nan);
+	os_free(wpa_s->nan_disallowed_freqs.range);
+	os_memset(&wpa_s->nan_disallowed_freqs, 0,
+		  sizeof(wpa_s->nan_disallowed_freqs));
 	wpa_s->nan = NULL;
 }
 
@@ -622,6 +632,22 @@ int wpas_nan_set(struct wpa_supplicant *wpa_s, char *cmd)
 		return 0;
 	}
 
+	if (os_strcmp("max_bw", cmd) == 0) {
+		wpa_s->nan_max_bw = atoi(param);
+		return 0;
+	}
+
+	if (os_strcmp("disallowed_freqs", cmd) == 0) {
+		if (freq_range_list_parse(&wpa_s->nan_disallowed_freqs,
+					  param)) {
+			wpa_printf(MSG_DEBUG,
+				   "NAN: Invalid disallowed_freqs value");
+			return -1;
+		}
+
+		return 0;
+	}
+
 #undef NAN_PARSE
 #undef NAN_PARSE_BAND
 
diff --git a/wpa_supplicant/wpa_supplicant_i.h b/wpa_supplicant/wpa_supplicant_i.h
index 0f17001e85..f2ec03f77b 100644
--- a/wpa_supplicant/wpa_supplicant_i.h
+++ b/wpa_supplicant/wpa_supplicant_i.h
@@ -1676,6 +1676,8 @@ struct wpa_supplicant {
 	struct nan_cluster_config nan_config;
 	u8 schedule_sequence_id;
 	struct nan_schedule_config nan_sched[MAX_NAN_RADIOS];
+	struct wpa_freq_range_list nan_disallowed_freqs;
+	u16 nan_max_bw;
 	u8 nan_supported_csids;
 #endif
 };
-- 
2.49.0




More information about the Hostap mailing list