From a658a3e851edab72c2c2e823f7e0b8d6e9dcb00b Mon Sep 17 00:00:00 2001 From: spuligil Date: Thu, 26 Feb 2026 12:05:45 -0800 Subject: [PATCH] fw-api: CL 31823693 - update fw common interface files Change-Id: Id33fe14e75f68143e9001cf77cb8d369dab673c2 CRs-Fixed: 3830439 --- fw/htt.h | 2 ++ fw/htt_stats.h | 87 +++++++++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 84 insertions(+), 5 deletions(-) diff --git a/fw/htt.h b/fw/htt.h index 03bee116c50b..87efcf7a49b3 100644 --- a/fw/htt.h +++ b/fw/htt.h @@ -919,6 +919,8 @@ typedef enum { 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_CTL_TAG = 258, /* htt_stats_ctl_tlv */ + HTT_STATS_ENHANCED_CTL_TAG = 259, /* htt_stats_enhanced_ctl_tlv */ HTT_STATS_MAX_TAG, } htt_stats_tlv_tag_t; diff --git a/fw/htt_stats.h b/fw/htt_stats.h index 043df2598a57..a20cd8759a36 100644 --- a/fw/htt_stats.h +++ b/fw/htt_stats.h @@ -916,12 +916,17 @@ enum htt_dbg_ext_stats_type { * RESP Tags: * - htt_stats_regdb_ctry_tlv * - htt_stats_regdb_regdomain_tlv * n (based on config_param1) - * else if(subtype == HTT_STATS_REGULATORY_SUBTYPE_6GHZ): + * else if (subtype == HTT_STATS_REGULATORY_SUBTYPE_6GHZ): * no params * RESP Tags: * - htt_stats_reg_6g_tlv * - htt_stats_reg_6g_ch_power_info_tlv * n * - htt_stats_reg_6g_oobe_tlv + * else if (subtype == HTT_STATS_REGULATORY_SUBTYPE_CTL): + * no params + * RESP Tags: + * - htt_stats_ctl_tlv + * - htt_stats_enhanced_ctl_tlv */ HTT_DBG_EXT_STATS_REGULATORY = 83, @@ -15957,6 +15962,7 @@ typedef struct { typedef enum { HTT_STATS_REGULATORY_SUBTYPE_REGDB = 0, HTT_STATS_REGULATORY_SUBTYPE_6GHZ = 1, + HTT_STATS_REGULATORY_SUBTYPE_CTL = 2, HTT_STATS_REGULATORY_SUBTYPE_MAX } htt_stats_regulatory_subtype_t; @@ -16112,10 +16118,10 @@ typedef struct { A_UINT32 rd_type; /* enum htt_stats_regulatory_rd_type */ union { struct { - A_UINT32 ctl_region : 8, /* enum RegdbCtl */ - cca_region : 8, /* enum CCA_REGION_MAP */ - dfs_region : 8, /* enum WMI_REG_DFS_REGION */ - rsvd : 8; + A_UINT32 ctl_region : 8, /* enum RegdbCtl */ + cca_region : 8, /* enum CCA_REGION_MAP */ + dfs_region : 8, /* enum WMI_REG_DFS_REGION */ + domain_ctl_index : 8; }; A_UINT32 ctl_cca_dfs; }; @@ -16150,6 +16156,12 @@ typedef struct { #define HTT_STATS_REGDB_REGDOMAIN_SET_DFS_REGION(word,value) \ HTT_STATS_SET_FIELD(0xFF0000, 16, (word), (value)) +#define HTT_STATS_REGDB_REGDOMAIN_GET_DOMAIN_CTL_INDEX(word) \ + HTT_STATS_GET_FIELD(0xFF000000, 24, (word)) +#define HTT_STATS_REGDB_REGDOMAIN_SET_DOMAIN_CTL_INDEX(word,value) \ + HTT_STATS_SET_FIELD(0xFF000000, 24, (word), (value)) + + #define HTT_STATS_REGDB_REGDOMAIN_GET_NUM_RULES(word) \ HTT_STATS_GET_FIELD(0xFFFF, 0, (word)) #define HTT_STATS_REGDB_REGDOMAIN_SET_NUM_RULES(word,value) \ @@ -16355,6 +16367,71 @@ typedef struct { #define HTT_STATS_REG_6G_SET_OOBE_LIMIT_PSD(word,value) \ HTT_STATS_SET_FIELD(0xFFFF0000, 16, (word), (value)) + +typedef struct { + htt_tlv_hdr_t tlv_hdr; + A_INT32 array_gain_cap[HTT_STATS_MAX_CHAINS * ((HTT_STATS_MAX_CHAINS/2)+1)]; + union { + struct { + A_UINT32 + /** To indicate Reg rule Index picked from Reg rules */ + regRuleIndex:16, + /** To indicate Power rule Index picked from Reg rules */ + powerRuleIndex:8, + reserved:8; + }; + A_UINT32 ctl_args; + }; +} htt_stats_ctl_tlv; + +#define HTT_STATS_CTL_GET_REG_RULE_INDEX(word) \ + HTT_STATS_GET_FIELD(0x0000FFFF, 0, (word)) +#define HTT_STATS_CTL_SET_REG_RULE_INDEX(word,value) \ + HTT_STATS_SET_FIELD(0x0000FFFF, 0, (word), (value)) + +#define HTT_STATS_CTL_GET_POWER_RULE_INDEX(word) \ + HTT_STATS_GET_FIELD(0x00FF0000, 16, (word)) +#define HTT_STATS_CTL_SET_POWER_RULE_INDEX(word,value) \ + HTT_STATS_SET_FIELD(0x00FF0000, 16, (word), (value)) + + +typedef struct { + htt_tlv_hdr_t tlv_hdr; + union { + struct { + A_UINT32 + /** To indicate enablement of enhanced CTL */ + enhancedCtlEnable:1, + rsvd:7, + domainCtlIndex:8, /** Domain CTL Index */ + array_gain_cap_ctlRegion:8, /** Array gain CapCTLregion */ + exceptionCtlRegion:8; /** Exception CTL region */ + }; + A_UINT32 enhanced_ctl_args; + }; +} htt_stats_enhanced_ctl_tlv; + +#define HTT_STATS_ENHANCED_CTL_GET_ENHANCED_CTL_ENABLE(word) \ + HTT_STATS_GET_FIELD(0x00000001, 0, (word)) +#define HTT_STATS_ENHANCED_CTL_SET_ENHANCED_CTL_ENABLE(word,value) \ + HTT_STATS_SET_FIELD(0x00000001, 0, (word), (value)) + +#define HTT_STATS_ENHANCED_CTL_GET_DOMAIN_CTL_INDEX(word) \ + HTT_STATS_GET_FIELD(0x0000FF00, 8, (word)) +#define HTT_STATS_ENHANCED_CTL_SET_DOMAIN_CTL_INDEX(word,value) \ + HTT_STATS_SET_FIELD(0x0000FF00, 8, (word), (value)) + +#define HTT_STATS_ENHANCED_CTL_GET_ARRAY_GAIN_CAP_CTL_REGION(word) \ + HTT_STATS_GET_FIELD(0x00FF0000, 16, (word)) +#define HTT_STATS_ENHANCED_CTL_SET_ARRAY_GAIN_CAP_CTL_REGION(word,value) \ + HTT_STATS_SET_FIELD(0x00FF0000, 16, (word), (value)) + +#define HTT_STATS_ENHANCED_CTL_GET_EXCEPTION_CTL_REGION(word) \ + HTT_STATS_GET_FIELD(0xFF000000, 24, (word)) +#define HTT_STATS_ENHANCED_CTL_SET_EXCEPTION_CTL_REGION(word,value) \ + HTT_STATS_SET_FIELD(0xFF000000, 24, (word), (value)) + + /*======================= End Regulatory stats ==================== } */ /*