From beb514eec232f988675be85feb9231c330178fdd Mon Sep 17 00:00:00 2001 From: spuligil Date: Fri, 21 Nov 2025 12:02:06 -0800 Subject: [PATCH] fw-api: CL 31021605 - update fw common interface files Change-Id: Ib4e42d837b9746ce12b65e3697359615f044ee9a CRs-Fixed: 3830439 --- fw/wmi_services.h | 1 + fw/wmi_tlv_defs.h | 8 ++++++- fw/wmi_unified.h | 54 +++++++++++++++++++++++++++++++++++++++++++++++ fw/wmi_version.h | 2 +- 4 files changed, 63 insertions(+), 2 deletions(-) diff --git a/fw/wmi_services.h b/fw/wmi_services.h index 705dcff7ec06..6ba4f4c06cd7 100644 --- a/fw/wmi_services.h +++ b/fw/wmi_services.h @@ -744,6 +744,7 @@ typedef enum { WMI_SERVICE_CFR_UNASSOC_RX_CAPTURE_SUPPORT = 480, /* Indicates FW supports RX-based unassociated CFR capture */ WMI_SERVICE_CFR_ASSOC_TX_CAPTURE_SUPPORT = 481, /* Indicates FW supports TX-based CFR capture */ WMI_SERVICE_VDEV_UNIFIED_CONNECT_DISCONNECT_SUPPORT = 482, /* Indicates FW support for unified connect and disconnect vdev cmds for link switch */ + WMI_SERVICE_ENHANCED_STATS_SUPPORT = 483, /* Indicates FW supports "enhanced stats" */ WMI_MAX_EXT2_SERVICE diff --git a/fw/wmi_tlv_defs.h b/fw/wmi_tlv_defs.h index d8d8183cc5e7..871590bb4e78 100644 --- a/fw/wmi_tlv_defs.h +++ b/fw/wmi_tlv_defs.h @@ -1535,6 +1535,9 @@ typedef enum { WMITLV_TAG_STRUC_wmi_vdev_unified_disconnect_cmd_fixed_param, WMITLV_TAG_STRUC_wmi_vdev_unified_connect_event_fixed_param, WMITLV_TAG_STRUC_wmi_vdev_unified_disconnect_event_fixed_param, + WMITLV_TAG_STRUC_wmi_vdev_beacon_stats, + WMITLV_TAG_STRUC_wmi_vdev_congestion_stats, + WMITLV_TAG_STRUC_wmi_vdev_data_stats, } WMITLV_TAG_ID; /* * IMPORTANT: Please add _ALL_ WMI Commands Here. @@ -7719,7 +7722,10 @@ WMITLV_CREATE_PARAM_STRUC(WMI_PEER_STATS_INFO_EVENTID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_ctrl_path_pdev_bcn_tx_stats_struct, ctrl_path_pdev_bcn_tx_stats, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_ctrl_path_pdev_conn_stats_struct, ctrl_path_pdev_conn_stats, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_ctrl_path_ml_rcfg_stats_struct, ctrl_path_ml_rcfg_stats, WMITLV_SIZE_VAR) \ - 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_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_CREATE_PARAM_STRUC(WMI_CTRL_PATH_STATS_EVENTID); /* diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index 3c148d3ba5d3..33572d9c2615 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -37975,6 +37975,7 @@ typedef enum { WMI_REQUEST_CTRL_PATH_PDEV_CONN_STAT = 21, WMI_REQUEST_CTRL_PATH_ML_RECONFIG_STAT = 22, WMI_REQUEST_CTRL_PATH_STA_DAR_STAT = 23, + WMI_REQUEST_ENHANCED_STAT = 24, } wmi_ctrl_path_stats_id; typedef enum { @@ -47224,6 +47225,59 @@ typedef struct { } wmi_cfr_capture_filter_resp_event_fixed_param; +/* max beacon bmiss bitmask array size, in 32-bit words */ +#define WMI_MAX_BCN_BMISS_HISTORY_LENGTH 8 + +/* max MCS counters supported for enhance stats */ +#define WMI_ENHANCE_STATS_MAX_MCS_COUNTERS 16 + +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_vdev_beacon_stats */ + A_UINT32 vdev_id; /* ID of the vdev these beacon stats are from */ + /* length: + * Number of A_UINT32 elements within the bmiss_bitmask array which + * contain valid data. + * Array elements beyond this limit should be ignored. + */ + A_UINT32 length; + /* bmiss_bitmask: + * Beacon miss bitmask indicating which beacons got missed from up to + * the last 255 expected beacons (32*8 bits). + * Only bmiss_bitmask[0] through bmiss_bitmask[length-1] (inclusive) + * contain valid data. + */ + A_UINT32 bmiss_bitmask[WMI_MAX_BCN_BMISS_HISTORY_LENGTH]; +} wmi_vdev_beacon_stats; + +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_qdata_congestion_stats */ + A_UINT32 vdev_id; /* ID of the vdev these congestion stats are from */ + /* cca_busy_time: + * Number of milliseconds during which CCA is busy, + * out of total time spent on the channel + */ + A_UINT32 cca_busy_time; + /* on_time: + * Total time in milliseconds for which we were on the channel + * and monitored + */ + A_UINT32 on_time; +} wmi_vdev_congestion_stats; + +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_vdev_data_stats */ + A_UINT32 vdev_id; /* ID of the vdev these data stats are from */ + /* Set of TX MCS counters for data PPDUs */ + A_UINT32 tx_mcs_data_ppdu[WMI_ENHANCE_STATS_MAX_MCS_COUNTERS]; + /* Set of TX BW counters for data PPDUs */ + A_UINT32 tx_bw_data_ppdu[WMI_STATS_EXT_EVENT_VDEV_EXT_BW_COUNTERS_MAX]; + /* Set of RX MCS counters for data PPDUs */ + A_UINT32 rx_mcs_data_ppdu[WMI_ENHANCE_STATS_MAX_MCS_COUNTERS]; + /* Set of RX BW counters for data PPDUs */ + A_UINT32 rx_bw_data_ppdu[WMI_STATS_EXT_EVENT_VDEV_EXT_BW_COUNTERS_MAX]; +} wmi_vdev_data_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 b70d34142501..2a631cbb504a 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_ 1677 +#define __WMI_REVISION_ 1678 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work