diff options
| -rw-r--r-- | CORE/MAC/src/pe/lim/limProcessMlmReqMessages.c | 19 | ||||
| -rw-r--r-- | CORE/MAC/src/pe/lim/limProcessMlmRspMessages.c | 7 |
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; |
