Procházet zdrojové kódy

qcacld-3.0: LFR3: Fix roam_synch_in_progress flag set in csr_roam_synch_callback

roam_synch_in_progress is set by default in csr_roam_synch_callback function,
and will be reset only on SIR_ROAM_SYNCH_PROPAGATION roam op_code.

On roam_synch_in_progress set, no roam call back will be called  and  roam
command will not be removed from active list.

If roam_synch_in_progress is set on roam op_code other than SIR_ROAM_SYNCH_PROPAGATION,
roam_synch_in_progress will remain till next roam, till that time no roam commands will be
processed.

To fix this set roam_synch_in_progress only on SIR_ROAM_SYNCH_PROPAGATION roam op_code.
And also add log in csr_roam_set_bss_config_cfg if roam_synch_in_progress is set.

Change-Id: Id50e6f871280bd3eac9f61513db308ea748eec2d
CRs-Fixed: 1064213
Arif Hussain před 8 roky
rodič
revize
557920fc10
1 změnil soubory, kde provedl 5 přidání a 2 odebrání
  1. 5 2
      core/sme/src/csr/csr_api_roam.c

+ 5 - 2
core/sme/src/csr/csr_api_roam.c

@@ -4664,8 +4664,11 @@ QDF_STATUS csr_roam_set_bss_config_cfg(tpAniSirGlobal pMac, uint32_t sessionId,
 	status = cfg_set_int(pMac, WNI_CFG_JOIN_FAILURE_TIMEOUT,
 			pBssConfig->uJoinTimeOut);
 	/* Any roaming related changes should be above this line */
-	if (pSession && pSession->roam_synch_in_progress)
+	if (pSession && pSession->roam_synch_in_progress) {
+		sms_log(pMac, LOG4, FL("Roam synch is in progress %d"),
+			sessionId);
 		return QDF_STATUS_SUCCESS;
+	}
 	/* Make this the last CFG to set. The callback will trigger a join_req */
 	/* Join time out */
 	csr_roam_substate_change(pMac, eCSR_ROAM_SUBSTATE_CONFIG, sessionId);
@@ -19169,7 +19172,6 @@ void csr_roam_synch_callback(tpAniSirGlobal mac_ctx,
 		sme_release_global_lock(&mac_ctx->sme);
 		return;
 	}
-	session->roam_synch_in_progress = true;
 	switch (reason) {
 	case SIR_ROAMING_DEREGISTER_STA:
 		csr_roam_call_callback(mac_ctx, session_id, NULL, 0,
@@ -19193,6 +19195,7 @@ void csr_roam_synch_callback(tpAniSirGlobal mac_ctx,
 		sme_release_global_lock(&mac_ctx->sme);
 		return;
 	}
+	session->roam_synch_in_progress = true;
 	session->roam_synch_data = roam_synch_data;
 	if (!QDF_IS_STATUS_SUCCESS(csr_get_parsed_bss_description_ies(mac_ctx,
 			bss_desc, &ies_local))) {