Prechádzať zdrojové kódy

qcacld-3.0: Do not send RSO_START if bssid set in connect request

qcacld-2.0 to qcacld-3.0 propagation

Host should not allow roaming if bssid is set in connect request
and hence RSO_START should not be sent.

Add changes to not send RSO_START if bssid set in connect request.

Change-Id: I1037c60837a90472fee312e8654197ea7f68702e
CRs-Fixed: 1016886
Sreelakshmi Konamki 8 rokov pred
rodič
commit
bda5bbfcc6

+ 2 - 0
core/hdd/src/wlan_hdd_cfg80211.c

@@ -10591,8 +10591,10 @@ static int wlan_hdd_cfg80211_connect_start(hdd_adapter_t *pAdapter,
 		qdf_mem_copy((void *)(pRoamProfile->SSIDs.SSIDList->SSID.ssId),
 			     ssid, ssid_len);
 
+		pRoamProfile->do_not_roam = false;
 		if (bssid) {
 			pRoamProfile->BSSIDs.numOfBSSIDs = 1;
+			pRoamProfile->do_not_roam = true;
 			qdf_mem_copy((void *)(pRoamProfile->BSSIDs.bssid),
 				     bssid, QDF_MAC_ADDR_SIZE);
 			/*

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

@@ -967,6 +967,7 @@ typedef struct tagCsrRoamProfile {
 	uint8_t beacon_tx_rate;
 	tSirMacRateSet supp_rate_set;
 	tSirMacRateSet extended_rate_set;
+	bool do_not_roam;
 } tCsrRoamProfile;
 
 #ifdef FEATURE_WLAN_MCC_TO_SCC_SWITCH

+ 5 - 0
core/sme/src/common/sme_api.c

@@ -8937,6 +8937,7 @@ QDF_STATUS sme_config_fast_roaming(tHalHandle hal, uint8_t session_id,
 				   const bool is_fast_roam_enabled)
 {
 	tpAniSirGlobal mac_ctx = PMAC_STRUCT(hal);
+	tCsrRoamSession *session = CSR_GET_SESSION(mac_ctx, session_id);
 	QDF_STATUS status;
 
 	if (!mac_ctx->roam.configParam.isFastRoamIniFeatureEnabled) {
@@ -8945,6 +8946,10 @@ QDF_STATUS sme_config_fast_roaming(tHalHandle hal, uint8_t session_id,
 			return QDF_STATUS_SUCCESS;
 		return  QDF_STATUS_E_FAILURE;
 	}
+
+	if (is_fast_roam_enabled && session && session->pCurRoamProfile)
+		session->pCurRoamProfile->do_not_roam = false;
+
 	status = csr_neighbor_roam_update_fast_roaming_enabled(mac_ctx,
 					 session_id, is_fast_roam_enabled);
 	if (!QDF_IS_STATUS_SUCCESS(status)) {

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

@@ -7209,6 +7209,7 @@ QDF_STATUS csr_roam_copy_profile(tpAniSirGlobal pMac,
 	pDstProfile->wps_state = pSrcProfile->wps_state;
 	pDstProfile->ieee80211d = pSrcProfile->ieee80211d;
 	pDstProfile->sap_dot11mc = pSrcProfile->sap_dot11mc;
+	pDstProfile->do_not_roam = pSrcProfile->do_not_roam;
 	qdf_mem_copy(&pDstProfile->Keys, &pSrcProfile->Keys,
 		sizeof(pDstProfile->Keys));
 #ifdef WLAN_FEATURE_11W
@@ -17406,6 +17407,13 @@ csr_roam_offload_scan(tpAniSirGlobal mac_ctx, uint8_t session_id,
 			  FL("session is null"));
 		return QDF_STATUS_E_FAILURE;
 	}
+
+	if ((ROAM_SCAN_OFFLOAD_START == command) && session->pCurRoamProfile &&
+	    session->pCurRoamProfile->do_not_roam) {
+		sms_log(mac_ctx, LOGE,
+			FL("Supplicant disabled driver roaming"));
+		return QDF_STATUS_E_FAILURE;
+	}
 #ifdef WLAN_FEATURE_ROAM_OFFLOAD
 	if (session->roam_synch_in_progress
 	    && (ROAM_SCAN_OFFLOAD_STOP == command)) {