summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSrinivas Girigowda <sgirigow@qca.qualcomm.com>2015-04-09 13:32:45 -0700
committerSatish Singh <c_ssing@qca.qualcomm.com>2015-04-10 22:05:47 -0700
commit9a0431bd52d3b805dacbe4135f35f58e354ed690 (patch)
treed0f1b02e55a9ae25c35339f87d030174485d6703
parentfae447378d23af5801600423049349d62753bce9 (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.c23
-rw-r--r--CORE/SERVICES/WMA/wma.h3
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)