From 7282f533774de1ab99a28f34ab5b96ba331e4f99 Mon Sep 17 00:00:00 2001 From: Deepak Dhamdhere Date: Mon, 28 Nov 2016 17:56:33 -0800 Subject: qcacld-3.0: Do not send WEP keys to firmware after roaming LFR module in firmware copies WEP keys from old AP to new AP during roaming. Host driver should not install 0 length keys during roam sync indication processing. Change-Id: I002be0ab330a7161ca2554d9d423e8e1b2170e55 CRs-Fixed: 1096918 --- core/sme/src/csr/csr_api_roam.c | 38 ++++++++++++++------------------------ 1 file changed, 14 insertions(+), 24 deletions(-) diff --git a/core/sme/src/csr/csr_api_roam.c b/core/sme/src/csr/csr_api_roam.c index 48bcc6bf6b87..c268abbf5c79 100644 --- a/core/sme/src/csr/csr_api_roam.c +++ b/core/sme/src/csr/csr_api_roam.c @@ -19440,7 +19440,6 @@ void csr_roam_synch_callback(tpAniSirGlobal mac_ctx, tCsrRoamInfo *roam_info; tCsrRoamConnectedProfile *conn_profile = NULL; sme_QosAssocInfo assoc_info; - struct qdf_mac_addr bcast_mac = QDF_MAC_ADDR_BROADCAST_INITIALIZER; tpAddBssParams add_bss_params; QDF_STATUS status = QDF_STATUS_SUCCESS; uint16_t len; @@ -19550,29 +19549,20 @@ void csr_roam_synch_callback(tpAniSirGlobal mac_ctx, session->pCurRoamProfile->negotiatedAuthType, bss_desc, ies_local); roam_info->isESEAssoc = conn_profile->isESEAssoc; - if (CSR_IS_ENC_TYPE_STATIC - (session->pCurRoamProfile->negotiatedUCEncryptionType) && - !session->pCurRoamProfile->bWPSAssociation) { - if (!QDF_IS_STATUS_SUCCESS( - csr_roam_issue_set_context_req(mac_ctx, - session_id, - session->pCurRoamProfile->negotiatedUCEncryptionType, - bss_desc, - &(bss_desc->bssId), - false, true, - eSIR_TX_RX, 0, 0, NULL, 0))) { - /* NO keys. these key parameters don't matter */ - sms_log(mac_ctx, LOGE, - FL("Set context for unicast fail")); - csr_roam_substate_change(mac_ctx, - eCSR_ROAM_SUBSTATE_NONE, session_id); - } - csr_roam_issue_set_context_req(mac_ctx, session_id, - session->pCurRoamProfile->negotiatedMCEncryptionType, - bss_desc, - &bcast_mac.bytes, false, false, - eSIR_TX_RX, 0, 0, NULL, 0); - } + + /* + * Encryption keys for new connection are obtained as follows: + * authStatus = CSR_ROAM_AUTH_STATUS_AUTHENTICATED + * Open - No keys required. + * Static WEP - Firmware copies keys from old AP to new AP. + * Fast roaming authentications e.g. PSK, FT, CCKM - firmware + * supplicant obtains them through 4-way handshake. + * + * authStatus = CSR_ROAM_AUTH_STATUS_CONNECTED + * All other authentications - Host supplicant performs EAPOL + * with AP after this point and sends new keys to the driver. + * Driver starts wait_for_key timer for that purpose. + */ if ((roam_synch_data->authStatus == CSR_ROAM_AUTH_STATUS_AUTHENTICATED)) { QDF_TRACE(QDF_MODULE_ID_SME, -- cgit v1.2.3