diff options
| author | Sreelakshmi Konamki <skonam@codeaurora.org> | 2017-01-23 18:50:51 +0530 |
|---|---|---|
| committer | qcabuildsw <qcabuildsw@localhost> | 2017-01-24 17:29:39 -0800 |
| commit | ea225a1beffdb8b21bd3884201d24d59d8383012 (patch) | |
| tree | 41274107b5dcc01f1ed1281c7f3c0761ecf1729d | |
| parent | 1c7c58a55b08ecdf2eb706e7c6438380eb09d212 (diff) | |
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
| -rw-r--r-- | core/mac/src/pe/lim/lim_api.c | 19 | ||||
| -rw-r--r-- | 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 = |
