ソースを参照

qcacld-3.0: Cleanup NCHO commands

Aggregate all the handlers of NCHO configration update
commands into a single routine

CRs-Fixed: 1007810
Change-Id: I9722dbead499f14f3969a85a20baf74aa03efff2
Varun Reddy Yeturu 9 年 前
コミット
ff4feb0a0e

+ 2 - 15
core/sme/inc/csr_neighbor_roam.h

@@ -265,23 +265,10 @@ static inline bool csr_neighbor_roam_is_handoff_in_progress(tpAniSirGlobal pMac,
 }
 #endif
 bool csr_neighbor_middle_of_roaming(tpAniSirGlobal pMac, uint8_t sessionId);
-QDF_STATUS csr_neighbor_roam_set_lookup_rssi_threshold(tpAniSirGlobal pMac,
-		uint8_t sessionId, uint8_t neighborLookupRssiThreshold);
-QDF_STATUS csr_neighbor_roam_set_opportunistic_scan_threshold_diff(
-		tpAniSirGlobal pMac, uint8_t sessionId,
-		uint8_t nOpportunisticThresholdDiff);
-QDF_STATUS csr_neighbor_roam_set_roam_rescan_rssi_diff(tpAniSirGlobal pMac,
-		uint8_t sessionId, uint8_t nRoamRescanRssiDiff);
-QDF_STATUS csr_neighbor_roam_set_roam_bmiss_first_bcnt(tpAniSirGlobal pMac,
-		uint8_t sessionId, uint8_t nRoamBmissFirstBcnt);
-QDF_STATUS csr_neighbor_roam_set_roam_bmiss_final_bcnt(tpAniSirGlobal pMac,
-		uint8_t sessionId, uint8_t nRoamBmissFinalBcnt);
-QDF_STATUS csr_neighbor_roam_set_roam_beacon_rssi_weight(tpAniSirGlobal pMac,
-		uint8_t sessionId, uint8_t nRoamBeaconRssiWeight);
+QDF_STATUS csr_neighbor_roam_update_config(tpAniSirGlobal mac_ctx,
+		uint8_t session_id, uint8_t value, uint8_t reason);
 QDF_STATUS csr_neighbor_roam_update_fast_roaming_enabled(tpAniSirGlobal pMac,
 		uint8_t sessionId, const bool fastRoamEnabled);
