diff options
| author | Srinivas Girigowda <sgirigow@qca.qualcomm.com> | 2015-04-09 13:32:45 -0700 |
|---|---|---|
| committer | Satish Singh <c_ssing@qca.qualcomm.com> | 2015-04-10 22:05:47 -0700 |
| commit | 9a0431bd52d3b805dacbe4135f35f58e354ed690 (patch) | |
| tree | d0f1b02e55a9ae25c35339f87d030174485d6703 | |
| parent | fae447378d23af5801600423049349d62753bce9 (diff) | |
qcacld: Put fw in wow mode if extscan is in progress
After extscan is started and APPS power collapse, host driver
is sending WMI_PDEV_SUSPEND_CMDID which is stopping the extscan.
Fix is to send WMI_WOW_ENABLE_CMDID if extscan is in progress
during APPS power collapse.
Change-Id: I968d55e94058256769302217f987fc51ebb1ffa6
CRs-Fixed: 820391
| -rw-r--r-- | CORE/SERVICES/WMA/wma.c | 23 | ||||
| -rw-r--r-- | CORE/SERVICES/WMA/wma.h | 3 |
2 files changed, 24 insertions, 2 deletions
diff --git a/CORE/SERVICES/WMA/wma.c b/CORE/SERVICES/WMA/wma.c index 74698d48371e..a6733f19d34c 100644 --- a/CORE/SERVICES/WMA/wma.c +++ b/CORE/SERVICES/WMA/wma.c @@ -19120,6 +19120,7 @@ static VOS_STATUS wma_suspend_req(tp_wma_handle wma, tpSirWlanSuspendParam info) v_BOOL_t connected = FALSE, pno_in_progress = FALSE; VOS_STATUS ret; u_int8_t i; + bool extscan_in_progress = false; wma->no_of_suspend_ind++; @@ -19183,6 +19184,7 @@ static VOS_STATUS wma_suspend_req(tp_wma_handle wma, tpSirWlanSuspendParam info) * 1) Is any one of vdev in beaconning mode (in AP mode) ? * 2) Is any one of vdev in connected state (in STA mode) ? * 3) Is PNO in progress in any one of vdev ? + * 4) Is Extscan in progress in any one of vdev ? */ for (i = 0; i < wma->max_bssid; i++) { if ( (wma_is_vdev_in_ap_mode(wma, i) @@ -19209,6 +19211,13 @@ static VOS_STATUS wma_suspend_req(tp_wma_handle wma, tpSirWlanSuspendParam info) break; } #endif +#ifdef FEATURE_WLAN_EXTSCAN + if (wma->interfaces[i].extscan_in_progress) { + WMA_LOGD("Extscan is in progress, enabling wow"); + extscan_in_progress = true; + break; + } +#endif } for (i = 0; i < wma->max_bssid; i++) { wma->wow.gtk_pdev_enable |= wma->wow.gtk_err_enable[i]; @@ -19217,8 +19226,8 @@ static VOS_STATUS wma_suspend_req(tp_wma_handle wma, tpSirWlanSuspendParam info) wma->wow.gtk_pdev_enable); } - if (!connected && !pno_in_progress) { - WMA_LOGD("All vdev are in disconnected state, skipping wow"); + if (!connected && !pno_in_progress && !extscan_in_progress) { + WMA_LOGD("All vdev are in disconnected state and pno/extscan is not in progress, skipping wow"); vos_mem_free(info); goto send_ready_to_suspend; } @@ -22584,6 +22593,11 @@ VOS_STATUS wma_start_extscan(tp_wma_handle wma, adf_nbuf_free(buf); return VOS_STATUS_E_FAILURE; } + + wma->interfaces[pstart->sessionId].extscan_in_progress = true; + WMA_LOGD("Extscan start request sent successfully for vdev %d", + pstart->sessionId); + return VOS_STATUS_SUCCESS; } @@ -22628,6 +22642,11 @@ VOS_STATUS wma_stop_extscan(tp_wma_handle wma, adf_nbuf_free(wmi_buf); return VOS_STATUS_E_FAILURE; } + + wma->interfaces[pstopcmd->sessionId].extscan_in_progress = false; + WMA_LOGD("Extscan stop request sent successfully for vdev %d", + pstopcmd->sessionId); + return VOS_STATUS_SUCCESS; } diff --git a/CORE/SERVICES/WMA/wma.h b/CORE/SERVICES/WMA/wma.h index 07320e182e8c..1c6dba79bcec 100644 --- a/CORE/SERVICES/WMA/wma.h +++ b/CORE/SERVICES/WMA/wma.h @@ -545,6 +545,9 @@ struct wma_txrx_node { void *plink_status_req; void *psnr_req; u_int8_t delay_before_vdev_stop; +#ifdef FEATURE_WLAN_EXTSCAN + bool extscan_in_progress; +#endif }; #if defined(QCA_WIFI_FTM) |
