Signed-off-by: Peddolla Harshavardhan Reddy <peddolla@xxxxxxxxxxxxxxxx> --- 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 _______________________________________________ Hostap mailing list Hostap@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/hostap