diff --git a/fw/wmi_tlv_defs.h b/fw/wmi_tlv_defs.h index 94c0a70e400d..b9b56a171076 100644 --- a/fw/wmi_tlv_defs.h +++ b/fw/wmi_tlv_defs.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010-2017 The Linux Foundation. All rights reserved. + * Copyright (c) 2010-2018 The Linux Foundation. All rights reserved. * * Previously licensed under the ISC license by Qualcomm Atheros, Inc. * @@ -888,6 +888,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; /* @@ -1244,6 +1248,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 */ @@ -1441,6 +1448,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 */ @@ -3275,6 +3283,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) \ @@ -4499,6 +4520,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/fw/wmi_unified.h b/fw/wmi_unified.h index df59b57a5cab..43c2db7c6fdd 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -1068,6 +1068,9 @@ typedef enum { WMI_BPF_SET_VDEV_INSTRUCTIONS_CMDID, 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), @@ -1586,7 +1589,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, /* RMC specific event */ /* RMC manual leader selected event */ @@ -19222,6 +19225,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 */ @@ -21125,6 +21166,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/fw/wmi_version.h b/fw/wmi_version.h index 168e46809640..0850e213bda3 100644 --- a/fw/wmi_version.h +++ b/fw/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