-QDF_STATUS csr_neighbor_roam_update_ese_mode_enabled(tpAniSirGlobal pMac,
-		uint8_t sessionId, const bool eseMode);
 QDF_STATUS csr_neighbor_roam_channels_filter_by_current_band(
 		tpAniSirGlobal pMac, uint8_t sessionId,
 		uint8_t *pInputChannelList,

+ 20 - 69
core/sme/src/common/sme_api.c

@@ -1937,8 +1937,8 @@ QDF_STATUS sme_update_is_ese_feature_enabled(tHalHandle hHal,
 		  pMac->roam.configParam.isEseIniFeatureEnabled,
 		  isEseIniFeatureEnabled);
 	pMac->roam.configParam.isEseIniFeatureEnabled = isEseIniFeatureEnabled;
-	csr_neighbor_roam_update_ese_mode_enabled(pMac, sessionId,
-						  isEseIniFeatureEnabled);
+	csr_neighbor_roam_update_fast_roaming_enabled(
+			pMac, sessionId, isEseIniFeatureEnabled);
 
 	if (true == isEseIniFeatureEnabled)
 		sme_update_fast_transition_enabled(hHal, true);
@@ -8837,19 +8837,10 @@ QDF_STATUS sme_set_roam_opportunistic_scan_threshold_diff(tHalHandle hHal,
 
 	status = sme_acquire_global_lock(&pMac->sme);
 	if (QDF_IS_STATUS_SUCCESS(status)) {
-		status = csr_neighbor_roam_set_opportunistic_scan_threshold_diff(pMac,
-										 sessionId,
-										 nOpportunisticThresholdDiff);
+		status = csr_neighbor_roam_update_config(pMac, sessionId,
+				nOpportunisticThresholdDiff,
+				REASON_OPPORTUNISTIC_THRESH_DIFF_CHANGED);
 		if (QDF_IS_STATUS_SUCCESS(status)) {
-			QDF_TRACE(QDF_MODULE_ID_SME, QDF_TRACE_LEVEL_DEBUG,
-				  "LFR runtime successfully set "
-				  "opportunistic threshold diff to %d"
-				  " - old value is %d - roam state is %d",
-				  nOpportunisticThresholdDiff,
-				  pMac->roam.configParam.neighborRoamConfig.
-				  nOpportunisticThresholdDiff,
-				  pMac->roam.neighborRoamInfo[sessionId].
-				  neighborRoamState);
 			pMac->roam.configParam.neighborRoamConfig.
 			nOpportunisticThresholdDiff =
 				nOpportunisticThresholdDiff;
@@ -8895,18 +8886,10 @@ QDF_STATUS sme_set_roam_rescan_rssi_diff(tHalHandle hHal,
 
 	status = sme_acquire_global_lock(&pMac->sme);
 	if (QDF_IS_STATUS_SUCCESS(status)) {
-		status = csr_neighbor_roam_set_roam_rescan_rssi_diff(pMac, sessionId,
-								     nRoamRescanRssiDiff);
+		status = csr_neighbor_roam_update_config(pMac, sessionId,
+				nRoamRescanRssiDiff,
+				REASON_ROAM_RESCAN_RSSI_DIFF_CHANGED);
 		if (QDF_IS_STATUS_SUCCESS(status)) {
-			QDF_TRACE(QDF_MODULE_ID_SME, QDF_TRACE_LEVEL_DEBUG,
-				  "LFR runtime successfully set "
-				  "opportunistic threshold diff to %d"
-				  " - old value is %d - roam state is %d",
-				  nRoamRescanRssiDiff,
-				  pMac->roam.configParam.neighborRoamConfig.
-				  nRoamRescanRssiDiff,
-				  pMac->roam.neighborRoamInfo[sessionId].
-				  neighborRoamState);
 			pMac->roam.configParam.neighborRoamConfig.
 			nRoamRescanRssiDiff = nRoamRescanRssiDiff;
 		}
@@ -8950,18 +8933,10 @@ QDF_STATUS sme_set_roam_bmiss_first_bcnt(tHalHandle hHal,
 
 	status = sme_acquire_global_lock(&pMac->sme);
 	if (QDF_IS_STATUS_SUCCESS(status)) {
-		status = csr_neighbor_roam_set_roam_bmiss_first_bcnt(pMac, sessionId,
-								     nRoamBmissFirstBcnt);
+		status = csr_neighbor_roam_update_config(pMac, sessionId,
+				nRoamBmissFirstBcnt,
+				REASON_ROAM_BMISS_FIRST_BCNT_CHANGED);
 		if (QDF_IS_STATUS_SUCCESS(status)) {
-			QDF_TRACE(QDF_MODULE_ID_SME, QDF_TRACE_LEVEL_DEBUG,
-				  "LFR runtime successfully set "
-				  "beacon miss first beacon count to %d"
-				  " - old value is %d - roam state is %d",
-				  nRoamBmissFirstBcnt,
-				  pMac->roam.configParam.neighborRoamConfig.
-				  nRoamBmissFirstBcnt,
-				  pMac->roam.neighborRoamInfo[sessionId].
-				  neighborRoamState);
 			pMac->roam.configParam.neighborRoamConfig.
 			nRoamBmissFirstBcnt = nRoamBmissFirstBcnt;
 		}
@@ -9003,18 +8978,10 @@ QDF_STATUS sme_set_roam_bmiss_final_bcnt(tHalHandle hHal,
 
 	status = sme_acquire_global_lock(&pMac->sme);
 	if (QDF_IS_STATUS_SUCCESS(status)) {
-		status = csr_neighbor_roam_set_roam_bmiss_final_bcnt(pMac, sessionId,
-								     nRoamBmissFinalBcnt);
+		status = csr_neighbor_roam_update_config(pMac, sessionId,
+				nRoamBmissFinalBcnt,
+				REASON_ROAM_BMISS_FINAL_BCNT_CHANGED);
 		if (QDF_IS_STATUS_SUCCESS(status)) {
-			QDF_TRACE(QDF_MODULE_ID_SME, QDF_TRACE_LEVEL_DEBUG,
-				  "LFR runtime successfully set "
-				  "beacon miss final beacon count to %d"
-				  " - old value is %d - roam state is %d",
-				  nRoamBmissFinalBcnt,
-				  pMac->roam.configParam.neighborRoamConfig.
-				  nRoamBmissFinalBcnt,
-				  pMac->roam.neighborRoamInfo[sessionId].
-				  neighborRoamState);
 			pMac->roam.configParam.neighborRoamConfig.
 			nRoamBmissFinalBcnt = nRoamBmissFinalBcnt;
 		}
@@ -9058,18 +9025,10 @@ QDF_STATUS sme_set_roam_beacon_rssi_weight(tHalHandle hHal,
 
 	status = sme_acquire_global_lock(&pMac->sme);
 	if (QDF_IS_STATUS_SUCCESS(status)) {
-		status = csr_neighbor_roam_set_roam_beacon_rssi_weight(pMac, sessionId,
-								       nRoamBeaconRssiWeight);
+		status = csr_neighbor_roam_update_config(pMac, sessionId,
+				nRoamBeaconRssiWeight,
+				REASON_ROAM_BEACON_RSSI_WEIGHT_CHANGED);
 		if (QDF_IS_STATUS_SUCCESS(status)) {
-			QDF_TRACE(QDF_MODULE_ID_SME, QDF_TRACE_LEVEL_DEBUG,
-				  "LFR runtime successfully set "
-				  "beacon miss final beacon count to %d"
-				  " - old value is %d - roam state is %d",
-				  nRoamBeaconRssiWeight,
-				  pMac->roam.configParam.neighborRoamConfig.
-				  nRoamBeaconRssiWeight,
-				  pMac->roam.neighborRoamInfo[sessionId].
-				  neighborRoamState);
 			pMac->roam.configParam.neighborRoamConfig.
 			nRoamBeaconRssiWeight = nRoamBeaconRssiWeight;
 		}
@@ -9109,18 +9068,10 @@ QDF_STATUS sme_set_neighbor_lookup_rssi_threshold
 
 	status = sme_acquire_global_lock(&pMac->sme);
 	if (QDF_IS_STATUS_SUCCESS(status)) {
-		status = csr_neighbor_roam_set_lookup_rssi_threshold(pMac, sessionId,
-								     neighborLookupRssiThreshold);
+		status = csr_neighbor_roam_update_config(pMac,
+				sessionId, neighborLookupRssiThreshold,
+				REASON_LOOKUP_THRESH_CHANGED);
 		if (QDF_IS_STATUS_SUCCESS(status)) {
-			QDF_TRACE(QDF_MODULE_ID_SME, QDF_TRACE_LEVEL_DEBUG,
-				  "LFR runtime successfully set Lookup threshold to %d - old value is %d - roam state is %s",
-				  neighborLookupRssiThreshold,
-				  pMac->roam.configParam.neighborRoamConfig.
-				  nNeighborLookupRssiThreshold,
-				  mac_trace_get_neighbour_roam_state(pMac->roam.
-								     neighborRoamInfo
-								     [sessionId].
-								     neighborRoamState));
 			pMac->roam.configParam.neighborRoamConfig.
 			nNeighborLookupRssiThreshold =
 				neighborLookupRssiThreshold;

+ 74 - 305
core/sme/src/csr/csr_neighbor_roam.c

@@ -49,6 +49,19 @@
 #include "cds_concurrency.h"
 
 #define NEIGHBOR_ROAM_DEBUG sms_log
+static const char *lfr_get_config_item_string(uint8_t reason)
+{
+	switch (reason) {
+	CASE_RETURN_STRING(REASON_LOOKUP_THRESH_CHANGED);
+	CASE_RETURN_STRING(REASON_OPPORTUNISTIC_THRESH_DIFF_CHANGED);
+	CASE_RETURN_STRING(REASON_ROAM_RESCAN_RSSI_DIFF_CHANGED);
+	CASE_RETURN_STRING(REASON_ROAM_BMISS_FIRST_BCNT_CHANGED);
+	CASE_RETURN_STRING(REASON_ROAM_BMISS_FINAL_BCNT_CHANGED);
+	CASE_RETURN_STRING(REASON_ROAM_BEACON_RSSI_WEIGHT_CHANGED);
+	default:
+		return "unknown";
+	}
+}
 
 static void csr_neighbor_roam_reset_channel_info(tpCsrNeighborRoamChannelInfo
 						 rChInfo);
@@ -127,8 +140,6 @@ csr_neighbor_roam_update_fast_roaming_enabled(tpAniSirGlobal pMac,
 	QDF_STATUS qdf_status = QDF_STATUS_SUCCESS;
 	tpCsrNeighborRoamControlInfo pNeighborRoamInfo =
 		&pMac->roam.neighborRoamInfo[sessionId];
-	/* set fast roam enable/disable flag */
-	pMac->roam.configParam.isFastRoamIniFeatureEnabled = fastRoamEnabled;
 
 	switch (pNeighborRoamInfo->neighborRoamState) {
 	case eCSR_NEIGHBOR_ROAM_STATE_CONNECTED:
@@ -158,315 +169,73 @@ csr_neighbor_roam_update_fast_roaming_enabled(tpAniSirGlobal pMac,
 	}
 	return qdf_status;
 }
-
-#ifdef FEATURE_WLAN_ESE
-QDF_STATUS csr_neighbor_roam_update_ese_mode_enabled(tpAniSirGlobal pMac,
-						     uint8_t sessionId,
-						     const bool eseMode)
-{
-	QDF_STATUS qdf_status = QDF_STATUS_SUCCESS;
-	tpCsrNeighborRoamControlInfo pNeighborRoamInfo =
-	    &pMac->roam.neighborRoamInfo[sessionId];
-
-	switch (pNeighborRoamInfo->neighborRoamState) {
-	case eCSR_NEIGHBOR_ROAM_STATE_CONNECTED:
-		if (true == eseMode) {
-			csr_roam_offload_scan(pMac, sessionId,
-					   ROAM_SCAN_OFFLOAD_START,
-					   REASON_CONNECT);
-		} else if (false == eseMode) {
-			csr_roam_offload_scan(pMac, sessionId,
-					   ROAM_SCAN_OFFLOAD_STOP,
-					   REASON_DISCONNECTED);
-		}
-		break;
-
-	case eCSR_NEIGHBOR_ROAM_STATE_INIT:
-		NEIGHBOR_ROAM_DEBUG(pMac,
-				    LOG2,
-				    FL
-				    ("Currently in INIT state, Nothing to do"));
-		break;
-
-	default:
-		NEIGHBOR_ROAM_DEBUG(pMac, LOGE,
-				    FL
-				    ("Unexpected state %d, returning failure"),
-				    pNeighborRoamInfo->neighborRoamState);
-		break;
-	}
-	return qdf_status;
-}
-#endif
-
-QDF_STATUS csr_neighbor_roam_set_lookup_rssi_threshold(tpAniSirGlobal pMac,
-						uint8_t sessionId,
-						uint8_t
-						  neighborLookupRssiThreshold)
-{
-	tpCsrNeighborRoamControlInfo pNeighborRoamInfo =
-	    &pMac->roam.neighborRoamInfo[sessionId];
-	QDF_STATUS qdf_status = QDF_STATUS_SUCCESS;
-
-	switch (pNeighborRoamInfo->neighborRoamState) {
-	case eCSR_NEIGHBOR_ROAM_STATE_CONNECTED:
-		NEIGHBOR_ROAM_DEBUG(pMac, LOG2,
-				FL("Currently in CONNECTED state, "
-				"sending ROAM_SCAN_OFFLOAD_UPDATE_CFG."));
-		pNeighborRoamInfo->cfgParams.neighborLookupThreshold =
-		    neighborLookupRssiThreshold;
-		pNeighborRoamInfo->currentNeighborLookupThreshold =
-		    pNeighborRoamInfo->cfgParams.neighborLookupThreshold;
-		csr_roam_offload_scan(pMac, sessionId,
-				   ROAM_SCAN_OFFLOAD_UPDATE_CFG,
-				   REASON_LOOKUP_THRESH_CHANGED);
-		break;
-
-	case eCSR_NEIGHBOR_ROAM_STATE_INIT:
-		NEIGHBOR_ROAM_DEBUG(pMac, LOG2,
-				    FL("Currently in INIT state, "
-				       "just set lookupRssi threshold."));
-		pNeighborRoamInfo->cfgParams.neighborLookupThreshold =
-		    neighborLookupRssiThreshold;
-		pNeighborRoamInfo->currentNeighborLookupThreshold =
-		    pNeighborRoamInfo->cfgParams.neighborLookupThreshold;
-		break;
-
-	default:
-		NEIGHBOR_ROAM_DEBUG(pMac, LOGE,
-				    FL
-				    ("Unexpected state %s, returning failure"),
-				    mac_trace_get_neighbour_roam_state
-				    (pNeighborRoamInfo->neighborRoamState));
-		qdf_status = QDF_STATUS_E_FAILURE;
-		break;
-	}
-	return qdf_status;
-}
-
-QDF_STATUS
-csr_neighbor_roam_set_opportunistic_scan_threshold_diff(tpAniSirGlobal pMac,
-						uint8_t sessionId,
-						uint8_t
-						    nOpportunisticThresholdDiff)
-{
-	QDF_STATUS qdf_status = QDF_STATUS_SUCCESS;
-	tpCsrNeighborRoamControlInfo pNeighborRoamInfo =
-	    &pMac->roam.neighborRoamInfo[sessionId];
-
-	switch (pNeighborRoamInfo->neighborRoamState) {
-	case eCSR_NEIGHBOR_ROAM_STATE_CONNECTED:
-		NEIGHBOR_ROAM_DEBUG(pMac, LOG2,
-				    FL("Currently in CONNECTED state, "
-				       "sending ROAM_SCAN_OFFLOAD_UPDATE_CFG"));
-		pNeighborRoamInfo->cfgParams.nOpportunisticThresholdDiff =
-		    nOpportunisticThresholdDiff;
-		pNeighborRoamInfo->currentOpportunisticThresholdDiff =
-		    nOpportunisticThresholdDiff;
-
-		csr_roam_offload_scan(pMac,
-				   sessionId,
-				   ROAM_SCAN_OFFLOAD_UPDATE_CFG,
-				   REASON_OPPORTUNISTIC_THRESH_DIFF_CHANGED);
-		break;
-
-	case eCSR_NEIGHBOR_ROAM_STATE_INIT:
-		NEIGHBOR_ROAM_DEBUG(pMac, LOG2,
-				FL("Currently in INIT state, "
-				   "just set opportunistic threshold diff"));
-		pNeighborRoamInfo->cfgParams.nOpportunisticThresholdDiff =
-		    nOpportunisticThresholdDiff;
-		pNeighborRoamInfo->currentOpportunisticThresholdDiff =
-		    nOpportunisticThresholdDiff;
-		break;
-
-	default:
-		NEIGHBOR_ROAM_DEBUG(pMac, LOGE,
-				    FL("Unexpected state %d returning failure"),
-				    pNeighborRoamInfo->neighborRoamState);
-		qdf_status = QDF_STATUS_E_FAILURE;
-		break;
-	}
-	return qdf_status;
-}
-
-QDF_STATUS
-csr_neighbor_roam_set_roam_rescan_rssi_diff(tpAniSirGlobal pMac,
-					    uint8_t sessionId,
-					    uint8_t nRoamRescanRssiDiff)
-{
-	QDF_STATUS qdf_status = QDF_STATUS_SUCCESS;
-	tpCsrNeighborRoamControlInfo pNeighborRoamInfo =
-	    &pMac->roam.neighborRoamInfo[sessionId];
-
-	switch (pNeighborRoamInfo->neighborRoamState) {
-	case eCSR_NEIGHBOR_ROAM_STATE_CONNECTED:
-		NEIGHBOR_ROAM_DEBUG(pMac, LOG2,
-				FL("Currently in CONNECTED state, "
-				   "sending ROAM_SCAN_OFFLOAD_UPDATE_CFG."));
-		pNeighborRoamInfo->cfgParams.nRoamRescanRssiDiff =
-		    nRoamRescanRssiDiff;
-		pNeighborRoamInfo->currentRoamRescanRssiDiff =
-		    nRoamRescanRssiDiff;
-		csr_roam_offload_scan(pMac, sessionId,
-				   ROAM_SCAN_OFFLOAD_UPDATE_CFG,
-				   REASON_ROAM_RESCAN_RSSI_DIFF_CHANGED);
-		break;
-
-	case eCSR_NEIGHBOR_ROAM_STATE_INIT:
-		NEIGHBOR_ROAM_DEBUG(pMac, LOG2,
-				    FL("Currently in INIT state, "
-				       "just set rescan rssi diff"));
-		pNeighborRoamInfo->cfgParams.nRoamRescanRssiDiff =
-		    nRoamRescanRssiDiff;
-		pNeighborRoamInfo->currentRoamRescanRssiDiff =
-		    nRoamRescanRssiDiff;
-		break;
-
-	default:
-		NEIGHBOR_ROAM_DEBUG(pMac, LOGE,
-				    FL("Unexpected state %d returning failure"),
-				    pNeighborRoamInfo->neighborRoamState);
-		qdf_status = QDF_STATUS_E_FAILURE;
-		break;
-	}
-	return qdf_status;
-}
-
-QDF_STATUS
-csr_neighbor_roam_set_roam_bmiss_first_bcnt(tpAniSirGlobal pMac,
-					    uint8_t sessionId,
-					    uint8_t nRoamBmissFirstBcnt)
+QDF_STATUS csr_neighbor_roam_update_config(tpAniSirGlobal mac_ctx,
+		uint8_t session_id, uint8_t value, uint8_t reason)
 {
-	QDF_STATUS qdf_status = QDF_STATUS_SUCCESS;
 	tpCsrNeighborRoamControlInfo pNeighborRoamInfo =
-	    &pMac->roam.neighborRoamInfo[sessionId];
-
-	switch (pNeighborRoamInfo->neighborRoamState) {
-	case eCSR_NEIGHBOR_ROAM_STATE_CONNECTED:
-		NEIGHBOR_ROAM_DEBUG(pMac, LOG2,
-				FL("Currently in CONNECTED state, "
-				   "sending ROAM_SCAN_OFFLOAD_UPDATE_CFG."));
-		pNeighborRoamInfo->cfgParams.nRoamBmissFirstBcnt =
-		    nRoamBmissFirstBcnt;
-		pNeighborRoamInfo->currentRoamBmissFirstBcnt =
-		    nRoamBmissFirstBcnt;
-
-		csr_roam_offload_scan(pMac,
-				   sessionId,
-				   ROAM_SCAN_OFFLOAD_UPDATE_CFG,
-				   REASON_ROAM_BMISS_FIRST_BCNT_CHANGED);
-		break;
+	    &mac_ctx->roam.neighborRoamInfo[session_id];
+	tpCsrNeighborRoamCfgParams cfg_params;
+	eCsrNeighborRoamState state;
+	uint8_t old_value;
 
-	case eCSR_NEIGHBOR_ROAM_STATE_INIT:
-		NEIGHBOR_ROAM_DEBUG(pMac,
-		  LOG2, FL
-		  ("Currently in INIT state, safe to set roam rescan rssi diff"));
-		pNeighborRoamInfo->cfgParams.nRoamBmissFirstBcnt =
-		    nRoamBmissFirstBcnt;
-		pNeighborRoamInfo->currentRoamBmissFirstBcnt =
-		    nRoamBmissFirstBcnt;
-		break;
-
-	default:
-		NEIGHBOR_ROAM_DEBUG(pMac,
-				    LOGE,
-				    FL("Unexpected state %d returning failure"),
-				    pNeighborRoamInfo->neighborRoamState);
-		qdf_status = QDF_STATUS_E_FAILURE;
-		break;
+	if (NULL == pNeighborRoamInfo) {
+		sms_log(mac_ctx, LOG1, FL("Invalid Session ID %d"), session_id);
+		return QDF_STATUS_E_FAILURE;
 	}
-	return qdf_status;
-}
-
-QDF_STATUS
-csr_neighbor_roam_set_roam_bmiss_final_bcnt(tpAniSirGlobal pMac,
-					    uint8_t sessionId,
-					    uint8_t nRoamBmissFinalBcnt)
-{
-	QDF_STATUS qdf_status = QDF_STATUS_SUCCESS;
-	tpCsrNeighborRoamControlInfo pNeighborRoamInfo =
-	    &pMac->roam.neighborRoamInfo[sessionId];
-
-	switch (pNeighborRoamInfo->neighborRoamState) {
-	case eCSR_NEIGHBOR_ROAM_STATE_CONNECTED:
-		NEIGHBOR_ROAM_DEBUG(pMac, LOG2,
-				    FL("Currently in CONNECTED state, "
-				       "sending ROAM_SCAN_OFFLOAD_UPDATE_CFG."));
-		pNeighborRoamInfo->cfgParams.nRoamBmissFinalBcnt =
-		    nRoamBmissFinalBcnt;
-		pNeighborRoamInfo->currentRoamBmissFinalBcnt =
-		    nRoamBmissFinalBcnt;
-
-		csr_roam_offload_scan(pMac, sessionId,
-				   ROAM_SCAN_OFFLOAD_UPDATE_CFG,
-				   REASON_ROAM_BMISS_FINAL_BCNT_CHANGED);
-		break;
-
-	case eCSR_NEIGHBOR_ROAM_STATE_INIT:
-		NEIGHBOR_ROAM_DEBUG(pMac, LOG2,
-				    FL("Currently in INIT state, "
-				       "just set roam fianl bmiss count"));
-		pNeighborRoamInfo->cfgParams.nRoamBmissFinalBcnt =
-		    nRoamBmissFinalBcnt;
-		pNeighborRoamInfo->currentRoamBmissFinalBcnt =
-		    nRoamBmissFinalBcnt;
-		break;
-
-	default:
-		NEIGHBOR_ROAM_DEBUG(pMac,
-				    LOGE,
-				    FL("Unexpected state %d returning failure"),
-				    pNeighborRoamInfo->neighborRoamState);
-		qdf_status = QDF_STATUS_E_FAILURE;
-		break;
+	cfg_params = &pNeighborRoamInfo->cfgParams;
+	state = pNeighborRoamInfo->neighborRoamState;
+	if ((state == eCSR_NEIGHBOR_ROAM_STATE_CONNECTED) ||
+			state == eCSR_NEIGHBOR_ROAM_STATE_INIT) {
+		switch (reason) {
+		case REASON_LOOKUP_THRESH_CHANGED:
+			old_value = cfg_params->neighborLookupThreshold;
+			cfg_params->neighborLookupThreshold = value;
+			pNeighborRoamInfo->currentNeighborLookupThreshold =
+				value;
+			break;
+		case REASON_OPPORTUNISTIC_THRESH_DIFF_CHANGED:
+			old_value = cfg_params->nOpportunisticThresholdDiff;
+			cfg_params->nOpportunisticThresholdDiff = value;
+			pNeighborRoamInfo->currentOpportunisticThresholdDiff =
+				value;
+			break;
+		case REASON_ROAM_RESCAN_RSSI_DIFF_CHANGED:
+			old_value = cfg_params->nRoamRescanRssiDiff;
+			cfg_params->nRoamRescanRssiDiff = value;
+			pNeighborRoamInfo->currentRoamRescanRssiDiff = value;
+			break;
+		case REASON_ROAM_BMISS_FIRST_BCNT_CHANGED:
+			old_value = cfg_params->nRoamBmissFirstBcnt;
+			cfg_params->nRoamBmissFirstBcnt = value;
+			pNeighborRoamInfo->currentRoamBmissFirstBcnt = value;
+			break;
+		case REASON_ROAM_BMISS_FINAL_BCNT_CHANGED:
+			old_value = cfg_params->nRoamBmissFinalBcnt;
+			cfg_params->nRoamBmissFinalBcnt = value;
+			pNeighborRoamInfo->currentRoamBmissFinalBcnt = value;
+			break;
+		case REASON_ROAM_BEACON_RSSI_WEIGHT_CHANGED:
+			old_value = cfg_params->nRoamBeaconRssiWeight;
+			cfg_params->nRoamBeaconRssiWeight = value;
+			pNeighborRoamInfo->currentRoamBeaconRssiWeight = value;
+			break;
+		default:
+			sms_log(mac_ctx, LOG2, FL("Unknown update cfg reason"));
+			return QDF_STATUS_E_FAILURE;
+		}
+	} else {
+		sms_log(mac_ctx, LOGE, FL("Unexpected state %s, return fail"),
+			mac_trace_get_neighbour_roam_state(state));
+		return QDF_STATUS_E_FAILURE;
 	}
-	return qdf_status;
-}
-
-QDF_STATUS
-csr_neighbor_roam_set_roam_beacon_rssi_weight(tpAniSirGlobal pMac,
-					      uint8_t sessionId,
-					      uint8_t nRoamBeaconRssiWeight)
-{
-	QDF_STATUS qdf_status = QDF_STATUS_SUCCESS;
-	tpCsrNeighborRoamControlInfo pNeighborRoamInfo =
-	    &pMac->roam.neighborRoamInfo[sessionId];
-
-	switch (pNeighborRoamInfo->neighborRoamState) {
-	case eCSR_NEIGHBOR_ROAM_STATE_CONNECTED:
-		NEIGHBOR_ROAM_DEBUG(pMac, LOG2,
-				FL("Currently in CONNECTED state, "
-				   "sending ROAM_SCAN_OFFLOAD_UPDATE_CFG."));
-		pNeighborRoamInfo->cfgParams.nRoamBeaconRssiWeight =
-		    nRoamBeaconRssiWeight;
-		pNeighborRoamInfo->currentRoamBeaconRssiWeight =
-		    nRoamBeaconRssiWeight;
-
-		csr_roam_offload_scan(pMac, sessionId,
-				   ROAM_SCAN_OFFLOAD_UPDATE_CFG,
-				   REASON_ROAM_BEACON_RSSI_WEIGHT_CHANGED);
-		break;
-
-	case eCSR_NEIGHBOR_ROAM_STATE_INIT:
-		NEIGHBOR_ROAM_DEBUG(pMac, LOG2,
-				    FL("Currently in INIT state, "
-				       "just set roam beacon rssi weight"));
-		pNeighborRoamInfo->cfgParams.nRoamBeaconRssiWeight =
-		    nRoamBeaconRssiWeight;
-		pNeighborRoamInfo->currentRoamBeaconRssiWeight =
-		    nRoamBeaconRssiWeight;
-		break;
-
-	default:
-		NEIGHBOR_ROAM_DEBUG(pMac,
-				    LOGE,
-				    FL("Unexpected state %d returning failure"),
-				    pNeighborRoamInfo->neighborRoamState);
-		qdf_status = QDF_STATUS_E_FAILURE;
-		break;
+	if (state == eCSR_NEIGHBOR_ROAM_STATE_CONNECTED) {
+		sms_log(mac_ctx, LOG2, FL("CONNECTED, send update cfg cmd"));
+		csr_roam_offload_scan(mac_ctx, session_id,
+			ROAM_SCAN_OFFLOAD_UPDATE_CFG, reason);
 	}
-	return qdf_status;
+	sms_log(mac_ctx, LOG2, FL("LFR config for %s changed from %d to %d"),
+			lfr_get_config_item_string(reason), old_value, value);
+	return QDF_STATUS_SUCCESS;
 }
 
 /*CleanUP Routines*/