From fe2013a1c608b0efc2eb5bdb68c5c100d64fa774 Mon Sep 17 00:00:00 2001 From: spuligil Date: Wed, 17 Dec 2025 12:01:43 -0800 Subject: [PATCH 1/4] fw-api: CL 31184747 - update fw common interface files Change-Id: I0073de38d656d38f3535d5efe5d55823c97fb367 CRs-Fixed: 3830439 --- fw/wmi_unified.h | 13 +++++++++++++ fw/wmi_version.h | 2 +- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index cbf8aca631ef..f4016f0f5c5a 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -23006,6 +23006,19 @@ typedef struct { * If per_chain_noise_floor value is 0 then it should be ignored. */ A_UINT32 per_chain_noise_floor[WMI_MAX_CHAINS]; + /** + * FW will update the Noise Floor in dBr and send it to host + * if this field is set then host will display NF value in dBr + */ + A_UINT32 nf_db_is_valid; + /** + * Noise Floor (NF) value in dBr. If the NF is not converged then + * NF value is returned as 0 to host. Theoretical minimum NF value + * is -101 dB for 20 MHz bandwidth and the max value can be 0. + * PHY reports 0 incase of very high NF values. + * This field should be ignored unless the nf_db_is_valid flag is set. + */ + A_UINT32 noise_floor_in_db; /** * Following this structure is the optional TLV: diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 9396537c897a..08a172601ed1 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_ 1683 +#define __WMI_REVISION_ 1684 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From 9a2d97b2eb8cfbb268c87104f75b9e1d3eb2e7e2 Mon Sep 17 00:00:00 2001 From: spuligil Date: Wed, 17 Dec 2025 12:04:12 -0800 Subject: [PATCH 2/4] fw-api: CL 31184750 - update fw common interface files Change-Id: I610b95360bfeb3320d91fd7b4be2944dfaca1d93 CRs-Fixed: 3830439 --- fw/htt_stats.h | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/fw/htt_stats.h b/fw/htt_stats.h index 993385b7c706..eb3fc67cfd32 100644 --- a/fw/htt_stats.h +++ b/fw/htt_stats.h @@ -3515,6 +3515,36 @@ typedef enum { HTT_RU_ALLOC_NUM_MODES } HTT_RU_ALLOC_MODE; +typedef enum { + HTT_TX_PDEV_STATS_BN_DRU_SIZE_26, + HTT_TX_PDEV_STATS_BN_DRU_SIZE_52, + HTT_TX_PDEV_STATS_BN_DRU_SIZE_106, + HTT_TX_PDEV_STATS_BN_DRU_SIZE_242, + HTT_TX_PDEV_STATS_BN_DRU_SIZE_484, + + HTT_TX_PDEV_STATS_NUM_BN_DRU_SIZE_COUNTERS +} HTT_TX_PDEV_STATS_BN_DRU_SIZE; + +typedef enum { + HTT_BN_UL_OFDMA_RRU_ONLY_ALLOC_MODE, + HTT_BN_UL_OFDMA_DRU_ONLY_ALLOC_MODE, + HTT_BN_UL_OFDMA_HYBRID_RU_ALLOC_MODE, + + /* Reserving additional modes for future use */ + HTT_BN_UL_OFDMA_RU_ALLOC_MODE_RESERVED_1, + HTT_BN_UL_OFDMA_RU_ALLOC_MODE_RESERVED_2, + + HTT_BN_UL_OFDMA_NUM_RU_ALLOC_MODES +} HTT_BN_UL_OFDMA_RU_ALLOC_MODE; + +typedef enum { + HTT_BN_UL_OFDMA_DRU_SBW_20MHZ, + HTT_BN_UL_OFDMA_DRU_SBW_40MHZ, + HTT_BN_UL_OFDMA_DRU_SBW_80MHZ, + + HTT_BN_UL_OFDMA_NUM_DRU_SBW_COUNT +} HTT_BN_UL_OFDMA_DRU_SBW_SIZE; + typedef struct { htt_tlv_hdr_t tlv_hdr; @@ -3829,6 +3859,9 @@ typedef struct { A_UINT32 manual_bn_mu_ulofdma_basic_trigger[HTT_NUM_AC_WMM]; /** 11BN UHR Manual Multi-User UL OFDMA Trigger completed with error(s) */ A_UINT32 manual_bn_mu_ulofdma_basic_trigger_err[HTT_NUM_AC_WMM]; + + /** 11BN UHR UL OFDMA RU allocation mode */ + A_UINT32 bn_basic_trig_ru_alloc_mode[HTT_BN_UL_OFDMA_NUM_RU_ALLOC_MODES]; } htt_stats_tx_selfgen_bn_tlv; typedef struct { /* DEPRECATED */ @@ -7727,6 +7760,11 @@ typedef struct { * response to basic trigger. Typically a data response is expected. */ A_UINT32 bn_ul_ofdma_basic_trigger_rx_qos_null_only; + + /* UL OFDMA DRU spreading BW size */ + A_UINT32 bn_ul_ofdma_rx_dru_sbw[HTT_BN_UL_OFDMA_NUM_DRU_SBW_COUNT]; + /* UL OFDMA DRU size of data PPDU */ + A_UINT32 bn_rx_ulofdma_data_dru_size_ppdu[HTT_TX_PDEV_STATS_NUM_BN_DRU_SIZE_COUNTERS]; } htt_stats_rx_pdev_be_bn_ul_trig_tlv; /* preserve old names as aliases */ typedef htt_stats_rx_pdev_be_bn_ul_trig_tlv @@ -9534,6 +9572,9 @@ typedef struct { /* PER stats for iMCS 1.1, 3.1, 4.1, 7.1 */ htt_tx_rate_stats_t per_mcs_ext_3[HTT_TX_PDEV_STATS_NUM_EXTRA3_MCS_COUNTERS]; + + /* PER stats per DRU size */ + htt_tx_rate_stats_t per_dru[HTT_TX_PDEV_STATS_NUM_BN_DRU_SIZE_COUNTERS]; } htt_stats_per_rate_stats_tlv; /* preserve old name alias for new name consistent with the tag name */ typedef htt_stats_per_rate_stats_tlv htt_tx_rate_stats_per_tlv; From dd1a0ccd00c59e52f50d4b669b276a1f174626e3 Mon Sep 17 00:00:00 2001 From: spuligil Date: Wed, 17 Dec 2025 12:07:34 -0800 Subject: [PATCH 3/4] fw-api: CL 31209256 - update fw common interface files Change-Id: I6504dacf6dc37457710e25d7af7206943d8a9024 CRs-Fixed: 3830439 --- fw/wlan_module_ids.h | 1 + 1 file changed, 1 insertion(+) diff --git a/fw/wlan_module_ids.h b/fw/wlan_module_ids.h index 6ccf2d652f95..fc65f819f510 100644 --- a/fw/wlan_module_ids.h +++ b/fw/wlan_module_ids.h @@ -198,6 +198,7 @@ typedef enum { WLAN_MODULE_OPT_DATA, /* 0x9a */ WLAN_MODULE_ASD, /* 0x9b */ WLAN_MODULE_ENERGY_MGMT, /* 0x9c */ + WLAN_MODULE_SMD, /* 0x9d */ WLAN_MODULE_ID_MAX, WLAN_MODULE_ID_INVALID = WLAN_MODULE_ID_MAX, From 531f3c19ffe2669c6bd3907088abe23e813dcbbd Mon Sep 17 00:00:00 2001 From: spuligil Date: Wed, 17 Dec 2025 12:09:16 -0800 Subject: [PATCH 4/4] fw-api: CL 31209257 - update fw common interface files Change-Id: I62d6ecad767301dcdb708e865967f54f800330b8 CRs-Fixed: 3830439 --- fw/wmi_tlv_defs.h | 4 +++- fw/wmi_unified.h | 30 ++++++++++++++++++++++++++++++ fw/wmi_version.h | 2 +- 3 files changed, 34 insertions(+), 2 deletions(-) diff --git a/fw/wmi_tlv_defs.h b/fw/wmi_tlv_defs.h index 871590bb4e78..97bdb4d1d8d6 100644 --- a/fw/wmi_tlv_defs.h +++ b/fw/wmi_tlv_defs.h @@ -1538,6 +1538,7 @@ typedef enum { WMITLV_TAG_STRUC_wmi_vdev_beacon_stats, WMITLV_TAG_STRUC_wmi_vdev_congestion_stats, WMITLV_TAG_STRUC_wmi_vdev_data_stats, + WMITLV_TAG_STRUC_wmi_em_pcie_stats, } WMITLV_TAG_ID; /* * IMPORTANT: Please add _ALL_ WMI Commands Here. @@ -7725,7 +7726,8 @@ WMITLV_CREATE_PARAM_STRUC(WMI_PEER_STATS_INFO_EVENTID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_ctrl_path_sta_dar_stats_struct, ctrl_path_sta_dar_stats, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_vdev_beacon_stats, vdev_beacon_stats, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_vdev_congestion_stats, vdev_congestion_stats, WMITLV_SIZE_VAR) \ - WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_vdev_data_stats, vdev_data_stats, WMITLV_SIZE_VAR) + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_vdev_data_stats, vdev_data_stats, WMITLV_SIZE_VAR) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_em_pcie_stats, ctrl_path_em_pcie_stats, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_CTRL_PATH_STATS_EVENTID); /* diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index f4016f0f5c5a..f5c3c72ac8df 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -38054,6 +38054,7 @@ typedef enum { WMI_REQUEST_CTRL_PATH_ML_RECONFIG_STAT = 22, WMI_REQUEST_CTRL_PATH_STA_DAR_STAT = 23, WMI_REQUEST_ENHANCED_STAT = 24, + WMI_REQUEST_CTRL_PATH_EM_PCIE_STAT = 25, } wmi_ctrl_path_stats_id; typedef enum { @@ -47356,6 +47357,35 @@ typedef struct { } wmi_vdev_data_stats; +#define WMI_EM_PCIE_MAX_CHIP 4 +#define WMI_EM_PCIE_MAX_NUM_MAC 3 + +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_em_pcie_stats */ + A_UINT32 is_cumac; /* set to '1' if SoC has CUMAC, else set to '0' */ + A_UINT32 enable; /* set to '1' if feature enable, else set to '0' */ + A_UINT32 config_type; /* feature configuration type */ + /* mlo_partner_chip_bw: + * MLO partner chip BW information, represented as a FW-internal BW enum + * (Thus, this field is intended only for interactive debugging, and not + * for interpretation by the host SW.) + */ + A_UINT32 mlo_partner_bw[WMI_EM_PCIE_MAX_CHIP]; + /* mlo_partner_nss: MLO partner chip NSS information */ + A_UINT32 mlo_partner_nss[WMI_EM_PCIE_MAX_CHIP]; + /* pdev_bw: + * Per PDEV BW, represented as a FW-internal BW enum + * (Thus, this field is intended only for interactive debugging, and not + * for interpretation by the host SW.) + */ + A_UINT32 pdev_bw[WMI_EM_PCIE_MAX_NUM_MAC]; + A_UINT32 curr_pcie_gen; /* current PCIe generation number */ + A_UINT32 curr_pcie_lanes; /* current number of PCIe lanes */ + A_UINT32 pending_pcie_gen; /* pending PCIe generation number */ + A_UINT32 pending_pcie_lanes; /* pending number of PCIe lanes */ +} wmi_em_pcie_stats; + + #define WMI_UNIFIED_CHAIN_PHASE_MASK 0x0000ffff #define WMI_UNIFIED_CHAIN_PHASE_GET(tlv, chain_idx) \ ((A_UINT16) ((tlv)->chain_phase[chain_idx] & WMI_UNIFIED_CHAIN_PHASE_MASK)) diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 08a172601ed1..86041e35cff8 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_ 1684 +#define __WMI_REVISION_ 1685 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work