From 2f7a44de132c11cb6cb6e834899399dc82d11a1a Mon Sep 17 00:00:00 2001 From: Krishna Kumaar Natarajan Date: Fri, 8 Jul 2016 11:24:06 -0700 Subject: [PATCH] qcacld-3.0: CL 1527207 - update fw common interface files Propagation from qcacld-2.0 to qcacld-3.0 Add mcast filter set/delete command that can take multiple filters in a list. Fix HTT typos to make MACROS consistent with the field name. Change-Id: I97ca72f102faecfc3d20409b0d4819a09968417c CRs-fixed: 865207 --- target/inc/wmi_services.h | 3 +++ target/inc/wmi_tlv_defs.h | 8 ++++++++ target/inc/wmi_unified.h | 32 ++++++++++++++++++++++++++++++-- target/inc/wmi_version.h | 2 +- 4 files changed, 42 insertions(+), 3 deletions(-) diff --git a/target/inc/wmi_services.h b/target/inc/wmi_services.h index 3e31c74b96..5b54bb9ff3 100644 --- a/target/inc/wmi_services.h +++ b/target/inc/wmi_services.h @@ -181,6 +181,9 @@ typedef enum { * the host from suspend */ WMI_SERVICE_MARK_FIRST_WAKEUP_PACKET, + /* FW supports command that can add/delete multiple mcast filters */ + WMI_SERVICE_MULTIPLE_MCAST_FILTER_SET, + WMI_MAX_SERVICE = 128 /* max service */ } WMI_SERVICE; diff --git a/target/inc/wmi_tlv_defs.h b/target/inc/wmi_tlv_defs.h index c6030a1498..0323b55ef7 100644 --- a/target/inc/wmi_tlv_defs.h +++ b/target/inc/wmi_tlv_defs.h @@ -716,6 +716,7 @@ typedef enum { WMITLV_TAG_STRUC_wmi_p2p_lo_stopped_event_fixed_param, WMITLV_TAG_STRUC_wmi_peer_reorder_queue_setup_cmd_fixed_param, WMITLV_TAG_STRUC_wmi_peer_reorder_queue_remove_cmd_fixed_param, + WMITLV_TAG_STRUC_wmi_set_multiple_mcast_filter_cmd_fixed_param, } WMITLV_TAG_ID; /* @@ -1007,6 +1008,7 @@ typedef enum { OP(WMI_P2P_LISTEN_OFFLOAD_STOP_CMDID) \ OP(WMI_PEER_REORDER_QUEUE_SETUP_CMDID) \ OP(WMI_PEER_REORDER_QUEUE_REMOVE_CMDID) \ + OP(WMI_SET_MULTIPLE_MCAST_FILTER_CMDID) \ /* add new CMD_LIST elements above this line */ /* @@ -1801,6 +1803,12 @@ WMITLV_CREATE_PARAM_STRUC(WMI_FORCE_FW_HANG_CMDID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_WMI_SET_MCASTBCAST_FILTER_CMD_fixed_param, WMI_SET_MCASTBCAST_FILTER_CMD_fixed_param, fixed_param, WMITLV_SIZE_FIX) WMITLV_CREATE_PARAM_STRUC(WMI_SET_MCASTBCAST_FILTER_CMDID); +/* Enhanced Mcast add/delete filter list cmd */ +#define WMITLV_TABLE_WMI_SET_MULTIPLE_MCAST_FILTER_CMDID(id, op, buf, len) \ + WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_STRUC_wmi_set_multiple_mcast_filter_cmd_fixed_param, WMI_SET_MULTIPLE_MCAST_FILTER_CMD_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ + WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_ARRAY_FIXED_STRUC, wmi_mac_addr, mcast_list, WMITLV_SIZE_VAR) +WMITLV_CREATE_PARAM_STRUC(WMI_SET_MULTIPLE_MCAST_FILTER_CMDID); + /* Set dbglog time stamp sync cmd */ #define WMITLV_TABLE_WMI_DBGLOG_TIME_STAMP_SYNC_CMDID(id, op, buf, len) \ WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_STRUC_wmi_dbglog_time_stamp_sync_cmd_fixed_param, WMI_DBGLOG_TIME_STAMP_SYNC_CMD_fixed_param, fixed_param, WMITLV_SIZE_FIX) diff --git a/target/inc/wmi_unified.h b/target/inc/wmi_unified.h index 246b8b6a40..3951c67f14 100644 --- a/target/inc/wmi_unified.h +++ b/target/inc/wmi_unified.h @@ -796,6 +796,8 @@ typedef enum { WMI_VDEV_WISA_CMDID, /** set debug log time stamp sync up with host */ WMI_DBGLOG_TIME_STAMP_SYNC_CMDID, + /** Command for host to set/delete multiple mcast filters */ + WMI_SET_MULTIPLE_MCAST_FILTER_CMDID, /* GPIO Configuration */ WMI_GPIO_CONFIG_CMDID = WMI_CMD_GRP_START_ID(WMI_GRP_GPIO), @@ -9699,8 +9701,12 @@ typedef struct { A_UINT32 type; /*0:unused 1: ASSERT, 2: not respond detect command,3: simulate ep-full(),4:... */ A_UINT32 delay_time_ms; /*0xffffffff means the simulate will delay for random time (0 ~0xffffffff ms) */ } WMI_FORCE_FW_HANG_CMD_fixed_param; -#define WMI_MCAST_FILTER_SET 1 -#define WMI_MCAST_FILTER_DELETE 2 + +typedef enum { + WMI_MCAST_FILTER_SET = 1, + WMI_MCAST_FILTER_DELETE +} WMI_SET_SINGLE_MCAST_FILTER_OP; + typedef struct { A_UINT32 tlv_header; A_UINT32 vdev_id; @@ -9709,6 +9715,28 @@ typedef struct { wmi_mac_addr mcastbdcastaddr; } WMI_SET_MCASTBCAST_FILTER_CMD_fixed_param; +typedef enum { + WMI_MULTIPLE_MCAST_FILTER_CLEAR = 1, /* clear all previous mc list */ + /* clear all previous mc list, and set new list */ + WMI_MULTIPLE_MCAST_FILTER_SET, + WMI_MULTIPLE_MCAST_FILTER_DELETE, /* delete one/multiple mc list */ + WMI_MULTIPLE_MCAST_FILTER_ADD /* add one/multiple mc list */ +} WMI_MULTIPLE_MCAST_FILTER_OP; + +typedef struct { + A_UINT32 tlv_header; + A_UINT32 vdev_id; + A_UINT32 operation; /* refer WMI_MULTIPLE_MCAST_FILTER_OP */ + /* number of elements in the subsequent mcast addr list */ + A_UINT32 num_mcastaddrs; + /** + * TLV (tag length value) parameters follow the + * structure. The TLV's are: + * wmi_mac_addr mcastaddr_list[num_mcastaddrs]; + */ +} WMI_SET_MULTIPLE_MCAST_FILTER_CMD_fixed_param; + + /* WMI_DBGLOG_TIME_STAMP_SYNC_CMDID */ typedef enum { WMI_TIME_STAMP_SYNC_MODE_MS, /* millisecond units */ diff --git a/target/inc/wmi_version.h b/target/inc/wmi_version.h index 82188ccece..c54e88e7ab 100644 --- a/target/inc/wmi_version.h +++ b/target/inc/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_ 261 +#define __WMI_REVISION_ 262 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work