diff options
| -rw-r--r-- | CORE/SERVICES/COMMON/wmi_tlv_defs.h | 27 | ||||
| -rw-r--r-- | CORE/SERVICES/COMMON/wmi_unified.h | 47 | ||||
| -rw-r--r-- | CORE/SERVICES/COMMON/wmi_version.h | 2 | ||||
| -rw-r--r-- | CORE/SERVICES/WMI/wmi_unified.c | 3 |
4 files changed, 77 insertions, 2 deletions
diff --git a/CORE/SERVICES/COMMON/wmi_tlv_defs.h b/CORE/SERVICES/COMMON/wmi_tlv_defs.h index 4727341af93e..d288c6035269 100644 --- a/CORE/SERVICES/COMMON/wmi_tlv_defs.h +++ b/CORE/SERVICES/COMMON/wmi_tlv_defs.h @@ -881,6 +881,10 @@ typedef enum { WMITLV_TAG_STRUC_wmi_neighbor_report_offload_tlv_param, WMITLV_TAG_STRUC_wmi_vdev_set_connectivity_check_stats, WMITLV_TAG_STRUC_wmi_vdev_get_connectivity_check_stats, + WMITLV_TAG_STRUC_wmi_bpf_set_vdev_enable_cmd_fixed_param, + WMITLV_TAG_STRUC_wmi_bpf_set_vdev_work_memory_cmd_fixed_param, + WMITLV_TAG_STRUC_wmi_bpf_get_vdev_work_memory_cmd_fixed_param, + WMITLV_TAG_STRUC_wmi_bpf_get_vdev_work_memory_resp_evt_fixed_param, } WMITLV_TAG_ID; /* @@ -1236,6 +1240,9 @@ typedef enum { OP(WMI_SAR_GET_LIMITS_CMDID) \ OP(WMI_11K_OFFLOAD_REPORT_CMDID) \ OP(WMI_11K_INVOKE_NEIGHBOR_REPORT_CMDID) \ + OP(WMI_BPF_SET_VDEV_ENABLE_CMDID) \ + OP(WMI_BPF_SET_VDEV_WORK_MEMORY_CMDID) \ + OP(WMI_BPF_GET_VDEV_WORK_MEMORY_CMDID) \ /* add new CMD_LIST elements above this line */ /* @@ -1430,6 +1437,7 @@ typedef enum { OP(WMI_PDEV_DMA_RING_BUF_RELEASE_EVENTID) \ OP(WMI_SAR_GET_LIMITS_EVENTID) \ OP(WMI_SAR2_RESULT_EVENTID) \ + OP(WMI_BPF_GET_VDEV_WORK_MEMORY_RESP_EVENTID) \ /* add new EVT_LIST elements above this line */ @@ -3259,6 +3267,19 @@ WMITLV_CREATE_PARAM_STRUC(WMI_BPF_DEL_VDEV_INSTRUCTIONS_CMDID); WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_STRUC_wmi_bpf_set_vdev_active_mode_cmd_fixed_param, wmi_bpf_set_vdev_active_mode_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) WMITLV_CREATE_PARAM_STRUC(WMI_BPF_SET_VDEV_ACTIVE_MODE_CMDID); +#define WMITLV_TABLE_WMI_BPF_SET_VDEV_ENABLE_CMDID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_bpf_set_vdev_enable_cmd_fixed_param, wmi_bpf_set_vdev_enable_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) +WMITLV_CREATE_PARAM_STRUC(WMI_BPF_SET_VDEV_ENABLE_CMDID); + +#define WMITLV_TABLE_WMI_BPF_SET_VDEV_WORK_MEMORY_CMDID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_bpf_set_vdev_work_memory_cmd_fixed_param, wmi_bpf_set_vdev_work_memory_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_BYTE, A_UINT8, buf_inst, WMITLV_SIZE_VAR) +WMITLV_CREATE_PARAM_STRUC(WMI_BPF_SET_VDEV_WORK_MEMORY_CMDID); + +#define WMITLV_TABLE_WMI_BPF_GET_VDEV_WORK_MEMORY_CMDID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_bpf_get_vdev_work_memory_cmd_fixed_param, wmi_bpf_get_vdev_work_memory_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) +WMITLV_CREATE_PARAM_STRUC(WMI_BPF_GET_VDEV_WORK_MEMORY_CMDID); + /* Enable/Disable Smart Antenna */ #define WMITLV_TABLE_WMI_PDEV_SMART_ANT_ENABLE_CMDID(id,op,buf,len) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_pdev_smart_ant_enable_cmd_fixed_param, wmi_pdev_smart_ant_enable_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ @@ -4467,6 +4488,12 @@ WMITLV_CREATE_PARAM_STRUC(WMI_BPF_CAPABILIY_INFO_EVENTID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_bpf_vdev_stats_info_evt_fixed_param, wmi_bpf_vdev_stats_info_evt_fixed_param, fixed_param, WMITLV_SIZE_FIX) WMITLV_CREATE_PARAM_STRUC(WMI_BPF_VDEV_STATS_INFO_EVENTID); +/* bpf offload vdev get work memory event */ +#define WMITLV_TABLE_WMI_BPF_GET_VDEV_WORK_MEMORY_RESP_EVENTID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_bpf_get_vdev_work_memory_resp_evt_fixed_param, wmi_bpf_get_vdev_work_memory_resp_evt_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_BYTE, A_UINT8, data, WMITLV_SIZE_VAR) +WMITLV_CREATE_PARAM_STRUC(WMI_BPF_GET_VDEV_WORK_MEMORY_RESP_EVENTID); + /* Indicate new country code to host from 11d scan */ #define WMITLV_TABLE_WMI_11D_NEW_COUNTRY_EVENTID(id, op, buf, len) \ WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_STRUC_wmi_11d_new_country_event_fixed_param, wmi_11d_new_country_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) diff --git a/CORE/SERVICES/COMMON/wmi_unified.h b/CORE/SERVICES/COMMON/wmi_unified.h index f1cca4579649..0bf947f980b0 100644 --- a/CORE/SERVICES/COMMON/wmi_unified.h +++ b/CORE/SERVICES/COMMON/wmi_unified.h @@ -1069,6 +1069,10 @@ typedef enum { WMI_BPF_DEL_VDEV_INSTRUCTIONS_CMDID, WMI_BPF_SET_VDEV_ACTIVE_MODE_CMDID, + WMI_BPF_SET_VDEV_ENABLE_CMDID, + WMI_BPF_SET_VDEV_WORK_MEMORY_CMDID, + WMI_BPF_GET_VDEV_WORK_MEMORY_CMDID, + /** WMI commands related to monitor mode. */ WMI_MNT_FILTER_CMDID = WMI_CMD_GRP_START_ID(WMI_GRP_MONITOR), @@ -1588,6 +1592,7 @@ typedef enum { /** pkt filter (BPF) offload relevant events */ WMI_BPF_CAPABILIY_INFO_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_BPF_OFFLOAD), WMI_BPF_VDEV_STATS_INFO_EVENTID, + WMI_BPF_GET_VDEV_WORK_MEMORY_RESP_EVENTID, /** WMI events related to regulatory offload */ WMI_REG_CHAN_LIST_CC_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_REGULATORY), @@ -19365,6 +19370,44 @@ typedef struct wmi_bpf_set_vdev_active_mode_cmd_s { A_UINT32 uc_mode; /* refer to FW_ACTIVE_BPF_MODE */ } wmi_bpf_set_vdev_active_mode_cmd_fixed_param; +typedef struct wmi_bpf_set_vdev_enable_cmd_s { + A_UINT32 tlv_header; + A_UINT32 vdev_id; + A_UINT32 is_enabled; /* fw assume host default enables */ +} wmi_bpf_set_vdev_enable_cmd_fixed_param; + +typedef struct wmi_bpf_set_vdev_work_memory_cmd_s { + A_UINT32 tlv_header; + A_UINT32 vdev_id; + A_UINT32 bpf_version; /* bpf instruction version */ + A_UINT32 program_len; /* the program length may be changed by this command */ + A_UINT32 addr_offset; /* start writing addr in the working memory */ + A_UINT32 length; /* the writing size of this command (byte units) */ +/* + * The TLV follows: + * A_UINT8 buf_inst[]; <-- Variable length buffer with the data to write + */ +} wmi_bpf_set_vdev_work_memory_cmd_fixed_param; + +typedef struct wmi_bpf_get_vdev_work_memory_cmd_s { + A_UINT32 tlv_header; + A_UINT32 vdev_id; + A_UINT32 addr_offset; /* start reading addr in the working memory */ + A_UINT32 length; /* reading size from addr (byte units) */ +} wmi_bpf_get_vdev_work_memory_cmd_fixed_param; + +typedef struct wmi_bpf_get_vdev_work_memory_resp_evt_s { + A_UINT32 tlv_header; + A_UINT32 vdev_id; + A_UINT32 offset; /* read memory offset from start_addr */ + A_UINT32 length; /* read memory length of this command */ + A_UINT32 fragment; /* 1 means more data will come, 0 means last fragment */ +/* + * The TLV follows: + * A_UINT8 buf_inst[]; <-- Variable length buffer containing the read data + */ +} wmi_bpf_get_vdev_work_memory_resp_evt_fixed_param; + #define AES_BLOCK_LEN 16 /* in bytes */ #define FIPS_KEY_LENGTH_128 16 /* in bytes */ #define FIPS_KEY_LENGTH_256 32 /* in bytes */ @@ -21263,7 +21306,9 @@ static INLINE A_UINT8 *wmi_id_to_name(A_UINT32 wmi_command) WMI_RETURN_STRING(WMI_PDEV_DMA_RING_CFG_REQ_CMDID); WMI_RETURN_STRING(WMI_11K_OFFLOAD_REPORT_CMDID); WMI_RETURN_STRING(WMI_11K_INVOKE_NEIGHBOR_REPORT_CMDID); - + WMI_RETURN_STRING(WMI_BPF_SET_VDEV_ENABLE_CMDID); + WMI_RETURN_STRING(WMI_BPF_SET_VDEV_WORK_MEMORY_CMDID); + WMI_RETURN_STRING(WMI_BPF_GET_VDEV_WORK_MEMORY_CMDID); } return "Invalid WMI cmd"; diff --git a/CORE/SERVICES/COMMON/wmi_version.h b/CORE/SERVICES/COMMON/wmi_version.h index afbcb79a5a1d..b8b88788add5 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_ 490 +#define __WMI_REVISION_ 491 /** 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 79286b17f97d..074aa7e37b2b 100644 --- a/CORE/SERVICES/WMI/wmi_unified.c +++ b/CORE/SERVICES/WMI/wmi_unified.c @@ -773,6 +773,9 @@ static u_int8_t* get_wmi_cmd_string(WMI_CMD_ID wmi_command) CASE_RETURN_STRING(WMI_SAR_GET_LIMITS_CMDID); CASE_RETURN_STRING(WMI_11K_OFFLOAD_REPORT_CMDID); CASE_RETURN_STRING(WMI_11K_INVOKE_NEIGHBOR_REPORT_CMDID); + CASE_RETURN_STRING(WMI_BPF_SET_VDEV_ENABLE_CMDID); + CASE_RETURN_STRING(WMI_BPF_SET_VDEV_WORK_MEMORY_CMDID); + CASE_RETURN_STRING(WMI_BPF_GET_VDEV_WORK_MEMORY_CMDID); } return "Invalid WMI cmd"; } |
