[PATCH 30/71] wpa_supplicant: Add NAN config to disallow freqs and limit bandwidth

Andrei Otcheretianski andrei.otcheretianski at intel.com
Wed Apr 1 15:01:39 PDT 2026


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   | 27 +++++++++++++++++++++++++++
 wpa_supplicant/wpa_supplicant_i.h |  2 ++
 2 files changed, 29 insertions(+)

diff --git a/wpa_supplicant/nan_supplicant.c b/wpa_supplicant/nan_supplicant.c
index 3a076c044e..6973bccc39 100644
--- a/wpa_supplicant/nan_supplicant.c
+++ b/wpa_supplicant/nan_supplicant.c
@@ -102,6 +102,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);
@@ -109,6 +112,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;
@@ -507,6 +514,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;
 }
 
@@ -624,6 +634,23 @@ int wpas_nan_set(struct wpa_supplicant *wpa_s, char *cmd)
 		os_memcpy(config->cluster_id, cluster_id, ETH_ALEN);
 		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_INT
 #undef NAN_PARSE_BAND
 
diff --git a/wpa_supplicant/wpa_supplicant_i.h b/wpa_supplicant/wpa_supplicant_i.h
index e9602ff2bc..44a7f58c28 100644
--- a/wpa_supplicant/wpa_supplicant_i.h
+++ b/wpa_supplicant/wpa_supplicant_i.h
@@ -1735,6 +1735,8 @@ struct wpa_supplicant {
 	u8 schedule_sequence_id;
 	struct nan_schedule_config nan_sched[MAX_NAN_RADIOS];
 	u16 nan_supported_csids;
+	struct wpa_freq_range_list nan_disallowed_freqs;
+	u16 nan_max_bw;
 #endif /* CONFIG_NAN */
 #ifdef CONFIG_ENC_ASSOC
 	bool assoc_resp_encrypted; /* Whether (Re)Association Response frame
-- 
2.53.0




More information about the Hostap mailing list