From f9c7f40c30744d74049c53031707bae5a12037ca Mon Sep 17 00:00:00 2001 From: spuligil Date: Tue, 10 Mar 2026 18:04:14 -0700 Subject: [PATCH] fw-api: CL 31924680 - update fw common interface files Change-Id: Id6106b9504b31adca72b5c0f60c1dec530920910 CRs-Fixed: 3830439 --- fw/wmi_tlv_defs.h | 10 ++-- fw/wmi_unified.h | 124 +++++++++++++++++++++++++++++++++++++++++++++- fw/wmi_version.h | 2 +- 3 files changed, 131 insertions(+), 5 deletions(-) diff --git a/fw/wmi_tlv_defs.h b/fw/wmi_tlv_defs.h index 4292a1afc555..b2e104a485da 100644 --- a/fw/wmi_tlv_defs.h +++ b/fw/wmi_tlv_defs.h @@ -1595,6 +1595,7 @@ typedef enum { WMITLV_TAG_STRUC_wmi_coex_policy_stats_cmd_fixed_param, WMITLV_TAG_STRUC_wmi_coex_policy_stats_event_fixed_param, WMITLV_TAG_STRUC_wmi_channel_hopping_channel_params, + WMITLV_TAG_STRUC_wmi_uhr_rate_set, } WMITLV_TAG_ID; /* * IMPORTANT: Please add _ALL_ WMI Commands Here. @@ -3139,7 +3140,8 @@ WMITLV_CREATE_PARAM_STRUC(WMI_PEER_ASSOC_CMDID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_peer_uhr_npca_cap_params, peer_npca_cap_params, WMITLV_SIZE_VAR)\ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_peer_create_mlo_params, create_mlo_params, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_peer_assoc_cfp_params, wmi_peer_assoc_cfp_params, cfp_params, WMITLV_SIZE_FIX) \ - WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_peer_assoc_smd_params, wmi_peer_assoc_smd_params, smd_params, WMITLV_SIZE_FIX) + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_peer_assoc_smd_params, wmi_peer_assoc_smd_params, smd_params, WMITLV_SIZE_FIX) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_uhr_rate_set, peer_uhr_rates, WMITLV_SIZE_VAR) /* NOTE: * To maintain compatibility, any new TLV added in WMI_PEER_ASSOC_V2_CMDID * needs to be also included as a TLV in WMI_VDEV_UNIFIED_CONNECT_CMDID and @@ -6284,7 +6286,8 @@ WMITLV_CREATE_PARAM_STRUC(WMI_WLAN_MODE_REQ_CMDID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_co_located_chan_info, vdev_up_co_located_chan_info, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_peer_assoc_smd_params, wmi_peer_assoc_smd_params, smd_params, WMITLV_SIZE_FIX) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_vdev_start_smd_params, vdev_smd_params, WMITLV_SIZE_VAR) \ - WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_peer_assoc_smd_params, wmi_peer_assoc_smd_params, peer_assoc_v2_smd_params, WMITLV_SIZE_FIX) + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_peer_assoc_smd_params, wmi_peer_assoc_smd_params, peer_assoc_v2_smd_params, WMITLV_SIZE_FIX) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_uhr_rate_set, peer_uhr_rates, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_VDEV_UNIFIED_CONNECT_CMDID); /* WMI command for unified disconnect cmd */ @@ -6376,7 +6379,8 @@ WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_UHR_CU_CMDID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_peer_assoc_smd_params, wmi_peer_assoc_smd_params, peer_assoc_v2_smd_params, WMITLV_SIZE_FIX) \ /*---*/ \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_vdev_install_key_cmd_fixed_param, wmi_vdev_install_key_cmd_fixed_param, key_install_fixed_param, WMITLV_SIZE_FIX)\ - WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_BYTE, A_UINT8, key_data, WMITLV_SIZE_VAR) + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_BYTE, A_UINT8, key_data, WMITLV_SIZE_VAR) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_uhr_rate_set, peer_uhr_rates, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_SMD_ROAM_PEER_UNIFIED_SETUP_CMDID); /* WMI command for unified SMD Config cmd */ diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index a05d2f1da946..854bd0991616 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -2906,6 +2906,7 @@ typedef enum { #define WMI_CHAN_FLAG_NAN_DISABLED 19 /* Indicates that NAN operations are disabled on this channel */ #define WMI_CHAN_FLAG_STA_DFS 20 /* Indicates if STA should process radar signals */ #define WMI_CHAN_FLAG_ALLOW_EHT 21 /* EHT (11be) is allowed on this channel */ +#define WMI_CHAN_FLAG_ALLOW_UHR 22 /* UHR (11bn) is allowed on this channel */ #define WMI_SET_CHANNEL_FLAG(pwmi_channel,flag) do { \ (pwmi_channel)->info |= ((A_UINT32) 1 << flag); \ @@ -4148,6 +4149,14 @@ typedef struct { }; }; + /* + * UHR MAC Capabilities: total WMI_MAX_UHRCAP_MAC_SIZE*A_UINT32 bits + * those bits actually are max mac capabilities = cap_mac_2g | cap_mac_5g + * The actual cap mac info per mac (2g/5g) in the TLV -- + * WMI_MAC_PHY_CAPABILITIES_EXT2 + */ + A_UINT32 uhr_cap_mac_info[WMI_MAX_UHRCAP_MAC_SIZE]; + /* Followed by next TLVs: * WMI_DMA_RING_CAPABILITIES dma_ring_caps[]; * wmi_spectral_bin_scaling_params wmi_bin_scaling_params[]; @@ -4174,6 +4183,7 @@ typedef struct { * wifi_radar_ltf_length_capabilities[]; * wmi_wifi_radar_chain_capabilities * wifi_radar_chain_capabilities[]; + * WMI_MAC_PHY_CAPABILITIES_EXT2 mac_phy_caps2[]; */ } wmi_service_ready_ext2_event_fixed_param; @@ -18868,6 +18878,7 @@ typedef struct { A_UINT32 target_tsf_us_hi; /* bits 63:32 */ A_UINT32 vdev_op_ul_nss; /* vdev operating uplink nss. 1 ~ n: 1ss ~ nss */ A_UINT32 vdev_op_dl_nss; /* vdev operating downlink nss. 1 ~ n: 1ss ~ nss */ + A_UINT32 uhr_ops; /* refer to WMI_UHR_OPS_XXX macros */ /* The TLVs follows this structure: * wmi_channel chan; <-- WMI channel @@ -23025,6 +23036,19 @@ enum wmi_peer_new_assoc { WMI_PEER_NEW_ASSOC_MAX = 127 }; +typedef struct { + A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_uhr_rate_set */ + /** + * B0-B3 indicates max NSS that supports mcs 0-7 + * B4-B7 indicates max NSS that supports mcs 8-9 + * B8-B11 indicates max NSS that supports mcs 10-11 + * B12-B15 indicates max NSS that supports mcs 12-13 + * B16-B31 reserved + */ + A_UINT32 rx_mcs_set; /* Rx max NSS set */ + A_UINT32 tx_mcs_set; /* Tx max NSS set */ +} wmi_uhr_rate_set; + typedef struct { A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_peer_assoc_complete_cmd_fixed_param */ /** peer MAC address */ @@ -23194,6 +23218,23 @@ typedef struct { /** Global SAM Peer ID, valid only if sam_peer_id_valid is set */ A_UINT32 sam_peer_id; + /** peer_uhr_cap_mac: + * UHR mac capabilities from BSS beacon UHR cap IE, + * total WMI_MAX_UHRCAP_MAC_SIZE*A_UINT32 bits + */ + A_UINT32 peer_uhr_cap_mac[WMI_MAX_UHRCAP_MAC_SIZE]; + /** peer_uhr_cap_phy: + * UHR phy capabilities from BSS beacon UHR cap IE, + * total WMI_MAX_UHRCAP_PHY_SIZE*A_UINT32 bits + */ + A_UINT32 peer_uhr_cap_phy[WMI_MAX_UHRCAP_PHY_SIZE]; + /** refer to WMI_UHR_OPS_XXX macros */ + A_UINT32 peer_uhr_ops; + /** peer_uhr_ppet: + * UHR Packet Padding Extension (PPE) thresholds from BSS beacon UHR cap IE + */ + wmi_ppe_threshold peer_uhr_ppet; + /* Following this struct are the TLV's: * A_UINT8 peer_legacy_rates[]; * A_UINT8 peer_ht_rates[]; @@ -23216,6 +23257,7 @@ typedef struct { * Only mlo_enable flag required by MCC to decide MAC address * to be used. * wmi_peer_assoc_smd_params peer_assoc_smd_params; + * wmi_uhr_rate_set peer_uhr_rates; <-- UHR capabilities of the peer */ } wmi_peer_assoc_complete_cmd_fixed_param; @@ -41166,6 +41208,8 @@ static INLINE A_UINT8 *wmi_id_to_name(A_UINT32 wmi_command) /* set peer to associated state. will cary all parameters * determined during assocication time */ WMI_RETURN_STRING(WMI_PEER_ASSOC_CMDID); + /* peer assoc v2 cmd should be used for non-legacy targets */ + WMI_RETURN_STRING(WMI_PEER_ASSOC_V2_CMDID); /* add a wds (4 address ) entry. used only for testing * WDS feature on AP products */ WMI_RETURN_STRING(WMI_PEER_ADD_WDS_ENTRY_CMDID); @@ -48422,6 +48466,45 @@ typedef struct { /* Bit 7: reserved */ /****** End of 11BE EHT Operation Parameters field ******/ +/****** 11BN UHR Operation Parameters field ******/ +/* Bit 0 UHR Operation Information Present */ +#define WMI_UHR_OPS_INFORMATION_PRESENT_GET(uhr_ops) \ + WMI_GET_BITS(uhr_ops, 0, 1) +#define WMI_UHR_OPS_INFORMATION_PRESENT_SET(uhr_ops, value) \ + WMI_SET_BITS(uhr_ops, 0, 1, value) + +/* Bit 1 DPS Enabled */ +#define WMI_UHR_OPS_DPS_ENABLED_GET(uhr_ops) \ + WMI_GET_BITS(uhr_ops, 1, 1) +#define WMI_UHR_OPS_DPS_ENABLED_SET(uhr_ops, value) \ + WMI_SET_BITS(uhr_ops, 1, 1, value) + +/* Bit 2 NPCA Enabled */ +#define WMI_UHR_OPS_NPCA_ENABLED_GET(uhr_ops) \ + WMI_GET_BITS(uhr_ops, 2, 1) +#define WMI_UHR_OPS_NPCA_ENABLED_SET(uhr_ops, value) \ + WMI_SET_BITS(uhr_ops, 2, 1, value) + +/* Bit 3 DBE Enabled */ +#define WMI_UHR_OPS_DBE_ENABLED_GET(uhr_ops) \ + WMI_GET_BITS(uhr_ops, 3, 1) +#define WMI_UHR_OPS_DBE_ENABLED_SET(uhr_ops, value) \ + WMI_SET_BITS(uhr_ops, 3, 1, value) + +/* Bit 4 P-EDCA Enabled */ +#define WMI_UHR_OPS_PEDCA_ENABLED_GET(uhr_ops) \ + WMI_GET_BITS(uhr_ops, 4, 1) +#define WMI_UHR_OPS_PEDCA_ENABLED_SET(uhr_ops, value) \ + WMI_SET_BITS(uhr_ops, 4, 1, value) + +/* Bit 5~7 DBE Bandwidth */ +#define WMI_UHR_OPS_DBE_BANDWIDTH_GET(uhr_ops) \ + WMI_GET_BITS(uhr_ops, 5, 3) +#define WMI_UHR_OPS_DBE_BANDWIDTH_SET(uhr_ops, value) \ + WMI_SET_BITS(uhr_ops, 5, 3, value) + +/* Bit 8~15: reserved */ +/****** End of 11BN UHR Operation Parameters field ******/ typedef struct { /** TLV tag and len; tag equals @@ -55050,7 +55133,46 @@ typedef struct { A_UINT32 peer_id; /* * Following this struct are the TLV's: - * wmi_smd_roam_peer_tid_info smd_tid_info[], TLV per TID; + * wmi_smd_roam_peer_tid_info smd_roam_peer_tid_info[]; <- TLV per TID + * wmi_peer_create_cmd_fixed_param peer_create_fixed_param; + * wmi_peer_create_mlo_params peer_create_mlo_params[]; + * wmi_peer_assoc_complete_cmd_fixed_param peer_assoc_fixed_param; + * A_UINT8 peer_assoc_peer_legacy_rates[]; + * A_UINT8 peer_assoc_peer_ht_rates[]; + * wmi_vht_rate_set peer_assoc_peer_vht_rates; + * wmi_he_rate_set peer_assoc_peer_he_rates[]; + * wmi_peer_assoc_mlo_params peer_assoc_mlo_params[]; + * wmi_eht_rate_set peer_assoc_peer_eht_rates[]; + * wmi_peer_assoc_mlo_partner_link_params + * peer_assoc_partner_link_params[]; + * wmi_peer_assoc_tid_to_link_map peer_assoc_peer_tid_to_link_map[]; + * wmi_peer_assoc_operating_mode_params + * peer_assoc_operating_mode_params[]; + * wmi_peer_assoc_mgmt_mpduq_params peer_assoc_mgmt_mpduq_params[]; + * wmi_peer_assoc_mgmt_msduq_params peer_assoc_mgmt_msduq_params[]; + * wmi_peer_assoc_hol_msduq_params peer_assoc_hol_mdsuq_params[]; + * wmi_peer_assoc_complete_cmd_fixed_param peer_assoc_v2_fixed_param; + * A_UINT8 peer_assoc_v2_peer_legacy_rates[]; + * A_UINT8 peer_assoc_v2_peer_ht_rates[]; + * wmi_vht_rate_set peer_assoc_v2_peer_vht_rates; + * wmi_he_rate_set peer_assoc_v2_peer_he_rates[]; + * wmi_peer_assoc_mlo_params peer_assoc_v2_mlo_params[]; + * wmi_eht_rate_set peer_assoc_v2_peer_eht_rates[]; + * wmi_peer_assoc_mlo_partner_link_params + * peer_assoc_v2_partner_link_params[]; + * wmi_peer_assoc_tid_to_link_map peer_assoc_v2_peer_tid_to_link_map[]; + * wmi_peer_assoc_operating_mode_params + * peer_assoc_v2_operating_mode_params[]; + * wmi_peer_assoc_mgmt_mpduq_params peer_assoc_v2_mgmt_mpduq_params[]; + * wmi_peer_assoc_mgmt_msduq_params peer_assoc_v2_mgmt_msduq_params[]; + * wmi_peer_assoc_hol_msduq_params peer_assoc_v2_hol_mdsuq_params[]; + * wmi_peer_uhr_npca_cap_params peer_assoc_v2_peer_npca_cap_params[]; + * wmi_peer_create_mlo_params peer_assoc_v2_create_mlo_params[]; + * wmi_peer_assoc_cfp_params peer_assoc_v2_cfp_params; + * wmi_peer_assoc_smd_params peer_assoc_v2_smd_params; + * wmi_vdev_install_key_cmd_fixed_param key_install_fixed_param; + * A_UINT8 key_data[]; + * wmi_uhr_rate_set peer_uhr_rates[]; */ } wmi_smd_roam_peer_unified_setup_cmd_fixed_param; diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 33fe4382252c..4acce54fe0b8 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_ 1728 +#define __WMI_REVISION_ 1729 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work