summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNitesh Shah <niteshs@qti.qualcomm.com>2016-07-04 16:07:54 +0530
committerAnjaneedevi Kapparapu <akappa@codeaurora.org>2016-07-26 14:41:14 +0530
commit5f8abb08fb36994ab85b223fffb39f5b7762c8df (patch)
tree6cc07c542dc20c402f6e69f7a02244ad9bda9414
parentf0ba3d96a0545b6bc4feb50b5a13bd7ee9373d80 (diff)
qcacld-2.0: Diag event for WOW reason code
Add diag event for WOW reason code. The event EVENT_WLAN_POWERSAVE_WOW will be used to inform the WOW reason code. Change-Id: I9273c9e737b97207ce0acee131ab6f3c19cd3e0d CRs-Fixed: 1037383
-rw-r--r--CORE/SERVICES/WMA/wma.c4
-rw-r--r--CORE/VOSS/inc/vos_utils.h6
-rw-r--r--CORE/VOSS/src/vos_diag.c23
3 files changed, 32 insertions, 1 deletions
diff --git a/CORE/SERVICES/WMA/wma.c b/CORE/SERVICES/WMA/wma.c
index 78d2caa9ded9..49b2e682e586 100644
--- a/CORE/SERVICES/WMA/wma.c
+++ b/CORE/SERVICES/WMA/wma.c
@@ -21495,11 +21495,13 @@ static int wma_wow_wakeup_host_event(void *handle, u_int8_t *event,
if ((wake_info->wake_reason != WOW_REASON_UNSPECIFIED) ||
(wake_info->wake_reason == WOW_REASON_UNSPECIFIED &&
- !wmi_get_runtime_pm_inprogress(wma->wmi_handle)))
+ !wmi_get_runtime_pm_inprogress(wma->wmi_handle))) {
WMA_LOGA("WOW wakeup host event received (reason: %s(%d)) for vdev %d",
wma_wow_wake_reason_str(wake_info->wake_reason, wma),
wake_info->wake_reason,
wake_info->vdev_id);
+ vos_wow_wakeup_host_event(wake_info->wake_reason);
+ }
vos_event_set(&wma->wma_resume_event);
diff --git a/CORE/VOSS/inc/vos_utils.h b/CORE/VOSS/inc/vos_utils.h
index 53e9731a8b7c..e4af65b50e6d 100644
--- a/CORE/VOSS/inc/vos_utils.h
+++ b/CORE/VOSS/inc/vos_utils.h
@@ -188,6 +188,7 @@ eHalStatus vos_send_flush_logs_cmd_to_fw(tpAniSirGlobal pMac);
#ifdef FEATURE_WLAN_DIAG_SUPPORT
void vos_tdls_tx_rx_mgmt_event(uint8_t event_id, uint8_t tx_rx,
uint8_t type, uint8_t sub_type, uint8_t *peer_mac);
+void vos_wow_wakeup_host_event(uint8_t wow_wakeup_cause);
#else
static inline
void vos_tdls_tx_rx_mgmt_event(uint8_t event_id, uint8_t tx_rx,
@@ -196,6 +197,11 @@ void vos_tdls_tx_rx_mgmt_event(uint8_t event_id, uint8_t tx_rx,
{
return;
}
+static inline
+void vos_wow_wakeup_host_event(uint8_t wow_wakeup_cause)
+{
+ return;
+}
#endif /* FEATURE_WLAN_DIAG_SUPPORT */
unsigned long vos_rounddown_pow_of_two(unsigned long n);
diff --git a/CORE/VOSS/src/vos_diag.c b/CORE/VOSS/src/vos_diag.c
index ee9f71f15812..e5c26d7f0972 100644
--- a/CORE/VOSS/src/vos_diag.c
+++ b/CORE/VOSS/src/vos_diag.c
@@ -42,6 +42,7 @@
#include "vos_sched.h"
#include "wlan_ptt_sock_svc.h"
#include "wlan_nlink_srv.h"
+#include "wlan_ps_wow_diag.h"
#define PTT_MSG_DIAG_CMDS_TYPE 0x5050
@@ -307,6 +308,28 @@ void vos_event_report_payload(v_U16_t event_Id, v_U16_t length, v_VOID_t *pPaylo
}
+#ifdef FEATURE_WLAN_DIAG_SUPPORT
+/**
+ * vos_wow_wakeup_host_event()- send wow wakeup event
+ * @wow_wakeup_cause: WOW wakeup reason code
+ *
+ * This function sends wow wakeup reason code diag event
+ *
+ * Return: void.
+ */
+void vos_wow_wakeup_host_event(uint8_t wow_wakeup_cause)
+{
+ WLAN_VOS_DIAG_EVENT_DEF(wowRequest,
+ vos_event_wlan_powersave_wow_payload_type);
+ vos_mem_zero(&wowRequest, sizeof(wowRequest));
+
+ wowRequest.event_subtype = WLAN_WOW_WAKEUP;
+ wowRequest.wow_wakeup_cause = wow_wakeup_cause;
+ WLAN_VOS_DIAG_EVENT_REPORT(&wowRequest,
+ EVENT_WLAN_POWERSAVE_WOW);
+}
+#endif
+
/**
* vos_log_low_resource_failure() - This function is used to send low
* resource failure event