From ea225a1beffdb8b21bd3884201d24d59d8383012 Mon Sep 17 00:00:00 2001 From: Sreelakshmi Konamki Date: Mon, 23 Jan 2017 18:50:51 +0530 Subject: qcacld-3.0: Update TSPEC IEs to CSR if TSPEC IE present in reassoc rsp Currently TSPEC IEs are not updated to CSR when reassoc response included TSPEC IEs. In LFR3 CCX roaming, CSR doesnt get TSPEC IE data as reassoc rsp doesnt include RIC data. Del TSPEC is not being processed properly at CSR level as it doesnt have any TSPEC information. Add changes to update TSPEC IEs and length to CSR after successful CCX roaming. Change-Id: I0e024c8264cb2e06042d517824245db1f1d09aea CRs-Fixed: 1108440 --- core/mac/src/pe/lim/lim_api.c | 19 +++++++++++++++---- core/sme/src/csr/csr_api_roam.c | 9 +++++++-- 2 files changed, 22 insertions(+), 6 deletions(-) diff --git a/core/mac/src/pe/lim/lim_api.c b/core/mac/src/pe/lim/lim_api.c index 63d090034697..e6885d88c2f9 100644 --- a/core/mac/src/pe/lim/lim_api.c +++ b/core/mac/src/pe/lim/lim_api.c @@ -2026,8 +2026,8 @@ QDF_STATUS pe_roam_synch_callback(tpAniSirGlobal mac_ctx, curr_sta_ds->nss = local_nss; ft_session_ptr->limMlmState = eLIM_MLM_LINK_ESTABLISHED_STATE; lim_init_tdls_data(mac_ctx, ft_session_ptr); - join_rsp_len = ft_session_ptr->RICDataLen + sizeof(tSirSmeJoinRsp) - - sizeof(uint8_t); + join_rsp_len = ft_session_ptr->RICDataLen + ft_session_ptr->tspecLen + + sizeof(tSirSmeJoinRsp) - sizeof(uint8_t); roam_sync_ind_ptr->join_rsp = qdf_mem_malloc(join_rsp_len); if (NULL == roam_sync_ind_ptr->join_rsp) { lim_log(mac_ctx, LOGE, FL("LFR3:mem alloc failed")); @@ -2038,8 +2038,8 @@ QDF_STATUS pe_roam_synch_callback(tpAniSirGlobal mac_ctx, return QDF_STATUS_E_NOMEM; } - lim_log(mac_ctx, LOG1, FL("Session RicLength = %d"), - ft_session_ptr->RICDataLen); + lim_log(mac_ctx, LOG1, FL("Session RicLength = %d tspecLen = %d"), + ft_session_ptr->RICDataLen, ft_session_ptr->tspecLen); if (ft_session_ptr->ricData != NULL) { roam_sync_ind_ptr->join_rsp->parsedRicRspLen = ft_session_ptr->RICDataLen; @@ -2050,6 +2050,17 @@ QDF_STATUS pe_roam_synch_callback(tpAniSirGlobal mac_ctx, ft_session_ptr->ricData = NULL; ft_session_ptr->RICDataLen = 0; } + if (ft_session_ptr->tspecIes != NULL) { + roam_sync_ind_ptr->join_rsp->tspecIeLen = + ft_session_ptr->tspecLen; + qdf_mem_copy(roam_sync_ind_ptr->join_rsp->frames + + roam_sync_ind_ptr->join_rsp->parsedRicRspLen, + ft_session_ptr->tspecIes, + roam_sync_ind_ptr->join_rsp->tspecIeLen); + qdf_mem_free(ft_session_ptr->tspecIes); + ft_session_ptr->tspecIes = NULL; + ft_session_ptr->tspecLen = 0; + } roam_sync_ind_ptr->join_rsp->vht_channel_width = ft_session_ptr->ch_width; roam_sync_ind_ptr->join_rsp->staId = curr_sta_ds->staIndex; diff --git a/core/sme/src/csr/csr_api_roam.c b/core/sme/src/csr/csr_api_roam.c index f30f906243df..2e69c7b0f680 100644 --- a/core/sme/src/csr/csr_api_roam.c +++ b/core/sme/src/csr/csr_api_roam.c @@ -19925,9 +19925,12 @@ void csr_roam_synch_callback(tpAniSirGlobal mac_ctx, FL("LFR3:Clear Connected info")); csr_roam_free_connected_info(mac_ctx, &session->connectedInfo); - len = roam_synch_data->join_rsp->parsedRicRspLen; + len = roam_synch_data->join_rsp->parsedRicRspLen + + roam_synch_data->join_rsp->tspecIeLen; QDF_TRACE(QDF_MODULE_ID_SME, QDF_TRACE_LEVEL_DEBUG, - FL("LFR3: RIC length - %d"), len); + FL("LFR3: RIC length - %d tspecLen %d"), + roam_synch_data->join_rsp->parsedRicRspLen, + roam_synch_data->join_rsp->tspecIeLen); if (len) { session->connectedInfo.pbFrames = qdf_mem_malloc(len); @@ -19936,6 +19939,8 @@ void csr_roam_synch_callback(tpAniSirGlobal mac_ctx, roam_synch_data->join_rsp->frames, len); session->connectedInfo.nRICRspLength = roam_synch_data->join_rsp->parsedRicRspLen; + session->connectedInfo.nTspecIeLength = + roam_synch_data->join_rsp->tspecIeLen; } } conn_profile->vht_channel_width = -- cgit v1.2.3