diff --git a/core/sme/inc/sme_api.h b/core/sme/inc/sme_api.h index f6d1238fedfa..feb392fe5465 100644 --- a/core/sme/inc/sme_api.h +++ b/core/sme/inc/sme_api.h @@ -1183,9 +1183,10 @@ QDF_STATUS sme_del_periodic_tx_ptrn(mac_handle_t mac_handle, QDF_STATUS sme_send_rate_update_ind(mac_handle_t mac_handle, tSirRateUpdateInd *rateUpdateParams); QDF_STATUS sme_roam_del_pmkid_from_cache(mac_handle_t mac_handle, - uint8_t sessionId, - tPmkidCacheInfo *pmksa, - bool flush_cache); + uint8_t vdev_id, + struct wlan_crypto_pmksa *pmksa, + bool set_pmk); + void sme_get_command_q_status(mac_handle_t mac_handle); #ifdef FEATURE_WLAN_RMC diff --git a/core/sme/src/common/sme_api.c b/core/sme/src/common/sme_api.c index 37fb9a391f12..0ad09f7613b7 100644 --- a/core/sme/src/common/sme_api.c +++ b/core/sme/src/common/sme_api.c @@ -3150,25 +3150,30 @@ void sme_roam_free_connect_profile(tCsrRoamConnectedProfile *profile) } QDF_STATUS sme_roam_del_pmkid_from_cache(mac_handle_t mac_handle, - uint8_t sessionId, - tPmkidCacheInfo *pmksa, - bool flush_cache) + uint8_t vdev_id, + struct wlan_crypto_pmksa *pmksa, + bool set_pmk) { QDF_STATUS status = QDF_STATUS_E_FAILURE; struct mac_context *mac = MAC_CONTEXT(mac_handle); + struct wlan_objmgr_vdev *vdev; MTRACE(qdf_trace(QDF_MODULE_ID_SME, TRACE_CODE_SME_RX_HDD_ROAM_DEL_PMKIDCACHE, - sessionId, flush_cache)); - status = sme_acquire_global_lock(&mac->sme); - if (QDF_IS_STATUS_SUCCESS(status)) { - if (CSR_IS_SESSION_VALID(mac, sessionId)) - status = csr_roam_del_pmkid_from_cache(mac, sessionId, - pmksa, flush_cache); - else - status = QDF_STATUS_E_INVAL; - sme_release_global_lock(&mac->sme); + vdev_id, set_pmk)); + + vdev = wlan_objmgr_get_vdev_by_id_from_psoc(mac->psoc, vdev_id, + WLAN_LEGACY_SME_ID); + if (!vdev) { + sme_err("Vdev[%d] is NULL!", vdev_id); + return QDF_STATUS_E_FAILURE; } + + status = wlan_crypto_set_del_pmksa(vdev, pmksa, set_pmk); + if (QDF_IS_STATUS_ERROR(status)) + sme_err("Delete PMK entry failed"); + + wlan_objmgr_vdev_release_ref(vdev, WLAN_LEGACY_SME_ID); return status; } diff --git a/core/sme/src/csr/csr_api_roam.c b/core/sme/src/csr/csr_api_roam.c index 4b760a0b343a..a6c616496961 100644 --- a/core/sme/src/csr/csr_api_roam.c +++ b/core/sme/src/csr/csr_api_roam.c @@ -9468,7 +9468,7 @@ static void csr_roam_join_rsp_processor(struct mac_context *mac, mac_handle_t mac_handle = MAC_HANDLE(mac); struct csr_roam_session *session_ptr; struct csr_roam_connectedinfo *prev_connect_info; - tPmkidCacheInfo *pmksa_entry; + struct wlan_crypto_pmksa *pmksa; uint32_t len = 0, roamId = 0, reason_code = 0; bool is_dis_pending; @@ -9563,18 +9563,18 @@ static void csr_roam_join_rsp_processor(struct mac_context *mac, * AP. */ if (reason_code == eSIR_MAC_INVALID_PMKID) { - pmksa_entry = qdf_mem_malloc(sizeof(*pmksa_entry)); - if (!pmksa_entry) + pmksa = qdf_mem_malloc(sizeof(*pmksa)); + if (!pmksa) return; sme_warn("Assoc reject from BSSID:%pM due to invalid PMKID", session_ptr->joinFailStatusCode.bssId); - qdf_mem_copy(pmksa_entry->BSSID.bytes, + qdf_mem_copy(pmksa->bssid.bytes, &session_ptr->joinFailStatusCode.bssId, sizeof(tSirMacAddr)); sme_roam_del_pmkid_from_cache(mac_handle, session_ptr->vdev_id, - pmksa_entry, false); - qdf_mem_free(pmksa_entry); + pmksa, false); + qdf_mem_free(pmksa); } /* If Join fails while Handoff is in progress, indicate