summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CORE/MAC/src/pe/lim/limProcessMlmReqMessages.c19
-rw-r--r--CORE/MAC/src/pe/lim/limProcessMlmRspMessages.c7
2 files changed, 24 insertions, 2 deletions
diff --git a/CORE/MAC/src/pe/lim/limProcessMlmReqMessages.c b/CORE/MAC/src/pe/lim/limProcessMlmReqMessages.c
index f4d5f6a589a9..e49adac63c23 100644
--- a/CORE/MAC/src/pe/lim/limProcessMlmReqMessages.c
+++ b/CORE/MAC/src/pe/lim/limProcessMlmReqMessages.c
@@ -318,7 +318,24 @@ limResumeLink(tpAniSirGlobal pMac, SUSPEND_RESUME_LINK_CALLBACK callback, tANI_U
pMac->lim.gpLimResumeCallback = callback;
pMac->lim.gpLimResumeData = data;
- limSendHalFinishScanReq(pMac, eLIM_HAL_RESUME_LINK_WAIT_STATE );
+
+ /* eLIM_HAL_IDLE_SCAN_STATE state indicate limSendHalInitScanReq failed.
+ * In case limSendHalInitScanReq is success, Scanstate would be
+ * eLIM_HAL_SUSPEND_LINK_STATE
+ */
+ if( eLIM_HAL_IDLE_SCAN_STATE != pMac->lim.gLimHalScanState )
+ {
+ limSendHalFinishScanReq(pMac, eLIM_HAL_RESUME_LINK_WAIT_STATE );
+ }
+ else
+ {
+ limLog(pMac, LOGW, FL("Init Scan failed, we will not call finish scan."
+ " calling the callback with failure status"));
+ pMac->lim.gpLimResumeCallback( pMac, eSIR_FAILURE, pMac->lim.gpLimResumeData);
+ pMac->lim.gpLimResumeCallback = NULL;
+ pMac->lim.gpLimResumeData = NULL;
+ pMac->lim.gLimSystemInScanLearnMode = 0;
+ }
if(limIsInMCC(pMac))
{
diff --git a/CORE/MAC/src/pe/lim/limProcessMlmRspMessages.c b/CORE/MAC/src/pe/lim/limProcessMlmRspMessages.c
index 820c23a5bd7c..6b3e3f26e175 100644
--- a/CORE/MAC/src/pe/lim/limProcessMlmRspMessages.c
+++ b/CORE/MAC/src/pe/lim/limProcessMlmRspMessages.c
@@ -3537,10 +3537,15 @@ void limProcessInitScanRsp(tpAniSirGlobal pMac, void *body)
case eLIM_HAL_SUSPEND_LINK_WAIT_STATE:
if( pMac->lim.gpLimSuspendCallback )
{
- if( status == eHAL_STATUS_SUCCESS )
+ if( eHAL_STATUS_SUCCESS == status )
+ {
pMac->lim.gLimHalScanState = eLIM_HAL_SUSPEND_LINK_STATE;
+ }
else
+ {
pMac->lim.gLimHalScanState = eLIM_HAL_IDLE_SCAN_STATE;
+ pMac->lim.gLimSystemInScanLearnMode = 0;
+ }
pMac->lim.gpLimSuspendCallback( pMac, status, pMac->lim.gpLimSuspendData );
pMac->lim.gpLimSuspendCallback = NULL;