Path: blob/main/sys/contrib/dev/athk/ath12k/debugfs_htt_stats.h
178701 views
/* SPDX-License-Identifier: BSD-3-Clause-Clear */1/*2* Copyright (c) 2018-2021 The Linux Foundation. All rights reserved.3* Copyright (c) 2021-2025 Qualcomm Innovation Center, Inc. All rights reserved.4*/56#ifndef DEBUG_HTT_STATS_H7#define DEBUG_HTT_STATS_H89#define ATH12K_HTT_STATS_BUF_SIZE (1024 * 512)10#define ATH12K_HTT_STATS_COOKIE_LSB GENMASK_ULL(31, 0)11#define ATH12K_HTT_STATS_COOKIE_MSB GENMASK_ULL(63, 32)12#define ATH12K_HTT_STATS_MAGIC_VALUE 0xF0F0F0F013#define ATH12K_HTT_STATS_SUBTYPE_MAX 1614#define ATH12K_HTT_MAX_STRING_LEN 2561516#define ATH12K_HTT_STATS_RESET_BITMAP32_OFFSET(_idx) ((_idx) & 0x1f)17#define ATH12K_HTT_STATS_RESET_BITMAP64_OFFSET(_idx) ((_idx) & 0x3f)18#define ATH12K_HTT_STATS_RESET_BITMAP32_BIT(_idx) (1 << \19ATH12K_HTT_STATS_RESET_BITMAP32_OFFSET(_idx))20#define ATH12K_HTT_STATS_RESET_BITMAP64_BIT(_idx) (1 << \21ATH12K_HTT_STATS_RESET_BITMAP64_OFFSET(_idx))2223void ath12k_debugfs_htt_stats_register(struct ath12k *ar);2425#ifdef CONFIG_ATH12K_DEBUGFS26void ath12k_debugfs_htt_ext_stats_handler(struct ath12k_base *ab,27struct sk_buff *skb);28#else /* CONFIG_ATH12K_DEBUGFS */29static inline void ath12k_debugfs_htt_ext_stats_handler(struct ath12k_base *ab,30struct sk_buff *skb)31{32}33#endif3435/**36* DOC: target -> host extended statistics upload37*38* The following field definitions describe the format of the HTT39* target to host stats upload confirmation message.40* The message contains a cookie echoed from the HTT host->target stats41* upload request, which identifies which request the confirmation is42* for, and a single stats can span over multiple HTT stats indication43* due to the HTT message size limitation so every HTT ext stats44* indication will have tag-length-value stats information elements.45* The tag-length header for each HTT stats IND message also includes a46* status field, to indicate whether the request for the stat type in47* question was fully met, partially met, unable to be met, or invalid48* (if the stat type in question is disabled in the target).49* A Done bit 1's indicate the end of the of stats info elements.50*51*52* |31 16|15 12|11|10 8|7 5|4 0|53* |--------------------------------------------------------------|54* | reserved | msg type |55* |--------------------------------------------------------------|56* | cookie LSBs |57* |--------------------------------------------------------------|58* | cookie MSBs |59* |--------------------------------------------------------------|60* | stats entry length | rsvd | D| S | stat type |61* |--------------------------------------------------------------|62* | type-specific stats info |63* | (see debugfs_htt_stats.h) |64* |--------------------------------------------------------------|65* Header fields:66* - MSG_TYPE67* Bits 7:068* Purpose: Identifies this is a extended statistics upload confirmation69* message.70* Value: 0x1c71* - COOKIE_LSBS72* Bits 31:073* Purpose: Provide a mechanism to match a target->host stats confirmation74* message with its preceding host->target stats request message.75* Value: MSBs of the opaque cookie specified by the host-side requestor76* - COOKIE_MSBS77* Bits 31:078* Purpose: Provide a mechanism to match a target->host stats confirmation79* message with its preceding host->target stats request message.80* Value: MSBs of the opaque cookie specified by the host-side requestor81*82* Stats Information Element tag-length header fields:83* - STAT_TYPE84* Bits 7:085* Purpose: identifies the type of statistics info held in the86* following information element87* Value: ath12k_dbg_htt_ext_stats_type88* - STATUS89* Bits 10:890* Purpose: indicate whether the requested stats are present91* Value:92* 0 -> The requested stats have been delivered in full93* 1 -> The requested stats have been delivered in part94* 2 -> The requested stats could not be delivered (error case)95* 3 -> The requested stat type is either not recognized (invalid)96* - DONE97* Bits 1198* Purpose:99* Indicates the completion of the stats entry, this will be the last100* stats conf HTT segment for the requested stats type.101* Value:102* 0 -> the stats retrieval is ongoing103* 1 -> the stats retrieval is complete104* - LENGTH105* Bits 31:16106* Purpose: indicate the stats information size107* Value: This field specifies the number of bytes of stats information108* that follows the element tag-length header.109* It is expected but not required that this length is a multiple of110* 4 bytes.111*/112113#define ATH12K_HTT_T2H_EXT_STATS_INFO1_DONE BIT(11)114#define ATH12K_HTT_T2H_EXT_STATS_INFO1_LENGTH GENMASK(31, 16)115116struct ath12k_htt_extd_stats_msg {117__le32 info0;118__le64 cookie;119__le32 info1;120u8 data[];121} __packed;122123/* htt_dbg_ext_stats_type */124enum ath12k_dbg_htt_ext_stats_type {125ATH12K_DBG_HTT_EXT_STATS_RESET = 0,126ATH12K_DBG_HTT_EXT_STATS_PDEV_TX = 1,127ATH12K_DBG_HTT_EXT_STATS_PDEV_TX_SCHED = 4,128ATH12K_DBG_HTT_EXT_STATS_PDEV_ERROR = 5,129ATH12K_DBG_HTT_EXT_STATS_PDEV_TQM = 6,130ATH12K_DBG_HTT_EXT_STATS_TX_DE_INFO = 8,131ATH12K_DBG_HTT_EXT_STATS_PDEV_TX_RATE = 9,132ATH12K_DBG_HTT_EXT_STATS_PDEV_RX_RATE = 10,133ATH12K_DBG_HTT_EXT_STATS_TX_SELFGEN_INFO = 12,134ATH12K_DBG_HTT_EXT_STATS_SRNG_INFO = 15,135ATH12K_DBG_HTT_EXT_STATS_SFM_INFO = 16,136ATH12K_DBG_HTT_EXT_STATS_PDEV_TX_MU = 17,137ATH12K_DBG_HTT_EXT_STATS_PDEV_CCA_STATS = 19,138ATH12K_DBG_HTT_EXT_STATS_TX_SOUNDING_INFO = 22,139ATH12K_DBG_HTT_EXT_STATS_PDEV_OBSS_PD_STATS = 23,140ATH12K_DBG_HTT_EXT_STATS_LATENCY_PROF_STATS = 25,141ATH12K_DBG_HTT_EXT_STATS_PDEV_UL_TRIG_STATS = 26,142ATH12K_DBG_HTT_EXT_STATS_PDEV_UL_MUMIMO_TRIG_STATS = 27,143ATH12K_DBG_HTT_EXT_STATS_FSE_RX = 28,144ATH12K_DBG_HTT_EXT_STATS_PDEV_RX_RATE_EXT = 30,145ATH12K_DBG_HTT_EXT_STATS_PDEV_TX_RATE_TXBF = 31,146ATH12K_DBG_HTT_EXT_STATS_TXBF_OFDMA = 32,147ATH12K_DBG_HTT_EXT_STATS_DLPAGER_STATS = 36,148ATH12K_DBG_HTT_EXT_PHY_COUNTERS_AND_PHY_STATS = 37,149ATH12K_DBG_HTT_EXT_VDEVS_TXRX_STATS = 38,150ATH12K_DBG_HTT_EXT_PDEV_PER_STATS = 40,151ATH12K_DBG_HTT_EXT_AST_ENTRIES = 41,152ATH12K_DBG_HTT_EXT_STATS_SOC_ERROR = 45,153ATH12K_DBG_HTT_DBG_PDEV_PUNCTURE_STATS = 46,154ATH12K_DBG_HTT_EXT_STATS_PDEV_SCHED_ALGO = 49,155ATH12K_DBG_HTT_EXT_STATS_MANDATORY_MUOFDMA = 51,156ATH12K_DGB_HTT_EXT_STATS_PDEV_MBSSID_CTRL_FRAME = 54,157ATH12K_DBG_HTT_PDEV_TDMA_STATS = 57,158ATH12K_DBG_HTT_MLO_SCHED_STATS = 63,159ATH12K_DBG_HTT_PDEV_MLO_IPC_STATS = 64,160ATH12K_DBG_HTT_EXT_PDEV_RTT_RESP_STATS = 65,161ATH12K_DBG_HTT_EXT_PDEV_RTT_INITIATOR_STATS = 66,162163/* keep this last */164ATH12K_DBG_HTT_NUM_EXT_STATS,165};166167enum ath12k_dbg_htt_tlv_tag {168HTT_STATS_TX_PDEV_CMN_TAG = 0,169HTT_STATS_TX_PDEV_UNDERRUN_TAG = 1,170HTT_STATS_TX_PDEV_SIFS_TAG = 2,171HTT_STATS_TX_PDEV_FLUSH_TAG = 3,172HTT_STATS_STRING_TAG = 5,173HTT_STATS_TX_TQM_GEN_MPDU_TAG = 11,174HTT_STATS_TX_TQM_LIST_MPDU_TAG = 12,175HTT_STATS_TX_TQM_LIST_MPDU_CNT_TAG = 13,176HTT_STATS_TX_TQM_CMN_TAG = 14,177HTT_STATS_TX_TQM_PDEV_TAG = 15,178HTT_STATS_TX_DE_EAPOL_PACKETS_TAG = 17,179HTT_STATS_TX_DE_CLASSIFY_FAILED_TAG = 18,180HTT_STATS_TX_DE_CLASSIFY_STATS_TAG = 19,181HTT_STATS_TX_DE_CLASSIFY_STATUS_TAG = 20,182HTT_STATS_TX_DE_ENQUEUE_PACKETS_TAG = 21,183HTT_STATS_TX_DE_ENQUEUE_DISCARD_TAG = 22,184HTT_STATS_TX_DE_CMN_TAG = 23,185HTT_STATS_TX_PDEV_MU_MIMO_STATS_TAG = 25,186HTT_STATS_SFM_CMN_TAG = 26,187HTT_STATS_SRING_STATS_TAG = 27,188HTT_STATS_TX_PDEV_RATE_STATS_TAG = 34,189HTT_STATS_RX_PDEV_RATE_STATS_TAG = 35,190HTT_STATS_TX_PDEV_SCHEDULER_TXQ_STATS_TAG = 36,191HTT_STATS_TX_SCHED_CMN_TAG = 37,192HTT_STATS_SCHED_TXQ_CMD_POSTED_TAG = 39,193HTT_STATS_SFM_CLIENT_USER_TAG = 41,194HTT_STATS_SFM_CLIENT_TAG = 42,195HTT_STATS_TX_TQM_ERROR_STATS_TAG = 43,196HTT_STATS_SCHED_TXQ_CMD_REAPED_TAG = 44,197HTT_STATS_TX_SELFGEN_AC_ERR_STATS_TAG = 46,198HTT_STATS_TX_SELFGEN_CMN_STATS_TAG = 47,199HTT_STATS_TX_SELFGEN_AC_STATS_TAG = 48,200HTT_STATS_TX_SELFGEN_AX_STATS_TAG = 49,201HTT_STATS_TX_SELFGEN_AX_ERR_STATS_TAG = 50,202HTT_STATS_HW_INTR_MISC_TAG = 54,203HTT_STATS_HW_PDEV_ERRS_TAG = 56,204HTT_STATS_TX_DE_COMPL_STATS_TAG = 65,205HTT_STATS_WHAL_TX_TAG = 66,206HTT_STATS_TX_PDEV_SIFS_HIST_TAG = 67,207HTT_STATS_PDEV_CCA_1SEC_HIST_TAG = 70,208HTT_STATS_PDEV_CCA_100MSEC_HIST_TAG = 71,209HTT_STATS_PDEV_CCA_STAT_CUMULATIVE_TAG = 72,210HTT_STATS_PDEV_CCA_COUNTERS_TAG = 73,211HTT_STATS_TX_PDEV_MPDU_STATS_TAG = 74,212HTT_STATS_TX_SOUNDING_STATS_TAG = 80,213HTT_STATS_SCHED_TXQ_SCHED_ORDER_SU_TAG = 86,214HTT_STATS_SCHED_TXQ_SCHED_INELIGIBILITY_TAG = 87,215HTT_STATS_PDEV_OBSS_PD_TAG = 88,216HTT_STATS_HW_WAR_TAG = 89,217HTT_STATS_LATENCY_PROF_STATS_TAG = 91,218HTT_STATS_LATENCY_CTX_TAG = 92,219HTT_STATS_LATENCY_CNT_TAG = 93,220HTT_STATS_RX_PDEV_UL_TRIG_STATS_TAG = 94,221HTT_STATS_RX_PDEV_UL_OFDMA_USER_STATS_TAG = 95,222HTT_STATS_RX_PDEV_UL_MUMIMO_TRIG_STATS_TAG = 97,223HTT_STATS_RX_FSE_STATS_TAG = 98,224HTT_STATS_SCHED_TXQ_SUPERCYCLE_TRIGGER_TAG = 100,225HTT_STATS_PDEV_CTRL_PATH_TX_STATS_TAG = 102,226HTT_STATS_RX_PDEV_RATE_EXT_STATS_TAG = 103,227HTT_STATS_PDEV_TX_RATE_TXBF_STATS_TAG = 108,228HTT_STATS_TX_SELFGEN_AC_SCHED_STATUS_STATS_TAG = 111,229HTT_STATS_TX_SELFGEN_AX_SCHED_STATUS_STATS_TAG = 112,230HTT_STATS_DLPAGER_STATS_TAG = 120,231HTT_STATS_PHY_COUNTERS_TAG = 121,232HTT_STATS_PHY_STATS_TAG = 122,233HTT_STATS_PHY_RESET_COUNTERS_TAG = 123,234HTT_STATS_PHY_RESET_STATS_TAG = 124,235HTT_STATS_SOC_TXRX_STATS_COMMON_TAG = 125,236HTT_STATS_PER_RATE_STATS_TAG = 128,237HTT_STATS_MU_PPDU_DIST_TAG = 129,238HTT_STATS_TX_PDEV_MUMIMO_GRP_STATS_TAG = 130,239HTT_STATS_AST_ENTRY_TAG = 132,240HTT_STATS_TX_PDEV_RATE_STATS_BE_OFDMA_TAG = 135,241HTT_STATS_TX_SELFGEN_BE_ERR_STATS_TAG = 137,242HTT_STATS_TX_SELFGEN_BE_STATS_TAG = 138,243HTT_STATS_TX_SELFGEN_BE_SCHED_STATUS_STATS_TAG = 139,244HTT_STATS_TX_PDEV_HISTOGRAM_STATS_TAG = 144,245HTT_STATS_TXBF_OFDMA_AX_NDPA_STATS_TAG = 147,246HTT_STATS_TXBF_OFDMA_AX_NDP_STATS_TAG = 148,247HTT_STATS_TXBF_OFDMA_AX_BRP_STATS_TAG = 149,248HTT_STATS_TXBF_OFDMA_AX_STEER_STATS_TAG = 150,249HTT_STATS_DMAC_RESET_STATS_TAG = 155,250HTT_STATS_PHY_TPC_STATS_TAG = 157,251HTT_STATS_PDEV_PUNCTURE_STATS_TAG = 158,252HTT_STATS_PDEV_SCHED_ALGO_OFDMA_STATS_TAG = 165,253HTT_STATS_TXBF_OFDMA_AX_STEER_MPDU_STATS_TAG = 172,254HTT_STATS_PDEV_MBSSID_CTRL_FRAME_STATS_TAG = 176,255HTT_STATS_PDEV_TDMA_TAG = 187,256HTT_STATS_MLO_SCHED_STATS_TAG = 190,257HTT_STATS_PDEV_MLO_IPC_STATS_TAG = 191,258HTT_STATS_PDEV_RTT_RESP_STATS_TAG = 194,259HTT_STATS_PDEV_RTT_INIT_STATS_TAG = 195,260HTT_STATS_PDEV_RTT_HW_STATS_TAG = 196,261HTT_STATS_PDEV_RTT_TBR_SELFGEN_QUEUED_STATS_TAG = 197,262HTT_STATS_PDEV_RTT_TBR_CMD_RESULT_STATS_TAG = 198,263264HTT_STATS_MAX_TAG,265};266267#define ATH12K_HTT_STATS_MAC_ID GENMASK(7, 0)268269#define ATH12K_HTT_TX_PDEV_MAX_SIFS_BURST_STATS 9270#define ATH12K_HTT_TX_PDEV_MAX_FLUSH_REASON_STATS 150271272/* MU MIMO distribution stats is a 2-dimensional array273* with dimension one denoting stats for nr4[0] or nr8[1]274*/275#define ATH12K_HTT_STATS_NUM_NR_BINS 2276#define ATH12K_HTT_STATS_MAX_NUM_MU_PPDU_PER_BURST 10277#define ATH12K_HTT_TX_PDEV_MAX_SIFS_BURST_HIST_STATS 10278#define ATH12K_HTT_STATS_MAX_NUM_SCHED_STATUS 9279#define ATH12K_HTT_STATS_NUM_SCHED_STATUS_WORDS \280(ATH12K_HTT_STATS_NUM_NR_BINS * ATH12K_HTT_STATS_MAX_NUM_SCHED_STATUS)281#define ATH12K_HTT_STATS_MU_PPDU_PER_BURST_WORDS \282(ATH12K_HTT_STATS_NUM_NR_BINS * ATH12K_HTT_STATS_MAX_NUM_MU_PPDU_PER_BURST)283284enum ath12k_htt_tx_pdev_underrun_enum {285HTT_STATS_TX_PDEV_NO_DATA_UNDERRUN = 0,286HTT_STATS_TX_PDEV_DATA_UNDERRUN_BETWEEN_MPDU = 1,287HTT_STATS_TX_PDEV_DATA_UNDERRUN_WITHIN_MPDU = 2,288HTT_TX_PDEV_MAX_URRN_STATS = 3,289};290291enum ath12k_htt_stats_reset_cfg_param_alloc_pos {292ATH12K_HTT_STATS_RESET_PARAM_CFG_32_BYTES = 1,293ATH12K_HTT_STATS_RESET_PARAM_CFG_64_BYTES,294ATH12K_HTT_STATS_RESET_PARAM_CFG_128_BYTES,295};296297struct debug_htt_stats_req {298bool done;299bool override_cfg_param;300u8 pdev_id;301enum ath12k_dbg_htt_ext_stats_type type;302u32 cfg_param[4];303u8 peer_addr[ETH_ALEN];304struct completion htt_stats_rcvd;305u32 buf_len;306u8 buf[];307};308309struct ath12k_htt_tx_pdev_stats_cmn_tlv {310__le32 mac_id__word;311__le32 hw_queued;312__le32 hw_reaped;313__le32 underrun;314__le32 hw_paused;315__le32 hw_flush;316__le32 hw_filt;317__le32 tx_abort;318__le32 mpdu_requed;319__le32 tx_xretry;320__le32 data_rc;321__le32 mpdu_dropped_xretry;322__le32 illgl_rate_phy_err;323__le32 cont_xretry;324__le32 tx_timeout;325__le32 pdev_resets;326__le32 phy_underrun;327__le32 txop_ovf;328__le32 seq_posted;329__le32 seq_failed_queueing;330__le32 seq_completed;331__le32 seq_restarted;332__le32 mu_seq_posted;333__le32 seq_switch_hw_paused;334__le32 next_seq_posted_dsr;335__le32 seq_posted_isr;336__le32 seq_ctrl_cached;337__le32 mpdu_count_tqm;338__le32 msdu_count_tqm;339__le32 mpdu_removed_tqm;340__le32 msdu_removed_tqm;341__le32 mpdus_sw_flush;342__le32 mpdus_hw_filter;343__le32 mpdus_truncated;344__le32 mpdus_ack_failed;345__le32 mpdus_expired;346__le32 mpdus_seq_hw_retry;347__le32 ack_tlv_proc;348__le32 coex_abort_mpdu_cnt_valid;349__le32 coex_abort_mpdu_cnt;350__le32 num_total_ppdus_tried_ota;351__le32 num_data_ppdus_tried_ota;352__le32 local_ctrl_mgmt_enqued;353__le32 local_ctrl_mgmt_freed;354__le32 local_data_enqued;355__le32 local_data_freed;356__le32 mpdu_tried;357__le32 isr_wait_seq_posted;358359__le32 tx_active_dur_us_low;360__le32 tx_active_dur_us_high;361__le32 remove_mpdus_max_retries;362__le32 comp_delivered;363__le32 ppdu_ok;364__le32 self_triggers;365__le32 tx_time_dur_data;366__le32 seq_qdepth_repost_stop;367__le32 mu_seq_min_msdu_repost_stop;368__le32 seq_min_msdu_repost_stop;369__le32 seq_txop_repost_stop;370__le32 next_seq_cancel;371__le32 fes_offsets_err_cnt;372__le32 num_mu_peer_blacklisted;373__le32 mu_ofdma_seq_posted;374__le32 ul_mumimo_seq_posted;375__le32 ul_ofdma_seq_posted;376377__le32 thermal_suspend_cnt;378__le32 dfs_suspend_cnt;379__le32 tx_abort_suspend_cnt;380__le32 tgt_specific_opaque_txq_suspend_info;381__le32 last_suspend_reason;382} __packed;383384struct ath12k_htt_tx_pdev_stats_urrn_tlv {385DECLARE_FLEX_ARRAY(__le32, urrn_stats);386} __packed;387388struct ath12k_htt_tx_pdev_stats_flush_tlv {389DECLARE_FLEX_ARRAY(__le32, flush_errs);390} __packed;391392struct ath12k_htt_tx_pdev_stats_phy_err_tlv {393DECLARE_FLEX_ARRAY(__le32, phy_errs);394} __packed;395396struct ath12k_htt_tx_pdev_stats_sifs_tlv {397DECLARE_FLEX_ARRAY(__le32, sifs_status);398} __packed;399400struct ath12k_htt_pdev_ctrl_path_tx_stats_tlv {401__le32 fw_tx_mgmt_subtype[ATH12K_HTT_STATS_SUBTYPE_MAX];402} __packed;403404struct ath12k_htt_tx_pdev_stats_sifs_hist_tlv {405DECLARE_FLEX_ARRAY(__le32, sifs_hist_status);406} __packed;407408enum ath12k_htt_stats_hw_mode {409ATH12K_HTT_STATS_HWMODE_AC = 0,410ATH12K_HTT_STATS_HWMODE_AX = 1,411ATH12K_HTT_STATS_HWMODE_BE = 2,412};413414struct ath12k_htt_tx_pdev_mu_ppdu_dist_stats_tlv {415__le32 hw_mode;416__le32 num_seq_term_status[ATH12K_HTT_STATS_NUM_SCHED_STATUS_WORDS];417__le32 num_ppdu_cmpl_per_burst[ATH12K_HTT_STATS_MU_PPDU_PER_BURST_WORDS];418__le32 num_seq_posted[ATH12K_HTT_STATS_NUM_NR_BINS];419__le32 num_ppdu_posted_per_burst[ATH12K_HTT_STATS_MU_PPDU_PER_BURST_WORDS];420} __packed;421422#define ATH12K_HTT_TX_PDEV_STATS_NUM_MCS_COUNTERS 12423#define ATH12K_HTT_TX_PDEV_STATS_NUM_GI_COUNTERS 4424#define ATH12K_HTT_TX_PDEV_STATS_NUM_DCM_COUNTERS 5425#define ATH12K_HTT_TX_PDEV_STATS_NUM_BW_COUNTERS 4426#define ATH12K_HTT_TX_PDEV_STATS_NUM_SPATIAL_STREAMS 8427#define ATH12K_HTT_TX_PDEV_STATS_NUM_PREAMBLE_TYPES 7428#define ATH12K_HTT_TX_PDEV_STATS_NUM_LEGACY_CCK_STATS 4429#define ATH12K_HTT_TX_PDEV_STATS_NUM_LEGACY_OFDM_STATS 8430#define ATH12K_HTT_TX_PDEV_STATS_NUM_LTF 4431#define ATH12K_HTT_TX_PDEV_STATS_NUM_EXTRA_MCS_COUNTERS 2432#define ATH12K_HTT_TX_PDEV_STATS_NUM_EXTRA2_MCS_COUNTERS 2433#define ATH12K_HTT_TX_PDEV_STATS_NUM_11AX_TRIGGER_TYPES 6434#define ATH12K_HTT_TX_PDEV_STATS_NUM_PER_COUNTERS 101435436#define ATH12K_HTT_TX_PDEV_STATS_NUM_MCS_DROP_COUNTERS \437(ATH12K_HTT_TX_PDEV_STATS_NUM_MCS_COUNTERS + \438ATH12K_HTT_TX_PDEV_STATS_NUM_EXTRA_MCS_COUNTERS + \439ATH12K_HTT_TX_PDEV_STATS_NUM_EXTRA2_MCS_COUNTERS)440441struct ath12k_htt_tx_pdev_rate_stats_tlv {442__le32 mac_id_word;443__le32 tx_ldpc;444__le32 rts_cnt;445__le32 ack_rssi;446__le32 tx_mcs[ATH12K_HTT_TX_PDEV_STATS_NUM_MCS_COUNTERS];447__le32 tx_su_mcs[ATH12K_HTT_TX_PDEV_STATS_NUM_MCS_COUNTERS];448__le32 tx_mu_mcs[ATH12K_HTT_TX_PDEV_STATS_NUM_MCS_COUNTERS];449__le32 tx_nss[ATH12K_HTT_TX_PDEV_STATS_NUM_SPATIAL_STREAMS];450__le32 tx_bw[ATH12K_HTT_TX_PDEV_STATS_NUM_BW_COUNTERS];451__le32 tx_stbc[ATH12K_HTT_TX_PDEV_STATS_NUM_MCS_COUNTERS];452__le32 tx_pream[ATH12K_HTT_TX_PDEV_STATS_NUM_PREAMBLE_TYPES];453__le32 tx_gi[ATH12K_HTT_TX_PDEV_STATS_NUM_GI_COUNTERS]454[ATH12K_HTT_TX_PDEV_STATS_NUM_MCS_COUNTERS];455__le32 tx_dcm[ATH12K_HTT_TX_PDEV_STATS_NUM_DCM_COUNTERS];456__le32 rts_success;457__le32 tx_legacy_cck_rate[ATH12K_HTT_TX_PDEV_STATS_NUM_LEGACY_CCK_STATS];458__le32 tx_legacy_ofdm_rate[ATH12K_HTT_TX_PDEV_STATS_NUM_LEGACY_OFDM_STATS];459__le32 ac_mu_mimo_tx_ldpc;460__le32 ax_mu_mimo_tx_ldpc;461__le32 ofdma_tx_ldpc;462__le32 tx_he_ltf[ATH12K_HTT_TX_PDEV_STATS_NUM_LTF];463__le32 ac_mu_mimo_tx_mcs[ATH12K_HTT_TX_PDEV_STATS_NUM_MCS_COUNTERS];464__le32 ax_mu_mimo_tx_mcs[ATH12K_HTT_TX_PDEV_STATS_NUM_MCS_COUNTERS];465__le32 ofdma_tx_mcs[ATH12K_HTT_TX_PDEV_STATS_NUM_MCS_COUNTERS];466__le32 ac_mu_mimo_tx_nss[ATH12K_HTT_TX_PDEV_STATS_NUM_SPATIAL_STREAMS];467__le32 ax_mu_mimo_tx_nss[ATH12K_HTT_TX_PDEV_STATS_NUM_SPATIAL_STREAMS];468__le32 ofdma_tx_nss[ATH12K_HTT_TX_PDEV_STATS_NUM_SPATIAL_STREAMS];469__le32 ac_mu_mimo_tx_bw[ATH12K_HTT_TX_PDEV_STATS_NUM_BW_COUNTERS];470__le32 ax_mu_mimo_tx_bw[ATH12K_HTT_TX_PDEV_STATS_NUM_BW_COUNTERS];471__le32 ofdma_tx_bw[ATH12K_HTT_TX_PDEV_STATS_NUM_BW_COUNTERS];472__le32 ac_mu_mimo_tx_gi[ATH12K_HTT_TX_PDEV_STATS_NUM_GI_COUNTERS]473[ATH12K_HTT_TX_PDEV_STATS_NUM_MCS_COUNTERS];474__le32 ax_mimo_tx_gi[ATH12K_HTT_TX_PDEV_STATS_NUM_GI_COUNTERS]475[ATH12K_HTT_TX_PDEV_STATS_NUM_MCS_COUNTERS];476__le32 ofdma_tx_gi[ATH12K_HTT_TX_PDEV_STATS_NUM_GI_COUNTERS]477[ATH12K_HTT_TX_PDEV_STATS_NUM_MCS_COUNTERS];478__le32 trigger_type_11ax[ATH12K_HTT_TX_PDEV_STATS_NUM_11AX_TRIGGER_TYPES];479__le32 tx_11ax_su_ext;480__le32 tx_mcs_ext[ATH12K_HTT_TX_PDEV_STATS_NUM_EXTRA_MCS_COUNTERS];481__le32 tx_stbc_ext[ATH12K_HTT_TX_PDEV_STATS_NUM_EXTRA_MCS_COUNTERS];482__le32 tx_gi_ext[ATH12K_HTT_TX_PDEV_STATS_NUM_GI_COUNTERS]483[ATH12K_HTT_TX_PDEV_STATS_NUM_EXTRA_MCS_COUNTERS];484__le32 ax_mu_mimo_tx_mcs_ext[ATH12K_HTT_TX_PDEV_STATS_NUM_EXTRA_MCS_COUNTERS];485__le32 ofdma_tx_mcs_ext[ATH12K_HTT_TX_PDEV_STATS_NUM_EXTRA_MCS_COUNTERS];486__le32 ax_tx_gi_ext[ATH12K_HTT_TX_PDEV_STATS_NUM_GI_COUNTERS]487[ATH12K_HTT_TX_PDEV_STATS_NUM_EXTRA_MCS_COUNTERS];488__le32 ofd_tx_gi_ext[ATH12K_HTT_TX_PDEV_STATS_NUM_GI_COUNTERS]489[ATH12K_HTT_TX_PDEV_STATS_NUM_EXTRA_MCS_COUNTERS];490__le32 tx_mcs_ext_2[ATH12K_HTT_TX_PDEV_STATS_NUM_EXTRA2_MCS_COUNTERS];491__le32 tx_bw_320mhz;492} __packed;493494struct ath12k_htt_tx_histogram_stats_tlv {495__le32 rate_retry_mcs_drop_cnt;496__le32 mcs_drop_rate[ATH12K_HTT_TX_PDEV_STATS_NUM_MCS_DROP_COUNTERS];497__le32 per_histogram_cnt[ATH12K_HTT_TX_PDEV_STATS_NUM_PER_COUNTERS];498__le32 low_latency_rate_cnt;499__le32 su_burst_rate_drop_cnt;500__le32 su_burst_rate_drop_fail_cnt;501} __packed;502503#define ATH12K_HTT_RX_PDEV_STATS_NUM_LEGACY_CCK_STATS 4504#define ATH12K_HTT_RX_PDEV_STATS_NUM_LEGACY_OFDM_STATS 8505#define ATH12K_HTT_RX_PDEV_STATS_NUM_MCS_COUNTERS 12506#define ATH12K_HTT_RX_PDEV_STATS_NUM_GI_COUNTERS 4507#define ATH12K_HTT_RX_PDEV_STATS_NUM_DCM_COUNTERS 5508#define ATH12K_HTT_RX_PDEV_STATS_NUM_BW_COUNTERS 4509#define ATH12K_HTT_RX_PDEV_STATS_NUM_SPATIAL_STREAMS 8510#define ATH12K_HTT_RX_PDEV_STATS_NUM_PREAMBLE_TYPES 7511#define ATH12K_HTT_RX_PDEV_MAX_OFDMA_NUM_USER 8512#define ATH12K_HTT_RX_PDEV_STATS_RXEVM_MAX_PILOTS_NSS 16513#define ATH12K_HTT_RX_PDEV_STATS_NUM_RU_SIZE_COUNTERS 6514#define ATH12K_HTT_RX_PDEV_MAX_ULMUMIMO_NUM_USER 8515#define ATH12K_HTT_RX_PDEV_STATS_NUM_EXTRA_MCS_COUNTERS 2516517struct ath12k_htt_rx_pdev_rate_stats_tlv {518__le32 mac_id_word;519__le32 nsts;520__le32 rx_ldpc;521__le32 rts_cnt;522__le32 rssi_mgmt;523__le32 rssi_data;524__le32 rssi_comb;525__le32 rx_mcs[ATH12K_HTT_RX_PDEV_STATS_NUM_MCS_COUNTERS];526__le32 rx_nss[ATH12K_HTT_RX_PDEV_STATS_NUM_SPATIAL_STREAMS];527__le32 rx_dcm[ATH12K_HTT_RX_PDEV_STATS_NUM_DCM_COUNTERS];528__le32 rx_stbc[ATH12K_HTT_RX_PDEV_STATS_NUM_MCS_COUNTERS];529__le32 rx_bw[ATH12K_HTT_RX_PDEV_STATS_NUM_BW_COUNTERS];530__le32 rx_pream[ATH12K_HTT_RX_PDEV_STATS_NUM_PREAMBLE_TYPES];531u8 rssi_chain_in_db[ATH12K_HTT_RX_PDEV_STATS_NUM_SPATIAL_STREAMS]532[ATH12K_HTT_RX_PDEV_STATS_NUM_BW_COUNTERS];533__le32 rx_gi[ATH12K_HTT_RX_PDEV_STATS_NUM_GI_COUNTERS]534[ATH12K_HTT_RX_PDEV_STATS_NUM_MCS_COUNTERS];535__le32 rssi_in_dbm;536__le32 rx_11ax_su_ext;537__le32 rx_11ac_mumimo;538__le32 rx_11ax_mumimo;539__le32 rx_11ax_ofdma;540__le32 txbf;541__le32 rx_legacy_cck_rate[ATH12K_HTT_RX_PDEV_STATS_NUM_LEGACY_CCK_STATS];542__le32 rx_legacy_ofdm_rate[ATH12K_HTT_RX_PDEV_STATS_NUM_LEGACY_OFDM_STATS];543__le32 rx_active_dur_us_low;544__le32 rx_active_dur_us_high;545__le32 rx_11ax_ul_ofdma;546__le32 ul_ofdma_rx_mcs[ATH12K_HTT_RX_PDEV_STATS_NUM_MCS_COUNTERS];547__le32 ul_ofdma_rx_gi[ATH12K_HTT_TX_PDEV_STATS_NUM_GI_COUNTERS]548[ATH12K_HTT_RX_PDEV_STATS_NUM_MCS_COUNTERS];549__le32 ul_ofdma_rx_nss[ATH12K_HTT_TX_PDEV_STATS_NUM_SPATIAL_STREAMS];550__le32 ul_ofdma_rx_bw[ATH12K_HTT_TX_PDEV_STATS_NUM_BW_COUNTERS];551__le32 ul_ofdma_rx_stbc;552__le32 ul_ofdma_rx_ldpc;553__le32 rx_ulofdma_non_data_ppdu[ATH12K_HTT_RX_PDEV_MAX_OFDMA_NUM_USER];554__le32 rx_ulofdma_data_ppdu[ATH12K_HTT_RX_PDEV_MAX_OFDMA_NUM_USER];555__le32 rx_ulofdma_mpdu_ok[ATH12K_HTT_RX_PDEV_MAX_OFDMA_NUM_USER];556__le32 rx_ulofdma_mpdu_fail[ATH12K_HTT_RX_PDEV_MAX_OFDMA_NUM_USER];557__le32 nss_count;558__le32 pilot_count;559__le32 rx_pil_evm_db[ATH12K_HTT_RX_PDEV_STATS_NUM_SPATIAL_STREAMS]560[ATH12K_HTT_RX_PDEV_STATS_RXEVM_MAX_PILOTS_NSS];561__le32 rx_pilot_evm_db_mean[ATH12K_HTT_RX_PDEV_STATS_NUM_SPATIAL_STREAMS];562s8 rx_ul_fd_rssi[ATH12K_HTT_RX_PDEV_STATS_NUM_SPATIAL_STREAMS]563[ATH12K_HTT_RX_PDEV_MAX_OFDMA_NUM_USER];564__le32 per_chain_rssi_pkt_type;565s8 rx_per_chain_rssi_in_dbm[ATH12K_HTT_RX_PDEV_STATS_NUM_SPATIAL_STREAMS]566[ATH12K_HTT_RX_PDEV_STATS_NUM_BW_COUNTERS];567__le32 rx_su_ndpa;568__le32 rx_11ax_su_txbf_mcs[ATH12K_HTT_RX_PDEV_STATS_NUM_MCS_COUNTERS];569__le32 rx_mu_ndpa;570__le32 rx_11ax_mu_txbf_mcs[ATH12K_HTT_RX_PDEV_STATS_NUM_MCS_COUNTERS];571__le32 rx_br_poll;572__le32 rx_11ax_dl_ofdma_mcs[ATH12K_HTT_RX_PDEV_STATS_NUM_MCS_COUNTERS];573__le32 rx_11ax_dl_ofdma_ru[ATH12K_HTT_RX_PDEV_STATS_NUM_RU_SIZE_COUNTERS];574__le32 rx_ulmumimo_non_data_ppdu[ATH12K_HTT_RX_PDEV_MAX_ULMUMIMO_NUM_USER];575__le32 rx_ulmumimo_data_ppdu[ATH12K_HTT_RX_PDEV_MAX_ULMUMIMO_NUM_USER];576__le32 rx_ulmumimo_mpdu_ok[ATH12K_HTT_RX_PDEV_MAX_ULMUMIMO_NUM_USER];577__le32 rx_ulmumimo_mpdu_fail[ATH12K_HTT_RX_PDEV_MAX_ULMUMIMO_NUM_USER];578__le32 rx_ulofdma_non_data_nusers[ATH12K_HTT_RX_PDEV_MAX_OFDMA_NUM_USER];579__le32 rx_ulofdma_data_nusers[ATH12K_HTT_RX_PDEV_MAX_OFDMA_NUM_USER];580__le32 rx_mcs_ext[ATH12K_HTT_RX_PDEV_STATS_NUM_EXTRA_MCS_COUNTERS];581} __packed;582583#define ATH12K_HTT_RX_PDEV_STATS_NUM_BW_EXT_COUNTERS 4584#define ATH12K_HTT_RX_PDEV_STATS_NUM_MCS_COUNTERS_EXT 14585#define ATH12K_HTT_RX_PDEV_STATS_NUM_EXTRA2_MCS_COUNTERS 2586#define ATH12K_HTT_RX_PDEV_STATS_NUM_BW_EXT2_COUNTERS 5587#define ATH12K_HTT_RX_PDEV_STATS_NUM_PUNCTURED_MODE_COUNTERS 5588589struct ath12k_htt_rx_pdev_rate_ext_stats_tlv {590u8 rssi_chain_ext[ATH12K_HTT_RX_PDEV_STATS_NUM_SPATIAL_STREAMS]591[ATH12K_HTT_RX_PDEV_STATS_NUM_BW_EXT_COUNTERS];592s8 rx_per_chain_rssi_ext_in_dbm[ATH12K_HTT_RX_PDEV_STATS_NUM_SPATIAL_STREAMS]593[ATH12K_HTT_RX_PDEV_STATS_NUM_BW_EXT_COUNTERS];594__le32 rssi_mcast_in_dbm;595__le32 rssi_mgmt_in_dbm;596__le32 rx_mcs_ext[ATH12K_HTT_RX_PDEV_STATS_NUM_MCS_COUNTERS_EXT];597__le32 rx_stbc_ext[ATH12K_HTT_RX_PDEV_STATS_NUM_MCS_COUNTERS_EXT];598__le32 rx_gi_ext[ATH12K_HTT_RX_PDEV_STATS_NUM_GI_COUNTERS]599[ATH12K_HTT_RX_PDEV_STATS_NUM_MCS_COUNTERS_EXT];600__le32 ul_ofdma_rx_mcs_ext[ATH12K_HTT_RX_PDEV_STATS_NUM_MCS_COUNTERS_EXT];601__le32 ul_ofdma_rx_gi_ext[ATH12K_HTT_TX_PDEV_STATS_NUM_GI_COUNTERS]602[ATH12K_HTT_RX_PDEV_STATS_NUM_MCS_COUNTERS_EXT];603__le32 rx_11ax_su_txbf_mcs_ext[ATH12K_HTT_RX_PDEV_STATS_NUM_MCS_COUNTERS_EXT];604__le32 rx_11ax_mu_txbf_mcs_ext[ATH12K_HTT_RX_PDEV_STATS_NUM_MCS_COUNTERS_EXT];605__le32 rx_11ax_dl_ofdma_mcs_ext[ATH12K_HTT_RX_PDEV_STATS_NUM_MCS_COUNTERS_EXT];606__le32 rx_mcs_ext_2[ATH12K_HTT_RX_PDEV_STATS_NUM_EXTRA2_MCS_COUNTERS];607__le32 rx_bw_ext[ATH12K_HTT_RX_PDEV_STATS_NUM_BW_EXT2_COUNTERS];608__le32 rx_gi_ext_2[ATH12K_HTT_RX_PDEV_STATS_NUM_GI_COUNTERS]609[ATH12K_HTT_RX_PDEV_STATS_NUM_EXTRA2_MCS_COUNTERS];610__le32 rx_su_punctured_mode[ATH12K_HTT_RX_PDEV_STATS_NUM_PUNCTURED_MODE_COUNTERS];611} __packed;612613#define ATH12K_HTT_TX_PDEV_STATS_SCHED_PER_TXQ_MAC_ID GENMASK(7, 0)614#define ATH12K_HTT_TX_PDEV_STATS_SCHED_PER_TXQ_ID GENMASK(15, 8)615616#define ATH12K_HTT_TX_PDEV_NUM_SCHED_ORDER_LOG 20617618struct ath12k_htt_stats_tx_sched_cmn_tlv {619__le32 mac_id__word;620__le32 current_timestamp;621} __packed;622623struct ath12k_htt_tx_pdev_stats_sched_per_txq_tlv {624__le32 mac_id__word;625__le32 sched_policy;626__le32 last_sched_cmd_posted_timestamp;627__le32 last_sched_cmd_compl_timestamp;628__le32 sched_2_tac_lwm_count;629__le32 sched_2_tac_ring_full;630__le32 sched_cmd_post_failure;631__le32 num_active_tids;632__le32 num_ps_schedules;633__le32 sched_cmds_pending;634__le32 num_tid_register;635__le32 num_tid_unregister;636__le32 num_qstats_queried;637__le32 qstats_update_pending;638__le32 last_qstats_query_timestamp;639__le32 num_tqm_cmdq_full;640__le32 num_de_sched_algo_trigger;641__le32 num_rt_sched_algo_trigger;642__le32 num_tqm_sched_algo_trigger;643__le32 notify_sched;644__le32 dur_based_sendn_term;645__le32 su_notify2_sched;646__le32 su_optimal_queued_msdus_sched;647__le32 su_delay_timeout_sched;648__le32 su_min_txtime_sched_delay;649__le32 su_no_delay;650__le32 num_supercycles;651__le32 num_subcycles_with_sort;652__le32 num_subcycles_no_sort;653} __packed;654655struct ath12k_htt_sched_txq_cmd_posted_tlv {656DECLARE_FLEX_ARRAY(__le32, sched_cmd_posted);657} __packed;658659struct ath12k_htt_sched_txq_cmd_reaped_tlv {660DECLARE_FLEX_ARRAY(__le32, sched_cmd_reaped);661} __packed;662663struct ath12k_htt_sched_txq_sched_order_su_tlv {664DECLARE_FLEX_ARRAY(__le32, sched_order_su);665} __packed;666667struct ath12k_htt_sched_txq_sched_ineligibility_tlv {668DECLARE_FLEX_ARRAY(__le32, sched_ineligibility);669} __packed;670671enum ath12k_htt_sched_txq_supercycle_triggers_tlv_enum {672ATH12K_HTT_SCHED_SUPERCYCLE_TRIGGER_NONE = 0,673ATH12K_HTT_SCHED_SUPERCYCLE_TRIGGER_FORCED,674ATH12K_HTT_SCHED_SUPERCYCLE_TRIGGER_LESS_NUM_TIDQ_ENTRIES,675ATH12K_HTT_SCHED_SUPERCYCLE_TRIGGER_LESS_NUM_ACTIVE_TIDS,676ATH12K_HTT_SCHED_SUPERCYCLE_TRIGGER_MAX_ITR_REACHED,677ATH12K_HTT_SCHED_SUPERCYCLE_TRIGGER_DUR_THRESHOLD_REACHED,678ATH12K_HTT_SCHED_SUPERCYCLE_TRIGGER_TWT_TRIGGER,679ATH12K_HTT_SCHED_SUPERCYCLE_TRIGGER_MAX,680};681682struct ath12k_htt_sched_txq_supercycle_triggers_tlv {683DECLARE_FLEX_ARRAY(__le32, supercycle_triggers);684} __packed;685686struct ath12k_htt_hw_stats_pdev_errs_tlv {687__le32 mac_id__word;688__le32 tx_abort;689__le32 tx_abort_fail_count;690__le32 rx_abort;691__le32 rx_abort_fail_count;692__le32 warm_reset;693__le32 cold_reset;694__le32 tx_flush;695__le32 tx_glb_reset;696__le32 tx_txq_reset;697__le32 rx_timeout_reset;698__le32 mac_cold_reset_restore_cal;699__le32 mac_cold_reset;700__le32 mac_warm_reset;701__le32 mac_only_reset;702__le32 phy_warm_reset;703__le32 phy_warm_reset_ucode_trig;704__le32 mac_warm_reset_restore_cal;705__le32 mac_sfm_reset;706__le32 phy_warm_reset_m3_ssr;707__le32 phy_warm_reset_reason_phy_m3;708__le32 phy_warm_reset_reason_tx_hw_stuck;709__le32 phy_warm_reset_reason_num_rx_frame_stuck;710__le32 phy_warm_reset_reason_wal_rx_rec_rx_busy;711__le32 phy_warm_reset_reason_wal_rx_rec_mac_hng;712__le32 phy_warm_reset_reason_mac_conv_phy_reset;713__le32 wal_rx_recovery_rst_mac_hang_cnt;714__le32 wal_rx_recovery_rst_known_sig_cnt;715__le32 wal_rx_recovery_rst_no_rx_cnt;716__le32 wal_rx_recovery_rst_no_rx_consec_cnt;717__le32 wal_rx_recovery_rst_rx_busy_cnt;718__le32 wal_rx_recovery_rst_phy_mac_hang_cnt;719__le32 rx_flush_cnt;720__le32 phy_warm_reset_reason_tx_exp_cca_stuck;721__le32 phy_warm_reset_reason_tx_consec_flsh_war;722__le32 phy_warm_reset_reason_tx_hwsch_reset_war;723__le32 phy_warm_reset_reason_hwsch_cca_wdog_war;724__le32 fw_rx_rings_reset;725__le32 rx_dest_drain_rx_descs_leak_prevented;726__le32 rx_dest_drain_rx_descs_saved_cnt;727__le32 rx_dest_drain_rxdma2reo_leak_detected;728__le32 rx_dest_drain_rxdma2fw_leak_detected;729__le32 rx_dest_drain_rxdma2wbm_leak_detected;730__le32 rx_dest_drain_rxdma1_2sw_leak_detected;731__le32 rx_dest_drain_rx_drain_ok_mac_idle;732__le32 rx_dest_drain_ok_mac_not_idle;733__le32 rx_dest_drain_prerequisite_invld;734__le32 rx_dest_drain_skip_non_lmac_reset;735__le32 rx_dest_drain_hw_fifo_notempty_post_wait;736} __packed;737738#define ATH12K_HTT_STATS_MAX_HW_INTR_NAME_LEN 8739struct ath12k_htt_hw_stats_intr_misc_tlv {740u8 hw_intr_name[ATH12K_HTT_STATS_MAX_HW_INTR_NAME_LEN];741__le32 mask;742__le32 count;743} __packed;744745struct ath12k_htt_hw_stats_whal_tx_tlv {746__le32 mac_id__word;747__le32 last_unpause_ppdu_id;748__le32 hwsch_unpause_wait_tqm_write;749__le32 hwsch_dummy_tlv_skipped;750__le32 hwsch_misaligned_offset_received;751__le32 hwsch_reset_count;752__le32 hwsch_dev_reset_war;753__le32 hwsch_delayed_pause;754__le32 hwsch_long_delayed_pause;755__le32 sch_rx_ppdu_no_response;756__le32 sch_selfgen_response;757__le32 sch_rx_sifs_resp_trigger;758} __packed;759760struct ath12k_htt_hw_war_stats_tlv {761__le32 mac_id__word;762DECLARE_FLEX_ARRAY(__le32, hw_wars);763} __packed;764765struct ath12k_htt_tx_tqm_cmn_stats_tlv {766__le32 mac_id__word;767__le32 max_cmdq_id;768__le32 list_mpdu_cnt_hist_intvl;769__le32 add_msdu;770__le32 q_empty;771__le32 q_not_empty;772__le32 drop_notification;773__le32 desc_threshold;774__le32 hwsch_tqm_invalid_status;775__le32 missed_tqm_gen_mpdus;776__le32 tqm_active_tids;777__le32 tqm_inactive_tids;778__le32 tqm_active_msduq_flows;779__le32 msduq_timestamp_updates;780__le32 msduq_updates_mpdu_head_info_cmd;781__le32 msduq_updates_emp_to_nonemp_status;782__le32 get_mpdu_head_info_cmds_by_query;783__le32 get_mpdu_head_info_cmds_by_tac;784__le32 gen_mpdu_cmds_by_query;785__le32 high_prio_q_not_empty;786} __packed;787788struct ath12k_htt_tx_tqm_error_stats_tlv {789__le32 q_empty_failure;790__le32 q_not_empty_failure;791__le32 add_msdu_failure;792__le32 tqm_cache_ctl_err;793__le32 tqm_soft_reset;794__le32 tqm_reset_num_in_use_link_descs;795__le32 tqm_reset_num_lost_link_descs;796__le32 tqm_reset_num_lost_host_tx_buf_cnt;797__le32 tqm_reset_num_in_use_internal_tqm;798__le32 tqm_reset_num_in_use_idle_link_rng;799__le32 tqm_reset_time_to_tqm_hang_delta_ms;800__le32 tqm_reset_recovery_time_ms;801__le32 tqm_reset_num_peers_hdl;802__le32 tqm_reset_cumm_dirty_hw_mpduq_cnt;803__le32 tqm_reset_cumm_dirty_hw_msduq_proc;804__le32 tqm_reset_flush_cache_cmd_su_cnt;805__le32 tqm_reset_flush_cache_cmd_other_cnt;806__le32 tqm_reset_flush_cache_cmd_trig_type;807__le32 tqm_reset_flush_cache_cmd_trig_cfg;808__le32 tqm_reset_flush_cmd_skp_status_null;809} __packed;810811struct ath12k_htt_tx_tqm_gen_mpdu_stats_tlv {812DECLARE_FLEX_ARRAY(__le32, gen_mpdu_end_reason);813} __packed;814815#define ATH12K_HTT_TX_TQM_MAX_LIST_MPDU_END_REASON 16816#define ATH12K_HTT_TX_TQM_MAX_LIST_MPDU_CNT_HISTOGRAM_BINS 16817818struct ath12k_htt_tx_tqm_list_mpdu_stats_tlv {819DECLARE_FLEX_ARRAY(__le32, list_mpdu_end_reason);820} __packed;821822struct ath12k_htt_tx_tqm_list_mpdu_cnt_tlv {823DECLARE_FLEX_ARRAY(__le32, list_mpdu_cnt_hist);824} __packed;825826struct ath12k_htt_tx_tqm_pdev_stats_tlv {827__le32 msdu_count;828__le32 mpdu_count;829__le32 remove_msdu;830__le32 remove_mpdu;831__le32 remove_msdu_ttl;832__le32 send_bar;833__le32 bar_sync;834__le32 notify_mpdu;835__le32 sync_cmd;836__le32 write_cmd;837__le32 hwsch_trigger;838__le32 ack_tlv_proc;839__le32 gen_mpdu_cmd;840__le32 gen_list_cmd;841__le32 remove_mpdu_cmd;842__le32 remove_mpdu_tried_cmd;843__le32 mpdu_queue_stats_cmd;844__le32 mpdu_head_info_cmd;845__le32 msdu_flow_stats_cmd;846__le32 remove_msdu_cmd;847__le32 remove_msdu_ttl_cmd;848__le32 flush_cache_cmd;849__le32 update_mpduq_cmd;850__le32 enqueue;851__le32 enqueue_notify;852__le32 notify_mpdu_at_head;853__le32 notify_mpdu_state_valid;854__le32 sched_udp_notify1;855__le32 sched_udp_notify2;856__le32 sched_nonudp_notify1;857__le32 sched_nonudp_notify2;858} __packed;859860struct ath12k_htt_tx_de_cmn_stats_tlv {861__le32 mac_id__word;862__le32 tcl2fw_entry_count;863__le32 not_to_fw;864__le32 invalid_pdev_vdev_peer;865__le32 tcl_res_invalid_addrx;866__le32 wbm2fw_entry_count;867__le32 invalid_pdev;868__le32 tcl_res_addrx_timeout;869__le32 invalid_vdev;870__le32 invalid_tcl_exp_frame_desc;871__le32 vdev_id_mismatch_cnt;872} __packed;873874struct ath12k_htt_tx_de_eapol_packets_stats_tlv {875__le32 m1_packets;876__le32 m2_packets;877__le32 m3_packets;878__le32 m4_packets;879__le32 g1_packets;880__le32 g2_packets;881__le32 rc4_packets;882__le32 eap_packets;883__le32 eapol_start_packets;884__le32 eapol_logoff_packets;885__le32 eapol_encap_asf_packets;886} __packed;887888struct ath12k_htt_tx_de_classify_stats_tlv {889__le32 arp_packets;890__le32 igmp_packets;891__le32 dhcp_packets;892__le32 host_inspected;893__le32 htt_included;894__le32 htt_valid_mcs;895__le32 htt_valid_nss;896__le32 htt_valid_preamble_type;897__le32 htt_valid_chainmask;898__le32 htt_valid_guard_interval;899__le32 htt_valid_retries;900__le32 htt_valid_bw_info;901__le32 htt_valid_power;902__le32 htt_valid_key_flags;903__le32 htt_valid_no_encryption;904__le32 fse_entry_count;905__le32 fse_priority_be;906__le32 fse_priority_high;907__le32 fse_priority_low;908__le32 fse_traffic_ptrn_be;909__le32 fse_traffic_ptrn_over_sub;910__le32 fse_traffic_ptrn_bursty;911__le32 fse_traffic_ptrn_interactive;912__le32 fse_traffic_ptrn_periodic;913__le32 fse_hwqueue_alloc;914__le32 fse_hwqueue_created;915__le32 fse_hwqueue_send_to_host;916__le32 mcast_entry;917__le32 bcast_entry;918__le32 htt_update_peer_cache;919__le32 htt_learning_frame;920__le32 fse_invalid_peer;921__le32 mec_notify;922} __packed;923924struct ath12k_htt_tx_de_classify_failed_stats_tlv {925__le32 ap_bss_peer_not_found;926__le32 ap_bcast_mcast_no_peer;927__le32 sta_delete_in_progress;928__le32 ibss_no_bss_peer;929__le32 invalid_vdev_type;930__le32 invalid_ast_peer_entry;931__le32 peer_entry_invalid;932__le32 ethertype_not_ip;933__le32 eapol_lookup_failed;934__le32 qpeer_not_allow_data;935__le32 fse_tid_override;936__le32 ipv6_jumbogram_zero_length;937__le32 qos_to_non_qos_in_prog;938__le32 ap_bcast_mcast_eapol;939__le32 unicast_on_ap_bss_peer;940__le32 ap_vdev_invalid;941__le32 incomplete_llc;942__le32 eapol_duplicate_m3;943__le32 eapol_duplicate_m4;944} __packed;945946struct ath12k_htt_tx_de_classify_status_stats_tlv {947__le32 eok;948__le32 classify_done;949__le32 lookup_failed;950__le32 send_host_dhcp;951__le32 send_host_mcast;952__le32 send_host_unknown_dest;953__le32 send_host;954__le32 status_invalid;955} __packed;956957struct ath12k_htt_tx_de_enqueue_packets_stats_tlv {958__le32 enqueued_pkts;959__le32 to_tqm;960__le32 to_tqm_bypass;961} __packed;962963struct ath12k_htt_tx_de_enqueue_discard_stats_tlv {964__le32 discarded_pkts;965__le32 local_frames;966__le32 is_ext_msdu;967} __packed;968969struct ath12k_htt_tx_de_compl_stats_tlv {970__le32 tcl_dummy_frame;971__le32 tqm_dummy_frame;972__le32 tqm_notify_frame;973__le32 fw2wbm_enq;974__le32 tqm_bypass_frame;975} __packed;976977enum ath12k_htt_tx_mumimo_grp_invalid_reason_code_stats {978ATH12K_HTT_TX_MUMIMO_GRP_VALID,979ATH12K_HTT_TX_MUMIMO_GRP_INVALID_NUM_MU_USERS_EXCEEDED_MU_MAX_USERS,980ATH12K_HTT_TX_MUMIMO_GRP_INVALID_SCHED_ALGO_NOT_MU_COMPATIBLE_GID,981ATH12K_HTT_TX_MUMIMO_GRP_INVALID_NON_PRIMARY_GRP,982ATH12K_HTT_TX_MUMIMO_GRP_INVALID_ZERO_CANDIDATES,983ATH12K_HTT_TX_MUMIMO_GRP_INVALID_MORE_CANDIDATES,984ATH12K_HTT_TX_MUMIMO_GRP_INVALID_GROUP_SIZE_EXCEED_NSS,985ATH12K_HTT_TX_MUMIMO_GRP_INVALID_GROUP_INELIGIBLE,986ATH12K_HTT_TX_MUMIMO_GRP_INVALID,987ATH12K_HTT_TX_MUMIMO_GRP_INVALID_GROUP_EFF_MU_TPUT_OMBPS,988ATH12K_HTT_TX_MUMIMO_GRP_INVALID_MAX_REASON_CODE,989};990991#define ATH12K_HTT_NUM_AC_WMM 0x4992#define ATH12K_HTT_MAX_NUM_SBT_INTR 4993#define ATH12K_HTT_TX_NUM_AC_MUMIMO_USER_STATS 4994#define ATH12K_HTT_TX_NUM_AX_MUMIMO_USER_STATS 8995#define ATH12K_HTT_TX_NUM_BE_MUMIMO_USER_STATS 8996#define ATH12K_HTT_TX_PDEV_STATS_NUM_TX_ERR_STATUS 7997#define ATH12K_HTT_TX_NUM_OFDMA_USER_STATS 74998#define ATH12K_HTT_TX_NUM_UL_MUMIMO_USER_STATS 8999#define ATH12K_HTT_STATS_NUM_MAX_MUMIMO_SZ 81000#define ATH12K_HTT_STATS_MUMIMO_TPUT_NUM_BINS 1010011002#define ATH12K_HTT_STATS_MAX_INVALID_REASON_CODE \1003ATH12K_HTT_TX_MUMIMO_GRP_INVALID_MAX_REASON_CODE1004#define ATH12K_HTT_TX_NUM_MUMIMO_GRP_INVALID_WORDS \1005(ATH12K_HTT_STATS_NUM_MAX_MUMIMO_SZ * ATH12K_HTT_STATS_MAX_INVALID_REASON_CODE)10061007struct ath12k_htt_tx_selfgen_cmn_stats_tlv {1008__le32 mac_id__word;1009__le32 su_bar;1010__le32 rts;1011__le32 cts2self;1012__le32 qos_null;1013__le32 delayed_bar_1;1014__le32 delayed_bar_2;1015__le32 delayed_bar_3;1016__le32 delayed_bar_4;1017__le32 delayed_bar_5;1018__le32 delayed_bar_6;1019__le32 delayed_bar_7;1020} __packed;10211022struct ath12k_htt_tx_selfgen_ac_stats_tlv {1023__le32 ac_su_ndpa;1024__le32 ac_su_ndp;1025__le32 ac_mu_mimo_ndpa;1026__le32 ac_mu_mimo_ndp;1027__le32 ac_mu_mimo_brpoll[ATH12K_HTT_TX_NUM_AC_MUMIMO_USER_STATS - 1];1028} __packed;10291030struct ath12k_htt_tx_selfgen_ax_stats_tlv {1031__le32 ax_su_ndpa;1032__le32 ax_su_ndp;1033__le32 ax_mu_mimo_ndpa;1034__le32 ax_mu_mimo_ndp;1035__le32 ax_mu_mimo_brpoll[ATH12K_HTT_TX_NUM_AX_MUMIMO_USER_STATS - 1];1036__le32 ax_basic_trigger;1037__le32 ax_bsr_trigger;1038__le32 ax_mu_bar_trigger;1039__le32 ax_mu_rts_trigger;1040__le32 ax_ulmumimo_trigger;1041} __packed;10421043struct ath12k_htt_tx_selfgen_be_stats_tlv {1044__le32 be_su_ndpa;1045__le32 be_su_ndp;1046__le32 be_mu_mimo_ndpa;1047__le32 be_mu_mimo_ndp;1048__le32 be_mu_mimo_brpoll[ATH12K_HTT_TX_NUM_BE_MUMIMO_USER_STATS - 1];1049__le32 be_basic_trigger;1050__le32 be_bsr_trigger;1051__le32 be_mu_bar_trigger;1052__le32 be_mu_rts_trigger;1053__le32 be_ulmumimo_trigger;1054__le32 be_su_ndpa_queued;1055__le32 be_su_ndp_queued;1056__le32 be_mu_mimo_ndpa_queued;1057__le32 be_mu_mimo_ndp_queued;1058__le32 be_mu_mimo_brpoll_queued[ATH12K_HTT_TX_NUM_BE_MUMIMO_USER_STATS - 1];1059__le32 be_ul_mumimo_trigger[ATH12K_HTT_TX_NUM_BE_MUMIMO_USER_STATS];1060} __packed;10611062struct ath12k_htt_tx_selfgen_ac_err_stats_tlv {1063__le32 ac_su_ndp_err;1064__le32 ac_su_ndpa_err;1065__le32 ac_mu_mimo_ndpa_err;1066__le32 ac_mu_mimo_ndp_err;1067__le32 ac_mu_mimo_brp1_err;1068__le32 ac_mu_mimo_brp2_err;1069__le32 ac_mu_mimo_brp3_err;1070} __packed;10711072struct ath12k_htt_tx_selfgen_ax_err_stats_tlv {1073__le32 ax_su_ndp_err;1074__le32 ax_su_ndpa_err;1075__le32 ax_mu_mimo_ndpa_err;1076__le32 ax_mu_mimo_ndp_err;1077__le32 ax_mu_mimo_brp_err[ATH12K_HTT_TX_NUM_AX_MUMIMO_USER_STATS - 1];1078__le32 ax_basic_trigger_err;1079__le32 ax_bsr_trigger_err;1080__le32 ax_mu_bar_trigger_err;1081__le32 ax_mu_rts_trigger_err;1082__le32 ax_ulmumimo_trigger_err;1083} __packed;10841085struct ath12k_htt_tx_selfgen_be_err_stats_tlv {1086__le32 be_su_ndp_err;1087__le32 be_su_ndpa_err;1088__le32 be_mu_mimo_ndpa_err;1089__le32 be_mu_mimo_ndp_err;1090__le32 be_mu_mimo_brp_err[ATH12K_HTT_TX_NUM_BE_MUMIMO_USER_STATS - 1];1091__le32 be_basic_trigger_err;1092__le32 be_bsr_trigger_err;1093__le32 be_mu_bar_trigger_err;1094__le32 be_mu_rts_trigger_err;1095__le32 be_ulmumimo_trigger_err;1096__le32 be_mu_mimo_brp_err_num_cbf_rxd[ATH12K_HTT_TX_NUM_BE_MUMIMO_USER_STATS];1097__le32 be_su_ndpa_flushed;1098__le32 be_su_ndp_flushed;1099__le32 be_mu_mimo_ndpa_flushed;1100__le32 be_mu_mimo_ndp_flushed;1101__le32 be_mu_mimo_brpoll_flushed[ATH12K_HTT_TX_NUM_BE_MUMIMO_USER_STATS - 1];1102__le32 be_ul_mumimo_trigger_err[ATH12K_HTT_TX_NUM_BE_MUMIMO_USER_STATS];1103} __packed;11041105enum ath12k_htt_tx_selfgen_sch_tsflag_error_stats {1106ATH12K_HTT_TX_SELFGEN_SCH_TSFLAG_FLUSH_RCVD_ERR,1107ATH12K_HTT_TX_SELFGEN_SCH_TSFLAG_FILT_SCHED_CMD_ERR,1108ATH12K_HTT_TX_SELFGEN_SCH_TSFLAG_RESP_MISMATCH_ERR,1109ATH12K_HTT_TX_SELFGEN_SCH_TSFLAG_RESP_CBF_MIMO_CTRL_MISMATCH_ERR,1110ATH12K_HTT_TX_SELFGEN_SCH_TSFLAG_RESP_CBF_BW_MISMATCH_ERR,1111ATH12K_HTT_TX_SELFGEN_SCH_TSFLAG_RETRY_COUNT_FAIL_ERR,1112ATH12K_HTT_TX_SELFGEN_SCH_TSFLAG_RESP_TOO_LATE_RECEIVED_ERR,1113ATH12K_HTT_TX_SELFGEN_SCH_TSFLAG_SIFS_STALL_NO_NEXT_CMD_ERR,11141115ATH12K_HTT_TX_SELFGEN_SCH_TSFLAG_ERR_STATS1116};11171118struct ath12k_htt_tx_selfgen_ac_sched_status_stats_tlv {1119__le32 ac_su_ndpa_sch_status[ATH12K_HTT_TX_PDEV_STATS_NUM_TX_ERR_STATUS];1120__le32 ac_su_ndp_sch_status[ATH12K_HTT_TX_PDEV_STATS_NUM_TX_ERR_STATUS];1121__le32 ac_su_ndp_sch_flag_err[ATH12K_HTT_TX_SELFGEN_SCH_TSFLAG_ERR_STATS];1122__le32 ac_mu_mimo_ndpa_sch_status[ATH12K_HTT_TX_PDEV_STATS_NUM_TX_ERR_STATUS];1123__le32 ac_mu_mimo_ndp_sch_status[ATH12K_HTT_TX_PDEV_STATS_NUM_TX_ERR_STATUS];1124__le32 ac_mu_mimo_ndp_sch_flag_err[ATH12K_HTT_TX_SELFGEN_SCH_TSFLAG_ERR_STATS];1125__le32 ac_mu_mimo_brp_sch_status[ATH12K_HTT_TX_PDEV_STATS_NUM_TX_ERR_STATUS];1126__le32 ac_mu_mimo_brp_sch_flag_err[ATH12K_HTT_TX_SELFGEN_SCH_TSFLAG_ERR_STATS];1127} __packed;11281129struct ath12k_htt_tx_selfgen_ax_sched_status_stats_tlv {1130__le32 ax_su_ndpa_sch_status[ATH12K_HTT_TX_PDEV_STATS_NUM_TX_ERR_STATUS];1131__le32 ax_su_ndp_sch_status[ATH12K_HTT_TX_PDEV_STATS_NUM_TX_ERR_STATUS];1132__le32 ax_su_ndp_sch_flag_err[ATH12K_HTT_TX_SELFGEN_SCH_TSFLAG_ERR_STATS];1133__le32 ax_mu_mimo_ndpa_sch_status[ATH12K_HTT_TX_PDEV_STATS_NUM_TX_ERR_STATUS];1134__le32 ax_mu_mimo_ndp_sch_status[ATH12K_HTT_TX_PDEV_STATS_NUM_TX_ERR_STATUS];1135__le32 ax_mu_mimo_ndp_sch_flag_err[ATH12K_HTT_TX_SELFGEN_SCH_TSFLAG_ERR_STATS];1136__le32 ax_mu_brp_sch_status[ATH12K_HTT_TX_PDEV_STATS_NUM_TX_ERR_STATUS];1137__le32 ax_mu_brp_sch_flag_err[ATH12K_HTT_TX_SELFGEN_SCH_TSFLAG_ERR_STATS];1138__le32 ax_mu_bar_sch_status[ATH12K_HTT_TX_PDEV_STATS_NUM_TX_ERR_STATUS];1139__le32 ax_mu_bar_sch_flag_err[ATH12K_HTT_TX_SELFGEN_SCH_TSFLAG_ERR_STATS];1140__le32 ax_basic_trig_sch_status[ATH12K_HTT_TX_PDEV_STATS_NUM_TX_ERR_STATUS];1141__le32 ax_basic_trig_sch_flag_err[ATH12K_HTT_TX_SELFGEN_SCH_TSFLAG_ERR_STATS];1142__le32 ax_ulmumimo_trig_sch_status[ATH12K_HTT_TX_PDEV_STATS_NUM_TX_ERR_STATUS];1143__le32 ax_ulmumimo_trig_sch_flag_err[ATH12K_HTT_TX_SELFGEN_SCH_TSFLAG_ERR_STATS];1144} __packed;11451146struct ath12k_htt_tx_selfgen_be_sched_status_stats_tlv {1147__le32 be_su_ndpa_sch_status[ATH12K_HTT_TX_PDEV_STATS_NUM_TX_ERR_STATUS];1148__le32 be_su_ndp_sch_status[ATH12K_HTT_TX_PDEV_STATS_NUM_TX_ERR_STATUS];1149__le32 be_su_ndp_sch_flag_err[ATH12K_HTT_TX_SELFGEN_SCH_TSFLAG_ERR_STATS];1150__le32 be_mu_mimo_ndpa_sch_status[ATH12K_HTT_TX_PDEV_STATS_NUM_TX_ERR_STATUS];1151__le32 be_mu_mimo_ndp_sch_status[ATH12K_HTT_TX_PDEV_STATS_NUM_TX_ERR_STATUS];1152__le32 be_mu_mimo_ndp_sch_flag_err[ATH12K_HTT_TX_SELFGEN_SCH_TSFLAG_ERR_STATS];1153__le32 be_mu_brp_sch_status[ATH12K_HTT_TX_PDEV_STATS_NUM_TX_ERR_STATUS];1154__le32 be_mu_brp_sch_flag_err[ATH12K_HTT_TX_SELFGEN_SCH_TSFLAG_ERR_STATS];1155__le32 be_mu_bar_sch_status[ATH12K_HTT_TX_PDEV_STATS_NUM_TX_ERR_STATUS];1156__le32 be_mu_bar_sch_flag_err[ATH12K_HTT_TX_SELFGEN_SCH_TSFLAG_ERR_STATS];1157__le32 be_basic_trig_sch_status[ATH12K_HTT_TX_PDEV_STATS_NUM_TX_ERR_STATUS];1158__le32 be_basic_trig_sch_flag_err[ATH12K_HTT_TX_SELFGEN_SCH_TSFLAG_ERR_STATS];1159__le32 be_ulmumimo_trig_sch_status[ATH12K_HTT_TX_PDEV_STATS_NUM_TX_ERR_STATUS];1160__le32 be_ulmumimo_trig_sch_flag_err[ATH12K_HTT_TX_SELFGEN_SCH_TSFLAG_ERR_STATS];1161} __packed;11621163struct ath12k_htt_stats_string_tlv {1164DECLARE_FLEX_ARRAY(__le32, data);1165} __packed;11661167#define ATH12K_HTT_SRING_STATS_MAC_ID GENMASK(7, 0)1168#define ATH12K_HTT_SRING_STATS_RING_ID GENMASK(15, 8)1169#define ATH12K_HTT_SRING_STATS_ARENA GENMASK(23, 16)1170#define ATH12K_HTT_SRING_STATS_EP BIT(24)1171#define ATH12K_HTT_SRING_STATS_NUM_AVAIL_WORDS GENMASK(15, 0)1172#define ATH12K_HTT_SRING_STATS_NUM_VALID_WORDS GENMASK(31, 16)1173#define ATH12K_HTT_SRING_STATS_HEAD_PTR GENMASK(15, 0)1174#define ATH12K_HTT_SRING_STATS_TAIL_PTR GENMASK(31, 16)1175#define ATH12K_HTT_SRING_STATS_CONSUMER_EMPTY GENMASK(15, 0)1176#define ATH12K_HTT_SRING_STATS_PRODUCER_FULL GENMASK(31, 16)1177#define ATH12K_HTT_SRING_STATS_PREFETCH_COUNT GENMASK(15, 0)1178#define ATH12K_HTT_SRING_STATS_INTERNAL_TAIL_PTR GENMASK(31, 16)11791180struct ath12k_htt_sring_stats_tlv {1181__le32 mac_id__ring_id__arena__ep;1182__le32 base_addr_lsb;1183__le32 base_addr_msb;1184__le32 ring_size;1185__le32 elem_size;1186__le32 num_avail_words__num_valid_words;1187__le32 head_ptr__tail_ptr;1188__le32 consumer_empty__producer_full;1189__le32 prefetch_count__internal_tail_ptr;1190} __packed;11911192struct ath12k_htt_sfm_cmn_tlv {1193__le32 mac_id__word;1194__le32 buf_total;1195__le32 mem_empty;1196__le32 deallocate_bufs;1197__le32 num_records;1198} __packed;11991200struct ath12k_htt_sfm_client_tlv {1201__le32 client_id;1202__le32 buf_min;1203__le32 buf_max;1204__le32 buf_busy;1205__le32 buf_alloc;1206__le32 buf_avail;1207__le32 num_users;1208} __packed;12091210struct ath12k_htt_sfm_client_user_tlv {1211DECLARE_FLEX_ARRAY(__le32, dwords_used_by_user_n);1212} __packed;12131214struct ath12k_htt_tx_pdev_mu_mimo_sch_stats_tlv {1215__le32 mu_mimo_sch_posted;1216__le32 mu_mimo_sch_failed;1217__le32 mu_mimo_ppdu_posted;1218__le32 ac_mu_mimo_sch_nusers[ATH12K_HTT_TX_NUM_AC_MUMIMO_USER_STATS];1219__le32 ax_mu_mimo_sch_nusers[ATH12K_HTT_TX_NUM_AX_MUMIMO_USER_STATS];1220__le32 ax_ofdma_sch_nusers[ATH12K_HTT_TX_NUM_OFDMA_USER_STATS];1221__le32 ax_ul_ofdma_nusers[ATH12K_HTT_TX_NUM_OFDMA_USER_STATS];1222__le32 ax_ul_ofdma_bsr_nusers[ATH12K_HTT_TX_NUM_OFDMA_USER_STATS];1223__le32 ax_ul_ofdma_bar_nusers[ATH12K_HTT_TX_NUM_OFDMA_USER_STATS];1224__le32 ax_ul_ofdma_brp_nusers[ATH12K_HTT_TX_NUM_OFDMA_USER_STATS];1225__le32 ax_ul_mumimo_nusers[ATH12K_HTT_TX_NUM_UL_MUMIMO_USER_STATS];1226__le32 ax_ul_mumimo_brp_nusers[ATH12K_HTT_TX_NUM_UL_MUMIMO_USER_STATS];1227__le32 ac_mu_mimo_per_grp_sz[ATH12K_HTT_TX_NUM_AC_MUMIMO_USER_STATS];1228__le32 ax_mu_mimo_per_grp_sz[ATH12K_HTT_TX_NUM_AX_MUMIMO_USER_STATS];1229__le32 be_mu_mimo_sch_nusers[ATH12K_HTT_TX_NUM_BE_MUMIMO_USER_STATS];1230__le32 be_mu_mimo_per_grp_sz[ATH12K_HTT_TX_NUM_BE_MUMIMO_USER_STATS];1231__le32 ac_mu_mimo_grp_sz_ext[ATH12K_HTT_TX_NUM_AC_MUMIMO_USER_STATS];1232} __packed;12331234struct ath12k_htt_tx_pdev_mumimo_grp_stats_tlv {1235__le32 dl_mumimo_grp_best_grp_size[ATH12K_HTT_STATS_NUM_MAX_MUMIMO_SZ];1236__le32 dl_mumimo_grp_best_num_usrs[ATH12K_HTT_TX_NUM_AX_MUMIMO_USER_STATS];1237__le32 dl_mumimo_grp_eligible[ATH12K_HTT_STATS_NUM_MAX_MUMIMO_SZ];1238__le32 dl_mumimo_grp_ineligible[ATH12K_HTT_STATS_NUM_MAX_MUMIMO_SZ];1239__le32 dl_mumimo_grp_invalid[ATH12K_HTT_TX_NUM_MUMIMO_GRP_INVALID_WORDS];1240__le32 dl_mumimo_grp_tputs[ATH12K_HTT_STATS_MUMIMO_TPUT_NUM_BINS];1241__le32 ul_mumimo_grp_best_grp_size[ATH12K_HTT_STATS_NUM_MAX_MUMIMO_SZ];1242__le32 ul_mumimo_grp_best_usrs[ATH12K_HTT_TX_NUM_AX_MUMIMO_USER_STATS];1243__le32 ul_mumimo_grp_tputs[ATH12K_HTT_STATS_MUMIMO_TPUT_NUM_BINS];1244} __packed;12451246enum ath12k_htt_stats_tx_sched_modes {1247ATH12K_HTT_STATS_TX_SCHED_MODE_MU_MIMO_AC = 0,1248ATH12K_HTT_STATS_TX_SCHED_MODE_MU_MIMO_AX,1249ATH12K_HTT_STATS_TX_SCHED_MODE_MU_OFDMA_AX,1250ATH12K_HTT_STATS_TX_SCHED_MODE_MU_OFDMA_BE,1251ATH12K_HTT_STATS_TX_SCHED_MODE_MU_MIMO_BE1252};12531254struct ath12k_htt_tx_pdev_mpdu_stats_tlv {1255__le32 mpdus_queued_usr;1256__le32 mpdus_tried_usr;1257__le32 mpdus_failed_usr;1258__le32 mpdus_requeued_usr;1259__le32 err_no_ba_usr;1260__le32 mpdu_underrun_usr;1261__le32 ampdu_underrun_usr;1262__le32 user_index;1263__le32 tx_sched_mode;1264} __packed;12651266struct ath12k_htt_pdev_stats_cca_counters_tlv {1267__le32 tx_frame_usec;1268__le32 rx_frame_usec;1269__le32 rx_clear_usec;1270__le32 my_rx_frame_usec;1271__le32 usec_cnt;1272__le32 med_rx_idle_usec;1273__le32 med_tx_idle_global_usec;1274__le32 cca_obss_usec;1275} __packed;12761277struct ath12k_htt_pdev_cca_stats_hist_v1_tlv {1278__le32 chan_num;1279__le32 num_records;1280__le32 valid_cca_counters_bitmap;1281__le32 collection_interval;1282} __packed;12831284#define ATH12K_HTT_TX_CV_CORR_MAX_NUM_COLUMNS 81285#define ATH12K_HTT_TX_NUM_AC_MUMIMO_USER_STATS 41286#define ATH12K_HTT_TX_NUM_AX_MUMIMO_USER_STATS 81287#define ATH12K_HTT_TX_NUM_BE_MUMIMO_USER_STATS 81288#define ATH12K_HTT_TX_PDEV_STATS_NUM_BW_COUNTERS 41289#define ATH12K_HTT_TX_NUM_MCS_CNTRS 121290#define ATH12K_HTT_TX_NUM_EXTRA_MCS_CNTRS 212911292#define ATH12K_HTT_TX_NUM_OF_SOUNDING_STATS_WORDS \1293(ATH12K_HTT_TX_PDEV_STATS_NUM_BW_COUNTERS * \1294ATH12K_HTT_TX_NUM_AX_MUMIMO_USER_STATS)12951296enum ath12k_htt_txbf_sound_steer_modes {1297ATH12K_HTT_IMPL_STEER_STATS = 0,1298ATH12K_HTT_EXPL_SUSIFS_STEER_STATS = 1,1299ATH12K_HTT_EXPL_SURBO_STEER_STATS = 2,1300ATH12K_HTT_EXPL_MUSIFS_STEER_STATS = 3,1301ATH12K_HTT_EXPL_MURBO_STEER_STATS = 4,1302ATH12K_HTT_TXBF_MAX_NUM_OF_MODES = 51303};13041305enum ath12k_htt_stats_sounding_tx_mode {1306ATH12K_HTT_TX_AC_SOUNDING_MODE = 0,1307ATH12K_HTT_TX_AX_SOUNDING_MODE = 1,1308ATH12K_HTT_TX_BE_SOUNDING_MODE = 2,1309ATH12K_HTT_TX_CMN_SOUNDING_MODE = 3,1310};13111312struct ath12k_htt_tx_sounding_stats_tlv {1313__le32 tx_sounding_mode;1314__le32 cbf_20[ATH12K_HTT_TXBF_MAX_NUM_OF_MODES];1315__le32 cbf_40[ATH12K_HTT_TXBF_MAX_NUM_OF_MODES];1316__le32 cbf_80[ATH12K_HTT_TXBF_MAX_NUM_OF_MODES];1317__le32 cbf_160[ATH12K_HTT_TXBF_MAX_NUM_OF_MODES];1318__le32 sounding[ATH12K_HTT_TX_NUM_OF_SOUNDING_STATS_WORDS];1319__le32 cv_nc_mismatch_err;1320__le32 cv_fcs_err;1321__le32 cv_frag_idx_mismatch;1322__le32 cv_invalid_peer_id;1323__le32 cv_no_txbf_setup;1324__le32 cv_expiry_in_update;1325__le32 cv_pkt_bw_exceed;1326__le32 cv_dma_not_done_err;1327__le32 cv_update_failed;1328__le32 cv_total_query;1329__le32 cv_total_pattern_query;1330__le32 cv_total_bw_query;1331__le32 cv_invalid_bw_coding;1332__le32 cv_forced_sounding;1333__le32 cv_standalone_sounding;1334__le32 cv_nc_mismatch;1335__le32 cv_fb_type_mismatch;1336__le32 cv_ofdma_bw_mismatch;1337__le32 cv_bw_mismatch;1338__le32 cv_pattern_mismatch;1339__le32 cv_preamble_mismatch;1340__le32 cv_nr_mismatch;1341__le32 cv_in_use_cnt_exceeded;1342__le32 cv_found;1343__le32 cv_not_found;1344__le32 sounding_320[ATH12K_HTT_TX_NUM_BE_MUMIMO_USER_STATS];1345__le32 cbf_320[ATH12K_HTT_TXBF_MAX_NUM_OF_MODES];1346__le32 cv_ntbr_sounding;1347__le32 cv_found_upload_in_progress;1348__le32 cv_expired_during_query;1349__le32 cv_dma_timeout_error;1350__le32 cv_buf_ibf_uploads;1351__le32 cv_buf_ebf_uploads;1352__le32 cv_buf_received;1353__le32 cv_buf_fed_back;1354__le32 cv_total_query_ibf;1355__le32 cv_found_ibf;1356__le32 cv_not_found_ibf;1357__le32 cv_expired_during_query_ibf;1358} __packed;13591360struct ath12k_htt_pdev_obss_pd_stats_tlv {1361__le32 num_obss_tx_ppdu_success;1362__le32 num_obss_tx_ppdu_failure;1363__le32 num_sr_tx_transmissions;1364__le32 num_spatial_reuse_opportunities;1365__le32 num_non_srg_opportunities;1366__le32 num_non_srg_ppdu_tried;1367__le32 num_non_srg_ppdu_success;1368__le32 num_srg_opportunities;1369__le32 num_srg_ppdu_tried;1370__le32 num_srg_ppdu_success;1371__le32 num_psr_opportunities;1372__le32 num_psr_ppdu_tried;1373__le32 num_psr_ppdu_success;1374__le32 num_non_srg_tried_per_ac[ATH12K_HTT_NUM_AC_WMM];1375__le32 num_non_srg_success_ac[ATH12K_HTT_NUM_AC_WMM];1376__le32 num_srg_tried_per_ac[ATH12K_HTT_NUM_AC_WMM];1377__le32 num_srg_success_per_ac[ATH12K_HTT_NUM_AC_WMM];1378__le32 num_obss_min_dur_check_flush_cnt;1379__le32 num_sr_ppdu_abort_flush_cnt;1380} __packed;13811382#define ATH12K_HTT_STATS_MAX_PROF_STATS_NAME_LEN 321383#define ATH12K_HTT_LATENCY_PROFILE_NUM_MAX_HIST 31384#define ATH12K_HTT_INTERRUPTS_LATENCY_PROFILE_MAX_HIST 313851386struct ath12k_htt_latency_prof_stats_tlv {1387__le32 print_header;1388s8 latency_prof_name[ATH12K_HTT_STATS_MAX_PROF_STATS_NAME_LEN];1389__le32 cnt;1390__le32 min;1391__le32 max;1392__le32 last;1393__le32 tot;1394__le32 avg;1395__le32 hist_intvl;1396__le32 hist[ATH12K_HTT_LATENCY_PROFILE_NUM_MAX_HIST];1397} __packed;13981399struct ath12k_htt_latency_prof_ctx_tlv {1400__le32 duration;1401__le32 tx_msdu_cnt;1402__le32 tx_mpdu_cnt;1403__le32 tx_ppdu_cnt;1404__le32 rx_msdu_cnt;1405__le32 rx_mpdu_cnt;1406} __packed;14071408struct ath12k_htt_latency_prof_cnt_tlv {1409__le32 prof_enable_cnt;1410} __packed;14111412#define ATH12K_HTT_RX_NUM_MCS_CNTRS 121413#define ATH12K_HTT_RX_NUM_GI_CNTRS 41414#define ATH12K_HTT_RX_NUM_SPATIAL_STREAMS 81415#define ATH12K_HTT_RX_NUM_BW_CNTRS 41416#define ATH12K_HTT_RX_NUM_RU_SIZE_CNTRS 61417#define ATH12K_HTT_RX_NUM_RU_SIZE_160MHZ_CNTRS 71418#define ATH12K_HTT_RX_UL_MAX_UPLINK_RSSI_TRACK 51419#define ATH12K_HTT_RX_NUM_REDUCED_CHAN_TYPES 21420#define ATH12K_HTT_RX_NUM_EXTRA_MCS_CNTRS 214211422enum ATH12K_HTT_TX_RX_PDEV_STATS_AX_RU_SIZE {1423ATH12K_HTT_TX_RX_PDEV_STATS_AX_RU_SIZE_26,1424ATH12K_HTT_TX_RX_PDEV_STATS_AX_RU_SIZE_52,1425ATH12K_HTT_TX_RX_PDEV_STATS_AX_RU_SIZE_106,1426ATH12K_HTT_TX_RX_PDEV_STATS_AX_RU_SIZE_242,1427ATH12K_HTT_TX_RX_PDEV_STATS_AX_RU_SIZE_484,1428ATH12K_HTT_TX_RX_PDEV_STATS_AX_RU_SIZE_996,1429ATH12K_HTT_TX_RX_PDEV_STATS_AX_RU_SIZE_996x2,1430ATH12K_HTT_TX_RX_PDEV_STATS_NUM_AX_RU_SIZE_CNTRS,1431};14321433struct ath12k_htt_rx_pdev_ul_ofdma_user_stats_tlv {1434__le32 user_index;1435__le32 rx_ulofdma_non_data_ppdu;1436__le32 rx_ulofdma_data_ppdu;1437__le32 rx_ulofdma_mpdu_ok;1438__le32 rx_ulofdma_mpdu_fail;1439__le32 rx_ulofdma_non_data_nusers;1440__le32 rx_ulofdma_data_nusers;1441} __packed;14421443struct ath12k_htt_rx_pdev_ul_trigger_stats_tlv {1444__le32 mac_id__word;1445__le32 rx_11ax_ul_ofdma;1446__le32 ul_ofdma_rx_mcs[ATH12K_HTT_RX_NUM_MCS_CNTRS];1447__le32 ul_ofdma_rx_gi[ATH12K_HTT_RX_NUM_GI_CNTRS][ATH12K_HTT_RX_NUM_MCS_CNTRS];1448__le32 ul_ofdma_rx_nss[ATH12K_HTT_RX_NUM_SPATIAL_STREAMS];1449__le32 ul_ofdma_rx_bw[ATH12K_HTT_RX_NUM_BW_CNTRS];1450__le32 ul_ofdma_rx_stbc;1451__le32 ul_ofdma_rx_ldpc;1452__le32 data_ru_size_ppdu[ATH12K_HTT_RX_NUM_RU_SIZE_160MHZ_CNTRS];1453__le32 non_data_ru_size_ppdu[ATH12K_HTT_RX_NUM_RU_SIZE_160MHZ_CNTRS];1454__le32 uplink_sta_aid[ATH12K_HTT_RX_UL_MAX_UPLINK_RSSI_TRACK];1455__le32 uplink_sta_target_rssi[ATH12K_HTT_RX_UL_MAX_UPLINK_RSSI_TRACK];1456__le32 uplink_sta_fd_rssi[ATH12K_HTT_RX_UL_MAX_UPLINK_RSSI_TRACK];1457__le32 uplink_sta_power_headroom[ATH12K_HTT_RX_UL_MAX_UPLINK_RSSI_TRACK];1458__le32 red_bw[ATH12K_HTT_RX_NUM_REDUCED_CHAN_TYPES][ATH12K_HTT_RX_NUM_BW_CNTRS];1459__le32 ul_ofdma_bsc_trig_rx_qos_null_only;1460} __packed;14611462#define ATH12K_HTT_TX_UL_MUMIMO_USER_STATS 814631464struct ath12k_htt_rx_ul_mumimo_trig_stats_tlv {1465__le32 mac_id__word;1466__le32 rx_11ax_ul_mumimo;1467__le32 ul_mumimo_rx_mcs[ATH12K_HTT_RX_NUM_MCS_CNTRS];1468__le32 ul_rx_gi[ATH12K_HTT_RX_NUM_GI_CNTRS][ATH12K_HTT_RX_NUM_MCS_CNTRS];1469__le32 ul_mumimo_rx_nss[ATH12K_HTT_RX_NUM_SPATIAL_STREAMS];1470__le32 ul_mumimo_rx_bw[ATH12K_HTT_RX_NUM_BW_CNTRS];1471__le32 ul_mumimo_rx_stbc;1472__le32 ul_mumimo_rx_ldpc;1473__le32 ul_mumimo_rx_mcs_ext[ATH12K_HTT_RX_NUM_EXTRA_MCS_CNTRS];1474__le32 ul_gi_ext[ATH12K_HTT_RX_NUM_GI_CNTRS][ATH12K_HTT_RX_NUM_EXTRA_MCS_CNTRS];1475s8 ul_rssi[ATH12K_HTT_RX_NUM_SPATIAL_STREAMS][ATH12K_HTT_RX_NUM_BW_CNTRS];1476s8 tgt_rssi[ATH12K_HTT_TX_UL_MUMIMO_USER_STATS][ATH12K_HTT_RX_NUM_BW_CNTRS];1477s8 fd[ATH12K_HTT_TX_UL_MUMIMO_USER_STATS][ATH12K_HTT_RX_NUM_SPATIAL_STREAMS];1478s8 db[ATH12K_HTT_TX_UL_MUMIMO_USER_STATS][ATH12K_HTT_RX_NUM_SPATIAL_STREAMS];1479__le32 red_bw[ATH12K_HTT_RX_NUM_REDUCED_CHAN_TYPES][ATH12K_HTT_RX_NUM_BW_CNTRS];1480__le32 mumimo_bsc_trig_rx_qos_null_only;1481} __packed;14821483#define ATH12K_HTT_RX_NUM_MAX_PEAK_OCCUPANCY_INDEX 101484#define ATH12K_HTT_RX_NUM_MAX_CURR_OCCUPANCY_INDEX 101485#define ATH12K_HTT_RX_NUM_SQUARE_INDEX 61486#define ATH12K_HTT_RX_NUM_MAX_PEAK_SEARCH_INDEX 41487#define ATH12K_HTT_RX_NUM_MAX_PENDING_SEARCH_INDEX 414881489struct ath12k_htt_rx_fse_stats_tlv {1490__le32 fse_enable_cnt;1491__le32 fse_disable_cnt;1492__le32 fse_cache_invalidate_entry_cnt;1493__le32 fse_full_cache_invalidate_cnt;1494__le32 fse_num_cache_hits_cnt;1495__le32 fse_num_searches_cnt;1496__le32 fse_cache_occupancy_peak_cnt[ATH12K_HTT_RX_NUM_MAX_PEAK_OCCUPANCY_INDEX];1497__le32 fse_cache_occupancy_curr_cnt[ATH12K_HTT_RX_NUM_MAX_CURR_OCCUPANCY_INDEX];1498__le32 fse_search_stat_square_cnt[ATH12K_HTT_RX_NUM_SQUARE_INDEX];1499__le32 fse_search_stat_peak_cnt[ATH12K_HTT_RX_NUM_MAX_PEAK_SEARCH_INDEX];1500__le32 fse_search_stat_pending_cnt[ATH12K_HTT_RX_NUM_MAX_PENDING_SEARCH_INDEX];1501} __packed;15021503#define ATH12K_HTT_TX_BF_RATE_STATS_NUM_MCS_COUNTERS 141504#define ATH12K_HTT_TX_PDEV_STATS_NUM_LEGACY_OFDM_STATS 81505#define ATH12K_HTT_TX_PDEV_STATS_NUM_SPATIAL_STREAMS 81506#define ATH12K_HTT_TXBF_NUM_BW_CNTRS 51507#define ATH12K_HTT_TXBF_NUM_REDUCED_CHAN_TYPES 215081509struct ath12k_htt_pdev_txrate_txbf_stats_tlv {1510__le32 tx_su_txbf_mcs[ATH12K_HTT_TX_BF_RATE_STATS_NUM_MCS_COUNTERS];1511__le32 tx_su_ibf_mcs[ATH12K_HTT_TX_BF_RATE_STATS_NUM_MCS_COUNTERS];1512__le32 tx_su_ol_mcs[ATH12K_HTT_TX_BF_RATE_STATS_NUM_MCS_COUNTERS];1513__le32 tx_su_txbf_nss[ATH12K_HTT_TX_PDEV_STATS_NUM_SPATIAL_STREAMS];1514__le32 tx_su_ibf_nss[ATH12K_HTT_TX_PDEV_STATS_NUM_SPATIAL_STREAMS];1515__le32 tx_su_ol_nss[ATH12K_HTT_TX_PDEV_STATS_NUM_SPATIAL_STREAMS];1516__le32 tx_su_txbf_bw[ATH12K_HTT_TXBF_NUM_BW_CNTRS];1517__le32 tx_su_ibf_bw[ATH12K_HTT_TXBF_NUM_BW_CNTRS];1518__le32 tx_su_ol_bw[ATH12K_HTT_TXBF_NUM_BW_CNTRS];1519__le32 tx_legacy_ofdm_rate[ATH12K_HTT_TX_PDEV_STATS_NUM_LEGACY_OFDM_STATS];1520__le32 txbf[ATH12K_HTT_TXBF_NUM_REDUCED_CHAN_TYPES][ATH12K_HTT_TXBF_NUM_BW_CNTRS];1521__le32 ibf[ATH12K_HTT_TXBF_NUM_REDUCED_CHAN_TYPES][ATH12K_HTT_TXBF_NUM_BW_CNTRS];1522__le32 ol[ATH12K_HTT_TXBF_NUM_REDUCED_CHAN_TYPES][ATH12K_HTT_TXBF_NUM_BW_CNTRS];1523__le32 txbf_flag_set_mu_mode;1524__le32 txbf_flag_set_final_status;1525__le32 txbf_flag_not_set_verified_txbf_mode;1526__le32 txbf_flag_not_set_disable_p2p_access;1527__le32 txbf_flag_not_set_max_nss_in_he160;1528__le32 txbf_flag_not_set_disable_uldlofdma;1529__le32 txbf_flag_not_set_mcs_threshold_val;1530__le32 txbf_flag_not_set_final_status;1531} __packed;15321533struct ath12k_htt_txbf_ofdma_ax_ndpa_stats_elem_t {1534__le32 ax_ofdma_ndpa_queued;1535__le32 ax_ofdma_ndpa_tried;1536__le32 ax_ofdma_ndpa_flush;1537__le32 ax_ofdma_ndpa_err;1538} __packed;15391540struct ath12k_htt_txbf_ofdma_ax_ndpa_stats_tlv {1541__le32 num_elems_ax_ndpa_arr;1542__le32 arr_elem_size_ax_ndpa;1543DECLARE_FLEX_ARRAY(struct ath12k_htt_txbf_ofdma_ax_ndpa_stats_elem_t, ax_ndpa);1544} __packed;15451546struct ath12k_htt_txbf_ofdma_ax_ndp_stats_elem_t {1547__le32 ax_ofdma_ndp_queued;1548__le32 ax_ofdma_ndp_tried;1549__le32 ax_ofdma_ndp_flush;1550__le32 ax_ofdma_ndp_err;1551} __packed;15521553struct ath12k_htt_txbf_ofdma_ax_ndp_stats_tlv {1554__le32 num_elems_ax_ndp_arr;1555__le32 arr_elem_size_ax_ndp;1556DECLARE_FLEX_ARRAY(struct ath12k_htt_txbf_ofdma_ax_ndp_stats_elem_t, ax_ndp);1557} __packed;15581559struct ath12k_htt_txbf_ofdma_ax_brp_stats_elem_t {1560__le32 ax_ofdma_brp_queued;1561__le32 ax_ofdma_brp_tried;1562__le32 ax_ofdma_brp_flushed;1563__le32 ax_ofdma_brp_err;1564__le32 ax_ofdma_num_cbf_rcvd;1565} __packed;15661567struct ath12k_htt_txbf_ofdma_ax_brp_stats_tlv {1568__le32 num_elems_ax_brp_arr;1569__le32 arr_elem_size_ax_brp;1570DECLARE_FLEX_ARRAY(struct ath12k_htt_txbf_ofdma_ax_brp_stats_elem_t, ax_brp);1571} __packed;15721573struct ath12k_htt_txbf_ofdma_ax_steer_stats_elem_t {1574__le32 num_ppdu_steer;1575__le32 num_ppdu_ol;1576__le32 num_usr_prefetch;1577__le32 num_usr_sound;1578__le32 num_usr_force_sound;1579} __packed;15801581struct ath12k_htt_txbf_ofdma_ax_steer_stats_tlv {1582__le32 num_elems_ax_steer_arr;1583__le32 arr_elem_size_ax_steer;1584DECLARE_FLEX_ARRAY(struct ath12k_htt_txbf_ofdma_ax_steer_stats_elem_t, ax_steer);1585} __packed;15861587struct ath12k_htt_txbf_ofdma_ax_steer_mpdu_stats_tlv {1588__le32 ax_ofdma_rbo_steer_mpdus_tried;1589__le32 ax_ofdma_rbo_steer_mpdus_failed;1590__le32 ax_ofdma_sifs_steer_mpdus_tried;1591__le32 ax_ofdma_sifs_steer_mpdus_failed;1592} __packed;15931594enum ath12k_htt_stats_page_lock_state {1595ATH12K_HTT_STATS_PAGE_LOCKED = 0,1596ATH12K_HTT_STATS_PAGE_UNLOCKED = 1,1597ATH12K_NUM_PG_LOCK_STATE1598};15991600#define ATH12K_PAGER_MAX 1016011602#define ATH12K_HTT_DLPAGER_ASYNC_LOCK_PG_CNT_INFO0 GENMASK(7, 0)1603#define ATH12K_HTT_DLPAGER_SYNC_LOCK_PG_CNT_INFO0 GENMASK(15, 8)1604#define ATH12K_HTT_DLPAGER_TOTAL_LOCK_PAGES_INFO1 GENMASK(15, 0)1605#define ATH12K_HTT_DLPAGER_TOTAL_FREE_PAGES_INFO1 GENMASK(31, 16)1606#define ATH12K_HTT_DLPAGER_TOTAL_LOCK_PAGES_INFO2 GENMASK(15, 0)1607#define ATH12K_HTT_DLPAGER_TOTAL_FREE_PAGES_INFO2 GENMASK(31, 16)16081609struct ath12k_htt_pgs_info {1610__le32 page_num;1611__le32 num_pgs;1612__le32 ts_lsb;1613__le32 ts_msb;1614} __packed;16151616struct ath12k_htt_dl_pager_stats_tlv {1617__le32 info0;1618__le32 info1;1619__le32 info2;1620struct ath12k_htt_pgs_info pgs_info[ATH12K_NUM_PG_LOCK_STATE][ATH12K_PAGER_MAX];1621} __packed;16221623#define ATH12K_HTT_STATS_MAX_CHAINS 81624#define ATH12K_HTT_MAX_RX_PKT_CNT 81625#define ATH12K_HTT_MAX_RX_PKT_CRC_PASS_CNT 81626#define ATH12K_HTT_MAX_PER_BLK_ERR_CNT 201627#define ATH12K_HTT_MAX_RX_OTA_ERR_CNT 141628#define ATH12K_HTT_MAX_CH_PWR_INFO_SIZE 1616291630struct ath12k_htt_phy_stats_tlv {1631a_sle32 nf_chain[ATH12K_HTT_STATS_MAX_CHAINS];1632__le32 false_radar_cnt;1633__le32 radar_cs_cnt;1634a_sle32 ani_level;1635__le32 fw_run_time;1636a_sle32 runtime_nf_chain[ATH12K_HTT_STATS_MAX_CHAINS];1637} __packed;16381639struct ath12k_htt_phy_counters_tlv {1640__le32 rx_ofdma_timing_err_cnt;1641__le32 rx_cck_fail_cnt;1642__le32 mactx_abort_cnt;1643__le32 macrx_abort_cnt;1644__le32 phytx_abort_cnt;1645__le32 phyrx_abort_cnt;1646__le32 phyrx_defer_abort_cnt;1647__le32 rx_gain_adj_lstf_event_cnt;1648__le32 rx_gain_adj_non_legacy_cnt;1649__le32 rx_pkt_cnt[ATH12K_HTT_MAX_RX_PKT_CNT];1650__le32 rx_pkt_crc_pass_cnt[ATH12K_HTT_MAX_RX_PKT_CRC_PASS_CNT];1651__le32 per_blk_err_cnt[ATH12K_HTT_MAX_PER_BLK_ERR_CNT];1652__le32 rx_ota_err_cnt[ATH12K_HTT_MAX_RX_OTA_ERR_CNT];1653} __packed;16541655struct ath12k_htt_phy_reset_stats_tlv {1656__le32 pdev_id;1657__le32 chan_mhz;1658__le32 chan_band_center_freq1;1659__le32 chan_band_center_freq2;1660__le32 chan_phy_mode;1661__le32 chan_flags;1662__le32 chan_num;1663__le32 reset_cause;1664__le32 prev_reset_cause;1665__le32 phy_warm_reset_src;1666__le32 rx_gain_tbl_mode;1667__le32 xbar_val;1668__le32 force_calibration;1669__le32 phyrf_mode;1670__le32 phy_homechan;1671__le32 phy_tx_ch_mask;1672__le32 phy_rx_ch_mask;1673__le32 phybb_ini_mask;1674__le32 phyrf_ini_mask;1675__le32 phy_dfs_en_mask;1676__le32 phy_sscan_en_mask;1677__le32 phy_synth_sel_mask;1678__le32 phy_adfs_freq;1679__le32 cck_fir_settings;1680__le32 phy_dyn_pri_chan;1681__le32 cca_thresh;1682__le32 dyn_cca_status;1683__le32 rxdesense_thresh_hw;1684__le32 rxdesense_thresh_sw;1685} __packed;16861687struct ath12k_htt_phy_reset_counters_tlv {1688__le32 pdev_id;1689__le32 cf_active_low_fail_cnt;1690__le32 cf_active_low_pass_cnt;1691__le32 phy_off_through_vreg_cnt;1692__le32 force_calibration_cnt;1693__le32 rf_mode_switch_phy_off_cnt;1694__le32 temperature_recal_cnt;1695} __packed;16961697struct ath12k_htt_phy_tpc_stats_tlv {1698__le32 pdev_id;1699__le32 tx_power_scale;1700__le32 tx_power_scale_db;1701__le32 min_negative_tx_power;1702__le32 reg_ctl_domain;1703__le32 max_reg_allowed_power[ATH12K_HTT_STATS_MAX_CHAINS];1704__le32 max_reg_allowed_power_6ghz[ATH12K_HTT_STATS_MAX_CHAINS];1705__le32 twice_max_rd_power;1706__le32 max_tx_power;1707__le32 home_max_tx_power;1708__le32 psd_power;1709__le32 eirp_power;1710__le32 power_type_6ghz;1711__le32 sub_band_cfreq[ATH12K_HTT_MAX_CH_PWR_INFO_SIZE];1712__le32 sub_band_txpower[ATH12K_HTT_MAX_CH_PWR_INFO_SIZE];1713} __packed;17141715struct ath12k_htt_t2h_soc_txrx_stats_common_tlv {1716__le32 inv_peers_msdu_drop_count_hi;1717__le32 inv_peers_msdu_drop_count_lo;1718} __packed;17191720#define ATH12K_HTT_AST_PDEV_ID_INFO GENMASK(1, 0)1721#define ATH12K_HTT_AST_VDEV_ID_INFO GENMASK(9, 2)1722#define ATH12K_HTT_AST_NEXT_HOP_INFO BIT(10)1723#define ATH12K_HTT_AST_MCAST_INFO BIT(11)1724#define ATH12K_HTT_AST_MONITOR_DIRECT_INFO BIT(12)1725#define ATH12K_HTT_AST_MESH_STA_INFO BIT(13)1726#define ATH12K_HTT_AST_MEC_INFO BIT(14)1727#define ATH12K_HTT_AST_INTRA_BSS_INFO BIT(15)17281729struct ath12k_htt_ast_entry_tlv {1730__le32 sw_peer_id;1731__le32 ast_index;1732struct htt_mac_addr mac_addr;1733__le32 info;1734} __packed;17351736enum ath12k_htt_stats_direction {1737ATH12K_HTT_STATS_DIRECTION_TX,1738ATH12K_HTT_STATS_DIRECTION_RX1739};17401741enum ath12k_htt_stats_ppdu_type {1742ATH12K_HTT_STATS_PPDU_TYPE_MODE_SU,1743ATH12K_HTT_STATS_PPDU_TYPE_DL_MU_MIMO,1744ATH12K_HTT_STATS_PPDU_TYPE_UL_MU_MIMO,1745ATH12K_HTT_STATS_PPDU_TYPE_DL_MU_OFDMA,1746ATH12K_HTT_STATS_PPDU_TYPE_UL_MU_OFDMA1747};17481749enum ath12k_htt_stats_param_type {1750ATH12K_HTT_STATS_PREAM_OFDM,1751ATH12K_HTT_STATS_PREAM_CCK,1752ATH12K_HTT_STATS_PREAM_HT,1753ATH12K_HTT_STATS_PREAM_VHT,1754ATH12K_HTT_STATS_PREAM_HE,1755ATH12K_HTT_STATS_PREAM_EHT,1756ATH12K_HTT_STATS_PREAM_RSVD1,1757ATH12K_HTT_STATS_PREAM_COUNT,1758};17591760#define ATH12K_HTT_PUNCT_STATS_MAX_SUBBAND_CNT 3217611762struct ath12k_htt_pdev_puncture_stats_tlv {1763__le32 mac_id__word;1764__le32 direction;1765__le32 preamble;1766__le32 ppdu_type;1767__le32 subband_cnt;1768__le32 last_used_pattern_mask;1769__le32 num_subbands_used_cnt[ATH12K_HTT_PUNCT_STATS_MAX_SUBBAND_CNT];1770} __packed;17711772struct ath12k_htt_dmac_reset_stats_tlv {1773__le32 reset_count;1774__le32 reset_time_lo_ms;1775__le32 reset_time_hi_ms;1776__le32 disengage_time_lo_ms;1777__le32 disengage_time_hi_ms;1778__le32 engage_time_lo_ms;1779__le32 engage_time_hi_ms;1780__le32 disengage_count;1781__le32 engage_count;1782__le32 drain_dest_ring_mask;1783} __packed;17841785struct ath12k_htt_pdev_sched_algo_ofdma_stats_tlv {1786__le32 mac_id__word;1787__le32 rate_based_dlofdma_enabled_cnt[ATH12K_HTT_NUM_AC_WMM];1788__le32 rate_based_dlofdma_disabled_cnt[ATH12K_HTT_NUM_AC_WMM];1789__le32 rate_based_dlofdma_probing_cnt[ATH12K_HTT_NUM_AC_WMM];1790__le32 rate_based_dlofdma_monitor_cnt[ATH12K_HTT_NUM_AC_WMM];1791__le32 chan_acc_lat_based_dlofdma_enabled_cnt[ATH12K_HTT_NUM_AC_WMM];1792__le32 chan_acc_lat_based_dlofdma_disabled_cnt[ATH12K_HTT_NUM_AC_WMM];1793__le32 chan_acc_lat_based_dlofdma_monitor_cnt[ATH12K_HTT_NUM_AC_WMM];1794__le32 downgrade_to_dl_su_ru_alloc_fail[ATH12K_HTT_NUM_AC_WMM];1795__le32 candidate_list_single_user_disable_ofdma[ATH12K_HTT_NUM_AC_WMM];1796__le32 dl_cand_list_dropped_high_ul_qos_weight[ATH12K_HTT_NUM_AC_WMM];1797__le32 ax_dlofdma_disabled_due_to_pipelining[ATH12K_HTT_NUM_AC_WMM];1798__le32 dlofdma_disabled_su_only_eligible[ATH12K_HTT_NUM_AC_WMM];1799__le32 dlofdma_disabled_consec_no_mpdus_tried[ATH12K_HTT_NUM_AC_WMM];1800__le32 dlofdma_disabled_consec_no_mpdus_success[ATH12K_HTT_NUM_AC_WMM];1801} __packed;18021803#define ATH12K_HTT_TX_PDEV_STATS_NUM_BW_CNTRS 41804#define ATH12K_HTT_PDEV_STAT_NUM_SPATIAL_STREAMS 81805#define ATH12K_HTT_TXBF_RATE_STAT_NUM_MCS_CNTRS 1418061807enum ATH12K_HTT_TX_RX_PDEV_STATS_BE_RU_SIZE {1808ATH12K_HTT_TX_RX_PDEV_STATS_BE_RU_SIZE_26,1809ATH12K_HTT_TX_RX_PDEV_STATS_BE_RU_SIZE_52,1810ATH12K_HTT_TX_RX_PDEV_STATS_BE_RU_SIZE_52_26,1811ATH12K_HTT_TX_RX_PDEV_STATS_BE_RU_SIZE_106,1812ATH12K_HTT_TX_RX_PDEV_STATS_BE_RU_SIZE_106_26,1813ATH12K_HTT_TX_RX_PDEV_STATS_BE_RU_SIZE_242,1814ATH12K_HTT_TX_RX_PDEV_STATS_BE_RU_SIZE_484,1815ATH12K_HTT_TX_RX_PDEV_STATS_BE_RU_SIZE_484_242,1816ATH12K_HTT_TX_RX_PDEV_STATS_BE_RU_SIZE_996,1817ATH12K_HTT_TX_RX_PDEV_STATS_BE_RU_SIZE_996_484,1818ATH12K_HTT_TX_RX_PDEV_STATS_BE_RU_SIZE_996_484_242,1819ATH12K_HTT_TX_RX_PDEV_STATS_BE_RU_SIZE_996x2,1820ATH12K_HTT_TX_RX_PDEV_STATS_BE_RU_SIZE_996x2_484,1821ATH12K_HTT_TX_RX_PDEV_STATS_BE_RU_SIZE_996x3,1822ATH12K_HTT_TX_RX_PDEV_STATS_BE_RU_SIZE_996x3_484,1823ATH12K_HTT_TX_RX_PDEV_STATS_BE_RU_SIZE_996x4,1824ATH12K_HTT_TX_RX_PDEV_NUM_BE_RU_SIZE_CNTRS,1825};18261827enum ATH12K_HTT_RC_MODE {1828ATH12K_HTT_RC_MODE_SU_OL,1829ATH12K_HTT_RC_MODE_SU_BF,1830ATH12K_HTT_RC_MODE_MU1_INTF,1831ATH12K_HTT_RC_MODE_MU2_INTF,1832ATH12K_HTT_RC_MODE_MU3_INTF,1833ATH12K_HTT_RC_MODE_MU4_INTF,1834ATH12K_HTT_RC_MODE_MU5_INTF,1835ATH12K_HTT_RC_MODE_MU6_INTF,1836ATH12K_HTT_RC_MODE_MU7_INTF,1837ATH12K_HTT_RC_MODE_2D_COUNT1838};18391840enum ath12k_htt_stats_rc_mode {1841ATH12K_HTT_STATS_RC_MODE_DLSU = 0,1842ATH12K_HTT_STATS_RC_MODE_DLMUMIMO = 1,1843ATH12K_HTT_STATS_RC_MODE_DLOFDMA = 2,1844ATH12K_HTT_STATS_RC_MODE_ULMUMIMO = 3,1845ATH12K_HTT_STATS_RC_MODE_ULOFDMA = 4,1846};18471848enum ath12k_htt_stats_ru_type {1849ATH12K_HTT_STATS_RU_TYPE_INVALID,1850ATH12K_HTT_STATS_RU_TYPE_SINGLE_RU_ONLY,1851ATH12K_HTT_STATS_RU_TYPE_SINGLE_AND_MULTI_RU,1852};18531854struct ath12k_htt_tx_rate_stats {1855__le32 ppdus_tried;1856__le32 ppdus_ack_failed;1857__le32 mpdus_tried;1858__le32 mpdus_failed;1859} __packed;18601861struct ath12k_htt_tx_per_rate_stats_tlv {1862__le32 rc_mode;1863__le32 last_probed_mcs;1864__le32 last_probed_nss;1865__le32 last_probed_bw;1866struct ath12k_htt_tx_rate_stats per_bw[ATH12K_HTT_TX_PDEV_STATS_NUM_BW_CNTRS];1867struct ath12k_htt_tx_rate_stats per_nss[ATH12K_HTT_PDEV_STAT_NUM_SPATIAL_STREAMS];1868struct ath12k_htt_tx_rate_stats per_mcs[ATH12K_HTT_TXBF_RATE_STAT_NUM_MCS_CNTRS];1869struct ath12k_htt_tx_rate_stats per_bw320;1870__le32 probe_cnt[ATH12K_HTT_RC_MODE_2D_COUNT];1871__le32 ru_type;1872struct ath12k_htt_tx_rate_stats ru[ATH12K_HTT_TX_RX_PDEV_NUM_BE_RU_SIZE_CNTRS];1873} __packed;18741875#define ATH12K_HTT_TX_PDEV_NUM_BE_MCS_CNTRS 161876#define ATH12K_HTT_TX_PDEV_NUM_BE_BW_CNTRS 51877#define ATH12K_HTT_TX_PDEV_NUM_EHT_SIG_MCS_CNTRS 41878#define ATH12K_HTT_TX_PDEV_NUM_GI_CNTRS 418791880struct ath12k_htt_tx_pdev_rate_stats_be_ofdma_tlv {1881__le32 mac_id__word;1882__le32 be_ofdma_tx_ldpc;1883__le32 be_ofdma_tx_mcs[ATH12K_HTT_TX_PDEV_NUM_BE_MCS_CNTRS];1884__le32 be_ofdma_tx_nss[ATH12K_HTT_PDEV_STAT_NUM_SPATIAL_STREAMS];1885__le32 be_ofdma_tx_bw[ATH12K_HTT_TX_PDEV_NUM_BE_BW_CNTRS];1886__le32 gi[ATH12K_HTT_TX_PDEV_NUM_GI_CNTRS][ATH12K_HTT_TX_PDEV_NUM_BE_MCS_CNTRS];1887__le32 be_ofdma_tx_ru_size[ATH12K_HTT_TX_RX_PDEV_NUM_BE_RU_SIZE_CNTRS];1888__le32 be_ofdma_eht_sig_mcs[ATH12K_HTT_TX_PDEV_NUM_EHT_SIG_MCS_CNTRS];1889} __packed;18901891struct ath12k_htt_pdev_mbssid_ctrl_frame_tlv {1892__le32 mac_id__word;1893__le32 basic_trigger_across_bss;1894__le32 basic_trigger_within_bss;1895__le32 bsr_trigger_across_bss;1896__le32 bsr_trigger_within_bss;1897__le32 mu_rts_across_bss;1898__le32 mu_rts_within_bss;1899__le32 ul_mumimo_trigger_across_bss;1900__le32 ul_mumimo_trigger_within_bss;1901} __packed;19021903struct ath12k_htt_pdev_tdma_stats_tlv {1904__le32 mac_id__word;1905__le32 num_tdma_active_schedules;1906__le32 num_tdma_reserved_schedules;1907__le32 num_tdma_restricted_schedules;1908__le32 num_tdma_unconfigured_schedules;1909__le32 num_tdma_slot_switches;1910__le32 num_tdma_edca_switches;1911} __packed;19121913struct ath12k_htt_mlo_sched_stats_tlv {1914__le32 pref_link_num_sec_link_sched;1915__le32 pref_link_num_pref_link_timeout;1916__le32 pref_link_num_pref_link_sch_delay_ipc;1917__le32 pref_link_num_pref_link_timeout_ipc;1918} __packed;19191920#define ATH12K_HTT_HWMLO_MAX_LINKS 61921#define ATH12K_HTT_MLO_MAX_IPC_RINGS 719221923struct ath12k_htt_pdev_mlo_ipc_stats_tlv {1924__le32 mlo_ipc_ring_cnt[ATH12K_HTT_HWMLO_MAX_LINKS][ATH12K_HTT_MLO_MAX_IPC_RINGS];1925} __packed;19261927struct ath12k_htt_stats_pdev_rtt_resp_stats_tlv {1928__le32 pdev_id;1929__le32 tx_11mc_ftm_suc;1930__le32 tx_11mc_ftm_suc_retry;1931__le32 tx_11mc_ftm_fail;1932__le32 rx_11mc_ftmr_cnt;1933__le32 rx_11mc_ftmr_dup_cnt;1934__le32 rx_11mc_iftmr_cnt;1935__le32 rx_11mc_iftmr_dup_cnt;1936__le32 ftmr_drop_11mc_resp_role_not_enabled_cnt;1937__le32 initiator_active_responder_rejected_cnt;1938__le32 responder_terminate_cnt;1939__le32 active_rsta_open;1940__le32 active_rsta_mac;1941__le32 active_rsta_mac_phy;1942__le32 num_assoc_ranging_peers;1943__le32 num_unassoc_ranging_peers;1944__le32 responder_alloc_cnt;1945__le32 responder_alloc_failure;1946__le32 pn_check_failure_cnt;1947__le32 pasn_m1_auth_recv_cnt;1948__le32 pasn_m1_auth_drop_cnt;1949__le32 pasn_m2_auth_recv_cnt;1950__le32 pasn_m2_auth_tx_fail_cnt;1951__le32 pasn_m3_auth_recv_cnt;1952__le32 pasn_m3_auth_drop_cnt;1953__le32 pasn_peer_create_request_cnt;1954__le32 pasn_peer_create_timeout_cnt;1955__le32 pasn_peer_created_cnt;1956__le32 sec_ranging_not_supported_mfp_not_setup;1957__le32 non_sec_ranging_discarded_for_assoc_peer;1958__le32 open_ranging_discarded_set_for_pasn_peer;1959__le32 unassoc_non_pasn_ranging_not_supported;1960__le32 num_req_bw_20_mhz;1961__le32 num_req_bw_40_mhz;1962__le32 num_req_bw_80_mhz;1963__le32 num_req_bw_160_mhz;1964__le32 tx_11az_ftm_successful;1965__le32 tx_11az_ftm_failed;1966__le32 rx_11az_ftmr_cnt;1967__le32 rx_11az_ftmr_dup_cnt;1968__le32 rx_11az_iftmr_dup_cnt;1969__le32 malformed_ftmr;1970__le32 ftmr_drop_ntb_resp_role_not_enabled_cnt;1971__le32 ftmr_drop_tb_resp_role_not_enabled_cnt;1972__le32 invalid_ftm_request_params;1973__le32 requested_bw_format_not_supported;1974__le32 ntb_unsec_unassoc_ranging_peer_alloc_failed;1975__le32 tb_unassoc_unsec_pasn_peer_creation_failed;1976__le32 num_ranging_sequences_processed;1977__le32 ntb_tx_ndp;1978__le32 ndp_rx_cnt;1979__le32 num_ntb_ranging_ndpas_recv;1980__le32 recv_lmr;1981__le32 invalid_ftmr_cnt;1982__le32 max_time_bw_meas_exp_cnt;1983} __packed;19841985#define ATH12K_HTT_MAX_SCH_CMD_RESULT 251986#define ATH12K_HTT_SCH_CMD_STATUS_CNT 919871988struct ath12k_htt_stats_pdev_rtt_init_stats_tlv {1989__le32 pdev_id;1990__le32 tx_11mc_ftmr_cnt;1991__le32 tx_11mc_ftmr_fail;1992__le32 tx_11mc_ftmr_suc_retry;1993__le32 rx_11mc_ftm_cnt;1994__le32 tx_meas_req_count;1995__le32 init_role_not_enabled;1996__le32 initiator_terminate_cnt;1997__le32 tx_11az_ftmr_fail;1998__le32 tx_11az_ftmr_start;1999__le32 tx_11az_ftmr_stop;2000__le32 rx_11az_ftm_cnt;2001__le32 active_ista;2002__le32 invalid_preamble;2003__le32 invalid_chan_bw_format;2004__le32 mgmt_buff_alloc_fail_cnt;2005__le32 ftm_parse_failure;2006__le32 ranging_negotiation_successful_cnt;2007__le32 incompatible_ftm_params;2008__le32 sec_ranging_req_in_open_mode;2009__le32 ftmr_tx_failed_null_11az_peer;2010__le32 ftmr_retry_timeout;2011__le32 max_time_bw_meas_exp_cnt;2012__le32 tb_meas_duration_expiry_cnt;2013__le32 num_tb_ranging_requests;2014__le32 ntbr_triggered_successfully;2015__le32 ntbr_trigger_failed;2016__le32 invalid_or_no_vreg_idx;2017__le32 set_vreg_params_failed;2018__le32 sac_mismatch;2019__le32 pasn_m1_auth_recv_cnt;2020__le32 pasn_m1_auth_tx_fail_cnt;2021__le32 pasn_m2_auth_recv_cnt;2022__le32 pasn_m2_auth_drop_cnt;2023__le32 pasn_m3_auth_recv_cnt;2024__le32 pasn_m3_auth_tx_fail_cnt;2025__le32 pasn_peer_create_request_cnt;2026__le32 pasn_peer_create_timeout_cnt;2027__le32 pasn_peer_created_cnt;2028__le32 ntbr_ndpa_failed;2029__le32 ntbr_sequence_successful;2030__le32 ntbr_ndp_failed;2031__le32 sch_cmd_status_cnts[ATH12K_HTT_SCH_CMD_STATUS_CNT];2032__le32 lmr_timeout;2033__le32 lmr_recv;2034__le32 num_trigger_frames_received;2035__le32 num_tb_ranging_ndpas_recv;2036__le32 ndp_rx_cnt;2037} __packed;20382039struct ath12k_htt_stats_pdev_rtt_hw_stats_tlv {2040__le32 ista_ranging_ndpa_cnt;2041__le32 ista_ranging_ndp_cnt;2042__le32 ista_ranging_i2r_lmr_cnt;2043__le32 rtsa_ranging_resp_cnt;2044__le32 rtsa_ranging_ndp_cnt;2045__le32 rsta_ranging_lmr_cnt;2046__le32 tb_ranging_cts2s_rcvd_cnt;2047__le32 tb_ranging_ndp_rcvd_cnt;2048__le32 tb_ranging_lmr_rcvd_cnt;2049__le32 tb_ranging_tf_poll_resp_sent_cnt;2050__le32 tb_ranging_tf_sound_resp_sent_cnt;2051__le32 tb_ranging_tf_report_resp_sent_cnt;2052} __packed;20532054enum ath12k_htt_stats_txsend_ftype {2055ATH12K_HTT_FTYPE_TF_POLL,2056ATH12K_HTT_FTYPE_TF_SOUND,2057ATH12K_HTT_FTYPE_TBR_NDPA,2058ATH12K_HTT_FTYPE_TBR_NDP,2059ATH12K_HTT_FTYPE_TBR_LMR,2060ATH12K_HTT_FTYPE_TF_RPRT,2061ATH12K_HTT_FTYPE_MAX2062};20632064struct ath12k_htt_stats_pdev_rtt_tbr_tlv {2065__le32 su_ftype[ATH12K_HTT_FTYPE_MAX];2066__le32 mu_ftype[ATH12K_HTT_FTYPE_MAX];2067} __packed;20682069struct ath12k_htt_stats_pdev_rtt_tbr_cmd_result_stats_tlv {2070__le32 tbr_num_sch_cmd_result_buckets;2071__le32 su_res[ATH12K_HTT_FTYPE_MAX][ATH12K_HTT_MAX_SCH_CMD_RESULT];2072__le32 mu_res[ATH12K_HTT_FTYPE_MAX][ATH12K_HTT_MAX_SCH_CMD_RESULT];2073} __packed;20742075#endif207620772078