summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKrishna Kumaar Natarajan <kknatara@qca.qualcomm.com>2014-06-05 22:57:39 -0700
committerAkash Patel <c_akashp@qca.qualcomm.com>2014-06-13 11:49:48 -0700
commitf991c3bf7d5cd7d91d9c207f89fa0d9afed4c788 (patch)
treeaedd780a1defab4278eff16bb9f527291ef1252a
parent0d2e8ea2ce0bcce148c26daf4e763a11f5bad989 (diff)
qcacld: CL 976852 - update fw common interface files
This commit adds ioac feature related wmi commands. Change-Id: I9a4a3044c6354ff5f6ee5e2f31e5c5b2afc3d548 CRs-Fixed: 676442
-rw-r--r--CORE/SERVICES/COMMON/wmi_tlv_defs.h38
-rw-r--r--CORE/SERVICES/COMMON/wmi_unified.h85
-rw-r--r--CORE/SERVICES/COMMON/wmi_version.h2
-rw-r--r--CORE/SERVICES/WMI/wmi_unified.c4
4 files changed, 127 insertions, 2 deletions
diff --git a/CORE/SERVICES/COMMON/wmi_tlv_defs.h b/CORE/SERVICES/COMMON/wmi_tlv_defs.h
index e0d7073a9185..b511ac82a2a7 100644
--- a/CORE/SERVICES/COMMON/wmi_tlv_defs.h
+++ b/CORE/SERVICES/COMMON/wmi_tlv_defs.h
@@ -438,6 +438,13 @@ typedef enum {
WMITLV_TAG_STRUC_wmi_host_auto_shutdown_event_fixed_param,
WMITLV_TAG_STRUC_wmi_update_whal_mib_stats_event_fixed_param,
WMITLV_TAG_STRUC_wmi_chan_avoid_update_cmd_param,
+ WMITLV_TAG_STRUC_WOW_ACER_IOAC_PKT_PATTERN_T,
+ WMITLV_TAG_STRUC_WOW_ACER_IOAC_TMR_PATTERN_T,
+ WMITLV_TAG_STRUC_WMI_WOW_IOAC_ADD_KEEPALIVE_CMD_fixed_param,
+ WMITLV_TAG_STRUC_WMI_WOW_IOAC_DEL_KEEPALIVE_CMD_fixed_param,
+ WMITLV_TAG_STRUC_WOW_IOAC_KEEPALIVE_T,
+ WMITLV_TAG_STRUC_WMI_WOW_ACER_IOAC_ADD_PATTERN_CMD_fixed_param,
+ WMITLV_TAG_STRUC_WMI_WOW_ACER_IOAC_DEL_PATTERN_CMD_fixed_param,
} WMITLV_TAG_ID;
/*
@@ -597,7 +604,11 @@ typedef enum {
OP(WMI_OBSS_SCAN_DISABLE_CMDID)\
OP(WMI_PDEV_SET_LED_CONFIG_CMDID)\
OP(WMI_HOST_AUTO_SHUTDOWN_CFG_CMDID) \
- OP(WMI_CHAN_AVOID_UPDATE_CMDID)
+ OP(WMI_CHAN_AVOID_UPDATE_CMDID) \
+ OP(WMI_WOW_ACER_IOAC_ADD_KEEPALIVE_CMDID) \
+ OP(WMI_WOW_ACER_IOAC_DEL_KEEPALIVE_CMDID) \
+ OP(WMI_WOW_ACER_IOAC_ADD_WAKE_PATTERN_CMDID) \
+ OP(WMI_WOW_ACER_IOAC_DEL_WAKE_PATTERN_CMDID)
/*
* IMPORTANT: Please add _ALL_ WMI Events Here.
@@ -1278,7 +1289,32 @@ WMITLV_CREATE_PARAM_STRUC(WMI_DFS_PHYERR_FILTER_DIS_CMDID);
WMITLV_CREATE_PARAM_STRUC(WMI_WOW_ADD_WAKE_PATTERN_CMDID);
+/* Acer IOAC add keep alive cmd. */
+#define WMITLV_TABLE_WMI_WOW_ACER_IOAC_ADD_KEEPALIVE_CMDID(id,op,buf,len) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_WMI_WOW_IOAC_ADD_KEEPALIVE_CMD_fixed_param, WMI_WOW_IOAC_ADD_KEEPALIVE_CMD_fixed_param, fixed_param, WMITLV_SIZE_FIX) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, WOW_IOAC_KEEPALIVE_T, keepalive_set, WMITLV_SIZE_VAR)
+WMITLV_CREATE_PARAM_STRUC(WMI_WOW_ACER_IOAC_ADD_KEEPALIVE_CMDID);
+
+/* Acer IOAC del keep alive cmd. */
+#define WMITLV_TABLE_WMI_WOW_ACER_IOAC_DEL_KEEPALIVE_CMDID(id,op,buf,len) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_WMI_WOW_IOAC_DEL_KEEPALIVE_CMD_fixed_param, WMI_WOW_IOAC_DEL_KEEPALIVE_CMD_fixed_param, fixed_param, WMITLV_SIZE_FIX)
+
+WMITLV_CREATE_PARAM_STRUC(WMI_WOW_ACER_IOAC_DEL_KEEPALIVE_CMDID);
+
+/* WOW ACER IOAC Add Wake Pattern Cmd */
+#define WMITLV_TABLE_WMI_WOW_ACER_IOAC_ADD_WAKE_PATTERN_CMDID(id,op,buf,len) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_WMI_WOW_ACER_IOAC_ADD_PATTERN_CMD_fixed_param, WMI_WOW_ACER_IOAC_ADD_PATTERN_CMD_fixed_param, fixed_param, WMITLV_SIZE_FIX) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, WOW_ACER_IOAC_PKT_PATTERN_T, pattern_info_acer_pkt, WMITLV_SIZE_VAR) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, WOW_ACER_IOAC_TMR_PATTERN_T, pattern_info_acer_tmr, WMITLV_SIZE_VAR)
+
+WMITLV_CREATE_PARAM_STRUC(WMI_WOW_ACER_IOAC_ADD_WAKE_PATTERN_CMDID);
+
+/* WOW ACER IOAC Delete Wake Pattern Cmd */
+#define WMITLV_TABLE_WMI_WOW_ACER_IOAC_DEL_WAKE_PATTERN_CMDID(id,op,buf,len) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_WMI_WOW_ACER_IOAC_DEL_PATTERN_CMD_fixed_param, WMI_WOW_ACER_IOAC_DEL_PATTERN_CMD_fixed_param, fixed_param, WMITLV_SIZE_FIX)
+
+WMITLV_CREATE_PARAM_STRUC(WMI_WOW_ACER_IOAC_DEL_WAKE_PATTERN_CMDID);
/* Stop scan Cmd */
#define WMITLV_TABLE_WMI_STOP_SCAN_CMDID(id,op,buf,len) \
diff --git a/CORE/SERVICES/COMMON/wmi_unified.h b/CORE/SERVICES/COMMON/wmi_unified.h
index 41572968c73c..83ee2bcd45c5 100644
--- a/CORE/SERVICES/COMMON/wmi_unified.h
+++ b/CORE/SERVICES/COMMON/wmi_unified.h
@@ -432,6 +432,14 @@ typedef enum {
WMI_WOW_ENABLE_CMDID,
/** host woke up from sleep event to FW. Generated in response to WOW Hardware event */
WMI_WOW_HOSTWAKEUP_FROM_SLEEP_CMDID,
+ /* Acer IOAC add keep alive cmd. */
+ WMI_WOW_ACER_IOAC_ADD_KEEPALIVE_CMDID,
+ /* Acer IOAC del keep alive cmd. */
+ WMI_WOW_ACER_IOAC_DEL_KEEPALIVE_CMDID,
+ /* Acer IOAC add pattern for awake */
+ WMI_WOW_ACER_IOAC_ADD_WAKE_PATTERN_CMDID,
+ /* Acer IOAC deleta a wake pattern */
+ WMI_WOW_ACER_IOAC_DEL_WAKE_PATTERN_CMDID,
/* RTT measurement related cmd */
/** reques to make an RTT measurement */
@@ -4812,8 +4820,17 @@ when comparing wifi header.*/
#define WOW_DEFAULT_BITMASK_SIZE_DWORD 37
#define WOW_MAX_BITMAP_FILTERS 32
#define WOW_DEFAULT_MAGIG_PATTERN_MATCH_CNT 16
+#define WOW_ACER_EXTEND_PATTERN_MATCH_CNT 16
+#define WOW_ACER_SHORT_PATTERN_MATCH_CNT 8
#define WOW_DEFAULT_EVT_BUF_SIZE 148 /* Maximum 148 bytes of the data is copied starting from header incase if the match is found.
The 148 comes from (128 - 14 ) payload size + 8bytes LLC + 26bytes MAC header*/
+#define WOW_DEFAULT_ACER_IOAC_PATTERN_SIZE 6
+#define WOW_DEFAULT_ACER_IOAC_PATTERN_SIZE_DWORD 2
+#define WOW_DEFAULT_ACER_IOAC_RANDOM_SIZE 6
+#define WOW_DEFAULT_ACER_IOAC_RANDOM_SIZE_DWORD 2
+#define WOW_DEFAULT_ACER_IOAC_KEEP_ALIVE_PKT_SIZE 120
+#define WOW_DEFAULT_ACER_IOAC_KEEP_ALIVE_PKT_SIZE_DWORD 30
+
typedef enum pattern_type_e {
WOW_PATTERN_MIN = 0,
WOW_BITMAP_PATTERN = WOW_PATTERN_MIN,
@@ -4823,6 +4840,8 @@ typedef enum pattern_type_e {
WOW_TIMER_PATTERN,
WOW_MAGIC_PATTERN,
WOW_IPV6_RA_PATTERN,
+ WOW_ACER_IOAC_PKT_PATTERN,
+ WOW_ACER_IOAC_TMR_PATTERN,
WOW_PATTERN_MAX
}WOW_PATTERN_TYPE;
@@ -4844,6 +4863,10 @@ typedef enum event_type_e {
WOW_HTT_EVENT,
WOW_RA_MATCH_EVENT,
WOW_HOST_AUTO_SHUTDOWN_EVENT,
+ WOW_ACER_IOAC_MAGIC_EVENT,
+ WOW_ACER_IOAC_SHORT_EVENT,
+ WOW_ACER_IOAC_EXTEND_EVENT,
+ WOW_ACER_IOAC_TIMER_EVENT,
}WOW_WAKE_EVENT_TYPE;
typedef enum wake_reason_e {
@@ -4868,6 +4891,10 @@ typedef enum wake_reason_e {
WOW_REASON_HTT_EVENT,
WOW_REASON_RA_MATCH,
WOW_REASON_HOST_AUTO_SHUTDOWN,
+ WOW_REASON_ACER_IOAC_MAGIC_EVENT,
+ WOW_REASON_ACER_IOAC_SHORT_EVENT,
+ WOW_REASON_ACER_IOAC_EXTEND_EVENT,
+ WOW_REASON_ACER_IOAC_TIMER_EVENT,
WOW_REASON_DEBUG_TEST = 0xFF,
}WOW_WAKE_REASON_TYPE;
@@ -4914,6 +4941,64 @@ typedef struct WOW_MAGIC_PATTERN_CMD
wmi_mac_addr macaddr;
}WOW_MAGIC_PATTERN_CMD;
+typedef enum wow_ioac_pattern_type {
+ WOW_IOAC_MAGIC_PATTERN = 1,
+ WOW_IOAC_SHORT_PATTERN,
+ WOW_IOAC_EXTEND_PATTERN,
+} WOW_IOAC_PATTERN_TYPE;
+
+typedef struct acer_ioac_pkt_pattern_s {
+ A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_WOW_ACER_IOAC_PKT_PATTERN_T */
+ A_UINT32 pattern_type;
+ A_UINT32 pattern[WOW_DEFAULT_ACER_IOAC_PATTERN_SIZE_DWORD];
+ A_UINT32 random[WOW_DEFAULT_ACER_IOAC_RANDOM_SIZE_DWORD];
+ A_UINT32 pattern_len;
+ A_UINT32 random_len;
+} WOW_ACER_IOAC_PKT_PATTERN_T;
+
+typedef struct acer_ioac_tmr_pattern_s {
+ A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_WOW_ACER_IOAC_TMR_PATTERN_T */
+ A_UINT32 wake_in_s;
+ A_UINT32 vdev_id;
+} WOW_ACER_IOAC_TMR_PATTERN_T;
+
+typedef struct {
+ A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_WMI_WOW_IOAC_ADD_KEEPALIVE_CMD_fixed_param */
+ A_UINT32 nID;
+} WMI_WOW_IOAC_ADD_KEEPALIVE_CMD_fixed_param;
+
+typedef struct {
+ A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_WMI_WOW_IOAC_DEL_KEEPALIVE_CMD_fixed_param */
+ A_UINT32 nID;
+} WMI_WOW_IOAC_DEL_KEEPALIVE_CMD_fixed_param;
+
+typedef struct acer_ioac_keepalive_s {
+ A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_WOW_IOAC_KEEPALIVE_T */
+ A_UINT32 keepalive_pkt_buf[WOW_DEFAULT_ACER_IOAC_KEEP_ALIVE_PKT_SIZE_DWORD];
+ A_UINT32 keepalive_pkt_len;
+ A_UINT32 period_in_ms;
+ A_UINT32 vdev_id;
+} WOW_IOAC_KEEPALIVE_T;
+
+typedef struct {
+ A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_WMI_WOW_ACER_IOAC_ADD_PATTERN_CMD_fixed_param */
+ A_UINT32 vdev_id;
+ A_UINT32 pattern_type;
+/*
+ * Following this struct are these TLVs. Note that they are all array of structures
+ * but can have at most one element. Which TLV is empty or has one element depends
+ * on the field pattern_type. This is to emulate an union.
+ * WOW_ACER_IOAC_PKT_PATTERN_T pattern_info_acer_pkt[];
+ * WOW_ACER_IOAC_TMR_PATTERN_T pattern_info_acer_tmr[];
+ */
+} WMI_WOW_ACER_IOAC_ADD_PATTERN_CMD_fixed_param;
+
+typedef struct {
+ A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_WMI_WOW_ACER_IOAC_DEL_PATTERN_CMD_fixed_param */
+ A_UINT32 vdev_id;
+ A_UINT32 pattern_type;
+} WMI_WOW_ACER_IOAC_DEL_PATTERN_CMD_fixed_param;
+
typedef struct {
A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_WMI_WOW_ADD_PATTERN_CMD_fixed_param */
A_UINT32 vdev_id;
diff --git a/CORE/SERVICES/COMMON/wmi_version.h b/CORE/SERVICES/COMMON/wmi_version.h
index 9b2b37de7b9f..4e0f20f6b2b7 100644
--- a/CORE/SERVICES/COMMON/wmi_version.h
+++ b/CORE/SERVICES/COMMON/wmi_version.h
@@ -36,7 +36,7 @@
#define __WMI_VER_MINOR_ 0
/** WMI revision number has to be incremented when there is a
* change that may or may not break compatibility. */
-#define __WMI_REVISION_ 49
+#define __WMI_REVISION_ 50
/** The Version Namespace should not be normally changed. Only
* host and firmware of the same WMI namespace will work
diff --git a/CORE/SERVICES/WMI/wmi_unified.c b/CORE/SERVICES/WMI/wmi_unified.c
index 1481c3b9525c..20101b600d01 100644
--- a/CORE/SERVICES/WMI/wmi_unified.c
+++ b/CORE/SERVICES/WMI/wmi_unified.c
@@ -530,6 +530,10 @@ static u_int8_t* get_wmi_cmd_string(WMI_CMD_ID wmi_command)
CASE_RETURN_STRING(WMI_PDEV_SET_LED_CONFIG_CMDID);
CASE_RETURN_STRING(WMI_HOST_AUTO_SHUTDOWN_CFG_CMDID);
CASE_RETURN_STRING(WMI_CHAN_AVOID_UPDATE_CMDID);
+ CASE_RETURN_STRING(WMI_WOW_ACER_IOAC_ADD_KEEPALIVE_CMDID);
+ CASE_RETURN_STRING(WMI_WOW_ACER_IOAC_DEL_KEEPALIVE_CMDID);
+ CASE_RETURN_STRING(WMI_WOW_ACER_IOAC_ADD_WAKE_PATTERN_CMDID);
+ CASE_RETURN_STRING(WMI_WOW_ACER_IOAC_DEL_WAKE_PATTERN_CMDID);
}
return "Invalid WMI cmd";
}