From 7117897437e0895bb6fc6497f0cd86bd7bf17085 Mon Sep 17 00:00:00 2001 From: Yu Ouyang Date: Mon, 23 Sep 2019 11:25:03 +0800 Subject: [PATCH] qcacld-3.0: Fix 'sae_info' undeclared issue Structure csr_roam_info member 'sae_info' is defined only when WLAN_FEATURE_SAE is defined. But function csr_process_roam_auth_offload_callback() call it without any checking. Because function csr_process_roam_auth_offload_callback() processes WPA3 SAE info, so rename it, and move it to macro WLAN_FEATURE_SAE. Change-Id: If3d5c1e6739fbd7bee24d19fbbab3495a9a6f8f6 CRs-Fixed: 2532693 --- core/sme/inc/csr_neighbor_roam.h | 22 ------- core/sme/src/csr/csr_api_roam.c | 98 +++++++++++++++++++------------- 2 files changed, 58 insertions(+), 62 deletions(-) diff --git a/core/sme/inc/csr_neighbor_roam.h b/core/sme/inc/csr_neighbor_roam.h index 34eb83db1267..09a7b8bafc8e 100644 --- a/core/sme/inc/csr_neighbor_roam.h +++ b/core/sme/inc/csr_neighbor_roam.h @@ -409,20 +409,6 @@ QDF_STATUS csr_roam_auth_offload_callback(struct mac_context *mac_ctx, uint8_t vdev_id, struct qdf_mac_addr bssid); - -/** - * csr_process_roam_auth_offload_callback() - API to trigger the - * WPA3 pre-auth event for candidate AP received from firmware. - * @vdev_id: vdev id - * @roam_bssid: Candidate BSSID to roam - * - * This function calls the hdd_sme_roam_callback with reason - * eCSR_ROAM_SAE_COMPUTE to trigger SAE auth to supplicant. - */ -QDF_STATUS -csr_process_roam_auth_offload_callback(struct mac_context *mac_ctx, - uint8_t vdev_id, - struct qdf_mac_addr roam_bssid); #else static inline QDF_STATUS csr_roam_synch_callback(struct mac_context *mac, struct roam_offload_synch_ind *roam_synch_data, @@ -438,14 +424,6 @@ csr_roam_auth_offload_callback(struct mac_context *mac_ctx, { return QDF_STATUS_E_NOSUPPORT; } - -static inline QDF_STATUS -csr_process_roam_auth_offload_callback(struct mac_context *mac_ctx, - uint8_t vdev_id, - struct qdf_mac_addr roam_bssid) -{ - return QDF_STATUS_E_NOSUPPORT; -} #endif void csr_neighbor_roam_state_transition(struct mac_context *mac_ctx, uint8_t newstate, uint8_t session); diff --git a/core/sme/src/csr/csr_api_roam.c b/core/sme/src/csr/csr_api_roam.c index ae2d2f0f9816..d3a594ac7a98 100644 --- a/core/sme/src/csr/csr_api_roam.c +++ b/core/sme/src/csr/csr_api_roam.c @@ -15373,10 +15373,67 @@ static void csr_update_sae_config(struct join_req *csr_join_req, csr_join_req->sae_pmk_cached, QDF_MAC_ADDR_ARRAY(csr_join_req->bssDescription.bssId)); } + +/** + * csr_process_roam_auth_sae_callback() - API to trigger the + * WPA3 pre-auth event for candidate AP received from firmware. + * @mac_ctx: Global mac context pointer + * @vdev_id: vdev id + * @roam_bssid: Candidate BSSID to roam + * + * This function calls the hdd_sme_roam_callback with reason + * eCSR_ROAM_SAE_COMPUTE to trigger SAE auth to supplicant. + */ +static QDF_STATUS +csr_process_roam_auth_sae_callback(struct mac_context *mac_ctx, + uint8_t vdev_id, + struct qdf_mac_addr roam_bssid) +{ + struct csr_roam_info *roam_info; + struct sir_sae_info sae_info; + struct csr_roam_session *session = CSR_GET_SESSION(mac_ctx, vdev_id); + + if (!session) { + sme_err("WPA3 Preauth event with invalid session id:%d", + vdev_id); + return QDF_STATUS_E_FAILURE; + } + + roam_info = qdf_mem_malloc(sizeof(*roam_info)); + if (!roam_info) + return QDF_STATUS_E_FAILURE; + + sae_info.msg_len = sizeof(sae_info); + sae_info.vdev_id = vdev_id; + + sae_info.ssid.length = session->connectedProfile.SSID.length; + qdf_mem_copy(sae_info.ssid.ssId, session->connectedProfile.SSID.ssId, + sae_info.ssid.length); + + qdf_mem_copy(sae_info.peer_mac_addr.bytes, + roam_bssid.bytes, QDF_MAC_ADDR_SIZE); + + roam_info->sae_info = &sae_info; + + csr_roam_call_callback(mac_ctx, vdev_id, roam_info, 0, + eCSR_ROAM_SAE_COMPUTE, eCSR_ROAM_RESULT_NONE); + + qdf_mem_free(roam_info); + + return QDF_STATUS_SUCCESS; +} #else static void csr_update_sae_config(struct join_req *csr_join_req, struct mac_context *mac, struct csr_roam_session *session) { } + +QDF_STATUS +csr_process_roam_auth_sae_callback(struct mac_context *mac_ctx, + uint8_t vdev_id, + struct qdf_mac_addr roam_bssid) +{ + return QDF_STATUS_E_NOSUPPORT; +} #endif /** @@ -21959,45 +22016,6 @@ csr_roam_synch_callback(struct mac_context *mac_ctx, return status; } -QDF_STATUS -csr_process_roam_auth_offload_callback(struct mac_context *mac_ctx, - uint8_t vdev_id, - struct qdf_mac_addr roam_bssid) -{ - struct csr_roam_info *roam_info; - struct sir_sae_info sae_info; - struct csr_roam_session *session = CSR_GET_SESSION(mac_ctx, vdev_id); - - if (!session) { - sme_err("WPA3 Preauth event with invalid session id:%d", - vdev_id); - return QDF_STATUS_E_FAILURE; - } - - roam_info = qdf_mem_malloc(sizeof(*roam_info)); - if (!roam_info) - return QDF_STATUS_E_FAILURE; - - sae_info.msg_len = sizeof(sae_info); - sae_info.vdev_id = vdev_id; - - sae_info.ssid.length = session->connectedProfile.SSID.length; - qdf_mem_copy(sae_info.ssid.ssId, session->connectedProfile.SSID.ssId, - sae_info.ssid.length); - - qdf_mem_copy(sae_info.peer_mac_addr.bytes, - roam_bssid.bytes, QDF_MAC_ADDR_SIZE); - - roam_info->sae_info = &sae_info; - - csr_roam_call_callback(mac_ctx, vdev_id, roam_info, 0, - eCSR_ROAM_SAE_COMPUTE, eCSR_ROAM_RESULT_NONE); - - qdf_mem_free(roam_info); - - return QDF_STATUS_SUCCESS; -} - QDF_STATUS csr_roam_auth_offload_callback(struct mac_context *mac_ctx, uint8_t vdev_id, struct qdf_mac_addr bssid) @@ -22008,7 +22026,7 @@ csr_roam_auth_offload_callback(struct mac_context *mac_ctx, if (!QDF_IS_STATUS_SUCCESS(status)) return status; - status = csr_process_roam_auth_offload_callback(mac_ctx, vdev_id, bssid); + status = csr_process_roam_auth_sae_callback(mac_ctx, vdev_id, bssid); sme_release_global_lock(&mac_ctx->sme);