From 04aec8e5d1f76f48bbccf7500cca1aa14c9b16ca Mon Sep 17 00:00:00 2001 From: Ryan Hsu Date: Fri, 9 Oct 2015 10:15:46 -0700 Subject: [PATCH] qcacld-3.0: Fix the PNO WoW is not configured in concurrency case qcacld-2.0 to qcacld-3.0 propagation In the case of SAP + STA mode we fail to enable PNO on the STA interface, and as a result the PNO feature will fail to find a network and wake the host. Fix this by making sure PNO is configured in all appropriate concurrency cases. Change-Id: I97084cfde73025f0d09b60616959c9530ba82c80 CRs-fixed: 921150 --- core/wma/src/wma_features.c | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/core/wma/src/wma_features.c b/core/wma/src/wma_features.c index cff570c39ce4..ffe4771826b7 100644 --- a/core/wma/src/wma_features.c +++ b/core/wma/src/wma_features.c @@ -3752,9 +3752,10 @@ static bool wma_is_extscan_in_progress(tp_wma_handle wma) CDF_STATUS wma_suspend_req(tp_wma_handle wma, tpSirWlanSuspendParam info) { struct wma_txrx_node *iface; - bool connected = false, pno_in_progress = false; + bool pno_in_progress = false; uint8_t i, vdev_id = 0; bool extscan_in_progress = false, pno_matched = false; + bool enable_wow = false; wma->no_of_suspend_ind++; @@ -3816,17 +3817,16 @@ CDF_STATUS wma_suspend_req(tp_wma_handle wma, tpSirWlanSuspendParam info) WMI_SERVICE_BEACON_OFFLOAD)) { WMA_LOGD("vdev %d is in beaconning mode, enabling wow", i); - goto enable_wow; + enable_wow = true; } } for (i = 0; i < wma->max_bssid; i++) { - if (wma->interfaces[i].conn_state) { - connected = true; - break; - } + if (wma->interfaces[i].conn_state) + enable_wow = true; #ifdef FEATURE_WLAN_SCAN_PNO if (wma->interfaces[i].pno_in_progress) { WMA_LOGD("PNO is in progress, enabling wow"); + enable_wow = true; pno_in_progress = true; vdev_id = i; if (wma->interfaces[i].nlo_match_evt_received) @@ -3836,6 +3836,8 @@ CDF_STATUS wma_suspend_req(tp_wma_handle wma, tpSirWlanSuspendParam info) #endif /* FEATURE_WLAN_SCAN_PNO */ } extscan_in_progress = wma_is_extscan_in_progress(wma); + if (extscan_in_progress) + enable_wow = true; for (i = 0; i < wma->max_bssid; i++) { wma->wow.gtk_pdev_enable |= wma->wow.gtk_err_enable[i]; @@ -3843,13 +3845,12 @@ CDF_STATUS wma_suspend_req(tp_wma_handle wma, tpSirWlanSuspendParam info) i, wma->wow.gtk_err_enable[i], wma->wow.gtk_pdev_enable); } - if (!connected && !pno_in_progress && !extscan_in_progress) { + if (!enable_wow) { WMA_LOGD("All vdev are in disconnected state and pno/extscan is not in progress, skipping wow"); cdf_mem_free(info); goto send_ready_to_suspend; } -enable_wow: WMA_LOGE("WOW Suspend"); /*