summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRaja Mani <rmani@qti.qualcomm.com>2013-12-31 13:36:45 +0530
committerPrakash Dhavali <pdhavali@codeaurora.org>2014-01-17 21:45:51 -0800
commit167378cd8facdcdd4b20d7425a6c4909b130b427 (patch)
tree22ed8791fc05f2e7b6225691c8f5c98247ce4291
parentc284d63f79a669c843a41b97d0e68b41e888124c (diff)
qcacld: Configure pno wake up event during suspend
Recent firmware considers WOW_NLO_DETECTED_EVENT and wakes up the host when desired AP found only if WOW_NLO_DETECTED_EVENT is explicitly enabled by the host. . Change-Id: I5ba18b4140cdcaa429e30ef4af094473dc855083 CRs-Fixed: 594855
-rw-r--r--CORE/SERVICES/WMA/wma.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/CORE/SERVICES/WMA/wma.c b/CORE/SERVICES/WMA/wma.c
index b6cea385413a..a7297696c6c3 100644
--- a/CORE/SERVICES/WMA/wma.c
+++ b/CORE/SERVICES/WMA/wma.c
@@ -9782,7 +9782,8 @@ static bool wma_is_wow_prtn_cached(tp_wma_handle wma, u_int8_t vdev_id)
* Pushes wow patterns from local cache to FW and configures
* wakeup trigger events.
*/
-static VOS_STATUS wma_feed_wow_config_to_fw(tp_wma_handle wma)
+static VOS_STATUS wma_feed_wow_config_to_fw(tp_wma_handle wma,
+ v_BOOL_t pno_in_progress)
{
struct wma_txrx_node *iface;
VOS_STATUS ret = VOS_STATUS_SUCCESS;
@@ -9923,6 +9924,15 @@ static VOS_STATUS wma_feed_wow_config_to_fw(tp_wma_handle wma)
ap_vdev_available ? "enabled" : "disabled");
}
+ /* Configure pno based wakeup */
+ ret = wma_add_wow_wakeup_event(wma, WOW_NLO_DETECTED_EVENT,
+ pno_in_progress);
+ if (ret != VOS_STATUS_SUCCESS) {
+ WMA_LOGE("Failed to configure pno based wakeup");
+ } else {
+ WMA_LOGD("PNO based wakeup is %s in fw",
+ pno_in_progress ? "enabled" : "disabled");
+ }
/* WOW is enabled in pcie suspend callback */
wma->wow.wow_enable = TRUE;
@@ -10144,7 +10154,7 @@ enable_wow:
* At this point, suspend indication is received on
* last vdev. It's the time to enable wow in fw.
*/
- ret = wma_feed_wow_config_to_fw(wma);
+ ret = wma_feed_wow_config_to_fw(wma, pno_in_progress);
if (ret != VOS_STATUS_SUCCESS) {
vos_mem_free(info);
return ret;