fw-api: CL 29280684 - update fw common interface files

Change-Id: I96b1742bdf575daa0f5d7e8189de942217cad3b5
CRs-Fixed: 3830439
This commit is contained in:
spuligil 2025-05-23 06:01:35 -07:00
commit 9f650725ec
4 changed files with 273 additions and 8 deletions

View file

@ -701,7 +701,7 @@ typedef enum {
WMI_SERVICE_APF_DATA_OFFLOAD_SUPPORT_ENABLED = 442, /* Indicates FW support for APFv6 handling offloads and disable QC data offloads */
WMI_SERVICE_PER_VDEV_TWT_RESP_DISABLE_SUPPORT = 443, /* FW supports vdev level TWT responder disable */
WMI_SERVICE_VENDOR_OUI_ACTION_V2 = 444, /* FW supports vendor OUI action version 2 */
WMI_SERVICE_HW_BLACKLIST_CHAN_SUPPORT = 445, /* Indicates FW support for computing and sending the HW channel blacklist for the current country and applicable power mode */
WMI_MAX_EXT2_SERVICE

View file

@ -1481,6 +1481,8 @@ typedef enum {
WMITLV_TAG_STRUC_wmi_mlo_link_ttlm_complete_fixed_param,
WMITLV_TAG_STRUC_wmi_ctrl_path_sta_dar_stats_struct,
WMITLV_TAG_STRUC_wmi_bpf_set_supported_offload_bitmap_cmd_fixed_param,
WMITLV_TAG_STRUC_wmi_hw_blacklist_chan_fixed_param,
WMITLV_TAG_STRUC_wmi_hw_blacklist_chan_data,
} WMITLV_TAG_ID;
/*
* IMPORTANT: Please add _ALL_ WMI Commands Here.
@ -2380,6 +2382,7 @@ typedef enum {
OP(WMI_PDEV_WIFI_RADAR_CAPABILITIES_EVENTID) \
OP(WMI_VDEV_VBSS_CONFIG_EVENTID) \
OP(WMI_OPT_DP_DIAG_EVENTID) \
OP(WMI_HW_BLACKLIST_CHAN_EVENTID) \
/* add new EVT_LIST elements above this line */
@ -6977,7 +6980,9 @@ WMITLV_CREATE_PARAM_STRUC(WMI_REG_CHAN_LIST_CC_EVENTID);
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_regulatory_chan_priority_struct, reg_chan_priority, WMITLV_SIZE_VAR) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_regulatory_fcc_rule_struct, reg_fcc_rule, WMITLV_SIZE_VAR) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_reg_chan_list_cc_ext_additional_params, reg_more_data, WMITLV_SIZE_VAR) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_regulatory_rule_meta_data, reg_meta_data, WMITLV_SIZE_VAR)
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_regulatory_rule_meta_data, reg_meta_data, WMITLV_SIZE_VAR) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_hw_blacklist_chan_fixed_param, hw_blacklist_chan_fixed_param, WMITLV_SIZE_VAR) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_hw_blacklist_chan_data, hw_blacklist_chan_data, WMITLV_SIZE_VAR)
WMITLV_CREATE_PARAM_STRUC(WMI_REG_CHAN_LIST_CC_EXT_EVENTID);
/* WMI AFC info event */
@ -6987,9 +6992,17 @@ WMITLV_CREATE_PARAM_STRUC(WMI_REG_CHAN_LIST_CC_EXT_EVENTID);
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_afc_power_event_param, wmi_afc_power_event_param, afc_power_event_param, WMITLV_SIZE_FIX)\
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_6g_afc_frequency_info, freq_info_array, WMITLV_SIZE_VAR)\
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_6g_afc_channel_info, channel_info_array, WMITLV_SIZE_VAR)\
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_afc_chan_eirp_power_info, chan_eirp_power_info_array, WMITLV_SIZE_VAR)
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_afc_chan_eirp_power_info, chan_eirp_power_info_array, WMITLV_SIZE_VAR) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_hw_blacklist_chan_fixed_param, hw_blacklist_chan_fixed_param, WMITLV_SIZE_VAR) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_hw_blacklist_chan_data, hw_blacklist_chan_data, WMITLV_SIZE_VAR)
WMITLV_CREATE_PARAM_STRUC(WMI_AFC_EVENTID);
/* HW blacklist channels for the current country code */
#define WMITLV_TABLE_WMI_HW_BLACKLIST_CHAN_EVENTID(id,op,buf,len) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_hw_blacklist_chan_fixed_param, wmi_hw_blacklist_chan_fixed_param, hw_blacklist_chan_fixed_param, WMITLV_SIZE_FIX) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_hw_blacklist_chan_data, hw_blacklist_chan_data, WMITLV_SIZE_VAR)
WMITLV_CREATE_PARAM_STRUC(WMI_HW_BLACKLIST_CHAN_EVENTID);
/* Indicate LPI AP detect or not to Host */
#define WMITLV_TABLE_WMI_C2C_DETECT_EVENTID(id,op,buf,len) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_c2c_detect_event_fixed_param, wmi_c2c_detect_event_fixed_param, fixed_param, WMITLV_SIZE_FIX)

