From cc116d989313d5035dba8f95201d3b6913ae5dfe Mon Sep 17 00:00:00 2001 From: Chaoli Zhou Date: Tue, 18 Jul 2023 11:21:15 +0800 Subject: [PATCH] qcacld-3.0: Strip WAPI IE from additional IEs Support to strip WAPI IE from additional IEs for beacon frame. Otherwise, it will have duplicated WAPI IE, which mean one is from rsnIE and the other is from probeRespBCNData_buff. Change-Id: Id9708c81445fbb88e5ceb79698bff6bd02f931df CRs-Fixed: 3562798 --- .../src/pe/lim/lim_process_sme_req_messages.c | 25 +++++++++++++++++++ core/mac/src/pe/lim/lim_utils.h | 12 +++++++++ core/mac/src/pe/sch/sch_beacon_gen.c | 1 + 3 files changed, 38 insertions(+) diff --git a/core/mac/src/pe/lim/lim_process_sme_req_messages.c b/core/mac/src/pe/lim/lim_process_sme_req_messages.c index 66f81fcab7..4a40d20347 100644 --- a/core/mac/src/pe/lim/lim_process_sme_req_messages.c +++ b/core/mac/src/pe/lim/lim_process_sme_req_messages.c @@ -646,6 +646,31 @@ void lim_strip_he_ies_from_add_ies(struct mac_context *mac_ctx, } #endif +#ifdef FEATURE_WLAN_WAPI + +void lim_strip_wapi_ies_from_add_ies(struct mac_context *mac_ctx, + struct pe_session *session) +{ + struct add_ie_params *add_ie = &session->add_ie_params; + uint8_t wapiie_buff[DOT11F_IE_WAPIOPAQUE_MAX_LEN + 2]; + QDF_STATUS status; + + qdf_mem_zero(wapiie_buff, sizeof(wapiie_buff)); + + status = lim_strip_ie(mac_ctx, add_ie->probeRespBCNData_buff, + &add_ie->probeRespBCNDataLen, + DOT11F_EID_WAPIOPAQUE, ONE_BYTE, + NULL, 0, + wapiie_buff, DOT11F_IE_WAPIOPAQUE_MAX_LEN); + if (status != QDF_STATUS_SUCCESS) + pe_debug("Failed to strip WAPI IE status: %d", status); +} +#else +void lim_strip_wapi_ies_from_add_ies(struct mac_context *mac_ctx, + struct pe_session *session) +{ +} +#endif /** * lim_set_ldpc_exception() - to set allow any LDPC exception permitted * @mac_ctx: Pointer to mac context diff --git a/core/mac/src/pe/lim/lim_utils.h b/core/mac/src/pe/lim/lim_utils.h index 3b653dfe13..95ed567a0b 100644 --- a/core/mac/src/pe/lim/lim_utils.h +++ b/core/mac/src/pe/lim/lim_utils.h @@ -1068,6 +1068,18 @@ void lim_strip_he_ies_from_add_ies(struct mac_context *mac_ctx, void lim_strip_eht_ies_from_add_ies(struct mac_context *mac_ctx, struct pe_session *session); +/** + * lim_strip_wapi_ies_from_add_ies() - This function strip WAPI IE from add_ie + * @mac_ctx: pointer to mac context + * @pe_session: pointer to PE session + * + * This API is to strip WAPI IE from add_ie + * + * Return: none + */ +void lim_strip_wapi_ies_from_add_ies(struct mac_context *mac_ctx, + struct pe_session *session); + /** * lim_del_pmf_sa_query_timer() - This function deletes SA query timer * @mac_ctx: pointer to mac context diff --git a/core/mac/src/pe/sch/sch_beacon_gen.c b/core/mac/src/pe/sch/sch_beacon_gen.c index 5fbe472036..ae08e4b6e7 100644 --- a/core/mac/src/pe/sch/sch_beacon_gen.c +++ b/core/mac/src/pe/sch/sch_beacon_gen.c @@ -872,6 +872,7 @@ sch_set_fixed_beacon_fields(struct mac_context *mac_ctx, struct pe_session *sess */ lim_strip_he_ies_from_add_ies(mac_ctx, session); lim_strip_eht_ies_from_add_ies(mac_ctx, session); + lim_strip_wapi_ies_from_add_ies(mac_ctx, session); addn_ielen = session->add_ie_params.probeRespBCNDataLen; addn_ie = qdf_mem_malloc(addn_ielen);