Prechádzať zdrojové kódy

qcacld-3.0: Handle resetting do_not_roam flag in sme_config_fast_roaming

do_not_roam flag is set when supplicant initiate connect request with
BSSID. This flag reset when supplicant sends vendor command to enable roaming.

If roaming is disabled using driver command, this supplicant request to enable
roaming will be ignored in sme_config_fast_roaming function and do_not_roam flag
remains set. So make sure to update do_not_roam flag in sme_config_fast_roaming
function even before validating isFastRoamIniFeatureEnabled to process or skip
roam request from supplicant.

Change-Id: I541b9e5a66e7d7ad8b2040cf9070a7893be66b5f
CRs-Fixed: 2000718
Arif Hussain 8 rokov pred
rodič
commit
a48a9c0468
1 zmenil súbory, kde vykonal 13 pridanie a 3 odobranie
  1. 13 3
      core/sme/src/common/sme_api.c

+ 13 - 3
core/sme/src/common/sme_api.c

@@ -8916,6 +8916,19 @@ QDF_STATUS sme_config_fast_roaming(tHalHandle hal, uint8_t session_id,
 	tCsrRoamSession *session = CSR_GET_SESSION(mac_ctx, session_id);
 	QDF_STATUS status;
 
+	/* do_not_roam flag is set in wlan_hdd_cfg80211_connect_start
+	 * when supplicant initiate connect request with BSSID.
+	 * This flag reset when supplicant sends vendor command to enable
+	 * roaming after association.
+	 *
+	 * This request from wpa_supplicant will be skipped in this function
+	 * if roaming is disabled using driver command or INI and do_not_roam
+	 * flag remains set. So make sure to set do_not_roam flag as per
+	 * wpa_supplicant even if roam request from wpa_supplicant ignored.
+	 */
+	if (session && session->pCurRoamProfile)
+		session->pCurRoamProfile->do_not_roam = !is_fast_roam_enabled;
+
 	if (!mac_ctx->roam.configParam.isFastRoamIniFeatureEnabled) {
 		sms_log(mac_ctx, LOGE, FL("Fast roam is disabled through ini"));
 		if (!is_fast_roam_enabled)
@@ -8923,9 +8936,6 @@ QDF_STATUS sme_config_fast_roaming(tHalHandle hal, uint8_t session_id,
 		return  QDF_STATUS_E_FAILURE;
 	}
 
-	if (session && session->pCurRoamProfile)
-		session->pCurRoamProfile->do_not_roam = !is_fast_roam_enabled;
-
 	status = csr_neighbor_roam_update_fast_roaming_enabled(mac_ctx,
 					 session_id, is_fast_roam_enabled);
 	if (!QDF_IS_STATUS_SUCCESS(status)) {