View file

@ -2533,6 +2533,8 @@ typedef enum {
WMI_AFC_EVENTID,
WMI_REG_CHAN_LIST_CC_EXT2_EVENTID, /* DEPRECATED */
WMI_C2C_DETECT_EVENTID,
/* WMI event to send the HW channel blacklist during the CTL blob update */
WMI_HW_BLACKLIST_CHAN_EVENTID,
/** Events for TWT(Target Wake Time) of STA and AP */
WMI_TWT_ENABLE_COMPLETE_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_TWT),
@ -5006,8 +5008,16 @@ typedef struct {
* enabled by both host configuration and FW capability.
* Refer to the below definitions of
* WMI_RSRC_CFG_HOST_SERVICE_FLAG_ACTION_OUI_V2_GET and SET.
* Bit 21
* This bit will be set by host to inform FW that HW blacklist
* channel is supported in host. Based on this flag, FW will do
* CTL generation for all the IEEE channels allowed in the VLP
* and SP power for the current county and update host in the
* below WMI Events:
* WMI_REG_CHAN_LIST_CC_EXT_EVENTID, WMI_AFC_EVENTID, and
* WMI_HW_BLACKLIST_CHAN_EVENTID
*
* Bits 31:21 - Reserved
* Bits 31:22 - Reserved
*/
A_UINT32 host_service_flags;
@ -5562,6 +5572,12 @@ typedef struct {
#define WMI_RSRC_CFG_HOST_SERVICE_FLAG_ACTION_OUI_V2_SET(host_service_flags, val) \
WMI_SET_BITS(host_service_flags, 20, 1, val)
/* This bit is used to inform FW to send HW Blacklist channels to host */
#define WMI_RSRC_CFG_HOST_SERVICE_FLAG_HOST_SUPPORT_HW_BLACKLIST_CHANNEL_SUPPORT_GET(host_service_flags) \
WMI_GET_BITS(host_service_flags, 21, 1)
#define WMI_RSRC_CFG_HOST_SERVICE_FLAG_HOST_SUPPORT_HW_BLACKLIST_CHANNEL_SUPPORT_SET(host_service_flags, val) \
WMI_SET_BITS(host_service_flags, 21, 1, val)
#define WMI_RSRC_CFG_CARRIER_CFG_CHARTER_ENABLE_GET(carrier_config) \
WMI_GET_BITS(carrier_config, 0, 1)
@ -39568,9 +39584,10 @@ typedef struct {
A_UINT32 num_6g_reg_rules_client_lpi[WMI_REG_CLIENT_MAX];
A_UINT32 num_6g_reg_rules_client_vlp[WMI_REG_CLIENT_MAX];
/*
* NOTE: no further fields can be added into this struct, due to
* message buffer size limitations in certain targets for the
* WMI_REG_CHAN_LIST_CC_EXT_EVENT message.
* NOTE: We cannot add new parameters to the fixed param TLV though
* we have enough buffer size (WMI_SVC_MSG_SIZE) for the given WMI event.
* This is due to a crash seen in the host parsing logic of this fixed param.
* New params can be added in the same message but in other TLVs.
*/
/*
* This fixed_param TLV is followed by the following TLVs:
@ -39586,6 +39603,10 @@ typedef struct {
* - wmi_regulatory_rule_meta_data reg_meta_data[]
* struct used to fill meta information specific to new reg rules
* getting added(i.e. from C2C onwards).
* - wmi_hw_blacklist_chan_fixed_param hw_blacklist_chan_fixed_param[0 or 1]
* optional TLV for reporting HW channel blacklist meta-data.
* - wmi_hw_blacklist_chan_data, hw_blacklist_chan_data[]
* optional TLV for reporting HW channel blacklist information.
*/
} wmi_reg_chan_list_cc_event_ext_fixed_param;
@ -39738,6 +39759,10 @@ typedef struct {
* This TLV array contains zero or more TLVs of channel CFI and
* EIRP power values for each of the total number of channels
* per global operating class.
* 6. wmi_hw_blacklist_chan_fixed_param hw_blacklist_chan_fixed_param[]
* optional meta-data for HW channel blacklist
* 7. wmi_hw_blacklist_chan_data hw_blacklist_chan_data[]
* optional HW channel blacklist information
*/
} wmi_afc_event_fixed_param;
@ -39830,6 +39855,233 @@ typedef struct {
A_UINT32 eirp_pwr; /* maximum permissible EIRP available for above CFI in dBm, value is stored in 0.01 dBm steps */
} wmi_afc_chan_eirp_power_info;
typedef enum {
WMI_11BE_PUNCTURE_PATTERN_80MHZ_MINUS_20MHZ_0x1 = 0,
WMI_11BE_PUNCTURE_PATTERN_80MHZ_MINUS_20MHZ_0x2 = 1,
WMI_11BE_PUNCTURE_PATTERN_80MHZ_MINUS_20MHZ_0x4 = 2,
WMI_11BE_PUNCTURE_PATTERN_80MHZ_MINUS_20MHZ_0x8 = 3,
WMI_11BE_PUNCTURE_PATTERN_80MHZ_MAX,
} WMI_11BE_PUNCTURE_PATTERNS_80MHZ;
typedef enum {
WMI_11BE_PUNCTURE_PATTERN_160MHZ_MINUS_20MHZ_0x1 = 0,
WMI_11BE_PUNCTURE_PATTERN_160MHZ_MINUS_20MHZ_0x2 = 1,
WMI_11BE_PUNCTURE_PATTERN_160MHZ_MINUS_20MHZ_0x4 = 2,
WMI_11BE_PUNCTURE_PATTERN_160MHZ_MINUS_20MHZ_0x8 = 3,
WMI_11BE_PUNCTURE_PATTERN_160MHZ_MINUS_20MHZ_0x10 = 4,
WMI_11BE_PUNCTURE_PATTERN_160MHZ_MINUS_20MHZ_0x20 = 5,
WMI_11BE_PUNCTURE_PATTERN_160MHZ_MINUS_20MHZ_0x40 = 6,
WMI_11BE_PUNCTURE_PATTERN_160MHZ_MINUS_20MHZ_0x80 = 7,
WMI_11BE_PUNCTURE_PATTERN_160MHZ_MINUS_40MHZ_0x0C = 8,
WMI_11BE_PUNCTURE_PATTERN_160MHZ_MINUS_40MHZ_0x03 = 9,
WMI_11BE_PUNCTURE_PATTERN_160MHZ_MINUS_40MHZ_0xC0 = 10,
WMI_11BE_PUNCTURE_PATTERN_160MHZ_MINUS_40MHZ_0x30 = 11,
WMI_11BE_PUNCTURE_PATTERN_160MHZ_MAX,
} WMI_11BE_PUNCTURE_PATTERNS_160MHZ;
typedef enum {
WMI_11BE_PUNCTURE_PATTERN_320MHZ_MINUS_40MHZ_0xC = 0,
WMI_11BE_PUNCTURE_PATTERN_320MHZ_MINUS_40MHZ_0x3 = 1,
WMI_11BE_PUNCTURE_PATTERN_320MHZ_MINUS_40MHZ_0xC0 = 2,
WMI_11BE_PUNCTURE_PATTERN_320MHZ_MINUS_40MHZ_0x30 = 3,
WMI_11BE_PUNCTURE_PATTERN_320MHZ_MINUS_40MHZ_0xC00 = 4,
WMI_11BE_PUNCTURE_PATTERN_320MHZ_MINUS_40MHZ_0x300 = 5,
WMI_11BE_PUNCTURE_PATTERN_320MHZ_MINUS_40MHZ_0xC000 = 6,
WMI_11BE_PUNCTURE_PATTERN_320MHZ_MINUS_40MHZ_0x3000 = 7,
WMI_11BE_PUNCTURE_PATTERN_320MHZ_MINUS_80MHZ_0xF = 8,
WMI_11BE_PUNCTURE_PATTERN_320MHZ_MINUS_80MHZ_0xF0 = 9,
WMI_11BE_PUNCTURE_PATTERN_320MHZ_MINUS_80MHZ_0xF00 = 10,
WMI_11BE_PUNCTURE_PATTERN_320MHZ_MINUS_80MHZ_0xF000 = 11,
WMI_11BE_PUNCTURE_PATTERN_320MHZ_MINUS_120MHZ_0xF003 = 12,
WMI_11BE_PUNCTURE_PATTERN_320MHZ_MINUS_120MHZ_0xF00C = 13,
WMI_11BE_PUNCTURE_PATTERN_320MHZ_MINUS_120MHZ_0xF030 = 14,
WMI_11BE_PUNCTURE_PATTERN_320MHZ_MINUS_120MHZ_0xF0C0 = 15,
WMI_11BE_PUNCTURE_PATTERN_320MHZ_MINUS_120MHZ_0xF300 = 16,
WMI_11BE_PUNCTURE_PATTERN_320MHZ_MINUS_120MHZ_0xFC00 = 17,
WMI_11BE_PUNCTURE_PATTERN_320MHZ_MINUS_120MHZ_0x003F = 18,
WMI_11BE_PUNCTURE_PATTERN_320MHZ_MINUS_120MHZ_0x00CF = 19,
WMI_11BE_PUNCTURE_PATTERN_320MHZ_MINUS_120MHZ_0x030F = 20,
WMI_11BE_PUNCTURE_PATTERN_320MHZ_MINUS_120MHZ_0x0C0F = 21,
WMI_11BE_PUNCTURE_PATTERN_320MHZ_MINUS_120MHZ_0x300F = 22,
WMI_11BE_PUNCTURE_PATTERN_320MHZ_MINUS_120MHZ_0xC00F = 23,
WMI_11BE_PUNCTURE_PATTERN_320MHZ_MAX,
} WMI_11BE_PUNCTURE_PATTERNS_320MHZ;
typedef enum {
/*
* bits 16-19 of "blacklist_msg_info" in wmi_hw_blacklist_chan_fixed_param.
* This status code intimates host whether the TLV sent by
* Halphy is to update the master channel list or clear it.
*/
WMI_HW_BLACKLIST_CHAN_SP_UPDATE = 0,
WMI_HW_BLACKLIST_CHAN_VLP_UPDATE,
/* the below enums are added for future scope */
WMI_HW_BLACKLIST_CHAN_SP_CLEAR,
WMI_HW_BLACKLIST_CHAN_VLP_CLEAR,
WMI_HW_BLACKLIST_CHAN_UPDATE_ALL,
WMI_HW_BLACKLIST_CHAN_CLEAR_ALL,
WMI_HW_BLACKLIST_CHAN_INVALID = 15,
} WMI_HW_BLACKLIST_CHAN_RESP_CMD_CODE;
typedef enum {
/*
* bit 20, "blacklist_msg_info" flag in wmi_hw_blacklist_chan_fixed_param
* This bit field informs the host whether all the blacklist channel
* information has been sent, or if further messages will follow to
* deliver the remaining information.
*/
WMI_HW_BLACKLIST_CHAN_EVENT_DONE = 0, /* Indicates it is the last event */
WMI_HW_BLACKLIST_CHAN_EVENT_MORE = 1, /* Indicates more evts will follow */
} WMI_HW_BLACKLIST_CHAN_DATA_EVENT_FLAG;
#define WMI_GET_BLACKLIST_MSG_INFO_WMI_EVT_SEQ_NUM(flag) \
WMI_GET_BITS(flag, 0, 8)
#define WMI_SET_BLACKLIST_MSG_INFO_WMI_EVT_SEQ_NUM(flag, val) \
WMI_SET_BITS(flag, 0, 8, val)
#define WMI_GET_BLACKLIST_MSG_INFO_TOTAL_WMI_EVT_NUM(flag) \
WMI_GET_BITS(flag, 8, 8)
#define WMI_SET_BLACKLIST_MSG_INFO_TOTAL_WMI_EVT_NUM(flag, val) \
WMI_SET_BITS(flag, 8, 8, val)
#define WMI_GET_BLACKLIST_MSG_INFO_RESP_CODE(flag) \
WMI_GET_BITS(flag, 16, 4)
#define WMI_SET_BLACKLIST_MSG_INFO_RESP_CODE(flag, val) \
WMI_SET_BITS(flag, 16, 4, val)
#define WMI_GET_BLACKLIST_MSG_INFO_EVT_FLAG(flag) \
WMI_GET_BITS(flag, 20, 1)
#define WMI_SET_BLACKLIST_MSG_INFO_EVT_FLAG(flag, val) \
WMI_SET_BITS(flag, 20, 1, val)
#define WMI_GET_BLACKLIST_CHANNELS_TOTAL_NUM_CHAN(flag) \
WMI_GET_BITS(flag, 0, 16)
#define WMI_SET_BLACKLIST_CHANNELS_TOTAL_NUM_CHAN(flag, val) \
WMI_SET_BITS(flag, 0, 16, val)
#define WMI_GET_BLACKLIST_CHANNELS_CURRENT_NUM_CHAN(flag) \
WMI_GET_BITS(flag, 16, 16)
#define WMI_SET_BLACKLIST_CHANNELS_CURRENT_NUM_CHAN(flag, val) \
WMI_SET_BITS(flag, 16, 16, val)
typedef struct {
/** TLV tag and len;
* tag equals WMITLV_TAG_STRUC_wmi_hw_blacklist_chan_fixed_param*/
A_UINT32 tlv_header;
A_UINT32 phy_id;
union {
A_UINT32 blacklist_msg_info;
/*
* bit 7 - 0 -> Current WMI event sequence number
* bit 15 - 8 -> Total number of WMI events [For debugging only]
* bit 19 - 16 -> ENUM "WMI_HW_BLACKLIST_CHAN_RESP_CMD_CODE"
* bit 20 -> ENUM "WMI_HW_BLACKLIST_CHAN_DATA_EVENT_FLAG"
* bit 31 - 21 -> Reserved
*/
struct {
A_UINT32
blacklist_wmi_seq_num: 8,
blacklist_wmi_total_num: 8,
blacklist_resp_code: 4,
blacklist_event_flag:1,
reserved: 11;
};
};
/*
* bit 15 - 0 -> Total number of HW blacklist channels
* bit 31 - 16 -> number of HW blacklist channels in current WMI
*/
union {
A_UINT32 num_hw_blacklist_channels;
struct {
A_UINT32
total_num_chan: 16,
current_num_chan: 16;
};
};
} wmi_hw_blacklist_chan_fixed_param;
#define WMI_GET_FREQ_INFO_PRI20_BITMAP(flag) \
WMI_GET_BITS(flag, 0, 16)
#define WMI_SET_FREQ_INFO_PRI20_BITMAP(flag, val) \
WMI_SET_BITS(flag, 0, 16, val)
#define WMI_GET_FREQ_INFO_CHAN_CENTER_FREQ(flag) \
WMI_GET_BITS(flag, 16, 16)
#define WMI_SET_FREQ_INFO_CHAN_CENTER_FREQ(flag, val) \
WMI_SET_BITS(flag, 16, 16, val)
#define WMI_GET_CHAN_LIST_META_DATA_POWER_MODE(flag) \
WMI_GET_BITS(flag, 0, 4)
#define WMI_SET_CHAN_LIST_META_DATA_POWER_MODE(flag, val) \
WMI_SET_BITS(flag, 0, 4, val)
#define WMI_GET_CHAN_LIST_META_DATA_MAX_BW(flag) \
WMI_GET_BITS(flag, 4, 8)
#define WMI_SET_CHAN_LIST_META_DATA_MAX_BW(flag, val) \
WMI_SET_BITS(flag, 4, 8, val)
#define WMI_GET_PUNCTURE_PATTERN_BITMAP(flag) \
WMI_GET_BITS(flag, 0, 24)
#define WMI_SET_PUNCTURE_PATTERN_BITMAP(flag, val) \
WMI_SET_BITS(flag, 0, 24, val)
typedef struct {
/** TLV tag and len;
* tag equals WMITLV_TAG_STRUC_wmi_hw_blacklist_chan_data */
A_UINT32 tlv_header;
/*
* bit 15 - 0 -> bitmap representing a set of 20MHz primary channels
* bit 31 - 16 -> channel center frequency in MHz for the given Max BW
* in "chan_list_meta_data"
*/
union {
A_UINT32 freq_info;
struct {
A_UINT32
pri20_bitmap: 16,
chan_center_freq: 16;
};
};
/*
* bit 3 - 0 -> Power mode "WMI_6GHZ_REG_PWRMODE_TYPE"
* bit 11 - 4 -> Max BW with enum "wmi_channel_width"
* bit 31 - 12 -> reserved
*/
union {
A_UINT32 chan_list_meta_data;
struct {
A_UINT32
power_mode: 4,
max_bw: 8,
reserved1: 20;
};
};
/*
* bit represents blacklisted puncture pattern based on enums
* WMI_11BE_PUNCTURE_PATTERNS_320MHZ, WMI_11BE_PUNCTURE_PATTERNS_160MHZ,
* WMI_11BE_PUNCTURE_PATTERNS_80MHZ
* bit 23 - 0 -> bitmap representing a set of puncture patterns of the
* given bandwidth. The bandwidth is represented by
* bits 8-15 of A_UINT32 chan_list_meta_data
* bit 31 - 24 -> reserved for future puncture patterns
*/
union {
A_UINT32 puncture_pattern_bitmap_info;
struct {
A_UINT32
puncture_pattern_bitmap: 24,
reserved2: 8;
};
};
} wmi_hw_blacklist_chan_data;
typedef struct {
A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_11d_scan_start_cmd_fixed_param */
A_UINT32 vdev_id;

View file

@ -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_ 1616
#define __WMI_REVISION_ 1617
/** The Version Namespace should not be normally changed. Only
* host and firmware of the same WMI namespace will work