diff options
| -rw-r--r-- | CORE/HDD/src/wlan_hdd_cfg80211.c | 5 | ||||
| -rw-r--r-- | CORE/SME/inc/sme_Api.h | 11 | ||||
| -rw-r--r-- | CORE/SME/src/sme_common/sme_Api.c | 20 |
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; +} + + |
