diff --git a/fw/wmi_tlv_defs.h b/fw/wmi_tlv_defs.h index 2d36b4b43067..af1087cb216f 100644 --- a/fw/wmi_tlv_defs.h +++ b/fw/wmi_tlv_defs.h @@ -1484,6 +1484,7 @@ typedef enum { WMITLV_TAG_STRUC_wmi_hw_blacklist_chan_fixed_param, WMITLV_TAG_STRUC_wmi_hw_blacklist_chan_data, WMITLV_TAG_STRUC_wmi_pdev_suspend_event_fixed_param, + WMITLV_TAG_STRUC_wmi_bpf_set_apf_mode_cmd_fixed_param } WMITLV_TAG_ID; /* * IMPORTANT: Please add _ALL_ WMI Commands Here. @@ -2048,6 +2049,7 @@ typedef enum { OP(WMI_NDP_SET_LATENCY_TPUT_CMDID) \ OP(WMI_MLO_LINK_TTLM_COMPLETE_CMDID) \ OP(WMI_BPF_SET_SUPPORTED_OFFLOAD_BITMAP_CMDID) \ + OP(WMI_BPF_SET_APF_MODE_CMDID) \ /* add new CMD_LIST elements above this line */ @@ -5772,6 +5774,10 @@ WMITLV_CREATE_PARAM_STRUC(WMI_SAWF_EZMESH_HOP_COUNT_CMDID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_bpf_set_supported_offload_bitmap_cmd_fixed_param, wmi_bpf_set_supported_offload_bitmap_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) WMITLV_CREATE_PARAM_STRUC(WMI_BPF_SET_SUPPORTED_OFFLOAD_BITMAP_CMDID); +#define WMITLV_TABLE_WMI_BPF_SET_APF_MODE_CMDID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_bpf_set_apf_mode_cmd_fixed_param, wmi_bpf_set_apf_mode_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) +WMITLV_CREATE_PARAM_STRUC(WMI_BPF_SET_APF_MODE_CMDID); + /************************** TLV definitions of WMI events *******************************/ diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index 8342e89591c8..14fd26ac16c2 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -1580,6 +1580,7 @@ typedef enum { WMI_BPF_SET_VDEV_WORK_MEMORY_CMDID, WMI_BPF_GET_VDEV_WORK_MEMORY_CMDID, WMI_BPF_SET_SUPPORTED_OFFLOAD_BITMAP_CMDID, + WMI_BPF_SET_APF_MODE_CMDID, /** WMI commands related to monitor mode. */ WMI_MNT_FILTER_CMDID = WMI_CMD_GRP_START_ID(WMI_GRP_MONITOR), @@ -34278,6 +34279,40 @@ typedef struct wmi_bpf_set_supported_offload_bitmap_cmd_s { A_UINT32 ofld_bitmap; } wmi_bpf_set_supported_offload_bitmap_cmd_fixed_param; +/* APF modes: */ +typedef enum { + /* Default value: 0 */ + wmi_apf_mode_default = 0, + + /* Mode 1: value 1: APF to operate only during system suspend. */ + wmi_apf_mode_system_suspend = 1, + + /* Mode 2: value 2: + * Downgrade the APF capability of the firmware to a lower version + * (from V6 to V4). + */ + wmi_apf_mode_capability_v4 = 2, + + /* Mode combination: value 3: + * Downgrade to APFv4 and enable only in system suspend. + */ + wmi_apf_mode_system_suspend_and_capability_v4 = 3, + + /* Mode 3: value 4: Turn off APF completely. */ + wmi_apf_mode_off = 4, +} wmi_apf_modes; + +typedef struct wmi_bpf_set_apf_mode_cmd_s { + A_UINT32 tlv_header; /* tag = WMITLV_TAG_STRUC_wmi_bpf_set_apf_mode_cmd_fixed_param */ + A_UINT32 vdev_id; + /* apf_mode: + * Host indicates the APF mode (or combination of modes). + * Refer to the wmi_apf_modes enum for the interpretation of the + * apf_mode value. + */ + A_UINT32 apf_mode; /* holds a wmi_apf_modes value */ +} wmi_bpf_set_apf_mode_cmd_fixed_param; + #define AES_BLOCK_LEN 16 /* in bytes */ #define FIPS_KEY_LENGTH_128 16 /* in bytes */ @@ -39169,6 +39204,7 @@ static INLINE A_UINT8 *wmi_id_to_name(A_UINT32 wmi_command) WMI_RETURN_STRING(WMI_NDP_SET_LATENCY_TPUT_CMDID); WMI_RETURN_STRING(WMI_MLO_LINK_TTLM_COMPLETE_CMDID); WMI_RETURN_STRING(WMI_BPF_SET_SUPPORTED_OFFLOAD_BITMAP_CMDID); + WMI_RETURN_STRING(WMI_BPF_SET_APF_MODE_CMDID); } return (A_UINT8 *) "Invalid WMI cmd"; diff --git a/fw/wmi_version.h b/fw/wmi_version.h index e1c2a794f8ef..9f084167009b 100644 --- a/fw/wmi_version.h +++ b/fw/wmi_version.h @@ -37,7 +37,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_ 1618 +#define __WMI_REVISION_ 1619 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work