wlan: LFR MBB add sta/bss changes
Add changes to handle add sta/bss changes. Also add changes to update
CSR with new connection information.
Change-Id: I281c21bc7d7f78ce3f5a30daf72974002f9fff3f
CRs-Fixed: 1098427
diff --git a/CORE/SME/inc/csrApi.h b/CORE/SME/inc/csrApi.h
index 08fac82..7e88126 100644
--- a/CORE/SME/inc/csrApi.h
+++ b/CORE/SME/inc/csrApi.h
@@ -1771,6 +1771,5 @@
---------------------------------------------------------------------------*/
eCsrBand csrGetCurrentBand (tHalHandle hHal);
-
#endif
diff --git a/CORE/SME/inc/csrInternal.h b/CORE/SME/inc/csrInternal.h
index c31a36b..09a507b 100644
--- a/CORE/SME/inc/csrInternal.h
+++ b/CORE/SME/inc/csrInternal.h
@@ -1498,3 +1498,18 @@
eHalStatus csrEnableRMC(tpAniSirGlobal pMac, tANI_U32 sessionId);
eHalStatus csrDisableRMC(tpAniSirGlobal pMac, tANI_U32 sessionId);
#endif /* WLAN_FEATURE_RMC */
+
+eHalStatus csrRoamStopNetwork(tpAniSirGlobal pMac, tANI_U32 sessionId,
+ tCsrRoamProfile *pProfile, tSirBssDescription *pBssDesc,
+ tDot11fBeaconIEs *pIes);
+
+eHalStatus csrRoamSaveSecurityRspIE(tpAniSirGlobal pMac,
+ tANI_U32 sessionId, eCsrAuthType authType,
+ tSirBssDescription *pSirBssDesc,
+ tDot11fBeaconIEs *pIes);
+
+void csrRoamSubstateChange(tpAniSirGlobal pMac,
+ eCsrRoamSubState NewSubstate, tANI_U32 sessionId);
+
+eHalStatus csrRoamFreeConnectedInfo(tpAniSirGlobal pMac,
+ tCsrRoamConnectedInfo *pConnectedInfo);
diff --git a/CORE/SME/inc/csrNeighborRoam.h b/CORE/SME/inc/csrNeighborRoam.h
index aa427ce..8bd7102 100644
--- a/CORE/SME/inc/csrNeighborRoam.h
+++ b/CORE/SME/inc/csrNeighborRoam.h
@@ -41,6 +41,12 @@
#ifdef WLAN_FEATURE_NEIGHBOR_ROAMING
#include "sme_Api.h"
+/* 15 seconds, for WPA, WPA2, CCKM */
+#define CSR_WAIT_FOR_KEY_TIMEOUT_PERIOD (15 * PAL_TIMER_TO_SEC_UNIT)
+/* 120 seconds, for WPS */
+#define CSR_WAIT_FOR_WPS_KEY_TIMEOUT_PERIOD (120 * PAL_TIMER_TO_SEC_UNIT)
+
+
/* Enumeration of various states in neighbor roam algorithm */
typedef enum
{
@@ -300,6 +306,10 @@
eHalStatus csrNeighborRoamProceedWithHandoffReq(tpAniSirGlobal pMac);
eHalStatus csrNeighborRoamSssidScanDone(tpAniSirGlobal pMac, eHalStatus status);
eHalStatus csrNeighborRoamStartLfrScan(tpAniSirGlobal pMac, tANI_U8 OffloadCmdStopReason);
+eHalStatus csrRoamStartWaitForKeyTimer(tpAniSirGlobal pMac,
+ tANI_U32 interval);
+void csrRoamLinkUp(tpAniSirGlobal pMac, tCsrBssid bssid);
+
#endif
#if defined(FEATURE_WLAN_ESE) && defined(FEATURE_WLAN_ESE_UPLOAD)
diff --git a/CORE/SME/src/csr/csrApiRoam.c b/CORE/SME/src/csr/csrApiRoam.c
index 2335947..ed784cf 100644
--- a/CORE/SME/src/csr/csrApiRoam.c
+++ b/CORE/SME/src/csr/csrApiRoam.c
@@ -85,10 +85,7 @@
#define CSR_NUM_IBSS_START_CHANNELS_24 3
#define CSR_DEF_IBSS_START_CHANNEL_50 36
#define CSR_DEF_IBSS_START_CHANNEL_24 1
-/* 15 seconds, for WPA, WPA2, CCKM */
-#define CSR_WAIT_FOR_KEY_TIMEOUT_PERIOD (15 * PAL_TIMER_TO_SEC_UNIT)
-/* 120 seconds, for WPS */
-#define CSR_WAIT_FOR_WPS_KEY_TIMEOUT_PERIOD (120 * PAL_TIMER_TO_SEC_UNIT)
+
/*---------------------------------------------------------------------------
OBIWAN recommends [8 10]% : pick 9%
---------------------------------------------------------------------------*/
@@ -219,12 +216,10 @@
static eHalStatus csrRoamStartRoamingTimer(tpAniSirGlobal pMac, tANI_U32 sessionId, tANI_U32 interval);
static eHalStatus csrRoamStopRoamingTimer(tpAniSirGlobal pMac, tANI_U32 sessionId);
static void csrRoamRoamingTimerHandler(void *pv);
-eHalStatus csrRoamStartWaitForKeyTimer(tpAniSirGlobal pMac, tANI_U32 interval);
eHalStatus csrRoamStopWaitForKeyTimer(tpAniSirGlobal pMac);
static void csrRoamWaitForKeyTimeOutHandler(void *pv);
static eHalStatus CsrInit11dInfo(tpAniSirGlobal pMac, tCsr11dinfo *ps11dinfo);
static eHalStatus csrInitChannelPowerList( tpAniSirGlobal pMac, tCsr11dinfo *ps11dinfo);
-static eHalStatus csrRoamFreeConnectedInfo( tpAniSirGlobal pMac, tCsrRoamConnectedInfo *pConnectedInfo );
eHalStatus csrSendMBSetContextReqMsg( tpAniSirGlobal pMac, tANI_U32 sessionId,
tSirMacAddr peerMacAddr, tANI_U8 numKeys, tAniEdType edType,
tANI_BOOLEAN fUnicast, tAniKeyDirection aniKeyDirection,
@@ -235,7 +230,6 @@
tCsrRoamProfile *pProfile );
void csrRoamStatisticsTimerHandler(void *pv);
void csrRoamStatsGlobalClassDTimerHandler(void *pv);
-static void csrRoamLinkUp(tpAniSirGlobal pMac, tCsrBssid bssid);
VOS_STATUS csrRoamVccTriggerRssiIndCallback(tHalHandle hHal,
v_U8_t rssiNotification,
void * context);
@@ -1012,7 +1006,7 @@
return (status);
}
-static eHalStatus csrRoamFreeConnectedInfo( tpAniSirGlobal pMac, tCsrRoamConnectedInfo *pConnectedInfo )
+eHalStatus csrRoamFreeConnectedInfo( tpAniSirGlobal pMac, tCsrRoamConnectedInfo *pConnectedInfo )
{
eHalStatus status = eHAL_STATUS_SUCCESS;
if( pConnectedInfo->pbFrames )
@@ -5224,9 +5218,10 @@
#endif /* FEATURE_WLAN_WAPI */
extern tANI_U8 csrWpaOui[][ CSR_WPA_OUI_SIZE ];
-static eHalStatus csrRoamSaveSecurityRspIE(tpAniSirGlobal pMac, tANI_U32 sessionId, eCsrAuthType authType,
- tSirBssDescription *pSirBssDesc,
- tDot11fBeaconIEs *pIes)
+eHalStatus csrRoamSaveSecurityRspIE(tpAniSirGlobal pMac,
+ tANI_U32 sessionId, eCsrAuthType authType,
+ tSirBssDescription *pSirBssDesc,
+ tDot11fBeaconIEs *pIes)
{
eHalStatus status = eHAL_STATUS_SUCCESS;
tCsrRoamSession *pSession = CSR_GET_SESSION( pMac, sessionId );
@@ -16197,7 +16192,7 @@
}
return (nRet);
}
-static void csrRoamLinkUp(tpAniSirGlobal pMac, tCsrBssid bssid)
+void csrRoamLinkUp(tpAniSirGlobal pMac, tCsrBssid bssid)
{
VOS_STATUS status = VOS_STATUS_SUCCESS;
diff --git a/CORE/SME/src/csr/csrNeighborRoam.c b/CORE/SME/src/csr/csrNeighborRoam.c
index 5cd75c5..b951864 100644
--- a/CORE/SME/src/csr/csrNeighborRoam.c
+++ b/CORE/SME/src/csr/csrNeighborRoam.c
@@ -115,6 +115,9 @@
CASE_RETURN_STRING( eCSR_NEIGHBOR_ROAM_STATE_REPORT_SCAN );
CASE_RETURN_STRING( eCSR_NEIGHBOR_ROAM_STATE_PREAUTHENTICATING );
CASE_RETURN_STRING( eCSR_NEIGHBOR_ROAM_STATE_PREAUTH_DONE );
+#ifdef WLAN_FEATURE_LFR_MBB
+ CASE_RETURN_STRING(eCSR_NEIGHBOR_ROAM_STATE_MBB_PREAUTH_REASSOC);
+#endif
default:
return "eCSR_NEIGHBOR_ROAM_STATE_UNKNOWN";
}
@@ -4586,6 +4589,9 @@
switch (pNeighborRoamInfo->neighborRoamState)
{
+#ifdef WLAN_FEATURE_LFR_MBB
+ case eCSR_NEIGHBOR_ROAM_STATE_MBB_PREAUTH_REASSOC:
+#endif
case eCSR_NEIGHBOR_ROAM_STATE_REASSOCIATING:
if (VOS_STATUS_SUCCESS != vosStatus)
{
diff --git a/CORE/SME/src/csr/csr_roam_mbb.c b/CORE/SME/src/csr/csr_roam_mbb.c
index 39078c3..f03156b 100644
--- a/CORE/SME/src/csr/csr_roam_mbb.c
+++ b/CORE/SME/src/csr/csr_roam_mbb.c
@@ -34,6 +34,8 @@
#include "macTrace.h"
#include "csrNeighborRoam.h"
#include "csr_roam_mbb.h"
+#include "csrInternal.h"
+#include "wlan_qct_wda.h"
eHalStatus csr_register_roaming_mbb_callback(tpAniSirGlobal mac);
@@ -146,6 +148,8 @@
if (neighbor_bss_node == NULL)
{
smsLog(mac, LOGE, FL("Roamable AP list is empty"));
+ csrRoamOffloadScan(mac, ROAM_SCAN_OFFLOAD_RESTART,
+ REASON_NO_CAND_FOUND_OR_NOT_ROAMING_NOW);
return eHAL_STATUS_FAILURE;
}
else
@@ -201,6 +205,10 @@
tpAniSirGlobal mac = (tpAniSirGlobal)context;
mac->roam.neighborRoamInfo.is_pre_auth_reassoc_mbb_timer_started = 0;
+
+ smsLog(mac, LOG1, FL("is_pre_auth_reassoc_mbb_timer_started %d"),
+ mac->roam.neighborRoamInfo.is_pre_auth_reassoc_mbb_timer_started);
+
csr_neighbor_roam_issue_preauth_reassoc(mac);
}
@@ -247,6 +255,7 @@
* reassoc response
* @mac: MAC context
* @lim_status: status of preauth reassoc response from lim
+ * @bss_description: bss description pointer
*
* This function handles preauth_reassoc response from PE. When
* preauth_reassoc response failure is received, preauth reassoc
@@ -256,7 +265,7 @@
*/
eHalStatus
csr_neighbor_roam_preauth_reassoc_rsp_handler(tpAniSirGlobal mac,
- tSirRetStatus lim_status)
+ tSirRetStatus lim_status, tSirBssDescription **bss_description)
{
tpCsrNeighborRoamControlInfo neighbor_roam_info =
&mac->roam.neighborRoamInfo;
@@ -301,6 +310,20 @@
MAC_ADDR_ARRAY(preauth_rsp_node->pBssDescription->bssId),
preauth_rsp_node->pBssDescription->channelId);
+ /* Memory will be freed in caller of this */
+ *bss_description = (tpSirBssDescription)vos_mem_malloc(
+ sizeof(preauth_rsp_node->pBssDescription->length) +
+ preauth_rsp_node->pBssDescription->length);
+ if (NULL == *bss_description) {
+ smsLog(mac, LOGE,
+ FL("Unable to allocate memory for preauth bss description"));
+ return eHAL_STATUS_RESOURCES;
+ }
+
+ vos_mem_copy(*bss_description, preauth_rsp_node->pBssDescription,
+ sizeof(preauth_rsp_node->pBssDescription->length) +
+ preauth_rsp_node->pBssDescription->length);
+
/*
* MBB Reassoc competer successfully. Insert the preauthenticated
* node to tail of preAuthDoneList
@@ -367,6 +390,230 @@
return preauth_processed;
}
+void csr_update_roamed_info_mbb(tHalHandle hal,
+ tpSirBssDescription bss_description, tpSirFTPreAuthRsp pre_auth_rsp)
+{
+ eHalStatus status;
+ tpAniSirGlobal mac = PMAC_STRUCT(hal);
+ tDot11fBeaconIEs *ies_local = NULL;
+ tCsrRoamSession *session = NULL;
+ tCsrRoamProfile roam_profile, *profile;
+ tSirMacAddr broadcast_mac = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
+ tANI_U32 key_timeout_interval;
+ tCsrRoamInfo roam_info;
+ sme_QosAssocInfo assoc_info;
+ tANI_U32 len;
+ tANI_U8 sme_session_id = pre_auth_rsp->smeSessionId;
+ tANI_U8 acm_mask = 0;
+
+ /* Get IE's */
+ status = csrGetParsedBssDescriptionIEs(mac, bss_description, &ies_local);
+ if (!HAL_STATUS_SUCCESS(status)) {
+ smsLog(mac, LOGE,
+ FL("csrGetParsedBssDescriptionIEs failed"));
+ return;
+ }
+ if(ies_local == NULL) {
+ smsLog(mac, LOGE,
+ FL("ies_local is NULL "));
+ return;
+ }
+
+ /* Get profile */
+ session = CSR_GET_SESSION(mac, sme_session_id);
+ vos_mem_set(&roam_info, sizeof(roam_info), 0);
+
+ status = csrRoamCopyProfile(mac, &roam_profile, session->pCurRoamProfile);
+ if(!HAL_STATUS_SUCCESS(status)) {
+ smsLog(mac, LOGE, FL("Profile copy failed"));
+ return;
+ }
+ profile = &roam_profile;
+
+ profile->negotiatedAuthType =
+ mac->roam.roamSession[sme_session_id].connectedProfile.AuthType;
+ profile->negotiatedUCEncryptionType =
+ mac->roam.roamSession[sme_session_id].connectedProfile.EncryptionType;
+ profile->mcEncryptionType =
+ mac->roam.roamSession[sme_session_id].connectedProfile.mcEncryptionInfo;
+ profile->negotiatedMCEncryptionType =
+ mac->roam.roamSession[sme_session_id].connectedProfile.mcEncryptionType;
+
+ smsLog(mac, LOG1,
+ FL("AuthType %d UCEType %d Entries %d encryptionType %d MCEType %d"),
+ profile->negotiatedAuthType,
+ profile->negotiatedUCEncryptionType,
+ profile->mcEncryptionType.numEntries,
+ profile->mcEncryptionType.encryptionType[0],
+ profile->negotiatedMCEncryptionType);
+
+ csrRoamStopNetwork(mac, sme_session_id, profile,
+ bss_description, ies_local);
+
+ session->connectState = eCSR_ASSOC_STATE_TYPE_INFRA_ASSOCIATED;
+
+ csrRoamSaveConnectedInfomation(mac, sme_session_id, profile,
+ bss_description, ies_local);
+ csrRoamSaveSecurityRspIE(mac, sme_session_id,
+ profile->negotiatedAuthType, bss_description,
+ ies_local);
+
+ csrRoamStateChange(mac, eCSR_ROAMING_STATE_JOINED, sme_session_id);
+
+ if(CSR_IS_ENC_TYPE_STATIC(profile->negotiatedUCEncryptionType) &&
+ !profile->bWPSAssociation) {
+ /*
+ * Issue the set Context request to LIM to establish the
+ * Unicast STA context
+ */
+ if(!HAL_STATUS_SUCCESS(csrRoamIssueSetContextReq(mac,
+ sme_session_id,
+ profile->negotiatedUCEncryptionType,
+ bss_description, &(bss_description->bssId), FALSE, TRUE,
+ eSIR_TX_RX, 0, 0, NULL, 0))) {
+ smsLog(mac, LOGE, FL("Set context for unicast fail"));
+ csrRoamSubstateChange(mac, eCSR_ROAM_SUBSTATE_NONE,
+ sme_session_id);
+ }
+ /*
+ * Issue the set Context request to LIM to establish the
+ * Broadcast STA context
+ */
+ csrRoamIssueSetContextReq(mac, sme_session_id,
+ profile->negotiatedMCEncryptionType,
+ bss_description, &broadcast_mac,
+ FALSE, FALSE, eSIR_TX_RX, 0, 0, NULL, 0);
+ } else if (!session->abortConnection) {
+ /* Need to wait for supplicant authtication */
+ roam_info.fAuthRequired = eANI_BOOLEAN_TRUE;
+ /* Set the subestate to WaitForKey in case authentiation is needed */
+ csrRoamSubstateChange(mac, eCSR_ROAM_SUBSTATE_WAIT_FOR_KEY,
+ sme_session_id);
+
+ if(profile->bWPSAssociation)
+ key_timeout_interval = CSR_WAIT_FOR_WPS_KEY_TIMEOUT_PERIOD;
+ else
+ key_timeout_interval = CSR_WAIT_FOR_KEY_TIMEOUT_PERIOD;
+
+ /* Save sessionId in case of timeout */
+ mac->roam.WaitForKeyTimerInfo.sessionId = sme_session_id;
+ /*
+ * This time should be long enough for the rest of the
+ * process plus setting key
+ */
+ if(!HAL_STATUS_SUCCESS(csrRoamStartWaitForKeyTimer(mac,
+ key_timeout_interval))) {
+ /* Reset our state so nothting is blocked */
+ smsLog(mac, LOGE, FL("Failed to start pre-auth timer"));
+ csrRoamSubstateChange(mac, eCSR_ROAM_SUBSTATE_NONE,
+ sme_session_id);
+ }
+ }
+
+ csrRoamFreeConnectedInfo(mac, &session->connectedInfo);
+
+ assoc_info.pBssDesc = bss_description;
+ assoc_info.pProfile = profile;
+
+ len = pre_auth_rsp->roam_info->nBeaconLength +
+ pre_auth_rsp->roam_info->nAssocReqLength +
+ pre_auth_rsp->roam_info->nAssocRspLength;
+
+ if(len) {
+ session->connectedInfo.pbFrames = vos_mem_malloc(len);
+ if (session->connectedInfo.pbFrames != NULL ) {
+ vos_mem_copy(session->connectedInfo.pbFrames,
+ pre_auth_rsp->roam_info->pbFrames, len);
+ session->connectedInfo.nAssocReqLength =
+ pre_auth_rsp->roam_info->nAssocReqLength;
+ session->connectedInfo.nAssocRspLength =
+ pre_auth_rsp->roam_info->nAssocRspLength;
+ session->connectedInfo.nBeaconLength =
+ pre_auth_rsp->roam_info->nBeaconLength;
+
+ roam_info.nAssocReqLength = pre_auth_rsp->roam_info->nAssocReqLength;
+ roam_info.nAssocRspLength = pre_auth_rsp->roam_info->nAssocRspLength;
+ roam_info.nBeaconLength = pre_auth_rsp->roam_info->nBeaconLength;
+ roam_info.pbFrames = session->connectedInfo.pbFrames;
+ }
+ session->connectedInfo.staId = pre_auth_rsp->roam_info->staId;
+ roam_info.staId = pre_auth_rsp->roam_info->staId;
+ roam_info.ucastSig = pre_auth_rsp->roam_info->ucastSig;
+ roam_info.bcastSig = pre_auth_rsp->roam_info->bcastSig;
+ roam_info.maxRateFlags = pre_auth_rsp->roam_info->maxRateFlags;
+ }
+
+ roam_info.statusCode = eSIR_SME_SUCCESS;
+ roam_info.reasonCode = eSIR_SME_SUCCESS;
+ roam_info.pBssDesc = bss_description;
+
+ vos_mem_copy(&roam_info.bssid, &bss_description->bssId,
+ sizeof(tCsrBssid));
+
+ mac->roam.roamSession[sme_session_id].connectState =
+ eCSR_ASSOC_STATE_TYPE_NOT_CONNECTED;
+
+ sme_QosCsrEventInd(mac, sme_session_id,
+ SME_QOS_CSR_HANDOFF_ASSOC_REQ, NULL);
+ sme_QosCsrEventInd(mac, sme_session_id, SME_QOS_CSR_REASSOC_REQ, NULL);
+ sme_QosCsrEventInd(mac, sme_session_id, SME_QOS_CSR_HANDOFF_COMPLETE, NULL);
+
+ mac->roam.roamSession[sme_session_id].connectState =
+ eCSR_ASSOC_STATE_TYPE_INFRA_ASSOCIATED;
+ sme_QosCsrEventInd(mac, sme_session_id,
+ SME_QOS_CSR_REASSOC_COMPLETE, &assoc_info);
+
+
+ acm_mask = sme_QosGetACMMask(mac, bss_description, NULL);
+
+ session->connectedProfile.acm_mask = acm_mask;
+ if(session->connectedProfile.modifyProfileFields.uapsd_mask) {
+ smsLog(mac, LOGE, "uapsd_mask (0x%X) set, request UAPSD now",
+ session->connectedProfile.modifyProfileFields.uapsd_mask);
+ pmcStartUapsd(mac, NULL, NULL);
+ }
+ session->connectedProfile.dot11Mode = session->bssParams.uCfgDot11Mode;
+ roam_info.u.pConnectedProfile = &session->connectedProfile;
+
+ if(!IS_FEATURE_SUPPORTED_BY_FW(SLM_SESSIONIZATION) &&
+ (csrIsConcurrentSessionRunning(mac)))
+ mac->roam.configParam.doBMPSWorkaround = 1;
+
+ csr_roam_dequeue_preauth_reassoc(mac);
+
+ csrRoamCallCallback(mac, sme_session_id, &roam_info, 0,
+ eCSR_ROAM_ASSOCIATION_COMPLETION, eCSR_ROAM_RESULT_ASSOCIATED);
+
+ csrResetPMKIDCandidateList(mac, sme_session_id);
+#ifdef FEATURE_WLAN_WAPI
+ csrResetBKIDCandidateList(mac, sme_session_id);
+#endif
+
+ if(!CSR_IS_WAIT_FOR_KEY(mac, sme_session_id)) {
+ smsLog(mac, LOG1, "NO CSR_IS_WAIT_FOR_KEY -> csr_roam_link_up");
+ csrRoamLinkUp(mac, session->connectedProfile.bssid);
+ }
+
+ if (pmcShouldBmpsTimerRun(mac)) {
+ if(eANI_BOOLEAN_TRUE == roam_info.fAuthRequired) {
+ mac->pmc.full_power_till_set_key = true;
+ smsLog(mac, LOG1,
+ FL("full_power_till_set_key is made true"));
+ }
+
+ if (pmcStartTrafficTimer(mac, BMPS_TRAFFIC_TIMER_ALLOW_SECURITY_DHCP)
+ != eHAL_STATUS_SUCCESS)
+ smsLog(mac, LOGE, FL("Cannot start BMPS Retry timer"));
+
+ smsLog(mac, LOG1, FL("BMPS Retry Timer already running or started"));
+ }
+
+ vos_mem_free(pre_auth_rsp->roam_info->pbFrames);
+ vos_mem_free(pre_auth_rsp->roam_info);
+
+}
+
+
/**
* csr_roam_preauth_rsp_mbb_processor() -handles
* eWNI_SME_MBB_PRE_AUTH_REASSOC_RSP
@@ -382,6 +629,7 @@
tpAniSirGlobal mac = PMAC_STRUCT(hal);
eHalStatus status;
tCsrRoamInfo roam_info;
+ tpSirBssDescription bss_description = NULL;
mac->ft.ftSmeContext.is_preauth_lfr_mbb = false;
smsLog(mac, LOG1, FL("is_preauth_lfr_mbb %d"),
@@ -403,7 +651,7 @@
}
status = csr_neighbor_roam_preauth_reassoc_rsp_handler(mac,
- pre_auth_rsp->status);
+ pre_auth_rsp->status, &bss_description);
if (status != eHAL_STATUS_SUCCESS) {
smsLog(mac, LOGE,FL("Preauth was not processed: %d SessionID: %d"),
status, pre_auth_rsp->smeSessionId);
@@ -424,9 +672,19 @@
(void *)pre_auth_rsp->preAuthbssId, sizeof(tCsrBssid));
- /* To Do: add code to update CSR for new connection */
+ /*
+ * bss_description is updated in
+ * csr_neighbor_roam_preauth_reassoc_rsp_handler
+ */
+ if (NULL == bss_description) {
+ smsLog(mac, LOGE,
+ FL("bss description is NULL"));
+ return;
+ }
- CSR_NEIGHBOR_ROAM_STATE_TRANSITION(eCSR_NEIGHBOR_ROAM_STATE_CONNECTED)
+ /* Update CSR for new connection */
+ csr_update_roamed_info_mbb(hal, bss_description, pre_auth_rsp);
+
}
/**