From 2afc1681dd72e3ac8ce2e7d4c37c2cb9b54ba936 Mon Sep 17 00:00:00 2001 From: spuligil Date: Fri, 17 Apr 2026 18:01:47 -0700 Subject: [PATCH 1/2] fw-api: CL 32280311 - update fw common interface files Change-Id: Id7cccce49f7a94f9073183cb79c6be31a023c342 CRs-Fixed: 3830439 --- fw/htt.h | 258 ++++++++++++++++++++++++++++++++++++++++++++++--- fw/htt_stats.h | 51 ++++++++-- 2 files changed, 290 insertions(+), 19 deletions(-) diff --git a/fw/htt.h b/fw/htt.h index f11c398ac942..c83725d2a56a 100644 --- a/fw/htt.h +++ b/fw/htt.h @@ -284,9 +284,10 @@ * 3.154 Add T2H PEER_DEL_ALL_GLOBAL_VDEV_ID_UNMAP msg def. * 3.155 Add rxmon hdrlen specs in rx_ring_selection_cfg_t. * 3.156 Add qdata_consent_pkt flag in rx_peer_metadata_v1a and v2. + * 3.157 Add TCL_METADATA_V3 defs. */ #define HTT_CURRENT_VERSION_MAJOR 3 -#define HTT_CURRENT_VERSION_MINOR 156 +#define HTT_CURRENT_VERSION_MINOR 157 #define HTT_NUM_TX_FRAG_DESC 1024 @@ -583,6 +584,7 @@ PREPACK struct htt_option_tlv_support_tx_msdu_desc_ext_t { * should be used: * V1 -> use htt_tx_tcl_metadata struct * V2 -> use htt_tx_tcl_metadata_v2 struct + * V3 -> use htt_tx_tcl_metadata_v3 struct * Old FW will only support V1. * New FW will support V2. New FW will still support V1, at least during * a transition period. @@ -608,11 +610,17 @@ PREPACK struct htt_option_tlv_support_tx_msdu_desc_ext_t { * and the FW will crash in wal_tx_de_fast.c. For version 2.1 and * above we will use htt_tx_tcl_svc_class_id_metadata.ast_index * in TCLV2 command and do the dynamic AST allocations. + * + * Apr 2026: Added HTT_OPTION_TLV_TCL_METADATA_V3. + * This version supports the updated tcl_data_cmd introduced in Boron. + * All fields are identical to V2; however, the field ordering has been + * modified to accommodate MAC requirements. */ enum HTT_OPTION_TLV_TCL_METADATA_VER_VALUES { HTT_OPTION_TLV_TCL_METADATA_V1 = 1, HTT_OPTION_TLV_TCL_METADATA_V2 = 2, - /* values 3-20 reserved */ + HTT_OPTION_TLV_TCL_METADATA_V3 = 3, + /* values 4-20 reserved */ HTT_OPTION_TLV_TCL_METADATA_V21 = 21, }; @@ -865,13 +873,16 @@ typedef enum { HTT_STATS_PDEV_RTT_DELAY_TAG = 205, /* htt_stats_pdev_rtt_delay_tlv */ HTT_STATS_PDEV_AOA_TAG = 206, /* htt_stats_pdev_aoa_tlv */ HTT_STATS_PDEV_FTM_TPCCAL_TAG = 207, /* htt_stats_pdev_ftm_tpccal_tlv */ - HTT_STATS_PDEV_UL_MUMIMO_GRP_STATS_TAG = 208, /* htt_stats_pdev_ulmumimo_grp_stats_tlv */ - HTT_STATS_PDEV_UL_MUMIMO_DENYLIST_STATS_TAG = 209, /* htt_stats_pdev_ulmumimo_denylist_stats_tlv */ - HTT_STATS_PDEV_UL_MUMIMO_SEQ_TERM_STATS_TAG = 210, /* htt_stats_pdev_ulmumimo_seq_term_stats_tlv */ - HTT_STATS_PDEV_UL_MUMIMO_HIST_INELIGIBILITY_TAG = 211, /* htt_stats_pdev_ulmumimo_hist_ineligibility_tlv */ + HTT_STATS_PDEV_UL_MUMIMO_GRP_STATS_TAG = 208, /* htt_stats_pdev_ul_mumimo_grp_stats_tlv */ + HTT_STATS_PDEV_UL_MUMIMO_DENYLIST_STATS_TAG = 209, /* htt_stats_pdev_ul_mumimo_denylist_stats_tlv */ + HTT_STATS_PDEV_UL_MUMIMO_SEQ_TERM_STATS_TAG = 210, /* htt_stats_pdev_ul__mumimo_seq_term_stats_tlv */ + HTT_STATS_PDEV_UL_MUMIMO_HIST_INELIGIBILITY_TAG = 211, /* htt_stats_pdev_ul_mumimo_hist_ineligibility_tlv */ HTT_STATS_PHY_PAPRD_PB_TAG = 212, /* htt_stats_phy_paprd_pb_tlv */ HTT_STATS_HDS_PROF_STATS_TAG = 213, /* htt_stat_hds_prof_stats_tlv */ - HTT_STATS_TX_PDEV_MDSB_NUM_USERS_HISTOGRAM_TLV_TAG = 214, /* htt_stats_tx_pdev_mdsb_num_users_histogram_tlv */ + HTT_STATS_TX_PDEV_MDSB_NUM_USERS_HISTOGRAM_TAG = 214, /* htt_stats_tx_pdev_mdsb_num_users_histogram_tlv */ + /* preserve old name as an alias for the corrected name */ + HTT_STATS_TX_PDEV_MDSB_NUM_USERS_HISTOGRAM_TLV_TAG = + HTT_STATS_TX_PDEV_MDSB_NUM_USERS_HISTOGRAM_TAG, HTT_STATS_TX_PDEV_PENDING_SEQ_CNT_ON_SCHED_POST_HIST_TAG = 215, /* htt_stats_tx_pdev_pending_seq_cnt_on_sched_post_hist_tlv */ HTT_STATS_TX_PDEV_PENDING_SEQ_CNT_IN_HWQ_HIST_TAG = 216, /* htt_stats_tx_pdev_pending_seq_cnt_in_hwq_hist_tlv */ HTT_STATS_TX_PDEV_PENDING_SEQ_CNT_IN_TXQ_HIST_TAG = 217, /* htt_stats_tx_pdev_pending_seq_cnt_in_txq_hist_tlv */ @@ -880,8 +891,8 @@ typedef enum { HTT_STATS_TX_SELFGEN_BN_ERR_TAG = 220, /* htt_stats_tx_selfgen_bn_err_tlv, TOPIC=advanced */ HTT_STATS_TX_SELFGEN_BN_TAG = 221, /* htt_stats_tx_selfgen_bn_tlv, TOPIC=advanced */ HTT_STATS_TX_SELFGEN_BN_SCHED_STATUS_TAG = 222, /* htt_stats_tx_selfgen_bn_sched_status_tlv, TOPIC=advanced */ - HTT_STATS_TX_PDEV_BN_DL_MU_OFDMA_STATS_TAG = 223, /* htt_stats_tx_pdev_bn_dl_mu_ofdma_tlv, TOPIC=advanced */ - HTT_STATS_TX_PDEV_BN_UL_MU_OFDMA_STATS_TAG = 224, /* htt_stats_tx_pdev_bn_ul_mu_ofdma_tlv, TOPIC=advanced */ + HTT_STATS_TX_PDEV_BN_DL_MU_OFDMA_STATS_TAG = 223, /* htt_stats_tx_pdev_bn_dl_mu_ofdma_stats_tlv, TOPIC=advanced */ + HTT_STATS_TX_PDEV_BN_UL_MU_OFDMA_STATS_TAG = 224, /* htt_stats_tx_pdev_bn_ul_mu_ofdma_stats_tlv, TOPIC=advanced */ HTT_STATS_RX_PEER_TID_REO_QUEUE_BA_TAG = 225, /* htt_stats_rx_peer_tid_reo_queue_ba_tlv */ HTT_STATS_TXBF_OFDMA_BN_NDPA_TAG = 226, /* htt_stats_txbf_ofdma_bn_ndpa_tlv */ HTT_STATS_TXBF_OFDMA_BN_NDP_TAG = 227, /* htt_stats_txbf_ofdma_bn_ndp_tlv */ @@ -915,14 +926,14 @@ typedef enum { HTT_STATS_REGDB_CTRY_TAG = 247, /* htt_stats_regdb_ctry_tlv */ HTT_STATS_REGDB_REGDOMAIN_TAG = 248, /* htt_stats_regdb_regdomain_tlv */ HTT_STATS_REG_6G_TAG = 249, /* htt_stats_reg_6g_tlv*/ - HTT_STATS_REG_6G_CH_PWR_INFO_TAG = 250, /* htt_stats_reg_6g_ch_power_info_tlv*/ + HTT_STATS_REG_6G_CH_PWR_INFO_TAG = 250, /* htt_stats_reg_6g_ch_power_info_tlv */ HTT_STATS_REG_6G_OOBE_TAG = 251, /* htt_stats_reg_6g_oobe_tlv*/ HTT_STATS_TX_SELFGEN_RESP_FRAME_STATS_TAG = 252, /* htt_stats_tx_selfgen_resp_frame_stats_tlv */ HTT_STATS_DPD_HALPHY_TAG = 253, /* htt_stats_dpd_halphy_tlv */ HTT_STATS_DPD_HW_CAL_PARAMS_TAG = 254, /* htt_stats_dpd_hw_cal_params_tlv */ HTT_STATS_DPD_HW_CAL_RESULTS_TAG = 255, /* htt_stats_dpd_hw_cal_results_tlv */ HTT_STATS_TX_PDEV_TXOP_DUR_TAG = 256, /* htt_stats_tx_pdev_txop_dur_tlv */ - HTT_STATS_TXQ_COMBINED_SEQ_STATE_TAG = 257, /* htt_stats_sched_txq_combined_seq_state_tlv */ + HTT_STATS_TXQ_COMBINED_SEQ_STATE_TAG = 257, /* htt_stats_txq_combined_seq_state_tlv */ HTT_STATS_CTL_TAG = 258, /* htt_stats_ctl_tlv */ HTT_STATS_ENHANCED_CTL_TAG = 259, /* htt_stats_enhanced_ctl_tlv */ @@ -2947,6 +2958,231 @@ PREPACK struct htt_tx_tcl_metadata_v2 { * End V2 Version of TCL Data Command *-----------------------------------------------------------------*/ + +/*------------------------------------------------------------------ + * V3 Version of TCL Data Command + * V3 Version to support peer_id, vdev_id, svc_class_id and + * MLO global_seq all flavours of TCL Data Cmd. same fields as V2, + * but the ordering of the fields changes. + *-----------------------------------------------------------------*/ + +typedef struct { + A_UINT32 + valid_htt_ext: 1, /* If set, tcl_exit_base->host_meta_info is valid */ + vdev_id: 8, + pdev_id: 2, + host_inspected:1, + rsvd: 2, + /* type: vdev_id based or peer_id or svc_id or global seq based */ + type: 2, + /* padding: these 16 bits cannot be used by FW for the tcl command */ + padding: 16; +} htt_tx_tcl_vdev_metadata_v3; + +typedef struct { + A_UINT32 + valid_htt_ext: 1, /* If set, tcl_exit_base->host_meta_info is valid */ + peer_id: 13, + /* type: vdev_id based or peer_id or svc_id or global seq based */ + type: 2, + /* padding: these 16 bits cannot be used by FW for the tcl command */ + padding: 16; +} htt_tx_tcl_peer_metadata_v3; + +typedef struct { + A_UINT32 + valid_htt_ext: 1, /* If set, tcl_exit_base->host_meta_info is valid */ + svc_class_id: 8, + /* ast_index: + * Indicates to firmware the AST index to be used for AST Override + */ + ast_index: 3, + rsvd: 2, + /* type: vdev_id based or peer_id or svc_id or global seq based */ + type: 2, + /* padding: these 16 bits cannot be used by FW for the tcl command */ + padding: 16; +} htt_tx_tcl_svc_class_id_metadata_v3; + +typedef struct { + A_UINT32 + global_seq_no: 12, + host_inspected: 1, + htt_ext_present:1, + /* type: vdev_id based or peer_id or svc_id or global seq based */ + type: 2, + /* padding: these 16 bits cannot be used by FW for the tcl command */ + padding: 16; +} htt_tx_tcl_global_seq_metadata_v3; + +PREPACK struct htt_tx_tcl_metadata_v3 { + union { + htt_tx_tcl_vdev_metadata_v3 vdev_meta_v3; + htt_tx_tcl_peer_metadata_v3 peer_meta_v3; + htt_tx_tcl_svc_class_id_metadata_v3 svc_class_id_meta_v3; + htt_tx_tcl_global_seq_metadata_v3 global_seq_meta_v3; + }; +} POSTPACK; + +/* ===================================================================== + * Common fields + * ===================================================================== */ + +/* type field */ +#define HTT_TX_TCL_METADATA_TYPE_V3_M 0x0000C000 +#define HTT_TX_TCL_METADATA_TYPE_V3_S 14 + +/* valid htt ext (used by VDEV / PEER / SVC metadata) */ +#define HTT_TX_TCL_METADATA_V3_VALID_HTT_EXT_ID_M 0x00000001 +#define HTT_TX_TCL_METADATA_V3_VALID_HTT_EXT_ID_S 0 + + +/* ===================================================================== + * VDEV V3 metadata + * ===================================================================== */ + +#define HTT_TX_TCL_METADATA_V3_VDEV_ID_M 0x000001FE +#define HTT_TX_TCL_METADATA_V3_VDEV_ID_S 1 + +#define HTT_TX_TCL_METADATA_V3_PDEV_ID_M 0x00000600 +#define HTT_TX_TCL_METADATA_V3_PDEV_ID_S 9 + +#define HTT_TX_TCL_METADATA_V3_HOST_INSPECTED_M 0x00000800 +#define HTT_TX_TCL_METADATA_V3_HOST_INSPECTED_S 11 + + +/* ===================================================================== + * PEER V3 metadata + * ===================================================================== */ + +#define HTT_TX_TCL_METADATA_V3_PEER_ID_M 0x00003FFE +#define HTT_TX_TCL_METADATA_V3_PEER_ID_S 1 + + +/* ===================================================================== + * SVC CLASS ID metadata + * ===================================================================== */ + +#define HTT_TX_TCL_METADATA_V3_SVC_CLASS_ID_M 0x000001FE +#define HTT_TX_TCL_METADATA_V3_SVC_CLASS_ID_S 1 + +#define HTT_TX_TCL_METADATA_AST_INDEX_M 0x00000E00 +#define HTT_TX_TCL_METADATA_AST_INDEX_S 9 + + +/* ===================================================================== + * Global Sequence Number metadata + * ===================================================================== */ + +#define HTT_TX_TCL_METADATA_V3_GLBL_SEQ_NO_M 0x00000FFF +#define HTT_TX_TCL_METADATA_V3_GLBL_SEQ_NO_S 0 + +#define HTT_TX_TCL_METADATA_V3_GLBL_SEQ_HOST_INSPECTED_M 0x00001000 +#define HTT_TX_TCL_METADATA_V3_GLBL_SEQ_HOST_INSPECTED_S 12 + +#define HTT_TX_TCL_METADATA_V3_GLBL_SEQ_HTT_EXT_PRESENT_M 0x00002000 +#define HTT_TX_TCL_METADATA_V3_GLBL_SEQ_HTT_EXT_PRESENT_S 13 + +/*----- Get and Set V3 type field in Vdev, Peer, Svc_Class_Id, Global_seq_no */ +#define HTT_TX_TCL_METADATA_TYPE_V3_GET(_var) \ + (((_var) & HTT_TX_TCL_METADATA_TYPE_V3_M) >> \ + HTT_TX_TCL_METADATA_TYPE_V3_S) +#define HTT_TX_TCL_METADATA_TYPE_V3_SET(_var, _val) \ + do { \ + HTT_CHECK_SET_VAL(HTT_TX_TCL_METADATA_TYPE_V3, _val); \ + ((_var) |= ((_val) << HTT_TX_TCL_METADATA_TYPE_V3_S)); \ + } while (0) + +#define HTT_TX_TCL_METADATA_V3_VALID_HTT_GET(_var) \ + (((_var) & HTT_TX_TCL_METADATA_V3_VALID_HTT_EXT_ID_M) >> \ + HTT_TX_TCL_METADATA_V3_VALID_HTT_EXT_ID_S) +#define HTT_TX_TCL_METADATA_V3_VALID_HTT_SET(_var, _val) \ + do { \ + HTT_CHECK_SET_VAL(HTT_TX_TCL_METADATA_V3_VALID_HTT_EXT_ID, _val); \ + ((_var) |= ((_val) << HTT_TX_TCL_METADATA_V3_VALID_HTT_EXT_ID_S)); \ + } while (0) + +/*----- Get and Set V3 type field in Vdev meta fields ----*/ +#define HTT_TX_TCL_METADATA_V3_VDEV_ID_GET(_var) \ + (((_var) & HTT_TX_TCL_METADATA_V3_VDEV_ID_M) >> \ + HTT_TX_TCL_METADATA_V3_VDEV_ID_S) +#define HTT_TX_TCL_METADATA_V3_VDEV_ID_SET(_var, _val) \ + do { \ + HTT_CHECK_SET_VAL(HTT_TX_TCL_METADATA_V3_VDEV_ID, _val); \ + ((_var) |= ((_val) << HTT_TX_TCL_METADATA_V3_VDEV_ID_S)); \ + } while (0) + +#define HTT_TX_TCL_METADATA_V3_PDEV_ID_GET(_var) \ + (((_var) & HTT_TX_TCL_METADATA_V3_PDEV_ID_M) >> \ + HTT_TX_TCL_METADATA_V3_PDEV_ID_S) +#define HTT_TX_TCL_METADATA_V3_PDEV_ID_SET(_var, _val) \ + do { \ + HTT_CHECK_SET_VAL(HTT_TX_TCL_METADATA_V3_PDEV_ID, _val); \ + ((_var) |= ((_val) << HTT_TX_TCL_METADATA_V3_PDEV_ID_S)); \ + } while (0) + +#define HTT_TX_TCL_METADATA_V3_HOST_INSPECTED_GET(_var) \ + (((_var) & HTT_TX_TCL_METADATA_V3_HOST_INSPECTED_M) >> \ + HTT_TX_TCL_METADATA_V3_HOST_INSPECTED_S) +#define HTT_TX_TCL_METADATA_V3_HOST_INSPECTED_SET(_var, _val) \ + do { \ + HTT_CHECK_SET_VAL(HTT_TX_TCL_METADATA_V3_HOST_INSPECTED, _val); \ + ((_var) |= ((_val) << HTT_TX_TCL_METADATA_V3_HOST_INSPECTED_S)); \ + } while (0) + +/*----- Get and Set V3 type field in Peer meta fields ----*/ +#define HTT_TX_TCL_METADATA_V3_PEER_ID_GET(_var) \ + (((_var) & HTT_TX_TCL_METADATA_V3_PEER_ID_M) >> \ + HTT_TX_TCL_METADATA_V3_PEER_ID_S) +#define HTT_TX_TCL_METADATA_V3_PEER_ID_SET(_var, _val) \ + do { \ + HTT_CHECK_SET_VAL(HTT_TX_TCL_METADATA_V3_PEER_ID, _val); \ + ((_var) |= ((_val) << HTT_TX_TCL_METADATA_V3_PEER_ID_S)); \ + } while (0) + +/*----- Get and Set V3 type field in Service Class fields ----*/ +#define HTT_TX_TCL_METADATA_V3_SVC_CLASS_ID_GET(_var) \ + (((_var) & HTT_TX_TCL_METADATA_V3_SVC_CLASS_ID_M) >> \ + HTT_TX_TCL_METADATA_V3_SVC_CLASS_ID_S) +#define HTT_TX_TCL_METADATA_V3_SVC_CLASS_ID_SET(_var, _val) \ + do { \ + HTT_CHECK_SET_VAL(HTT_TX_TCL_METADATA_V3_SVC_CLASS_ID, _val); \ + ((_var) |= ((_val) << HTT_TX_TCL_METADATA_V3_SVC_CLASS_ID_S)); \ + } while (0) + +/*----- Get and Set V3 type field in Global sequence fields ----*/ +#define HTT_TX_TCL_METADATA_V3_GLBL_SEQ_HOST_INSPECTED_GET(_var) \ + (((_var) & HTT_TX_TCL_METADATA_V3_GLBL_SEQ_HOST_INSPECTED_M) >> \ + HTT_TX_TCL_METADATA_V3_GLBL_SEQ_HOST_INSPECTED_S) +#define HTT_TX_TCL_METADATA_V3_GLBL_SEQ_HOST_INSPECTED_SET(_var, _val) \ + do { \ + HTT_CHECK_SET_VAL(HTT_TX_TCL_METADATA_V3_GLBL_SEQ_HOST_INSPECTED, _val); \ + ((_var) |= ((_val) << HTT_TX_TCL_METADATA_V3_GLBL_SEQ_HOST_INSPECTED_S)); \ + } while (0) + +#define HTT_TX_TCL_METADATA_V3_GLBL_SEQ_NO_GET(_var) \ + (((_var) & HTT_TX_TCL_METADATA_V3_GLBL_SEQ_NO_M) >> \ + HTT_TX_TCL_METADATA_V3_GLBL_SEQ_NO_S) +#define HTT_TX_TCL_METADATA_V3_GLBL_SEQ_NO_SET(_var, _val) \ + do { \ + HTT_CHECK_SET_VAL(HTT_TX_TCL_METADATA_V3_GLBL_SEQ_NO, _val); \ + ((_var) |= ((_val) << HTT_TX_TCL_METADATA_V3_GLBL_SEQ_NO_S)); \ + } while (0) + +#define HTT_TX_TCL_METADATA_V3_GLBL_SEQ_HTT_EXT_PRESENT_GET(_var) \ + (((_var) & HTT_TX_TCL_METADATA_V3_GLBL_SEQ_HTT_EXT_PRESENT_M) >> \ + HTT_TX_TCL_METADATA_V3_GLBL_SEQ_HTT_EXT_PRESENT_S) +#define HTT_TX_TCL_METADATA_V3_GLBL_SEQ_HTT_EXT_PRESENT_SET(_var, _val) \ + do { \ + HTT_CHECK_SET_VAL(HTT_TX_TCL_METADATA_V3_GLBL_SEQ_HTT_EXT_PRESENT, _val); \ + ((_var) |= ((_val) << HTT_TX_TCL_METADATA_V3_GLBL_SEQ_HTT_EXT_PRESENT_S)); \ + } while (0) + +/*------------------------------------------------------------------ + * End V3 Version of TCL Data Command + *-----------------------------------------------------------------*/ + + typedef enum { HTT_TX_FW2WBM_TX_STATUS_OK, HTT_TX_FW2WBM_TX_STATUS_DROP, diff --git a/fw/htt_stats.h b/fw/htt_stats.h index c7222d1262af..5bd300678e6f 100644 --- a/fw/htt_stats.h +++ b/fw/htt_stats.h @@ -5097,7 +5097,10 @@ typedef struct { htt_tlv_hdr_t tlv_hdr; /** Represents the count for 11BN DL MU OFDMA sequences */ A_UINT32 bn_mu_ofdma_sch_nusers[HTT_TX_PDEV_STATS_NUM_BN_OFDMA_USER_STATS]; -} htt_stats_tx_pdev_bn_dl_mu_ofdma_tlv; +} htt_stats_tx_pdev_bn_dl_mu_ofdma_stats_tlv; +/* preserve old name alias for new name consistent with the tag name */ +typedef htt_stats_tx_pdev_bn_dl_mu_ofdma_stats_tlv + htt_stats_tx_pdev_bn_dl_mu_ofdma_tlv; typedef struct { htt_tlv_hdr_t tlv_hdr; @@ -5162,7 +5165,10 @@ typedef struct { /** * TODO_BORON_OFDMA : Add array for BN_BRP number of users */ -} htt_stats_tx_pdev_bn_ul_mu_ofdma_tlv; +} htt_stats_tx_pdev_bn_ul_mu_ofdma_stats_tlv; +/* preserve old name alias for new name consistent with the tag name */ +typedef htt_stats_tx_pdev_bn_ul_mu_ofdma_stats_tlv + htt_stats_tx_pdev_bn_ul_mu_ofdma_tlv; typedef struct { htt_tlv_hdr_t tlv_hdr; @@ -5353,6 +5359,17 @@ typedef struct { htt_tlv_hdr_t tlv_hdr; A_UINT32 htt_stats_type; } htt_stats_error_tlv_v; +/* Multiple TLV tag values + * (HTT_STATS_UNSUPPORTED_ERROR_STATS_TAG, + * HTT_STATS_UNAVAILABLE_ERROR_STATS_TAG) + * correspond to this htt_stats_error_tlv_v struct. + * Provide aliases that have the expected names + * that are consistent with the TLV tag enum names. + */ +typedef htt_stats_error_tlv_v + htt_stats_unsupported_error_stats_tlv; +typedef htt_stats_error_tlv_v + htt_stats_unavailable_error_stats_tlv; typedef enum { HTT_SCHED_TID_SKIP_SCHED_MASK_DISABLED = 0, /* Skip the tid when WAL_TID_DISABLE_TX_SCHED_MASK is true */ @@ -5502,7 +5519,10 @@ typedef struct { * Indexed by htt_sched_txq_combined_seq_status_tlv_enum. */ HTT_STATS_VAR_LEN_ARRAY1(A_UINT32, combined_seq_state); -} htt_stats_sched_txq_combined_seq_state_tlv; +} htt_stats_txq_combined_seq_state_tlv; +/* preserve old name alias for new name consistent with the tag name */ +typedef htt_stats_txq_combined_seq_state_tlv + htt_stats_sched_txq_combined_seq_state_tlv; typedef struct { htt_tlv_hdr_t tlv_hdr; @@ -10994,7 +11014,10 @@ typedef struct { A_UINT32 mu_grp_candidate_skip_1ss [HTT_TX_PDEV_STATS_NUM_UL_MUMIMO_USER_STATS] [HTT_STATS_CANDIDATE_SKIP_REASON_MAX]; -} htt_stats_pdev_ulmumimo_grp_stats_tlv; +} htt_stats_pdev_ul_mumimo_grp_stats_tlv; +/* preserve old name alias for new name consistent with the tag name */ +typedef htt_stats_pdev_ul_mumimo_grp_stats_tlv + htt_stats_pdev_ulmumimo_grp_stats_tlv; typedef struct { htt_tlv_hdr_t tlv_hdr; @@ -11005,7 +11028,10 @@ typedef struct { A_UINT32 trig_bitmap_fail_cnt; /* Num of times peer denylisted due to trigger consecutive failure */ A_UINT32 trig_consecutive_fail_cnt; -} htt_stats_pdev_ulmumimo_denylist_stats_tlv; +} htt_stats_pdev_ul_mumimo_denylist_stats_tlv; +/* preserve old name alias for new name consistent with the tag name */ +typedef htt_stats_pdev_ul_mumimo_denylist_stats_tlv + htt_stats_pdev_ulmumimo_denylist_stats_tlv; #define HTT_STATS_SEQ_EFFICIENCY_HISTOGRAM 10 typedef struct { @@ -11042,7 +11068,10 @@ typedef struct { * for low traffic classification */ A_UINT32 num_terminate_seq_low_traffic; -} htt_stats_pdev_ulmumimo_seq_term_stats_tlv; +} htt_stats_pdev_ul_mumimo_seq_term_stats_tlv; +/* preserve old name alias for new name consistent with the tag name */ +typedef htt_stats_pdev_ul_mumimo_seq_term_stats_tlv + htt_stats_pdev_ulmumimo_seq_term_stats_tlv; #define HTT_STATS_MAX_ULMUMIMO_TRIGGERS 6 #define HTT_STATS_TXOP_HISTOGRAM_BINS 24 @@ -11070,7 +11099,10 @@ typedef struct { * Checks for 8 eligible instances of ULMUMIMO in the past 32 instances. */ A_UINT32 history_ineligibility; -} htt_stats_pdev_ulmumimo_hist_ineligibility_tlv; +} htt_stats_pdev_ul_mumimo_hist_ineligibility_tlv; +/* preserve old name alias for new name consistent with the tag name */ +typedef htt_stats_pdev_ul_mumimo_hist_ineligibility_tlv + htt_stats_pdev_ulmumimo_hist_ineligibility_tlv; /* RTT VREG MASK */ @@ -16473,7 +16505,10 @@ typedef struct { psd_power_freq_pair[HTT_STATS_REG_POWER_INFO_6G_MAX_SUBBANDS]; htt_stats_reg_freq_power_pair_t eirp_power_freq_pair[HTT_STATS_REG_POWER_INFO_6G_MAX_SUBBANDS]; -} htt_stats_reg_6g_ch_power_info_tlv; +} htt_stats_reg_6g_ch_pwr_info_tlv; +/* preserve old name alias for new name consistent with the tag name */ +typedef htt_stats_reg_6g_ch_pwr_info_tlv + htt_stats_reg_6g_ch_power_info_tlv; #define HTT_STATS_REG_6G_GET_POWER_TYPE(word) \ HTT_STATS_GET_FIELD(0xFF, 0, (word)) From a2d30225d0d8a07a05417a7d2bc2c97564467e99 Mon Sep 17 00:00:00 2001 From: spuligil Date: Fri, 17 Apr 2026 18:03:56 -0700 Subject: [PATCH 2/2] fw-api: CL 32280322 - update fw common interface files Change-Id: I125186f3e769b153988e593d3938a8516ea65b90 CRs-Fixed: 3830439 --- fw/wmi_unified.h | 85 ++++++++++++++++++++++++++++-------------------- fw/wmi_version.h | 2 +- 2 files changed, 51 insertions(+), 36 deletions(-) diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index 4fd435bdbe62..e75558a9426a 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -38537,9 +38537,13 @@ typedef enum { } WMI_PDEV_POWER_DATAPATH_STATS_OPERATION; typedef enum { - WMI_PDEV_POWER_STATS_TYPE = 0x00000001, - WMI_PDEV_DATAPATH_STATS_TYPE = 0x00000002, - WMI_PDEV_POWER_DATAPATH_STATS_ALL = 0x00000003, + WMI_PDEV_POWER_STATS_TYPE = 0x00000001, + WMI_PDEV_DATAPATH_STATS_TYPE = 0x00000002, + WMI_PDEV_POWER_DATAPATH_STATS_ALL = 0x00000003, + WMI_PDEV_SOC_POWER_STATS_TYPE = 0x00000004, + WMI_PDEV_SOC_POWER_DATAPATH_STATS_ALL = 0x00000005, + + WMI_PDEV_STATS_TYPE_MAX, } WMI_PDEV_POWER_DATAPATH_STATS_TYPE; @@ -38790,47 +38794,58 @@ typedef struct { /* Power stats in event payload*/ typedef struct { - /** Power Statistics */ - A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_pdev_power_stats_info */ + /** Power Statistics */ + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_pdev_power_stats_info */ - /** Common element - core_index (PDEV ID) */ - A_UINT32 core_index; + /** Common element - core_index (PDEV ID) */ + A_UINT32 core_index; - A_UINT32 radio_on_time; /* Time radio was on (ms) */ - A_UINT32 radio_off_time; /* Time radio was off (ms) */ - A_UINT32 wlan_pwr_on_time; /* WLAN power on time (ms) */ - /* tx_time: - * ms duration the radio is in a continuous transmit state - * encompassing all packet types (management, data, action frames) - */ - A_UINT32 tx_time; - /* rx_time: - * ms duration the radio is in a continuous receiving data state - * Including all Rx packets instead of only collecting for my BSS data - */ - A_UINT32 rx_time; + A_UINT32 radio_on_time; /* Time radio was on (ms) */ + A_UINT32 radio_off_time; /* Time radio was off (ms) */ + A_UINT32 wlan_pwr_on_time; /* WLAN power on time (ms) */ + /* tx_time: + * ms duration the radio is in a continuous transmit state + * encompassing all packet types (management, data, action frames) + */ + A_UINT32 tx_time; + /* rx_time: + * ms duration the radio is in a continuous receiving data state + * Including all Rx packets instead of only collecting for my BSS data + */ + A_UINT32 rx_time; - /* Number of sleep levels being sent to the host */ - A_UINT32 sleep_levels_num; - A_UINT32 sleep_time_per_levels[WMI_MAX_SLEEP_LEVELS]; /* ms */ + /* Number of sleep levels being sent to the host */ + A_UINT32 sleep_levels_num; + A_UINT32 sleep_time_per_levels[WMI_MAX_SLEEP_LEVELS]; /* ms */ } wmi_pdev_power_stats_info; typedef struct { - A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_pdev_power_datapath_stats_event_fixed_param */ + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_pdev_power_datapath_stats_event_fixed_param */ - /** Status of the operation */ - A_UINT32 status; /* 0 = success, non-zero = error */ + /** Status of the operation */ + A_UINT32 status; /* 0 = success, non-zero = error */ - /** Stats type bitmap indicating which stats are included */ - A_UINT32 stats_type_bitmap; + /** Stats type bitmap indicating which stats are included */ + A_UINT32 stats_type_bitmap; - /* - * Following this structure are the TLVs: - * wmi_pdev_power_stats_info[num_cores]; - * wmi_pdev_tx_rate_info[num_tx_rate_info] - * where num_cores and num_tx_rate_info are determined from the TLV array - * (i.e. array size / array element size) - */ + A_UINT32 wlan_soc_pwr_on_time; /* WLAN power on time (ms) */ + + /* wlan_soc_sleep_levels_num: + * Number of sleep levels supported. + * Could be less than WMI_MAX_SLEEP_LEVELS based on the chip. + */ + A_UINT32 wlan_soc_sleep_levels_num; + + /** soc sleep level. Same WMI_MAX_SLEEP_LEVELS is used for sizing */ + A_UINT32 wlan_soc_sleep_time_per_level[WMI_MAX_SLEEP_LEVELS]; /* ms */ + + /* + * Following this structure are the TLVs: + * wmi_pdev_power_stats_info[num_cores]; + * wmi_pdev_tx_rate_info[num_tx_rate_info] + * where num_cores and num_tx_rate_info are determined from the TLV array + * (i.e. array size / array element size) + */ } wmi_pdev_power_datapath_stats_event_fixed_param; diff --git a/fw/wmi_version.h b/fw/wmi_version.h index f8ef4b026c67..8641a3f2f8f0 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_ 1744 +#define __WMI_REVISION_ 1745 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work