diff options
| author | Selvaraj, Sridhar <sselvara@codeaurora.org> | 2016-07-05 15:19:24 +0530 |
|---|---|---|
| committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2016-08-05 16:30:07 -0700 |
| commit | 172cabce9779952d90c454bf366ee09b2c9c5c98 (patch) | |
| tree | 8018002c36a91bc97fd1db53a89bc4fd05dad335 | |
| parent | d7d1c9cf249951af8150bc1f2849294cac22c3bc (diff) | |
qcacld-3.0: Make OEM response events wakeable
qcacld-2.0 to qcacld-3.0 propagation
While RTT ranging happens, userspace application initiates FTM
request via host to FW. After sending the FTM request, host
might go to sleep mode sometimes so FW will not be able to send
the OEM response event resulting in poor ranging results.
This change registers OEM response event as WOW wakeable so FW
wakes up host whenever it receives OEM response which helps OEM
response to reach userspace application on time for better
ranging results.
Git-commit: 4de9b661e45a0bde4dfefc760edf03d1b8f4dd68
Change-Id: I71b77cfa09c5039b487e9a93490837a084314fb3
CRs-Fixed: 1018887
| -rw-r--r-- | core/wma/inc/wma.h | 1 | ||||
| -rw-r--r-- | core/wma/src/wma_features.c | 22 |
2 files changed, 20 insertions, 3 deletions
diff --git a/core/wma/inc/wma.h b/core/wma/inc/wma.h index 2734541c6cd6..dd321034b759 100644 --- a/core/wma/inc/wma.h +++ b/core/wma/inc/wma.h @@ -1393,6 +1393,7 @@ typedef struct { uint32_t wow_ipv6_mcast_ra_stats; uint32_t wow_ipv6_mcast_ns_stats; uint32_t wow_ipv6_mcast_na_stats; + uint32_t wow_oem_response_wake_up_count; /* OCB request contexts */ struct sir_ocb_config *ocb_config_req; diff --git a/core/wma/src/wma_features.c b/core/wma/src/wma_features.c index a906e0b610c7..89185a0b3ab5 100644 --- a/core/wma/src/wma_features.c +++ b/core/wma/src/wma_features.c @@ -88,7 +88,8 @@ (1 << WOW_HTT_EVENT) |\ (1 << WOW_RA_MATCH_EVENT) |\ (1 << WOW_NLO_DETECTED_EVENT) |\ - (1 << WOW_EXTSCAN_EVENT))\ + (1 << WOW_EXTSCAN_EVENT)) |\ + (1 << WOW_OEM_RESPONSE_EVENT)\ #define WMA_WOW_SAP_WAKE_UP_EVENTS ((1 << WOW_PROBE_REQ_WPS_IE_EVENT) |\ (1 << WOW_PATTERN_MATCH_EVENT) |\ @@ -2345,6 +2346,8 @@ static const u8 *wma_wow_wake_reason_str(A_INT32 wake_reason) return "WOW_REASON_NLO_SCAN_COMPLETE"; case WOW_REASON_NAN_EVENT: return "WOW_REASON_NAN_EVENT"; + case WOW_REASON_OEM_RESPONSE_EVENT: + return "WOW_OEM_RESPONSE_EVENT"; } return "unknown"; } @@ -2357,7 +2360,7 @@ static const u8 *wma_wow_wake_reason_str(A_INT32 wake_reason) */ static void wma_wow_wake_up_stats_display(tp_wma_handle wma) { - WMA_LOGA("uc %d bc %d v4_mc %d v6_mc %d ra %d ns %d na %d pno_match %d pno_complete %d gscan %d low_rssi %d rssi_breach %d", + WMA_LOGA("uc %d bc %d v4_mc %d v6_mc %d ra %d ns %d na %d pno_match %d pno_complete %d gscan %d low_rssi %d rssi_breach %d oem %d", wma->wow_ucast_wake_up_count, wma->wow_bcast_wake_up_count, wma->wow_ipv4_mcast_wake_up_count, @@ -2369,7 +2372,8 @@ static void wma_wow_wake_up_stats_display(tp_wma_handle wma) wma->wow_pno_complete_wake_up_count, wma->wow_gscan_wake_up_count, wma->wow_low_rssi_wake_up_count, - wma->wow_rssi_breach_wake_up_count); + wma->wow_rssi_breach_wake_up_count, + wma->wow_oem_response_wake_up_count); return; } @@ -2467,6 +2471,9 @@ static void wma_wow_wake_up_stats(tp_wma_handle wma, uint8_t *data, case WOW_REASON_RSSI_BREACH_EVENT: wma->wow_rssi_breach_wake_up_count++; break; + case WOW_REASON_OEM_RESPONSE_EVENT: + wma->wow_oem_response_wake_up_count++; + break; default: WMA_LOGE("Unknown wake up reason"); @@ -2852,6 +2859,15 @@ int wma_wow_wakeup_host_event(void *handle, uint8_t *event, WMA_LOGE(FL("wow_packet_buffer is empty")); } break; + case WOW_REASON_OEM_RESPONSE_EVENT: + wma_wow_wake_up_stats(wma, NULL, 0, + WOW_REASON_OEM_RESPONSE_EVENT); + /* + * Actual OEM Response event will follow after this + * WOW Wakeup event + */ + WMA_LOGD(FL("Host woken up for OEM Response event")); + break; default: WMA_LOGE(FL("WOW reason %s(%d)- not handled"), wma_wow_wake_reason_str(wake_info->wake_reason), |
