[PATCH 10/16] PR: Fix 6 GHz channel exclusion in EDCA PASN PR element construction

Peddolla Harshavardhan Reddy peddolla.reddy at oss.qualcomm.com
Sun Jul 12 23:29:58 PDT 2026


Currently wpas_pr_setup_edca_channels() unconditionally skips 6 GHz
operating classes, preventing 6 GHz channels from being included in
the EDCA (11mc) channel list even when the device supports 6 GHz.

Add an allow_6ghz parameter to wpas_pr_setup_edca_channels() and
pass pr.support_6ghz at the call site, matching the existing pattern
in wpas_pr_setup_ntb_channels(). Also pass pr->cfg->support_6ghz to
pr_copy_channels() in pr_prepare_pasn_pr_elem() for the EDCA path
so that 6 GHz channels are correctly included in the PASN PR element
when the device is 6 GHz capable.

Fixes: 328ab369615e ("PR: Add PR element into PASN Auth1 frame")
Signed-off-by: Peddolla Harshavardhan Reddy <peddolla.reddy at oss.qualcomm.com>
---
 src/common/proximity_ranging.c | 3 ++-
 wpa_supplicant/pr_supplicant.c | 8 +++++---
 2 files changed, 7 insertions(+), 4 deletions(-)

diff --git a/src/common/proximity_ranging.c b/src/common/proximity_ranging.c
index 91c8eae20..7786dcd6e 100644
--- a/src/common/proximity_ranging.c
+++ b/src/common/proximity_ranging.c
@@ -1656,7 +1656,8 @@ static int pr_prepare_pasn_pr_elem(struct pr_data *pr, struct wpabuf *extra_ies,
 	if (ranging_type & PR_EDCA_BASED_RANGING) {
 		pr_get_edca_capabilities(pr, &edca_caps);
 		pr_buf_add_edca_capa_info(buf, &edca_caps);
-		pr_copy_channels(&op_channels, &edca_caps.channels, false);
+		pr_copy_channels(&op_channels, &edca_caps.channels,
+				 pr->cfg->support_6ghz);
 	} else if (ranging_type & PR_NTB_OPEN_BASED_RANGING ||
 		   ranging_type & PR_NTB_SECURE_LTF_BASED_RANGING) {
 		pr_get_ntb_capabilities(pr, &ntb_caps);
diff --git a/wpa_supplicant/pr_supplicant.c b/wpa_supplicant/pr_supplicant.c
index 5a8aee652..bb070a6e7 100644
--- a/wpa_supplicant/pr_supplicant.c
+++ b/wpa_supplicant/pr_supplicant.c
@@ -230,7 +230,8 @@ static int wpas_pr_op_class_to_chan_params(u8 op_class, u8 op_channel,
 static void
 wpas_pr_setup_edca_channels(struct wpa_supplicant *wpa_s,
 			    struct pr_channels *chan,
-			    u32 bw_bitmap, u32 preamble_bitmap)
+			    u32 bw_bitmap, u32 preamble_bitmap,
+			    bool allow_6ghz)
 {
 	struct hostapd_hw_modes *mode;
 	int cla = 0, i;
@@ -242,7 +243,7 @@ wpas_pr_setup_edca_channels(struct wpa_supplicant *wpa_s,
 
 		mode = get_mode(wpa_s->hw.modes, wpa_s->hw.num_modes, o->mode,
 				is_6ghz_op_class(o->op_class));
-		if (!mode || is_6ghz_op_class(o->op_class) ||
+		if (!mode || (!allow_6ghz && is_6ghz_op_class(o->op_class)) ||
 		    !wpas_pr_edca_is_valid_op_class(bw_bitmap, preamble_bitmap,
 						    o))
 			continue;
@@ -668,7 +669,8 @@ int wpas_pr_init(struct wpa_global *global, struct wpa_supplicant *wpa_s,
 
 	wpas_pr_setup_edca_channels(wpa_s, &pr.edca_channels,
 				    capa->pd_bandwidths,
-				    capa->pd_preambles);
+				    capa->pd_preambles,
+				    pr.support_6ghz);
 	pr.ntb_format_and_bw =
 		wpas_pr_best_ntb_format_bw(capa->pd_bandwidths,
 					   capa->pd_preambles);
-- 
2.34.1




More information about the Hostap mailing list