[RFC PATCH 25/34] Compare PR capabilites of Auth frame and USD info of peer

Peddolla Harshavardhan Reddy peddolla at qti.qualcomm.com
Thu May 15 00:17:48 PDT 2025


Signed-off-by: Peddolla Harshavardhan Reddy <peddolla at qti.qualcomm.com>
---
 src/common/proximity_ranging.c | 55 ++++++++++++++++++++++++++++++++++
 1 file changed, 55 insertions(+)

diff --git a/src/common/proximity_ranging.c b/src/common/proximity_ranging.c
index 9f57135b3..cc7e5115a 100644
--- a/src/common/proximity_ranging.c
+++ b/src/common/proximity_ranging.c
@@ -1079,6 +1079,48 @@ void pr_process_usd_elems(struct pr_data *pr, const u8 *ies, u16 ies_len,
 
 #ifdef CONFIG_PASN
 
+static int pr_compare_ranging_capa_params(struct pr_device *dev,
+					  struct pr_capabilities *caps)
+{
+	if (dev->pr_caps.edca_support != caps->edca_support ||
+	    dev->pr_caps.ntb_support != caps->ntb_support ||
+	    dev->pr_caps.pasn_type != caps->pasn_type ||
+	    dev->pr_caps.secure_he_ltf != caps->secure_he_ltf ||
+	    dev->pr_caps.support_6ghz != caps->support_6ghz ||
+	    os_strcmp(dev->pr_caps.device_name, caps->device_name))
+		return -1;
+
+	return 0;
+}
+
+
+static int pr_compare_edca_params(struct pr_device *dev,
+				  struct edca_capabilities *edca_caps)
+{
+	if (dev->edca_caps.ista_support != edca_caps->ista_support ||
+	    dev->edca_caps.rsta_support != edca_caps->rsta_support ||
+	    dev->edca_caps.edca_hw_caps != edca_caps->edca_hw_caps ||
+	    os_memcmp(dev->edca_caps.country, edca_caps->country, 3))
+		return -1;
+
+	return 0;
+}
+
+
+static int pr_compare_ntb_params(struct pr_device *dev,
+				 struct ntb_capabilities *ntb_caps)
+{
+	if (dev->ntb_caps.ista_support != ntb_caps->ista_support ||
+	    dev->ntb_caps.rsta_support != ntb_caps->rsta_support ||
+	    dev->ntb_caps.ntb_hw_caps != ntb_caps->ntb_hw_caps ||
+	    dev->ntb_caps.secure_he_ltf != ntb_caps->secure_he_ltf ||
+	    os_memcmp(dev->ntb_caps.country, ntb_caps->country, 3))
+		return -1;
+
+	return 0;
+}
+
+
 static void pr_buf_add_operation_mode(struct wpabuf *buf,
 				      struct operation_mode *mode)
 {
@@ -1958,6 +2000,10 @@ static int pr_process_pasn_ranging_wrapper(struct pr_data *pr,
 	os_memset(&caps, 0, sizeof(struct pr_capabilities));
 	pr_process_ranging_capabilities(msg.pr_capability,
 					msg.pr_capability_len, &caps);
+	if (pr_compare_ranging_capa_params(dev, &caps)) {
+		wpa_printf(MSG_DEBUG, "PR: Ranging capabilities not matching");
+		goto end;
+	}
 
 	pr_get_ranging_capabilities(pr, &caps);
 
@@ -1978,6 +2024,11 @@ static int pr_process_pasn_ranging_wrapper(struct pr_data *pr,
 					    msg.ntb_capability_len, &ntb,
 					    caps.secure_he_ltf);
 
+		if (pr_compare_ntb_params(dev, &ntb)) {
+			wpa_printf(MSG_DEBUG, "PR: NTB capabilities not matching");
+			goto end;
+		}
+
 		if (dev->ntb_caps.ista_support)
 			supp_ranging_role |= PR_ISTA_SUPPORT;
 		if (dev->ntb_caps.rsta_support)
@@ -1989,6 +2040,10 @@ static int pr_process_pasn_ranging_wrapper(struct pr_data *pr,
 	} else if (op_mode.protocol_type & PR_EDCA_BASED_RANGING) {
 		pr_process_edca_capabilities(msg.edca_capability,
 					     msg.edca_capability_len, &edca);
+		if (pr_compare_edca_params(dev, &edca)) {
+			wpa_printf(MSG_DEBUG, "PR: EDCA capabilities not matching");
+			goto end;
+		}
 
 		if (dev->edca_caps.ista_support)
 			supp_ranging_role |= PR_ISTA_SUPPORT;
-- 
2.34.1




More information about the Hostap mailing list