[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