summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/mac/src/pe/lim/lim_api.c19
-rw-r--r--core/sme/src/csr/csr_api_roam.c9
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 =