From 1c6d12855dcffdfc8c22861a26ec4b4d3b6a12c1 Mon Sep 17 00:00:00 2001 From: spuligil Date: Sat, 18 Apr 2026 18:01:49 -0700 Subject: [PATCH] fw-api: CL 32290054 - update fw common interface files Change-Id: I83ff29000fadbd95de529b1d203579b7fd05a844 CRs-Fixed: 3830439 --- fw/wmi_services.h | 5 ++ fw/wmi_tlv_defs.h | 17 +++++++ fw/wmi_unified.h | 115 ++++++++++++++++++++++++++++++++++++++++++++-- fw/wmi_version.h | 2 +- 4 files changed, 135 insertions(+), 4 deletions(-) diff --git a/fw/wmi_services.h b/fw/wmi_services.h index 6fc95d2b5a83..9d606f3a3792 100644 --- a/fw/wmi_services.h +++ b/fw/wmi_services.h @@ -781,6 +781,11 @@ typedef enum { /* Indicates FW support to perform Master migration when master peer gets deleted */ WMI_SERVICE_ML_PEER_MASTER_MIGRATION_SUPPORT = 500, WMI_SERVICE_NAN_AP_ASSISTED_DFS_OPERATION_SUPPORT = 501, /* Indicates FW supports NAN DFS operation */ + /* + * Indicates FW supports TDLS Stats command/event, + * used for sending TDLS connect info and TDLS data stats + */ + WMI_SERVICE_TDLS_STATS_SUPPORT = 502, WMI_MAX_EXT2_SERVICE diff --git a/fw/wmi_tlv_defs.h b/fw/wmi_tlv_defs.h index 3a87f1569949..690b606aface 100644 --- a/fw/wmi_tlv_defs.h +++ b/fw/wmi_tlv_defs.h @@ -1617,6 +1617,10 @@ typedef enum { WMITLV_TAG_STRUC_wmi_peer_uhr_omp_cmd_fixed_param, WMITLV_TAG_STRUC_wmi_peer_uhr_omp_npca_params, WMITLV_TAG_STRUC_wmi_nan_dfs_channel_availability_ind_event_fixed_param, + WMITLV_TAG_STRUC_wmi_request_tdls_stats_cmd_fixed_param, + WMITLV_TAG_STRUC_wmi_tdls_stats_event_fixed_param, + WMITLV_TAG_STRUC_wmi_tdls_connect_info_stats, + WMITLV_TAG_STRUC_wmi_tdls_data_stats, } WMITLV_TAG_ID; /* * IMPORTANT: Please add _ALL_ WMI Commands Here. @@ -2222,6 +2226,7 @@ typedef enum { OP(WMI_COEX_GET_POLICY_STATS_CMDID) \ OP(WMI_PDEV_SET_CUMAC_CHIP_CMDID) \ OP(WMI_PEER_UHR_OMP_CMDID) \ + OP(WMI_REQUEST_TDLS_STATS_CMDID) \ /* add new CMD_LIST elements above this line */ @@ -2587,6 +2592,7 @@ typedef enum { OP(WMI_PDEV_SET_CUMAC_CHIP_ID_CONFIRMATION_EVENTID) \ OP(WMI_NDP_CHANNEL_INFO_EVENTID) \ OP(WMI_NAN_DFS_CHANNEL_AVAILABILITY_IND_EVENTID) \ + OP(WMI_TDLS_STATS_EVENTID) \ /* add new EVT_LIST elements above this line */ @@ -5242,6 +5248,11 @@ WMITLV_CREATE_PARAM_STRUC(WMI_REQUEST_CTRL_PATH_STATS_CMDID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_FIXED_STRUC, wmi_mac_addr, mac_addr_list, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_REQUEST_HALPHY_CTRL_PATH_STATS_CMDID); +/* Request TDLS Stats cmd enabling the monitoring of TDLS stats */ +#define WMITLV_TABLE_WMI_REQUEST_TDLS_STATS_CMDID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_request_tdls_stats_cmd_fixed_param, wmi_request_tdls_stats_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) +WMITLV_CREATE_PARAM_STRUC(WMI_REQUEST_TDLS_STATS_CMDID); + /* Host sets the current country code */ #define WMITLV_TABLE_WMI_SET_CURRENT_COUNTRY_CMDID(id,op,buf,len) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_set_current_country_cmd_fixed_param, wmi_set_current_country_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) @@ -8149,6 +8160,12 @@ WMITLV_CREATE_PARAM_STRUC(WMI_HALPHY_CTRL_PATH_STATS_EVENTID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_radio_chan_stats, radio_chan_stats, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_RADIO_CHAN_STATS_EVENTID); +#define WMITLV_TABLE_WMI_TDLS_STATS_EVENTID(id, op, buf, len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_tdls_stats_event_fixed_param, wmi_tdls_stats_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_tdls_connect_info_stats, tdls_connect_info_stats, WMITLV_SIZE_VAR) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_tdls_data_stats, tdls_data_stats, WMITLV_SIZE_VAR) +WMITLV_CREATE_PARAM_STRUC(WMI_TDLS_STATS_EVENTID); + #define WMITLV_TABLE_WMI_PKGID_EVENTID(id, op, buf, len) \ WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_STRUC_wmi_pkgid_event_fixed_param, wmi_pkgid_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) WMITLV_CREATE_PARAM_STRUC(WMI_PKGID_EVENTID); diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index e75558a9426a..57f59038b254 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -1269,6 +1269,8 @@ typedef enum { /** request for HALPHY stats through ctrl path */ WMI_REQUEST_HALPHY_CTRL_PATH_STATS_CMDID, + /** request for TDLS connect info and TDLS data stats */ + WMI_REQUEST_TDLS_STATS_CMDID, /** ARP OFFLOAD REQUEST*/ WMI_SET_ARP_NS_OFFLOAD_CMDID = WMI_CMD_GRP_START_ID(WMI_GRP_ARP_NS_OFL), @@ -2439,6 +2441,9 @@ typedef enum { /** FW IPA link stats Event */ WMI_IPA_LINK_STATS_EVENTID, + /* TDLS Stats event having TDLS connect info and data stats */ + WMI_TDLS_STATS_EVENTID, + /* NLO specific events */ /** NLO match event after the first match */ @@ -16135,6 +16140,102 @@ typedef struct { */ } wmi_radio_chan_stats_event_fixed_param; +typedef enum { + WMI_TDLS_CHANNEL_SWITCH_FRAME_TX_RX = 0x0, + WMI_TDLS_BT_COEX_INDICATION = 0x1, +} wmi_tdls_connect_info_stats_reason_code; + +typedef enum { + WMI_TDLS_FRAME_SUBTYPE_REQUEST = 0x0, + WMI_TDLS_FRAME_SUBTYPE_RESPONSE = 0x1, +} wmi_tdls_connect_info_stats_subtype; + +typedef struct { + /** TLV tag and len; tag equals + * WMITLV_TAG_STRUC_wmi_tdls_connect_info_stats */ + A_UINT32 tlv_header; + /* type: + * Type of frame sent to the Peer, will be having value 4, + * i.e TDLS State change + */ + A_UINT32 type; + /* subtype: + * SubType of frame sent to the Peer, eg. req/resp, + * Takes values from enum wmi_tdls_connect_info_stats_subtype. + */ + A_UINT32 subtype; + /* reason_code: + * Reason code for the reason of sending this TLV, eg. for TDLS + * channel switch req/resp or for BT running indication + * Takes values from enum wmi_tdls_connect_info_stats_reason_code. + */ + A_UINT32 reason_code; + /* tx_rx: + * Indicates whether we are sender or receiver of this frame, + * 1 value means Tx, 0 value means Rx. + */ + A_UINT32 tx_rx; + /* Current operating channel frequency */ + A_UINT32 op_freq_mhz; + /* Peer MAC address for which this stats is being logged */ + wmi_mac_addr peer_mac_addr; + /* The timestamp at which the WMI event is reported. */ + A_UINT32 timestamp; + /* Last known RSSI */ + A_INT32 rssi; /* dBm units */ + /* Peer Dialog token */ + A_UINT32 peer_dialog_token; +} wmi_tdls_connect_info_stats; + +/* max MCS counters supported for enhance stats */ +#define WMI_ENHANCE_STATS_MAX_MCS_COUNTERS 16 + +typedef struct { + /** TLV tag and len; tag equals + * WMITLV_TAG_STRUC_wmi_tdls_data_stats */ + A_UINT32 tlv_header; + /* Current operating channel frequency */ + A_UINT32 op_freq_mhz; + /* Peer MAC address for which this stats is being logged */ + wmi_mac_addr peer_mac_addr; + /* The timestamp at which the WMI event is reported. */ + A_UINT32 timestamp; + /* Last known RSSI */ + A_INT32 rssi; /* dBm units */ + /* Last Tx Data rate */ + A_UINT32 data_rate; + /* tx_ppdus_cumulative: + * Total PPDUs Tx-ed combining all the MCS rates over the last 15 secs + */ + A_UINT32 tx_ppdus_cumulative; + /* tx_mcs_data_ppdu: + * PPDUs Txed over each MCS rate for all the supported MCS + * over the last 15 secs + */ + A_UINT32 tx_mcs_data_ppdu[WMI_ENHANCE_STATS_MAX_MCS_COUNTERS]; + /* Total PPDU Tx failures seen over the last 15 secs */ + A_UINT32 tx_ppdu_failures; + /* Total PPDUs Rx-ed combining all the MCS rates over the last 15 secs */ + A_UINT32 rx_ppdus_cumulative; + /* rx_mcs_data_ppdu: + * PPDUs Rxed over each MCS rate for all the supported MCS + * over the last 15 secs + */ + A_UINT32 rx_mcs_data_ppdu[WMI_ENHANCE_STATS_MAX_MCS_COUNTERS]; + /* Total Rx PPDU failures seen over the last 15 secs */ + A_UINT32 rx_ppdu_failures; +} wmi_tdls_data_stats; + +typedef struct { + /** TLV tag and len; tag equals + * WMITLV_TAG_STRUC_wmi_tdls_stats_event_fixed_param */ + A_UINT32 tlv_header; + /** VDEV identifier */ + A_UINT32 vdev_id; + /* Total TDLS Peers this VDEV is connected to */ + A_UINT32 peer_cnt; +} wmi_tdls_stats_event_fixed_param; + /** * PDEV statistics * @@ -39838,6 +39939,16 @@ typedef struct { A_UINT32 reset_after_request; } wmi_request_radio_chan_stats_cmd_fixed_param; +typedef struct { + /** TLV tag and len; tag equals + * WMITLV_TAG_STRUC_wmi_request_tdls_stats_cmd_fixed_param */ + A_UINT32 tlv_header; + /** VDEV identifier */ + A_UINT32 vdev_id; + /* flag to enable or disable this feature of getting TDLS stats */ + A_UINT32 enable; +} wmi_request_tdls_stats_cmd_fixed_param; + typedef struct { /** TLV tag and len; tag equals * WMITLV_TAG_STRUC_wmi_rmc_set_leader_cmd_fixed_param */ @@ -42556,6 +42667,7 @@ static INLINE A_UINT8 *wmi_id_to_name(A_UINT32 wmi_command) WMI_RETURN_STRING(WMI_TWT_ADD_CH_USAGE_CMDID); WMI_RETURN_STRING(WMI_COEX_GET_POLICY_STATS_CMDID); WMI_RETURN_STRING(WMI_PEER_UHR_OMP_CMDID); + WMI_RETURN_STRING(WMI_REQUEST_TDLS_STATS_CMDID); } return (A_UINT8 *) "Invalid WMI cmd"; @@ -49354,9 +49466,6 @@ typedef struct { /* 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 */ diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 8641a3f2f8f0..7bbcf4d9d426 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_ 1745 +#define __WMI_REVISION_ 1746 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work