diff options
| author | Krishna Kumaar Natarajan <kknatara@qca.qualcomm.com> | 2014-06-05 22:57:39 -0700 |
|---|---|---|
| committer | Akash Patel <c_akashp@qca.qualcomm.com> | 2014-06-13 11:49:48 -0700 |
| commit | f991c3bf7d5cd7d91d9c207f89fa0d9afed4c788 (patch) | |
| tree | aedd780a1defab4278eff16bb9f527291ef1252a | |
| parent | 0d2e8ea2ce0bcce148c26daf4e763a11f5bad989 (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.h | 38 | ||||
| -rw-r--r-- | CORE/SERVICES/COMMON/wmi_unified.h | 85 | ||||
| -rw-r--r-- | CORE/SERVICES/COMMON/wmi_version.h | 2 | ||||
| -rw-r--r-- | CORE/SERVICES/WMI/wmi_unified.c | 4 |
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"; } |
