diff --git a/core/mac/src/pe/lim/lim_api.c b/core/mac/src/pe/lim/lim_api.c index c893536b0d18..31df90976b53 100644 --- a/core/mac/src/pe/lim/lim_api.c +++ b/core/mac/src/pe/lim/lim_api.c @@ -1878,6 +1878,7 @@ QDF_STATUS pe_roam_synch_callback(tpAniSirGlobal mac_ctx, tpAddBssParams add_bss_params; uint8_t local_nss; QDF_STATUS status = QDF_STATUS_E_FAILURE; + uint16_t join_rsp_len; if (!roam_sync_ind_ptr) { lim_log(mac_ctx, LOGE, FL("LFR3:roam_sync_ind_ptr is NULL")); @@ -1987,6 +1988,31 @@ 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); + 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")); + ft_session_ptr->bRoamSynchInProgress = false; + if (mac_ctx->roam.pReassocResp) + qdf_mem_free(mac_ctx->roam.pReassocResp); + mac_ctx->roam.pReassocResp = NULL; + return QDF_STATUS_E_NOMEM; + } + qdf_mem_zero(roam_sync_ind_ptr->join_rsp, join_rsp_len); + + lim_log(mac_ctx, LOG1, FL("Session RicLength = %d"), + ft_session_ptr->RICDataLen); + if (ft_session_ptr->ricData != NULL) { + roam_sync_ind_ptr->join_rsp->parsedRicRspLen = + ft_session_ptr->RICDataLen; + qdf_mem_copy(roam_sync_ind_ptr->join_rsp->frames, + ft_session_ptr->ricData, + roam_sync_ind_ptr->join_rsp->parsedRicRspLen); + qdf_mem_free(ft_session_ptr->ricData); + ft_session_ptr->ricData = NULL; + ft_session_ptr->RICDataLen = 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 1a732e3ee09d..4e921b45b316 100644 --- a/core/sme/src/csr/csr_api_roam.c +++ b/core/sme/src/csr/csr_api_roam.c @@ -18723,6 +18723,7 @@ void csr_roam_synch_callback(tpAniSirGlobal mac_ctx, struct qdf_mac_addr bcast_mac = QDF_MAC_ADDR_BROADCAST_INITIALIZER; tpAddBssParams add_bss_params; QDF_STATUS status = QDF_STATUS_SUCCESS; + uint16_t len; #ifdef FEATURE_WLAN_MCC_TO_SCC_SWITCH tSirSmeHTProfile *src_profile = NULL; tCsrRoamHTProfile *dst_profile = NULL; @@ -18883,6 +18884,19 @@ 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; + QDF_TRACE(QDF_MODULE_ID_SME, QDF_TRACE_LEVEL_DEBUG, + FL("LFR3: RIC length - %d"), len); + if (len) { + session->connectedInfo.pbFrames = + qdf_mem_malloc(len); + if (session->connectedInfo.pbFrames != NULL) { + qdf_mem_copy(session->connectedInfo.pbFrames, + roam_synch_data->join_rsp->frames, len); + session->connectedInfo.nRICRspLength = + roam_synch_data->join_rsp->parsedRicRspLen; + } + } conn_profile->vht_channel_width = roam_synch_data->join_rsp->vht_channel_width; add_bss_params = (tpAddBssParams)roam_synch_data->add_bss_params; diff --git a/core/sme/src/csr/csr_neighbor_roam.c b/core/sme/src/csr/csr_neighbor_roam.c index 4667d82ef3ab..e285f5394a84 100644 --- a/core/sme/src/csr/csr_neighbor_roam.c +++ b/core/sme/src/csr/csr_neighbor_roam.c @@ -1397,8 +1397,8 @@ static void csr_neighbor_roam_info_ctx_init( ngbr_roam_info->is11rAssoc = true; } else ngbr_roam_info->is11rAssoc = false; - NEIGHBOR_ROAM_DEBUG(pMac, LOG2, FL("11rAssoc is = %d"), - ngbr_roam_info->is11rAssoc); + QDF_TRACE(QDF_MODULE_ID_SME, QDF_TRACE_LEVEL_INFO_HIGH, + FL("11rAssoc is = %d"), ngbr_roam_info->is11rAssoc); #ifdef FEATURE_WLAN_ESE /* Based on the auth scheme tell if we are 11r */ @@ -1408,9 +1408,9 @@ static void csr_neighbor_roam_info_ctx_init( ngbr_roam_info->isESEAssoc = true; } else ngbr_roam_info->isESEAssoc = false; - NEIGHBOR_ROAM_DEBUG(pMac, LOG2, - FL("isESEAssoc is = %d ft = %d"), - ngbr_roam_info->isESEAssoc, init_ft_flag); + QDF_TRACE(QDF_MODULE_ID_SME, QDF_TRACE_LEVEL_INFO_HIGH, + FL("isESEAssoc is = %d ft = %d"), + ngbr_roam_info->isESEAssoc, init_ft_flag); #endif /* If "Legacy Fast Roaming" is enabled */ if (csr_roam_is_fast_roam_enabled(pMac, session_id)) diff --git a/core/sme/src/qos/sme_qos.c b/core/sme/src/qos/sme_qos.c index 1aaf22a735b5..641943e38f76 100644 --- a/core/sme/src/qos/sme_qos.c +++ b/core/sme/src/qos/sme_qos.c @@ -4632,7 +4632,12 @@ QDF_STATUS sme_qos_process_reassoc_success_ev(tpAniSirGlobal mac_ctx, if (csr_roam_session && csr_roam_session->connectedInfo.nRICRspLength) { status = sme_qos_process_ft_reassoc_rsp_ev( - mac_ctx, sessionid, event_info); + mac_ctx, sessionid, + event_info); + } else { + QDF_TRACE(QDF_MODULE_ID_SME, + QDF_TRACE_LEVEL_ERROR, FL( + "session or RIC data is not present")); } } #ifdef FEATURE_WLAN_ESE diff --git a/core/wma/src/wma_scan_roam.c b/core/wma/src/wma_scan_roam.c index 73f6e6fc4884..f47b43e9325d 100644 --- a/core/wma/src/wma_scan_roam.c +++ b/core/wma/src/wma_scan_roam.c @@ -2078,15 +2078,12 @@ int wma_roam_synch_event_handler(void *handle, uint8_t *event, goto cleanup_label; } bss_desc_ptr = qdf_mem_malloc(sizeof(tSirBssDescription) + ie_len); - roam_synch_ind_ptr->join_rsp = qdf_mem_malloc(sizeof(tSirSmeJoinRsp)); - if ((NULL == roam_synch_ind_ptr->join_rsp) || (NULL == bss_desc_ptr)) { + if (NULL == bss_desc_ptr) { WMA_LOGE("LFR3: mem alloc failed!"); QDF_ASSERT(bss_desc_ptr != NULL); - QDF_ASSERT(roam_synch_ind_ptr->join_rsp != NULL); status = -ENOMEM; goto cleanup_label; } - qdf_mem_zero(roam_synch_ind_ptr->join_rsp, sizeof(tSirSmeJoinRsp)); qdf_mem_zero(bss_desc_ptr, sizeof(tSirBssDescription) + ie_len); wma->pe_roam_synch_cb((tpAniSirGlobal)wma->mac_context, roam_synch_ind_ptr, bss_desc_ptr);