[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