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
Tento commit je obsažen v:
Ryan Hsu
2015-10-09 10:15:46 -07:00
odevzdal Satish Singh
rodič 14f4c4cfd5
revize b46e9f94e4

Zobrazit soubor

@@ -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");
/*