Forráskód Böngészése

qcacld-3.0: Re-enable fw LFR3 engine after roam sync complete

Currently, host driver sequence of events is as below
- roam sync indication from fw
- invoke csr_roam_synch_callback with SIR_ROAM_SYNCH_PROPAGATION,
  which sets roam_synch_in_progress in csr session
- disable LFR3 roam in fw(send RSO stop)
- Assoc completion, Set key
- In csr_neighbor_roam_info_ctx_init, RSO start attempt fails
  due to roam_synch_in_progress set
- invoke csr_roam_synch_callback with SIR_ROAM_SYNCH_COMPLETE,
  which resets roam_synch_in_progress
Because of this, LFR3 is not re enabled(RSO Start is not sent)
after roam synch indication.

Re-enable fw LFR3 engine(Send RSO Start) after roam sync complete.

Change-Id: I231b6f7427cd938d9801af20dd4719482cfa7584
CRs-Fixed: 2047267
Selvaraj, Sridhar 8 éve
szülő
commit
5056650c2e

+ 1 - 0
core/sme/inc/csr_neighbor_roam.h

@@ -326,6 +326,7 @@ void csr_roam_reset_roam_params(tpAniSirGlobal mac_ptr);
 #define REASON_ROAM_SYNCH_FAILED                    36
 #define REASON_ROAM_PSK_PMK_CHANGED                 37
 #define REASON_SUPPLICANT_DISABLED_ROAMING          39
+#define REASON_CTX_INIT                             40
 
 #if defined(WLAN_FEATURE_HOST_ROAM) || defined(WLAN_FEATURE_ROAM_OFFLOAD)
 QDF_STATUS csr_roam_offload_scan(tpAniSirGlobal pMac, uint8_t sessionId,

+ 11 - 0
core/sme/src/csr/csr_api_roam.c

@@ -17857,6 +17857,14 @@ csr_roam_offload_scan(tpAniSirGlobal mac_ctx, uint8_t session_id,
 		return QDF_STATUS_E_FAILURE;
 	}
 
+	if ((ROAM_SCAN_OFFLOAD_START == command &&
+			REASON_CTX_INIT != reason) &&
+			(session->pCurRoamProfile &&
+			 session->pCurRoamProfile->do_not_roam)) {
+		sme_debug("Supplicant disabled driver roaming");
+		return QDF_STATUS_E_FAILURE;
+	}
+
 	if (0 == csr_roam_is_roam_offload_scan_enabled(mac_ctx)) {
 		sme_err("isRoamOffloadScanEnabled not set");
 		return QDF_STATUS_E_FAILURE;
@@ -20128,6 +20136,9 @@ QDF_STATUS csr_roam_synch_callback(tpAniSirGlobal mac_ctx,
 		session->roam_synch_in_progress = false;
 		policy_mgr_check_concurrent_intf_and_restart_sap(mac_ctx->psoc);
 		sme_release_global_lock(&mac_ctx->sme);
+		csr_roam_offload_scan(mac_ctx, session_id,
+				ROAM_SCAN_OFFLOAD_START,
+				REASON_CONNECT);
 		return status;
 	default:
 		sme_err("LFR3: callback reason %d", reason);

+ 1 - 1
core/sme/src/csr/csr_neighbor_roam.c

@@ -1043,7 +1043,7 @@ static void csr_neighbor_roam_info_ctx_init(
 
 			csr_roam_offload_scan(pMac, session_id,
 				ROAM_SCAN_OFFLOAD_START,
-				REASON_CONNECT);
+				REASON_CTX_INIT);
 
 			if (session->pCurRoamProfile &&
 				 session->pCurRoamProfile->do_not_roam) {