summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CORE/HDD/src/wlan_hdd_cfg80211.c5
-rw-r--r--CORE/SME/inc/sme_Api.h11
-rw-r--r--CORE/SME/src/sme_common/sme_Api.c20
3 files changed, 35 insertions, 1 deletions
diff --git a/CORE/HDD/src/wlan_hdd_cfg80211.c b/CORE/HDD/src/wlan_hdd_cfg80211.c
index 75c06e81aeca..7f2af960cb17 100644
--- a/CORE/HDD/src/wlan_hdd_cfg80211.c
+++ b/CORE/HDD/src/wlan_hdd_cfg80211.c
@@ -10982,6 +10982,11 @@ int __wlan_hdd_cfg80211_suspend_wlan(struct wiphy *wiphy,
return -EAGAIN;
}
+ if (sme_staInMiddleOfRoaming(pHddCtx->hHal)) {
+ hddLog(VOS_TRACE_LEVEL_DEBUG, FL("Roaming in progress "
+ "Do not allow suspend"));
+ return -EAGAIN;
+ }
#ifdef QCA_WIFI_2_0
/* Stop ongoing scan on each interface */
status = hdd_get_front_adapter ( pHddCtx, &pAdapterNode );
diff --git a/CORE/SME/inc/sme_Api.h b/CORE/SME/inc/sme_Api.h
index 273263a66276..774ee5ef1ae1 100644
--- a/CORE/SME/inc/sme_Api.h
+++ b/CORE/SME/inc/sme_Api.h
@@ -3647,6 +3647,15 @@ eHalStatus sme_UpdateDFSScanMode(tHalHandle hHal, v_U8_t allowDFSChannelRoam);
\return DFS roaming mode 0 (disabled), 1 (passive), 2 (active)
\sa
--------------------------------------------------------------------------*/
-v_U8_t sme_GetDFSScanMode(tHalHandle hHal);
+v_BOOL_t sme_GetDFSScanMode(tHalHandle hHal);
+
+/* ---------------------------------------------------------------------------
+ \fn sme_staInMiddleOfRoaming
+ \brief This function returns TRUE if STA is in the middle of roaming state
+ \param hHal - HAL handle for device
+ \- return TRUE or FALSE
+ -------------------------------------------------------------------------*/
+tANI_BOOLEAN sme_staInMiddleOfRoaming(tHalHandle hHal);
+
#endif //#if !defined( __SME_API_H )
diff --git a/CORE/SME/src/sme_common/sme_Api.c b/CORE/SME/src/sme_common/sme_Api.c
index 96c3a0221e44..eabb489993d6 100644
--- a/CORE/SME/src/sme_common/sme_Api.c
+++ b/CORE/SME/src/sme_common/sme_Api.c
@@ -12589,3 +12589,23 @@ eHalStatus sme_UpdateAddIE(tHalHandle hHal,
return (status);
}
+/* ---------------------------------------------------------------------------
+ \fn sme_staInMiddleOfRoaming
+ \brief This function returns TRUE if STA is in the middle of roaming state
+ \param hHal - HAL handle for device
+ \- return TRUE or FALSE
+ -------------------------------------------------------------------------*/
+tANI_BOOLEAN sme_staInMiddleOfRoaming(tHalHandle hHal)
+{
+ tpAniSirGlobal pMac = PMAC_STRUCT( hHal );
+ eHalStatus status = eHAL_STATUS_SUCCESS;
+ tANI_BOOLEAN ret = FALSE;
+
+ if (eHAL_STATUS_SUCCESS == (status = sme_AcquireGlobalLock(&pMac->sme))) {
+ ret = csrNeighborMiddleOfRoaming(hHal);
+ sme_ReleaseGlobalLock(&pMac->sme);
+ }
+ return ret;
+}
+
+