wlan: Abort on-going scan upon receiving PNO enable command
Abort on-going scan upon receiving PNO enable command as the
current firmware design for PNO doesnot consider PNO enable
while on-going host scan.
Change-Id: I92ee90d256f6a8a7e1990a43bdb06a095a413028
CRs-Fixed: 669478
diff --git a/CORE/HDD/src/wlan_hdd_cfg80211.c b/CORE/HDD/src/wlan_hdd_cfg80211.c
index 74c2f46..dc167d3 100644
--- a/CORE/HDD/src/wlan_hdd_cfg80211.c
+++ b/CORE/HDD/src/wlan_hdd_cfg80211.c
@@ -2479,6 +2479,7 @@
hdd_scaninfo_t *pScanInfo = NULL;
hdd_adapter_t *staAdapter = NULL;
VOS_STATUS status;
+ long ret;
ENTER();
@@ -2520,32 +2521,22 @@
__func__, hdd_device_modetoString(pAdapter->device_mode),
pAdapter->device_mode);
- if ((pScanInfo != NULL) && pScanInfo->mScanPending && staAdapter)
+ ret = wlan_hdd_scan_abort(pAdapter);
+
+ if (ret <= 0)
{
- long ret;
+ VOS_TRACE( VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_ERROR,
+ FL("Timeout occurred while waiting for abortscan %ld"), ret);
- INIT_COMPLETION(pScanInfo->abortscan_event_var);
- hdd_abort_mac_scan(staAdapter->pHddCtx, pAdapter->sessionId,
- eCSR_SCAN_ABORT_DEFAULT);
- ret = wait_for_completion_interruptible_timeout(
- &pScanInfo->abortscan_event_var,
- msecs_to_jiffies(WLAN_WAIT_TIME_ABORTSCAN));
- if (ret <= 0)
+ if (pHddCtx->isLogpInProgress)
{
- VOS_TRACE( VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_ERROR,
- FL("Timeout occurred while waiting for abortscan %ld"),
- ret);
+ VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_ERROR,
+ "%s: LOGP in Progress. Ignore!!!", __func__);
- if (pHddCtx->isLogpInProgress)
- {
- VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_ERROR,
- "%s: LOGP in Progress. Ignore!!!", __func__);
-
- VOS_ASSERT(pScanInfo->mScanPending);
- return -EAGAIN;
- }
VOS_ASSERT(pScanInfo->mScanPending);
+ return -EAGAIN;
}
+ VOS_ASSERT(pScanInfo->mScanPending);
}
hdd_hostapd_stop(dev);
@@ -8579,6 +8570,14 @@
return -EINVAL;
}
+ ret = wlan_hdd_scan_abort(pAdapter);
+ if (ret <= 0)
+ {
+ VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_ERROR,
+ "%s: aborting the existing scan is unsuccessfull", __func__);
+ return -EBUSY;
+ }
+
if (eHAL_STATUS_SUCCESS != wlan_hdd_is_pno_allowed(pAdapter))
{
VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_WARN,