diff options
| -rw-r--r-- | core/hdd/src/wlan_hdd_cfg80211.c | 2 | ||||
| -rw-r--r-- | core/sme/inc/csr_api.h | 1 | ||||
| -rw-r--r-- | core/sme/src/common/sme_api.c | 5 | ||||
| -rw-r--r-- | core/sme/src/csr/csr_api_roam.c | 8 |
4 files changed, 16 insertions, 0 deletions
diff --git a/core/hdd/src/wlan_hdd_cfg80211.c b/core/hdd/src/wlan_hdd_cfg80211.c index 06581e96d453..49bf0f87a73f 100644 --- a/core/hdd/src/wlan_hdd_cfg80211.c +++ b/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); /* diff --git a/core/sme/inc/csr_api.h b/core/sme/inc/csr_api.h index 70e175cee25b..c68f20546ab7 100644 --- a/core/sme/inc/csr_api.h +++ b/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 diff --git a/core/sme/src/common/sme_api.c b/core/sme/src/common/sme_api.c index 122e5839597b..cf838f0b41da 100644 --- a/core/sme/src/common/sme_api.c +++ b/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)) { diff --git a/core/sme/src/csr/csr_api_roam.c b/core/sme/src/csr/csr_api_roam.c index 4465d1e6b640..9b9207374642 100644 --- a/core/sme/src/csr/csr_api_roam.c +++ b/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)) { |
