[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