summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@localhost>2019-05-01 04:37:05 -0700
committerLinux Build Service Account <lnxbuild@localhost>2019-05-01 04:37:05 -0700
commite6dadf9971435d582840eae68359178881967711 (patch)
treee82947707dcb1fdaed503951c0b76aa3f1716d88
parent90c4e0aaa3eeecaf12141cca1de6a0743fd42ab0 (diff)
parentcac1fc5e5a665df80170c0d74ea33269ae75ded7 (diff)
Merge cac1fc5e5a665df80170c0d74ea33269ae75ded7 on remote branch
Change-Id: I262464b29f0d5bb882b5b166be065d25ac9cbd76
-rw-r--r--fw/htt.h188
-rw-r--r--fw/htt_stats.h1938
-rwxr-xr-xfw/wlan_defs.h2
-rwxr-xr-xfw/wmi_services.h10
-rwxr-xr-xfw/wmi_tlv_defs.h70
-rwxr-xr-xfw/wmi_unified.h603
-rwxr-xr-xfw/wmi_version.h2
7 files changed, 1827 insertions, 986 deletions
diff --git a/fw/htt.h b/fw/htt.h
index 048f33b41abc..3779453095e7 100644
--- a/fw/htt.h
+++ b/fw/htt.h
@@ -175,9 +175,11 @@
* 3.58 Add optional MSDU ack RSSI array to end of HTT_T2H TX_COMPL_IND msg
* 3.59 Add HTT_RXDMA_HOST_BUF_RING2 def
* 3.60 Add HTT_T2H_MSG_TYPE_PEER_STATS_IND def
+ * 3.61 Add rx offset fields to HTT_H2T_MSG_TYPE_RX_RING_SELECTION_CFG msg
+ * 3.62 Add antenna mask to reserved space in htt_rx_ind_hl_rx_desc_t
*/
#define HTT_CURRENT_VERSION_MAJOR 3
-#define HTT_CURRENT_VERSION_MINOR 60
+#define HTT_CURRENT_VERSION_MINOR 62
#define HTT_NUM_TX_FRAG_DESC 1024
@@ -4728,9 +4730,9 @@ enum htt_srng_ring_id {
*
* The message would appear as follows:
*
- * |31 26|25|24|23 16|15 8|7 0|
+ * |31 27|26|25|24|23 16|15 8|7 0|
* |-----------------+----------------+----------------+---------------|
- * | rsvd1 |PS|SS| ring_id | pdev_id | msg_type |
+ * | rsvd1 |OV|PS|SS| ring_id | pdev_id | msg_type |
* |-------------------------------------------------------------------|
* | rsvd2 | ring_buffer_size |
* |-------------------------------------------------------------------|
@@ -4744,9 +4746,18 @@ enum htt_srng_ring_id {
* |-------------------------------------------------------------------|
* | tlv_filter_in_flags |
* |-------------------------------------------------------------------|
+ * | rx_header_offset | rx_packet_offset |
+ * |-------------------------------------------------------------------|
+ * | rx_mpdu_start_offset | rx_mpdu_end_offset |
+ * |-------------------------------------------------------------------|
+ * | rx_msdu_start_offset | rx_msdu_end_offset |
+ * |-------------------------------------------------------------------|
+ * | rsvd3 | rx_attention_offset |
+ * |-------------------------------------------------------------------|
* Where:
* PS = pkt_swap
* SS = status_swap
+ * OV = rx_offsets_valid
* The message is interpreted as follows:
* dword0 - b'0:7 - msg_type: This will be set to
* HTT_H2T_MSG_TYPE_RX_RING_SELECTION_CFG
@@ -4755,9 +4766,15 @@ enum htt_srng_ring_id {
* 1/2/3 mac id (for rings at LMAC level)
* b'16:23 - ring_id : Identify the ring to configure.
* More details can be got from enum htt_srng_ring_id
- * b'24 - status_swap: 1 is to swap status TLV
- * b'25 - pkt_swap: 1 is to swap packet TLV
- * b'26:31 - rsvd1: reserved for future use
+ * b'24 - status_swap (SS): 1 is to swap status TLV - refer to
+ * BUF_RING_CFG_0 defs within HW .h files,
+ * e.g. wmac_top_reg_seq_hwioreg.h
+ * b'25 - pkt_swap (PS): 1 is to swap packet TLV - refer to
+ * BUF_RING_CFG_0 defs within HW .h files,
+ * e.g. wmac_top_reg_seq_hwioreg.h
+ * b'26 - rx_offset_valid (OV): flag to indicate rx offsets
+ * configuration fields are valid
+ * b'27:31 - rsvd1: reserved for future use
* dword1 - b'0:16 - ring_buffer_size: size of bufferes referenced by rx ring,
* in byte units.
* Valid only for HW_TO_SW_RING and SW_TO_HW_RING
@@ -4786,14 +4803,51 @@ enum htt_srng_ring_id {
* dword6 - b'0:31 - tlv_filter_in_flags:
* Filter in Attention/MPDU/PPDU/Header/User tlvs
* Refer to CFG_TLV_FILTER_IN_FLAG defs
+ * dword7 - b'0:15 - rx_packet_offset: rx_packet_offset in byte units
+ * Valid only for HW_TO_SW_RING and SW_TO_HW_RING
+ * A value of 0 will be considered as ignore this config.
+ * Refer to BUF_RING_CFG_1 defs within HW .h files,
+ * e.g. wmac_top_reg_seq_hwioreg.h
+ * - b'16:31 - rx_header_offset: rx_header_offset in byte units
+ * Valid only for HW_TO_SW_RING and SW_TO_HW_RING
+ * A value of 0 will be considered as ignore this config.
+ * Refer to BUF_RING_CFG_1 defs within HW .h files,
+ * e.g. wmac_top_reg_seq_hwioreg.h
+ * dword8 - b'0:15 - rx_mpdu_end_offset: rx_mpdu_end_offset in byte units
+ * Valid only for HW_TO_SW_RING and SW_TO_HW_RING
+ * A value of 0 will be considered as ignore this config.
+ * Refer to BUF_RING_CFG_2 defs within HW .h files,
+ * e.g. wmac_top_reg_seq_hwioreg.h
+ * - b'16:31 - rx_mpdu_start_offset: rx_mpdu_start_offset in byte units
+ * Valid only for HW_TO_SW_RING and SW_TO_HW_RING
+ * A value of 0 will be considered as ignore this config.
+ * Refer to BUF_RING_CFG_2 defs within HW .h files,
+ * e.g. wmac_top_reg_seq_hwioreg.h
+ * dword9 - b'0:15 - rx_msdu_end_offset: rx_msdu_end_offset in byte units
+ * Valid only for HW_TO_SW_RING and SW_TO_HW_RING
+ * A value of 0 will be considered as ignore this config.
+ * Refer to BUF_RING_CFG_3 defs within HW .h files,
+ * e.g. wmac_top_reg_seq_hwioreg.h
+ * - b'16:31 - rx_msdu_start_offset: rx_msdu_start_offset in byte units
+ * Valid only for HW_TO_SW_RING and SW_TO_HW_RING
+ * A value of 0 will be considered as ignore this config.
+ * Refer to BUF_RING_CFG_3 defs within HW .h files,
+ * e.g. wmac_top_reg_seq_hwioreg.h
+ * dword10 - b'0:15 - rx_attention_offset: rx_attention_offset in byte units
+ * Valid only for HW_TO_SW_RING and SW_TO_HW_RING
+ * A value of 0 will be considered as ignore this config.
+ * Refer to BUF_RING_CFG_4 defs within HW .h files,
+ * e.g. wmac_top_reg_seq_hwioreg.h
+ * - b'16-31 - rsvd3 for future use
*/
PREPACK struct htt_rx_ring_selection_cfg_t {
- A_UINT32 msg_type: 8,
- pdev_id: 8,
- ring_id: 8,
- status_swap: 1,
- pkt_swap: 1,
- rsvd1: 6;
+ A_UINT32 msg_type: 8,
+ pdev_id: 8,
+ ring_id: 8,
+ status_swap: 1,
+ pkt_swap: 1,
+ rx_offsets_valid: 1,
+ rsvd1: 5;
A_UINT32 ring_buffer_size: 16,
rsvd2: 16;
A_UINT32 packet_type_enable_flags_0;
@@ -4801,6 +4855,14 @@ PREPACK struct htt_rx_ring_selection_cfg_t {
A_UINT32 packet_type_enable_flags_2;
A_UINT32 packet_type_enable_flags_3;
A_UINT32 tlv_filter_in_flags;
+ A_UINT32 rx_packet_offset: 16,
+ rx_header_offset: 16;
+ A_UINT32 rx_mpdu_end_offset: 16,
+ rx_mpdu_start_offset: 16;
+ A_UINT32 rx_msdu_end_offset: 16,
+ rx_msdu_start_offset: 16;
+ A_UINT32 rx_attn_offset: 16,
+ rsvd3: 16;
} POSTPACK;
#define HTT_RX_RING_SELECTION_CFG_SZ (sizeof(struct htt_rx_ring_selection_cfg_t))
@@ -4849,6 +4911,17 @@ PREPACK struct htt_rx_ring_selection_cfg_t {
((_var) |= ((_val) << HTT_RX_RING_SELECTION_CFG_PKT_TLV_SWAP_S)); \
} while (0)
+#define HTT_RX_RING_SELECTION_CFG_RX_OFFSETS_VALID_M 0x04000000
+#define HTT_RX_RING_SELECTION_CFG_RX_OFFSETS_VALID_S 26
+#define HTT_RX_RING_SELECTION_CFG_RX_OFFSETS_VALID_GET(_var) \
+ (((_var) & HTT_RX_RING_SELECTION_CFG_RX_OFFSETS_VALID_M) >> \
+ HTT_RX_RING_SELECTION_CFG_RX_OFFSETS_VALID_S)
+#define HTT_RX_RING_SELECTION_CFG_RX_OFFSETS_VALID_SET(_var, _val) \
+ do { \
+ HTT_CHECK_SET_VAL(HTT_RX_RING_SELECTION_CFG_RX_OFFSETS_VALID, _val); \
+ ((_var) |= ((_val) << HTT_RX_RING_SELECTION_CFG_RX_OFFSETS_VALID_S)); \
+ } while (0)
+
#define HTT_RX_RING_SELECTION_CFG_RING_BUFFER_SIZE_M 0x0000ffff
#define HTT_RX_RING_SELECTION_CFG_RING_BUFFER_SIZE_S 0
#define HTT_RX_RING_SELECTION_CFG_RING_BUFFER_SIZE_GET(_var) \
@@ -4915,6 +4988,83 @@ PREPACK struct htt_rx_ring_selection_cfg_t {
((_var) |= ((_val) << HTT_RX_RING_SELECTION_CFG_TLV_FILTER_IN_FLAG_S)); \
} while (0)
+#define HTT_RX_RING_SELECTION_CFG_RX_PACKET_OFFSET_M 0x0000ffff
+#define HTT_RX_RING_SELECTION_CFG_RX_PACKET_OFFSET_S 0
+#define HTT_RX_RING_SELECTION_CFG_RX_PACKET_OFFSET_GET(_var) \
+ (((_var) & HTT_RX_RING_SELECTION_CFG_RX_PACKET_OFFSET_M) >> \
+ HTT_RX_RING_SELECTION_CFG_RX_PACKET_OFFSET_S)
+#define HTT_RX_RING_SELECTION_CFG_RX_PACKET_OFFSET_SET(_var, _val) \
+ do { \
+ HTT_CHECK_SET_VAL(HTT_RX_RING_SELECTION_CFG_RX_PACKET_OFFSET, _val); \
+ ((_var) |= ((_val) << HTT_RX_RING_SELECTION_CFG_RX_PACKET_OFFSET_S)); \
+ } while (0)
+
+#define HTT_RX_RING_SELECTION_CFG_RX_HEADER_OFFSET_M 0xffff0000
+#define HTT_RX_RING_SELECTION_CFG_RX_HEADER_OFFSET_S 16
+#define HTT_RX_RING_SELECTION_CFG_RX_HEADER_OFFSET_GET(_var) \
+ (((_var) & HTT_RX_RING_SELECTION_CFG_RX_HEADER_OFFSET_M) >> \
+ HTT_RX_RING_SELECTION_CFG_RX_HEADER_OFFSET_S)
+#define HTT_RX_RING_SELECTION_CFG_RX_HEADER_OFFSET_SET(_var, _val) \
+ do { \
+ HTT_CHECK_SET_VAL(HTT_RX_RING_SELECTION_CFG_RX_HEADER_OFFSET, _val); \
+ ((_var) |= ((_val) << HTT_RX_RING_SELECTION_CFG_RX_HEADER_OFFSET_S)); \
+ } while (0)
+
+#define HTT_RX_RING_SELECTION_CFG_RX_MPDU_END_OFFSET_M 0x0000ffff
+#define HTT_RX_RING_SELECTION_CFG_RX_MPDU_END_OFFSET_S 0
+#define HTT_RX_RING_SELECTION_CFG_RX_MPDU_END_OFFSET_GET(_var) \
+ (((_var) & HTT_RX_RING_SELECTION_CFG_RX_MPDU_END_OFFSET_M) >> \
+ HTT_RX_RING_SELECTION_CFG_RX_MPDU_END_OFFSET_S)
+#define HTT_RX_RING_SELECTION_CFG_RX_MPDU_END_OFFSET_SET(_var, _val) \
+ do { \
+ HTT_CHECK_SET_VAL(HTT_RX_RING_SELECTION_CFG_RX_MPDU_END_OFFSET, _val); \
+ ((_var) |= ((_val) << HTT_RX_RING_SELECTION_CFG_RX_MPDU_END_OFFSET_S)); \
+ } while (0)
+
+#define HTT_RX_RING_SELECTION_CFG_RX_MPDU_START_OFFSET_M 0xffff0000
+#define HTT_RX_RING_SELECTION_CFG_RX_MPDU_START_OFFSET_S 16
+#define HTT_RX_RING_SELECTION_CFG_RX_MPDU_START_OFFSET_GET(_var) \
+ (((_var) & HTT_RX_RING_SELECTION_CFG_RX_MPDU_START_OFFSET_M) >> \
+ HTT_RX_RING_SELECTION_CFG_RX_MPDU_START_OFFSET_S)
+#define HTT_RX_RING_SELECTION_CFG_RX_MPDU_START_OFFSET_SET(_var, _val) \
+ do { \
+ HTT_CHECK_SET_VAL(HTT_RX_RING_SELECTION_CFG_RX_MPDU_START_OFFSET, _val); \
+ ((_var) |= ((_val) << HTT_RX_RING_SELECTION_CFG_RX_MPDU_START_OFFSET_S)); \
+ } while (0)
+
+#define HTT_RX_RING_SELECTION_CFG_RX_MSDU_END_OFFSET_M 0x0000ffff
+#define HTT_RX_RING_SELECTION_CFG_RX_MSDU_END_OFFSET_S 0
+#define HTT_RX_RING_SELECTION_CFG_RX_MSDU_END_OFFSET_GET(_var) \
+ (((_var) & HTT_RX_RING_SELECTION_CFG_RX_MSDU_END_OFFSET_M) >> \
+ HTT_RX_RING_SELECTION_CFG_RX_MSDU_END_OFFSET_S)
+#define HTT_RX_RING_SELECTION_CFG_RX_MSDU_END_OFFSET_SET(_var, _val) \
+ do { \
+ HTT_CHECK_SET_VAL(HTT_RX_RING_SELECTION_CFG_RX_MSDU_END_OFFSET, _val); \
+ ((_var) |= ((_val) << HTT_RX_RING_SELECTION_CFG_RX_MSDU_END_OFFSET_S)); \
+ } while (0)
+
+#define HTT_RX_RING_SELECTION_CFG_RX_MSDU_START_OFFSET_M 0xffff0000
+#define HTT_RX_RING_SELECTION_CFG_RX_MSDU_START_OFFSET_S 16
+#define HTT_RX_RING_SELECTION_CFG_RX_MSDU_START_OFFSET_GET(_var) \
+ (((_var) & HTT_RX_RING_SELECTION_CFG_RX_MSDU_START_OFFSET_M) >> \
+ HTT_RX_RING_SELECTION_CFG_RX_MSDU_START_OFFSET_S)
+#define HTT_RX_RING_SELECTION_CFG_RX_MSDU_START_OFFSET_SET(_var, _val) \
+ do { \
+ HTT_CHECK_SET_VAL(HTT_RX_RING_SELECTION_CFG_RX_MSDU_START_OFFSET, _val); \
+ ((_var) |= ((_val) << HTT_RX_RING_SELECTION_CFG_RX_MSDU_START_OFFSET_S)); \
+ } while (0)
+
+#define HTT_RX_RING_SELECTION_CFG_RX_ATTENTION_OFFSET_M 0x0000ffff
+#define HTT_RX_RING_SELECTION_CFG_RX_ATTENTION_OFFSET_S 0
+#define HTT_RX_RING_SELECTION_CFG_RX_ATTENTION_OFFSET_GET(_var) \
+ (((_var) & HTT_RX_RING_SELECTION_CFG_RX_ATTENTION_OFFSET_M) >> \
+ HTT_RX_RING_SELECTION_CFG_RX_ATTENTION_OFFSET_S)
+#define HTT_RX_RING_SELECTION_CFG_RX_ATTENTION_OFFSET_SET(_var, _val) \
+ do { \
+ HTT_CHECK_SET_VAL(HTT_RX_RING_SELECTION_CFG_RX_ATTENTION_OFFSET, _val); \
+ ((_var) |= ((_val) << HTT_RX_RING_SELECTION_CFG_RX_ATTENTION_OFFSET_S)); \
+ } while (0)
+
/*
* Subtype based MGMT frames enable bits.
* FP: Filter_Pass, MD: Monitor_Direct MO: Monitor_Other
@@ -6781,7 +6931,7 @@ A_COMPILE_TIME_ASSERT(HTT_RX_IND_hdr_size_quantum,
#define HTT_RX_IND_HL_BYTES \
(HTT_RX_IND_HDR_BYTES + \
- 4 /* single FW rx MSDU descriptor, plus padding */ + \
+ 4 /* single FW rx MSDU descriptor */ + \
4 /* single MPDU range information element */)
#define HTT_RX_IND_HL_SIZE32 (HTT_RX_IND_HL_BYTES >> 2)
@@ -6818,6 +6968,14 @@ struct htt_rx_ind_hl_rx_desc_t {
udp: 1,
reserved: 1;
} flags;
+ /* sa_ant_matrix
+ * For cases where a single rx chain has options to be connected to
+ * different rx antennas, show which rx antennas were in use during
+ * receipt of a given PPDU.
+ * This sa_ant_matrix provides a bitmask of the antennas used while
+ * receiving this frame.
+ */
+ A_UINT8 sa_ant_matrix;
};
#define HTT_RX_IND_HL_RX_DESC_VER_OFFSET \
@@ -6833,6 +6991,10 @@ struct htt_rx_ind_hl_rx_desc_t {
(HTT_RX_IND_HL_RX_DESC_BASE_OFFSET \
+ offsetof(struct htt_rx_ind_hl_rx_desc_t, flags))
+#define HTT_RX_IND_HL_SA_ANT_MATRIX_OFFSET \
+ (HTT_RX_IND_HL_RX_DESC_BASE_OFFSET \
+ + offsetof(struct htt_rx_ind_hl_rx_desc_t, sa_ant_matrix))
+
#define HTT_RX_IND_HL_FLAG_FIRST_MSDU (0x01 << 0)
#define HTT_RX_IND_HL_FLAG_LAST_MSDU (0x01 << 1)
#define HTT_RX_IND_HL_FLAG_C3_FAILED (0x01 << 2) /* L3 checksum failed */
diff --git a/fw/htt_stats.h b/fw/htt_stats.h
index d2c8b03a8d5d..d093f25b4de6 100644
--- a/fw/htt_stats.h
+++ b/fw/htt_stats.h
@@ -35,7 +35,6 @@
* Max supported stats :- 256.
*/
enum htt_dbg_ext_stats_type {
-
/* HTT_DBG_EXT_STATS_RESET
* PARAM:
* - config_param0 : start_offset (stats type)
@@ -45,7 +44,7 @@ enum htt_dbg_ext_stats_type {
* RESP MSG:
* - No response sent.
*/
- HTT_DBG_EXT_STATS_RESET = 0,
+ HTT_DBG_EXT_STATS_RESET = 0,
/* HTT_DBG_EXT_STATS_PDEV_TX
* PARAMS:
@@ -53,7 +52,7 @@ enum htt_dbg_ext_stats_type {
* RESP MSG:
* - htt_tx_pdev_stats_t
*/
- HTT_DBG_EXT_STATS_PDEV_TX = 1,
+ HTT_DBG_EXT_STATS_PDEV_TX = 1,
/* HTT_DBG_EXT_STATS_PDEV_RX
* PARAMS:
@@ -61,7 +60,7 @@ enum htt_dbg_ext_stats_type {
* RESP MSG:
* - htt_rx_pdev_stats_t
*/
- HTT_DBG_EXT_STATS_PDEV_RX = 2,
+ HTT_DBG_EXT_STATS_PDEV_RX = 2,
/* HTT_DBG_EXT_STATS_PDEV_TX_HWQ
* PARAMS:
@@ -69,7 +68,7 @@ enum htt_dbg_ext_stats_type {
* RESP MSG:
* - htt_tx_hwq_stats_t
*/
- HTT_DBG_EXT_STATS_PDEV_TX_HWQ = 3,
+ HTT_DBG_EXT_STATS_PDEV_TX_HWQ = 3,
/* HTT_DBG_EXT_STATS_PDEV_TX_SCHED
* PARAMS:
@@ -77,7 +76,7 @@ enum htt_dbg_ext_stats_type {
* RESP MSG:
* - htt_stats_tx_sched_t
*/
- HTT_DBG_EXT_STATS_PDEV_TX_SCHED = 4,
+ HTT_DBG_EXT_STATS_PDEV_TX_SCHED = 4,
/* HTT_DBG_EXT_STATS_PDEV_ERROR
* PARAMS:
@@ -85,7 +84,7 @@ enum htt_dbg_ext_stats_type {
* RESP MSG:
* - htt_hw_err_stats_t
*/
- HTT_DBG_EXT_STATS_PDEV_ERROR = 5,
+ HTT_DBG_EXT_STATS_PDEV_ERROR = 5,
/* HTT_DBG_EXT_STATS_PDEV_TQM
* PARAMS:
@@ -93,7 +92,7 @@ enum htt_dbg_ext_stats_type {
* RESP MSG:
* - htt_tx_tqm_pdev_stats_t
*/
- HTT_DBG_EXT_STATS_PDEV_TQM = 6,
+ HTT_DBG_EXT_STATS_PDEV_TQM = 6,
/* HTT_DBG_EXT_STATS_TQM_CMDQ
* PARAMS:
@@ -103,7 +102,7 @@ enum htt_dbg_ext_stats_type {
* RESP MSG:
* - htt_tx_tqm_cmdq_stats_t
*/
- HTT_DBG_EXT_STATS_TQM_CMDQ = 7,
+ HTT_DBG_EXT_STATS_TQM_CMDQ = 7,
/* HTT_DBG_EXT_STATS_TX_DE_INFO
* PARAMS:
@@ -111,7 +110,7 @@ enum htt_dbg_ext_stats_type {
* RESP MSG:
* - htt_tx_de_stats_t
*/
- HTT_DBG_EXT_STATS_TX_DE_INFO = 8,
+ HTT_DBG_EXT_STATS_TX_DE_INFO = 8,
/* HTT_DBG_EXT_STATS_PDEV_TX_RATE
* PARAMS:
@@ -119,7 +118,7 @@ enum htt_dbg_ext_stats_type {
* RESP MSG:
* - htt_tx_pdev_rate_stats_t
*/
- HTT_DBG_EXT_STATS_PDEV_TX_RATE = 9,
+ HTT_DBG_EXT_STATS_PDEV_TX_RATE = 9,
/* HTT_DBG_EXT_STATS_PDEV_RX_RATE
* PARAMS:
@@ -127,7 +126,7 @@ enum htt_dbg_ext_stats_type {
* RESP MSG:
* - htt_rx_pdev_rate_stats_t
*/
- HTT_DBG_EXT_STATS_PDEV_RX_RATE = 10,
+ HTT_DBG_EXT_STATS_PDEV_RX_RATE = 10,
/* HTT_DBG_EXT_STATS_PEER_INFO
* PARAMS:
@@ -150,7 +149,7 @@ enum htt_dbg_ext_stats_type {
* RESP MSG:
* - htt_peer_stats_t
*/
- HTT_DBG_EXT_STATS_PEER_INFO = 11,
+ HTT_DBG_EXT_STATS_PEER_INFO = 11,
/* HTT_DBG_EXT_STATS_TX_SELFGEN_INFO
* PARAMS:
@@ -158,7 +157,7 @@ enum htt_dbg_ext_stats_type {
* RESP MSG:
* - htt_tx_pdev_selfgen_stats_t
*/
- HTT_DBG_EXT_STATS_TX_SELFGEN_INFO = 12,
+ HTT_DBG_EXT_STATS_TX_SELFGEN_INFO = 12,
/* HTT_DBG_EXT_STATS_TX_MU_HWQ
* PARAMS:
@@ -166,7 +165,7 @@ enum htt_dbg_ext_stats_type {
* RESP MSG:
* - htt_tx_hwq_mu_mimo_stats_t
*/
- HTT_DBG_EXT_STATS_TX_MU_HWQ = 13,
+ HTT_DBG_EXT_STATS_TX_MU_HWQ = 13,
/* HTT_DBG_EXT_STATS_RING_IF_INFO
* PARAMS:
@@ -176,7 +175,7 @@ enum htt_dbg_ext_stats_type {
* RESP MSG:
* - htt_ring_if_stats_t
*/
- HTT_DBG_EXT_STATS_RING_IF_INFO = 14,
+ HTT_DBG_EXT_STATS_RING_IF_INFO = 14,
/* HTT_DBG_EXT_STATS_SRNG_INFO
* PARAMS:
@@ -187,7 +186,7 @@ enum htt_dbg_ext_stats_type {
* RESP MSG:
* - htt_sring_stats_t
*/
- HTT_DBG_EXT_STATS_SRNG_INFO = 15,
+ HTT_DBG_EXT_STATS_SRNG_INFO = 15,
/* HTT_DBG_EXT_STATS_SFM_INFO
* PARAMS:
@@ -195,7 +194,7 @@ enum htt_dbg_ext_stats_type {
* RESP MSG:
* - htt_sfm_stats_t
*/
- HTT_DBG_EXT_STATS_SFM_INFO = 16,
+ HTT_DBG_EXT_STATS_SFM_INFO = 16,
/* HTT_DBG_EXT_STATS_PDEV_TX_MU
* PARAMS:
@@ -203,7 +202,7 @@ enum htt_dbg_ext_stats_type {
* RESP MSG:
* - htt_tx_pdev_mu_mimo_stats_t
*/
- HTT_DBG_EXT_STATS_PDEV_TX_MU = 17,
+ HTT_DBG_EXT_STATS_PDEV_TX_MU = 17,
/* HTT_DBG_EXT_STATS_ACTIVE_PEERS_LIST
* PARAMS:
@@ -214,7 +213,7 @@ enum htt_dbg_ext_stats_type {
* RESP MSG:
* - htt_active_peer_details_list_t
*/
- HTT_DBG_EXT_STATS_ACTIVE_PEERS_LIST = 18,
+ HTT_DBG_EXT_STATS_ACTIVE_PEERS_LIST = 18,
/* HTT_DBG_EXT_STATS_PDEV_CCA_STATS
* PARAMS:
@@ -225,7 +224,7 @@ enum htt_dbg_ext_stats_type {
* RESP MSG:
* - htt_pdev_cca_stats_t
*/
- HTT_DBG_EXT_STATS_PDEV_CCA_STATS = 19,
+ HTT_DBG_EXT_STATS_PDEV_CCA_STATS = 19,
/* HTT_DBG_EXT_STATS_TWT_SESSIONS
* PARAMS:
@@ -234,7 +233,7 @@ enum htt_dbg_ext_stats_type {
* RESP MSG:
* - htt_pdev_twt_sessions_stats_t
*/
- HTT_DBG_EXT_STATS_TWT_SESSIONS = 20,
+ HTT_DBG_EXT_STATS_TWT_SESSIONS = 20,
/* HTT_DBG_EXT_STATS_REO_CNTS
* PARAMS:
@@ -243,7 +242,7 @@ enum htt_dbg_ext_stats_type {
* RESP MSG:
* - htt_soc_reo_resource_stats_t
*/
- HTT_DBG_EXT_STATS_REO_RESOURCE_STATS = 21,
+ HTT_DBG_EXT_STATS_REO_RESOURCE_STATS = 21,
/* HTT_DBG_EXT_STATS_TX_SOUNDING_INFO
* PARAMS:
@@ -257,7 +256,7 @@ enum htt_dbg_ext_stats_type {
* RESP MSG:
* - htt_tx_sounding_stats_t
*/
- HTT_DBG_EXT_STATS_TX_SOUNDING_INFO = 22,
+ HTT_DBG_EXT_STATS_TX_SOUNDING_INFO = 22,
/* HTT_DBG_EXT_STATS_PDEV_OBSS_PD_STATS
* PARAMS:
@@ -266,131 +265,129 @@ enum htt_dbg_ext_stats_type {
* RESP MSG:
* - htt_pdev_obss_pd_stats_t
*/
- HTT_DBG_EXT_STATS_PDEV_OBSS_PD_STATS = 23,
-
+ HTT_DBG_EXT_STATS_PDEV_OBSS_PD_STATS = 23,
/* keep this last */
- HTT_DBG_NUM_EXT_STATS = 256,
+ HTT_DBG_NUM_EXT_STATS = 256,
};
typedef enum {
- HTT_STATS_TX_PDEV_CMN_TAG = 0, /* htt_tx_pdev_stats_cmn_tlv */
- HTT_STATS_TX_PDEV_UNDERRUN_TAG = 1, /* htt_tx_pdev_stats_urrn_tlv_v */
- HTT_STATS_TX_PDEV_SIFS_TAG = 2, /* htt_tx_pdev_stats_sifs_tlv_v */
- HTT_STATS_TX_PDEV_FLUSH_TAG = 3, /* htt_tx_pdev_stats_flush_tlv_v */
- HTT_STATS_TX_PDEV_PHY_ERR_TAG = 4, /* htt_tx_pdev_stats_phy_err_tlv_v */
- HTT_STATS_STRING_TAG = 5, /* htt_stats_string_tlv */
- HTT_STATS_TX_HWQ_CMN_TAG = 6, /* htt_tx_hwq_stats_cmn_tlv */
- HTT_STATS_TX_HWQ_DIFS_LATENCY_TAG = 7, /* htt_tx_hwq_difs_latency_stats_tlv_v */
- HTT_STATS_TX_HWQ_CMD_RESULT_TAG = 8, /* htt_tx_hwq_cmd_result_stats_tlv_v */
- HTT_STATS_TX_HWQ_CMD_STALL_TAG = 9, /* htt_tx_hwq_cmd_stall_stats_tlv_v */
- HTT_STATS_TX_HWQ_FES_STATUS_TAG = 10, /* htt_tx_hwq_fes_result_stats_tlv_v */
- HTT_STATS_TX_TQM_GEN_MPDU_TAG = 11, /* htt_tx_tqm_gen_mpdu_stats_tlv_v */
- HTT_STATS_TX_TQM_LIST_MPDU_TAG = 12, /* htt_tx_tqm_list_mpdu_stats_tlv_v */
- HTT_STATS_TX_TQM_LIST_MPDU_CNT_TAG = 13, /* htt_tx_tqm_list_mpdu_cnt_tlv_v */
- HTT_STATS_TX_TQM_CMN_TAG = 14, /* htt_tx_tqm_cmn_stats_tlv */
- HTT_STATS_TX_TQM_PDEV_TAG = 15, /* htt_tx_tqm_pdev_stats_tlv_v */
- HTT_STATS_TX_TQM_CMDQ_STATUS_TAG = 16, /* htt_tx_tqm_cmdq_status_tlv */
- HTT_STATS_TX_DE_EAPOL_PACKETS_TAG = 17, /* htt_tx_de_eapol_packets_stats_tlv */
- HTT_STATS_TX_DE_CLASSIFY_FAILED_TAG = 18, /* htt_tx_de_classify_failed_stats_tlv */
- HTT_STATS_TX_DE_CLASSIFY_STATS_TAG = 19, /* htt_tx_de_classify_stats_tlv */
- HTT_STATS_TX_DE_CLASSIFY_STATUS_TAG = 20, /* htt_tx_de_classify_status_stats_tlv */
- HTT_STATS_TX_DE_ENQUEUE_PACKETS_TAG = 21, /* htt_tx_de_enqueue_packets_stats_tlv */
- HTT_STATS_TX_DE_ENQUEUE_DISCARD_TAG = 22, /* htt_tx_de_enqueue_discard_stats_tlv */
- HTT_STATS_TX_DE_CMN_TAG = 23, /* htt_tx_de_cmn_stats_tlv */
- HTT_STATS_RING_IF_TAG = 24, /* htt_ring_if_stats_tlv */
- HTT_STATS_TX_PDEV_MU_MIMO_STATS_TAG = 25, /* htt_tx_pdev_mu_mimo_sch_stats_tlv */
- HTT_STATS_SFM_CMN_TAG = 26, /* htt_sfm_cmn_tlv */
- HTT_STATS_SRING_STATS_TAG = 27, /* htt_sring_stats_tlv */
- HTT_STATS_RX_PDEV_FW_STATS_TAG = 28, /* htt_rx_pdev_fw_stats_tlv */
- HTT_STATS_RX_PDEV_FW_RING_MPDU_ERR_TAG = 29, /* htt_rx_pdev_fw_ring_mpdu_err_tlv_v */
- HTT_STATS_RX_PDEV_FW_MPDU_DROP_TAG = 30, /* htt_rx_pdev_fw_mpdu_drop_tlv_v */
- HTT_STATS_RX_SOC_FW_STATS_TAG = 31, /* htt_rx_soc_fw_stats_tlv */
- HTT_STATS_RX_SOC_FW_REFILL_RING_EMPTY_TAG = 32, /* htt_rx_soc_fw_refill_ring_empty_tlv_v */
- HTT_STATS_RX_SOC_FW_REFILL_RING_NUM_REFILL_TAG = 33, /* htt_rx_soc_fw_refill_ring_num_refill_tlv_v */
- HTT_STATS_TX_PDEV_RATE_STATS_TAG = 34, /* htt_tx_pdev_rate_stats_tlv */
- HTT_STATS_RX_PDEV_RATE_STATS_TAG = 35, /* htt_rx_pdev_rate_stats_tlv */
- HTT_STATS_TX_PDEV_SCHEDULER_TXQ_STATS_TAG = 36, /* htt_tx_pdev_stats_sched_per_txq_tlv */
- HTT_STATS_TX_SCHED_CMN_TAG = 37, /* htt_stats_tx_sched_cmn_tlv */
- HTT_STATS_TX_PDEV_MUMIMO_MPDU_STATS_TAG = 38, /* htt_tx_pdev_mu_mimo_mpdu_stats_tlv */
- HTT_STATS_SCHED_TXQ_CMD_POSTED_TAG = 39, /* htt_sched_txq_cmd_posted_tlv_v */
- HTT_STATS_RING_IF_CMN_TAG = 40, /* htt_ring_if_cmn_tlv */
- HTT_STATS_SFM_CLIENT_USER_TAG = 41, /* htt_sfm_client_user_tlv_v */
- HTT_STATS_SFM_CLIENT_TAG = 42, /* htt_sfm_client_tlv */
- HTT_STATS_TX_TQM_ERROR_STATS_TAG = 43, /* htt_tx_tqm_error_stats_tlv */
- HTT_STATS_SCHED_TXQ_CMD_REAPED_TAG = 44, /* htt_sched_txq_cmd_reaped_tlv_v */
- HTT_STATS_SRING_CMN_TAG = 45, /* htt_sring_cmn_tlv */
- HTT_STATS_TX_SELFGEN_AC_ERR_STATS_TAG = 46, /* htt_tx_selfgen_ac_err_stats_tlv */
- HTT_STATS_TX_SELFGEN_CMN_STATS_TAG = 47, /* htt_tx_selfgen_cmn_stats_tlv */
- HTT_STATS_TX_SELFGEN_AC_STATS_TAG = 48, /* htt_tx_selfgen_ac_stats_tlv */
- HTT_STATS_TX_SELFGEN_AX_STATS_TAG = 49, /* htt_tx_selfgen_ax_stats_tlv */
- HTT_STATS_TX_SELFGEN_AX_ERR_STATS_TAG = 50, /* htt_tx_selfgen_ax_err_stats_tlv */
- HTT_STATS_TX_HWQ_MUMIMO_SCH_STATS_TAG = 51, /* htt_tx_hwq_mu_mimo_sch_stats_tlv */
- HTT_STATS_TX_HWQ_MUMIMO_MPDU_STATS_TAG = 52, /* htt_tx_hwq_mu_mimo_mpdu_stats_tlv */
- HTT_STATS_TX_HWQ_MUMIMO_CMN_STATS_TAG = 53, /* htt_tx_hwq_mu_mimo_cmn_stats_tlv */
- HTT_STATS_HW_INTR_MISC_TAG = 54, /* htt_hw_stats_intr_misc_tlv */
- HTT_STATS_HW_WD_TIMEOUT_TAG = 55, /* htt_hw_stats_wd_timeout_tlv */
- HTT_STATS_HW_PDEV_ERRS_TAG = 56, /* htt_hw_stats_pdev_errs_tlv */
- HTT_STATS_COUNTER_NAME_TAG = 57, /* htt_counter_tlv */
- HTT_STATS_TX_TID_DETAILS_TAG = 58, /* htt_tx_tid_stats_tlv */
- HTT_STATS_RX_TID_DETAILS_TAG = 59, /* htt_rx_tid_stats_tlv */
- HTT_STATS_PEER_STATS_CMN_TAG = 60, /* htt_peer_stats_cmn_tlv */
- HTT_STATS_PEER_DETAILS_TAG = 61, /* htt_peer_details_tlv */
- HTT_STATS_PEER_TX_RATE_STATS_TAG = 62, /* htt_tx_peer_rate_stats_tlv */
- HTT_STATS_PEER_RX_RATE_STATS_TAG = 63, /* htt_rx_peer_rate_stats_tlv */
- HTT_STATS_PEER_MSDU_FLOWQ_TAG = 64, /* htt_msdu_flow_stats_tlv */
- HTT_STATS_TX_DE_COMPL_STATS_TAG = 65, /* htt_tx_de_compl_stats_tlv */
- HTT_STATS_WHAL_TX_TAG = 66, /* htt_hw_stats_whal_tx_tlv */
- HTT_STATS_TX_PDEV_SIFS_HIST_TAG = 67, /* htt_tx_pdev_stats_sifs_hist_tlv_v */
- HTT_STATS_RX_PDEV_FW_STATS_PHY_ERR_TAG = 68, /* htt_rx_pdev_fw_stats_phy_err_tlv */
- HTT_STATS_TX_TID_DETAILS_V1_TAG = 69, /* htt_tx_tid_stats_v1_tlv */
- HTT_STATS_PDEV_CCA_1SEC_HIST_TAG = 70, /* htt_pdev_cca_stats_hist_tlv (for 1 sec interval stats) */
- HTT_STATS_PDEV_CCA_100MSEC_HIST_TAG = 71, /* htt_pdev_cca_stats_hist_tlv (for 100 msec interval stats) */
- HTT_STATS_PDEV_CCA_STAT_CUMULATIVE_TAG = 72, /* htt_pdev_stats_cca_stats_tlv */
- HTT_STATS_PDEV_CCA_COUNTERS_TAG = 73, /* htt_pdev_stats_cca_counters_tlv */
- HTT_STATS_TX_PDEV_MPDU_STATS_TAG = 74, /* htt_tx_pdev_mpdu_stats_tlv */
- HTT_STATS_PDEV_TWT_SESSIONS_TAG = 75, /* htt_pdev_stats_twt_sessions_tlv */
- HTT_STATS_PDEV_TWT_SESSION_TAG = 76, /* htt_pdev_stats_twt_session_tlv */
- HTT_STATS_RX_REFILL_RXDMA_ERR_TAG = 77, /* htt_rx_soc_fw_refill_ring_num_rxdma_err_tlv_v */
- HTT_STATS_RX_REFILL_REO_ERR_TAG = 78, /* htt_rx_soc_fw_refill_ring_num_reo_err_tlv_v */
- HTT_STATS_RX_REO_RESOURCE_STATS_TAG = 79, /* htt_rx_reo_debug_stats_tlv_v */
- HTT_STATS_TX_SOUNDING_STATS_TAG = 80, /* htt_tx_sounding_stats_tlv */
- HTT_STATS_TX_PDEV_TX_PPDU_STATS_TAG = 81, /* htt_tx_pdev_stats_tx_ppdu_stats_tlv_v */
- HTT_STATS_TX_PDEV_TRIED_MPDU_CNT_HIST_TAG = 82, /* htt_tx_pdev_stats_tried_mpdu_cnt_hist_tlv_v */
- HTT_STATS_TX_HWQ_TRIED_MPDU_CNT_HIST_TAG = 83, /* htt_tx_hwq_tried_mpdu_cnt_hist_tlv_v */
- HTT_STATS_TX_HWQ_TXOP_USED_CNT_HIST_TAG = 84, /* htt_tx_hwq_txop_used_cnt_hist_tlv_v */
- HTT_STATS_TX_DE_FW2WBM_RING_FULL_HIST_TAG = 85, /* htt_tx_de_fw2wbm_ring_full_hist_tlv */
- HTT_STATS_SCHED_TXQ_SCHED_ORDER_SU_TAG = 86, /* htt_sched_txq_sched_order_su_tlv */
- HTT_STATS_SCHED_TXQ_SCHED_INELIGIBILITY_TAG = 87, /* htt_sched_txq_sched_eligibility_tlv */
- HTT_STATS_PDEV_OBSS_PD_TAG = 88, /* htt_pdev_obss_pd_stats_tlv */
+ HTT_STATS_TX_PDEV_CMN_TAG = 0, /* htt_tx_pdev_stats_cmn_tlv */
+ HTT_STATS_TX_PDEV_UNDERRUN_TAG = 1, /* htt_tx_pdev_stats_urrn_tlv_v */
+ HTT_STATS_TX_PDEV_SIFS_TAG = 2, /* htt_tx_pdev_stats_sifs_tlv_v */
+ HTT_STATS_TX_PDEV_FLUSH_TAG = 3, /* htt_tx_pdev_stats_flush_tlv_v */
+ HTT_STATS_TX_PDEV_PHY_ERR_TAG = 4, /* htt_tx_pdev_stats_phy_err_tlv_v */
+ HTT_STATS_STRING_TAG = 5, /* htt_stats_string_tlv */
+ HTT_STATS_TX_HWQ_CMN_TAG = 6, /* htt_tx_hwq_stats_cmn_tlv */
+ HTT_STATS_TX_HWQ_DIFS_LATENCY_TAG = 7, /* htt_tx_hwq_difs_latency_stats_tlv_v */
+ HTT_STATS_TX_HWQ_CMD_RESULT_TAG = 8, /* htt_tx_hwq_cmd_result_stats_tlv_v */
+ HTT_STATS_TX_HWQ_CMD_STALL_TAG = 9, /* htt_tx_hwq_cmd_stall_stats_tlv_v */
+ HTT_STATS_TX_HWQ_FES_STATUS_TAG = 10, /* htt_tx_hwq_fes_result_stats_tlv_v */
+ HTT_STATS_TX_TQM_GEN_MPDU_TAG = 11, /* htt_tx_tqm_gen_mpdu_stats_tlv_v */
+ HTT_STATS_TX_TQM_LIST_MPDU_TAG = 12, /* htt_tx_tqm_list_mpdu_stats_tlv_v */
+ HTT_STATS_TX_TQM_LIST_MPDU_CNT_TAG = 13, /* htt_tx_tqm_list_mpdu_cnt_tlv_v */
+ HTT_STATS_TX_TQM_CMN_TAG = 14, /* htt_tx_tqm_cmn_stats_tlv */
+ HTT_STATS_TX_TQM_PDEV_TAG = 15, /* htt_tx_tqm_pdev_stats_tlv_v */
+ HTT_STATS_TX_TQM_CMDQ_STATUS_TAG = 16, /* htt_tx_tqm_cmdq_status_tlv */
+ HTT_STATS_TX_DE_EAPOL_PACKETS_TAG = 17, /* htt_tx_de_eapol_packets_stats_tlv */
+ HTT_STATS_TX_DE_CLASSIFY_FAILED_TAG = 18, /* htt_tx_de_classify_failed_stats_tlv */
+ HTT_STATS_TX_DE_CLASSIFY_STATS_TAG = 19, /* htt_tx_de_classify_stats_tlv */
+ HTT_STATS_TX_DE_CLASSIFY_STATUS_TAG = 20, /* htt_tx_de_classify_status_stats_tlv */
+ HTT_STATS_TX_DE_ENQUEUE_PACKETS_TAG = 21, /* htt_tx_de_enqueue_packets_stats_tlv */
+ HTT_STATS_TX_DE_ENQUEUE_DISCARD_TAG = 22, /* htt_tx_de_enqueue_discard_stats_tlv */
+ HTT_STATS_TX_DE_CMN_TAG = 23, /* htt_tx_de_cmn_stats_tlv */
+ HTT_STATS_RING_IF_TAG = 24, /* htt_ring_if_stats_tlv */
+ HTT_STATS_TX_PDEV_MU_MIMO_STATS_TAG = 25, /* htt_tx_pdev_mu_mimo_sch_stats_tlv */
+ HTT_STATS_SFM_CMN_TAG = 26, /* htt_sfm_cmn_tlv */
+ HTT_STATS_SRING_STATS_TAG = 27, /* htt_sring_stats_tlv */
+ HTT_STATS_RX_PDEV_FW_STATS_TAG = 28, /* htt_rx_pdev_fw_stats_tlv */
+ HTT_STATS_RX_PDEV_FW_RING_MPDU_ERR_TAG = 29, /* htt_rx_pdev_fw_ring_mpdu_err_tlv_v */
+ HTT_STATS_RX_PDEV_FW_MPDU_DROP_TAG = 30, /* htt_rx_pdev_fw_mpdu_drop_tlv_v */
+ HTT_STATS_RX_SOC_FW_STATS_TAG = 31, /* htt_rx_soc_fw_stats_tlv */
+ HTT_STATS_RX_SOC_FW_REFILL_RING_EMPTY_TAG = 32, /* htt_rx_soc_fw_refill_ring_empty_tlv_v */
+ HTT_STATS_RX_SOC_FW_REFILL_RING_NUM_REFILL_TAG = 33, /* htt_rx_soc_fw_refill_ring_num_refill_tlv_v */
+ HTT_STATS_TX_PDEV_RATE_STATS_TAG = 34, /* htt_tx_pdev_rate_stats_tlv */
+ HTT_STATS_RX_PDEV_RATE_STATS_TAG = 35, /* htt_rx_pdev_rate_stats_tlv */
+ HTT_STATS_TX_PDEV_SCHEDULER_TXQ_STATS_TAG = 36, /* htt_tx_pdev_stats_sched_per_txq_tlv */
+ HTT_STATS_TX_SCHED_CMN_TAG = 37, /* htt_stats_tx_sched_cmn_tlv */
+ HTT_STATS_TX_PDEV_MUMIMO_MPDU_STATS_TAG = 38, /* htt_tx_pdev_mu_mimo_mpdu_stats_tlv */
+ HTT_STATS_SCHED_TXQ_CMD_POSTED_TAG = 39, /* htt_sched_txq_cmd_posted_tlv_v */
+ HTT_STATS_RING_IF_CMN_TAG = 40, /* htt_ring_if_cmn_tlv */
+ HTT_STATS_SFM_CLIENT_USER_TAG = 41, /* htt_sfm_client_user_tlv_v */
+ HTT_STATS_SFM_CLIENT_TAG = 42, /* htt_sfm_client_tlv */
+ HTT_STATS_TX_TQM_ERROR_STATS_TAG = 43, /* htt_tx_tqm_error_stats_tlv */
+ HTT_STATS_SCHED_TXQ_CMD_REAPED_TAG = 44, /* htt_sched_txq_cmd_reaped_tlv_v */
+ HTT_STATS_SRING_CMN_TAG = 45, /* htt_sring_cmn_tlv */
+ HTT_STATS_TX_SELFGEN_AC_ERR_STATS_TAG = 46, /* htt_tx_selfgen_ac_err_stats_tlv */
+ HTT_STATS_TX_SELFGEN_CMN_STATS_TAG = 47, /* htt_tx_selfgen_cmn_stats_tlv */
+ HTT_STATS_TX_SELFGEN_AC_STATS_TAG = 48, /* htt_tx_selfgen_ac_stats_tlv */
+ HTT_STATS_TX_SELFGEN_AX_STATS_TAG = 49, /* htt_tx_selfgen_ax_stats_tlv */
+ HTT_STATS_TX_SELFGEN_AX_ERR_STATS_TAG = 50, /* htt_tx_selfgen_ax_err_stats_tlv */
+ HTT_STATS_TX_HWQ_MUMIMO_SCH_STATS_TAG = 51, /* htt_tx_hwq_mu_mimo_sch_stats_tlv */
+ HTT_STATS_TX_HWQ_MUMIMO_MPDU_STATS_TAG = 52, /* htt_tx_hwq_mu_mimo_mpdu_stats_tlv */
+ HTT_STATS_TX_HWQ_MUMIMO_CMN_STATS_TAG = 53, /* htt_tx_hwq_mu_mimo_cmn_stats_tlv */
+ HTT_STATS_HW_INTR_MISC_TAG = 54, /* htt_hw_stats_intr_misc_tlv */
+ HTT_STATS_HW_WD_TIMEOUT_TAG = 55, /* htt_hw_stats_wd_timeout_tlv */
+ HTT_STATS_HW_PDEV_ERRS_TAG = 56, /* htt_hw_stats_pdev_errs_tlv */
+ HTT_STATS_COUNTER_NAME_TAG = 57, /* htt_counter_tlv */
+ HTT_STATS_TX_TID_DETAILS_TAG = 58, /* htt_tx_tid_stats_tlv */
+ HTT_STATS_RX_TID_DETAILS_TAG = 59, /* htt_rx_tid_stats_tlv */
+ HTT_STATS_PEER_STATS_CMN_TAG = 60, /* htt_peer_stats_cmn_tlv */
+ HTT_STATS_PEER_DETAILS_TAG = 61, /* htt_peer_details_tlv */
+ HTT_STATS_PEER_TX_RATE_STATS_TAG = 62, /* htt_tx_peer_rate_stats_tlv */
+ HTT_STATS_PEER_RX_RATE_STATS_TAG = 63, /* htt_rx_peer_rate_stats_tlv */
+ HTT_STATS_PEER_MSDU_FLOWQ_TAG = 64, /* htt_msdu_flow_stats_tlv */
+ HTT_STATS_TX_DE_COMPL_STATS_TAG = 65, /* htt_tx_de_compl_stats_tlv */
+ HTT_STATS_WHAL_TX_TAG = 66, /* htt_hw_stats_whal_tx_tlv */
+ HTT_STATS_TX_PDEV_SIFS_HIST_TAG = 67, /* htt_tx_pdev_stats_sifs_hist_tlv_v */
+ HTT_STATS_RX_PDEV_FW_STATS_PHY_ERR_TAG = 68, /* htt_rx_pdev_fw_stats_phy_err_tlv */
+ HTT_STATS_TX_TID_DETAILS_V1_TAG = 69, /* htt_tx_tid_stats_v1_tlv */
+ HTT_STATS_PDEV_CCA_1SEC_HIST_TAG = 70, /* htt_pdev_cca_stats_hist_tlv (for 1 sec interval stats) */
+ HTT_STATS_PDEV_CCA_100MSEC_HIST_TAG = 71, /* htt_pdev_cca_stats_hist_tlv (for 100 msec interval stats) */
+ HTT_STATS_PDEV_CCA_STAT_CUMULATIVE_TAG = 72, /* htt_pdev_stats_cca_stats_tlv */
+ HTT_STATS_PDEV_CCA_COUNTERS_TAG = 73, /* htt_pdev_stats_cca_counters_tlv */
+ HTT_STATS_TX_PDEV_MPDU_STATS_TAG = 74, /* htt_tx_pdev_mpdu_stats_tlv */
+ HTT_STATS_PDEV_TWT_SESSIONS_TAG = 75, /* htt_pdev_stats_twt_sessions_tlv */
+ HTT_STATS_PDEV_TWT_SESSION_TAG = 76, /* htt_pdev_stats_twt_session_tlv */
+ HTT_STATS_RX_REFILL_RXDMA_ERR_TAG = 77, /* htt_rx_soc_fw_refill_ring_num_rxdma_err_tlv_v */
+ HTT_STATS_RX_REFILL_REO_ERR_TAG = 78, /* htt_rx_soc_fw_refill_ring_num_reo_err_tlv_v */
+ HTT_STATS_RX_REO_RESOURCE_STATS_TAG = 79, /* htt_rx_reo_debug_stats_tlv_v */
+ HTT_STATS_TX_SOUNDING_STATS_TAG = 80, /* htt_tx_sounding_stats_tlv */
+ HTT_STATS_TX_PDEV_TX_PPDU_STATS_TAG = 81, /* htt_tx_pdev_stats_tx_ppdu_stats_tlv_v */
+ HTT_STATS_TX_PDEV_TRIED_MPDU_CNT_HIST_TAG = 82, /* htt_tx_pdev_stats_tried_mpdu_cnt_hist_tlv_v */
+ HTT_STATS_TX_HWQ_TRIED_MPDU_CNT_HIST_TAG = 83, /* htt_tx_hwq_tried_mpdu_cnt_hist_tlv_v */
+ HTT_STATS_TX_HWQ_TXOP_USED_CNT_HIST_TAG = 84, /* htt_tx_hwq_txop_used_cnt_hist_tlv_v */
+ HTT_STATS_TX_DE_FW2WBM_RING_FULL_HIST_TAG = 85, /* htt_tx_de_fw2wbm_ring_full_hist_tlv */
+ HTT_STATS_SCHED_TXQ_SCHED_ORDER_SU_TAG = 86, /* htt_sched_txq_sched_order_su_tlv */
+ HTT_STATS_SCHED_TXQ_SCHED_INELIGIBILITY_TAG = 87, /* htt_sched_txq_sched_eligibility_tlv */
+ HTT_STATS_PDEV_OBSS_PD_TAG = 88, /* htt_pdev_obss_pd_stats_tlv */
HTT_STATS_MAX_TAG,
} htt_tlv_tag_t;
-
-#define HTT_STATS_TLV_TAG_M 0x00000fff
-#define HTT_STATS_TLV_TAG_S 0
-#define HTT_STATS_TLV_LENGTH_M 0x00fff000
-#define HTT_STATS_TLV_LENGTH_S 12
+#define HTT_STATS_TLV_TAG_M 0x00000fff
+#define HTT_STATS_TLV_TAG_S 0
+#define HTT_STATS_TLV_LENGTH_M 0x00fff000
+#define HTT_STATS_TLV_LENGTH_S 12
#define HTT_STATS_TLV_TAG_GET(_var) \
(((_var) & HTT_STATS_TLV_TAG_M) >> \
- HTT_STATS_TLV_TAG_S)
+ HTT_STATS_TLV_TAG_S)
#define HTT_STATS_TLV_TAG_SET(_var, _val) \
- do { \
- HTT_CHECK_SET_VAL(HTT_STATS_TLV_TAG, _val); \
- ((_var) |= ((_val) << HTT_STATS_TLV_TAG_S)); \
- } while (0)
+ do { \
+ HTT_CHECK_SET_VAL(HTT_STATS_TLV_TAG, _val); \
+ ((_var) |= ((_val) << HTT_STATS_TLV_TAG_S)); \
+ } while (0)
#define HTT_STATS_TLV_LENGTH_GET(_var) \
(((_var) & HTT_STATS_TLV_LENGTH_M) >> \
- HTT_STATS_TLV_LENGTH_S)
+ HTT_STATS_TLV_LENGTH_S)
#define HTT_STATS_TLV_LENGTH_SET(_var, _val) \
- do { \
- HTT_CHECK_SET_VAL(HTT_STATS_TLV_LENGTH, _val); \
- ((_var) |= ((_val) << HTT_STATS_TLV_LENGTH_S)); \
- } while (0)
+ do { \
+ HTT_CHECK_SET_VAL(HTT_STATS_TLV_LENGTH, _val); \
+ ((_var) |= ((_val) << HTT_STATS_TLV_LENGTH_S)); \
+ } while (0)
typedef struct {
union {
@@ -407,59 +404,57 @@ typedef struct {
* the tag and length bitfields in an endian-neutral manner.
*/
struct {
- A_UINT32 tag: 12, /* BIT [11 : 0] */
- length: 12, /* BIT [23 : 12] */
- reserved: 8; /* BIT [31 : 24] */
+ A_UINT32 tag : 12, /* BIT [11 : 0] */
+ length : 12, /* BIT [23 : 12] */
+ reserved : 8; /* BIT [31 : 24] */
};
};
} htt_tlv_hdr_t;
-#define HTT_STATS_MAX_STRING_SZ32 4
-#define HTT_STATS_MACID_INVALID 0xff
-#define HTT_TX_HWQ_MAX_DIFS_LATENCY_BINS 10
-#define HTT_TX_HWQ_MAX_CMD_RESULT_STATS 13
-#define HTT_TX_HWQ_MAX_CMD_STALL_STATS 5
-#define HTT_TX_HWQ_MAX_FES_RESULT_STATS 10
+#define HTT_STATS_MAX_STRING_SZ32 4
+#define HTT_STATS_MACID_INVALID 0xff
+#define HTT_TX_HWQ_MAX_DIFS_LATENCY_BINS 10
+#define HTT_TX_HWQ_MAX_CMD_RESULT_STATS 13
+#define HTT_TX_HWQ_MAX_CMD_STALL_STATS 5
+#define HTT_TX_HWQ_MAX_FES_RESULT_STATS 10
typedef enum {
- HTT_STATS_TX_PDEV_NO_DATA_UNDERRUN = 0,
+ HTT_STATS_TX_PDEV_NO_DATA_UNDERRUN = 0,
HTT_STATS_TX_PDEV_DATA_UNDERRUN_BETWEEN_MPDU = 1,
- HTT_STATS_TX_PDEV_DATA_UNDERRUN_WITHIN_MPDU = 2,
- HTT_TX_PDEV_MAX_URRN_STATS = 3,
+ HTT_STATS_TX_PDEV_DATA_UNDERRUN_WITHIN_MPDU = 2,
+ HTT_TX_PDEV_MAX_URRN_STATS = 3,
} htt_tx_pdev_underrun_enum;
-#define HTT_TX_PDEV_MAX_FLUSH_REASON_STATS 71
-#define HTT_TX_PDEV_MAX_SIFS_BURST_STATS 9
-#define HTT_TX_PDEV_MAX_SIFS_BURST_HIST_STATS 10
-#define HTT_TX_PDEV_MAX_PHY_ERR_STATS 18
-#define HTT_TX_PDEV_SCHED_TX_MODE_MAX 4
-#define HTT_TX_PDEV_NUM_SCHED_ORDER_LOG 20
+#define HTT_TX_PDEV_MAX_FLUSH_REASON_STATS 71
+#define HTT_TX_PDEV_MAX_SIFS_BURST_STATS 9
+#define HTT_TX_PDEV_MAX_SIFS_BURST_HIST_STATS 10
+#define HTT_TX_PDEV_MAX_PHY_ERR_STATS 18
+#define HTT_TX_PDEV_SCHED_TX_MODE_MAX 4
+#define HTT_TX_PDEV_NUM_SCHED_ORDER_LOG 20
-#define HTT_RX_STATS_REFILL_MAX_RING 4
-#define HTT_RX_STATS_RXDMA_MAX_ERR 16
-#define HTT_RX_STATS_FW_DROP_REASON_MAX 16
+#define HTT_RX_STATS_REFILL_MAX_RING 4
+#define HTT_RX_STATS_RXDMA_MAX_ERR 16
+#define HTT_RX_STATS_FW_DROP_REASON_MAX 16
/* Bytes stored in little endian order */
/* Length should be multiple of DWORD */
typedef struct {
htt_tlv_hdr_t tlv_hdr;
- A_UINT32 data[1]; /* Can be variable length */
+ A_UINT32 data[1]; /* Can be variable length */
} htt_stats_string_tlv;
-
-#define HTT_TX_PDEV_STATS_CMN_MAC_ID_M 0x000000ff
-#define HTT_TX_PDEV_STATS_CMN_MAC_ID_S 0
+#define HTT_TX_PDEV_STATS_CMN_MAC_ID_M 0x000000ff
+#define HTT_TX_PDEV_STATS_CMN_MAC_ID_S 0
#define HTT_TX_PDEV_STATS_CMN_MAC_ID_GET(_var) \
(((_var) & HTT_TX_PDEV_STATS_CMN_MAC_ID_M) >> \
- HTT_TX_PDEV_STATS_CMN_MAC_ID_S)
+ HTT_TX_PDEV_STATS_CMN_MAC_ID_S)
#define HTT_TX_PDEV_STATS_CMN_MAC_ID_SET(_var, _val) \
- do { \
- HTT_CHECK_SET_VAL(HTT_TX_PDEV_STATS_CMN_MAC_ID, _val); \
- ((_var) |= ((_val) << HTT_TX_PDEV_STATS_CMN_MAC_ID_S)); \
- } while (0)
-
+ do { \
+ HTT_CHECK_SET_VAL(HTT_TX_PDEV_STATS_CMN_MAC_ID, _val); \
+ ((_var) |= ((_val) << HTT_TX_PDEV_STATS_CMN_MAC_ID_S)); \
+ } while (0)
/* == TX PDEV STATS == */
typedef struct {
@@ -575,50 +570,52 @@ typedef struct {
A_UINT32 tx_active_dur_us_low;
A_UINT32 tx_active_dur_us_high;
+ /* Number of MPDUs dropped after max retries */
+ A_UINT32 remove_mpdus_max_retries;
} htt_tx_pdev_stats_cmn_tlv;
#define HTT_TX_PDEV_STATS_URRN_TLV_SZ(_num_elems) (sizeof(A_UINT32) * (_num_elems))
/* NOTE: Variable length TLV, use length spec to infer array size */
typedef struct {
htt_tlv_hdr_t tlv_hdr;
- A_UINT32 urrn_stats[1]; /* HTT_TX_PDEV_MAX_URRN_STATS */
+ A_UINT32 urrn_stats[1]; /* HTT_TX_PDEV_MAX_URRN_STATS */
} htt_tx_pdev_stats_urrn_tlv_v;
#define HTT_TX_PDEV_STATS_FLUSH_TLV_SZ(_num_elems) (sizeof(A_UINT32) * (_num_elems))
/* NOTE: Variable length TLV, use length spec to infer array size */
typedef struct {
htt_tlv_hdr_t tlv_hdr;
- A_UINT32 flush_errs[1]; /* HTT_TX_PDEV_MAX_FLUSH_REASON_STATS */
+ A_UINT32 flush_errs[1]; /* HTT_TX_PDEV_MAX_FLUSH_REASON_STATS */
} htt_tx_pdev_stats_flush_tlv_v;
#define HTT_TX_PDEV_STATS_SIFS_TLV_SZ(_num_elems) (sizeof(A_UINT32) * (_num_elems))
/* NOTE: Variable length TLV, use length spec to infer array size */
typedef struct {
htt_tlv_hdr_t tlv_hdr;
- A_UINT32 sifs_status[1]; /* HTT_TX_PDEV_MAX_SIFS_BURST_STATS */
+ A_UINT32 sifs_status[1]; /* HTT_TX_PDEV_MAX_SIFS_BURST_STATS */
} htt_tx_pdev_stats_sifs_tlv_v;
#define HTT_TX_PDEV_STATS_PHY_ERR_TLV_SZ(_num_elems) (sizeof(A_UINT32) * (_num_elems))
/* NOTE: Variable length TLV, use length spec to infer array size */
typedef struct {
htt_tlv_hdr_t tlv_hdr;
- A_UINT32 phy_errs[1]; /* HTT_TX_PDEV_MAX_PHY_ERR_STATS */
+ A_UINT32 phy_errs[1]; /* HTT_TX_PDEV_MAX_PHY_ERR_STATS */
} htt_tx_pdev_stats_phy_err_tlv_v;
#define HTT_TX_PDEV_STATS_SIFS_HIST_TLV_SZ(_num_elems) (sizeof(A_UINT32) * (_num_elems))
/* NOTE: Variable length TLV, use length spec to infer array size */
typedef struct {
htt_tlv_hdr_t tlv_hdr;
- A_UINT32 sifs_hist_status[1]; /* HTT_TX_PDEV_SIFS_BURST_HIST_STATS */
+ A_UINT32 sifs_hist_status[1]; /* HTT_TX_PDEV_SIFS_BURST_HIST_STATS */
} htt_tx_pdev_stats_sifs_hist_tlv_v;
typedef struct {
htt_tlv_hdr_t tlv_hdr;
- A_UINT32 num_data_ppdus_legacy_su;
- A_UINT32 num_data_ppdus_ac_su;
- A_UINT32 num_data_ppdus_ax_su;
- A_UINT32 num_data_ppdus_ac_su_txbf;
- A_UINT32 num_data_ppdus_ax_su_txbf;
+ A_UINT32 num_data_ppdus_legacy_su;
+ A_UINT32 num_data_ppdus_ac_su;
+ A_UINT32 num_data_ppdus_ax_su;
+ A_UINT32 num_data_ppdus_ac_su_txbf;
+ A_UINT32 num_data_ppdus_ax_su_txbf;
} htt_tx_pdev_stats_tx_ppdu_stats_tlv_v;
#define HTT_TX_PDEV_STATS_TRIED_MPDU_CNT_HIST_TLV_SZ(_num_elems) (sizeof(A_UINT32) * (_num_elems))
@@ -637,8 +634,8 @@ typedef struct {
*/
typedef struct {
htt_tlv_hdr_t tlv_hdr;
- A_UINT32 hist_bin_size;
- A_UINT32 tried_mpdu_cnt_hist[1]; /* HTT_TX_PDEV_TRIED_MPDU_CNT_HIST */
+ A_UINT32 hist_bin_size;
+ A_UINT32 tried_mpdu_cnt_hist[1]; /* HTT_TX_PDEV_TRIED_MPDU_CNT_HIST */
} htt_tx_pdev_stats_tried_mpdu_cnt_hist_tlv_v;
/* STATS_TYPE: HTT_DBG_EXT_STATS_PDEV_TX
@@ -657,13 +654,13 @@ typedef struct {
* Instead, use the constituent TLV structures to fill/parse.
*/
typedef struct _htt_tx_pdev_stats {
- htt_tx_pdev_stats_cmn_tlv cmn_tlv;
- htt_tx_pdev_stats_urrn_tlv_v underrun_tlv;
- htt_tx_pdev_stats_sifs_tlv_v sifs_tlv;
- htt_tx_pdev_stats_flush_tlv_v flush_tlv;
- htt_tx_pdev_stats_phy_err_tlv_v phy_err_tlv;
- htt_tx_pdev_stats_sifs_hist_tlv_v sifs_hist_tlv;
- htt_tx_pdev_stats_tx_ppdu_stats_tlv_v tx_su_tlv;
+ htt_tx_pdev_stats_cmn_tlv cmn_tlv;
+ htt_tx_pdev_stats_urrn_tlv_v underrun_tlv;
+ htt_tx_pdev_stats_sifs_tlv_v sifs_tlv;
+ htt_tx_pdev_stats_flush_tlv_v flush_tlv;
+ htt_tx_pdev_stats_phy_err_tlv_v phy_err_tlv;
+ htt_tx_pdev_stats_sifs_hist_tlv_v sifs_hist_tlv;
+ htt_tx_pdev_stats_tx_ppdu_stats_tlv_v tx_su_tlv;
htt_tx_pdev_stats_tried_mpdu_cnt_hist_tlv_v tried_mpdu_cnt_hist_tlv;
} htt_tx_pdev_stats_t;
@@ -674,7 +671,7 @@ typedef struct _htt_tx_pdev_stats {
typedef struct {
htt_tlv_hdr_t tlv_hdr;
/* Stored as little endian */
- A_UINT8 hw_intr_name[HTT_STATS_MAX_HW_INTR_NAME_LEN];
+ A_UINT8 hw_intr_name[HTT_STATS_MAX_HW_INTR_NAME_LEN];
A_UINT32 mask;
A_UINT32 count;
} htt_hw_stats_intr_misc_tlv;
@@ -683,24 +680,22 @@ typedef struct {
typedef struct {
htt_tlv_hdr_t tlv_hdr;
/* Stored as little endian */
- A_UINT8 hw_module_name[HTT_STATS_MAX_HW_MODULE_NAME_LEN];
+ A_UINT8 hw_module_name[HTT_STATS_MAX_HW_MODULE_NAME_LEN];
A_UINT32 count;
} htt_hw_stats_wd_timeout_tlv;
-
-#define HTT_HW_STATS_PDEV_ERRS_MAC_ID_M 0x000000ff
-#define HTT_HW_STATS_PDEV_ERRS_MAC_ID_S 0
+#define HTT_HW_STATS_PDEV_ERRS_MAC_ID_M 0x000000ff
+#define HTT_HW_STATS_PDEV_ERRS_MAC_ID_S 0
#define HTT_HW_STATS_PDEV_ERRS_MAC_ID_GET(_var) \
(((_var) & HTT_HW_STATS_PDEV_ERRS_MAC_ID_M) >> \
- HTT_HW_STATS_PDEV_ERRS_MAC_ID_S)
+ HTT_HW_STATS_PDEV_ERRS_MAC_ID_S)
#define HTT_HW_STATS_PDEV_ERRS_MAC_ID_SET(_var, _val) \
- do { \
- HTT_CHECK_SET_VAL(HTT_HW_STATS_PDEV_ERRS_MAC_ID, _val); \
- ((_var) |= ((_val) << HTT_HW_STATS_PDEV_ERRS_MAC_ID_S)); \
- } while (0)
-
+ do { \
+ HTT_CHECK_SET_VAL(HTT_HW_STATS_PDEV_ERRS_MAC_ID, _val); \
+ ((_var) |= ((_val) << HTT_HW_STATS_PDEV_ERRS_MAC_ID_S)); \
+ } while (0)
typedef struct {
htt_tlv_hdr_t tlv_hdr;
@@ -708,17 +703,31 @@ typedef struct {
/* BIT [ 7 : 0] :- mac_id
* BIT [31 : 8] :- reserved
*/
- A_UINT32 mac_id__word;
- A_UINT32 tx_abort;
- A_UINT32 tx_abort_fail_count;
- A_UINT32 rx_abort;
- A_UINT32 rx_abort_fail_count;
- A_UINT32 warm_reset;
- A_UINT32 cold_reset;
- A_UINT32 tx_flush;
- A_UINT32 tx_glb_reset;
- A_UINT32 tx_txq_reset;
- A_UINT32 rx_timeout_reset;
+ A_UINT32 mac_id__word;
+ A_UINT32 tx_abort;
+ A_UINT32 tx_abort_fail_count;
+ A_UINT32 rx_abort;
+ A_UINT32 rx_abort_fail_count;
+ A_UINT32 warm_reset;
+ A_UINT32 cold_reset;
+ A_UINT32 tx_flush;
+ A_UINT32 tx_glb_reset;
+ A_UINT32 tx_txq_reset;
+ A_UINT32 rx_timeout_reset;
+ A_UINT32 mac_cold_reset_restore_cal;
+ A_UINT32 mac_cold_reset;
+ A_UINT32 mac_warm_reset;
+ A_UINT32 mac_only_reset;
+ A_UINT32 phy_warm_reset;
+ A_UINT32 phy_warm_reset_ucode_trig;
+ A_UINT32 mac_warm_reset_restore_cal;
+ A_UINT32 mac_sfm_reset;
+ A_UINT32 phy_warm_reset_m3_ssr;
+ A_UINT32 phy_warm_reset_reason_phy_m3;
+ A_UINT32 phy_warm_reset_reason_tx_hw_stuck;
+ A_UINT32 phy_warm_reset_reason_num_cca_rx_frame_stuck;
+ A_UINT32 phy_warm_reset_reason_wal_rx_recovery_rst_rx_busy;
+ A_UINT32 phy_warm_reset_reason_wal_rx_recovery_rst_mac_hang;
} htt_hw_stats_pdev_errs_tlv;
typedef struct {
@@ -753,53 +762,54 @@ typedef struct {
* Instead, use the constituent TLV structures to fill/parse.
*/
typedef struct _htt_pdev_err_stats {
- htt_hw_stats_pdev_errs_tlv pdev_errs;
- htt_hw_stats_intr_misc_tlv misc_stats[1];
+ htt_hw_stats_pdev_errs_tlv pdev_errs;
+ htt_hw_stats_intr_misc_tlv misc_stats[1];
htt_hw_stats_wd_timeout_tlv wd_timeout[1];
- htt_hw_stats_whal_tx_tlv whal_tx_stats;
+ htt_hw_stats_whal_tx_tlv whal_tx_stats;
} htt_hw_err_stats_t;
/* ============ PEER STATS ============ */
-#define HTT_MSDU_FLOW_STATS_TX_FLOW_NUM_M 0x0000ffff
-#define HTT_MSDU_FLOW_STATS_TX_FLOW_NUM_S 0
-#define HTT_MSDU_FLOW_STATS_TID_NUM_M 0x000f0000
-#define HTT_MSDU_FLOW_STATS_TID_NUM_S 16
-#define HTT_MSDU_FLOW_STATS_DROP_M 0x00100000
-#define HTT_MSDU_FLOW_STATS_DROP_S 20
+#define HTT_MSDU_FLOW_STATS_TX_FLOW_NUM_M 0x0000ffff
+#define HTT_MSDU_FLOW_STATS_TX_FLOW_NUM_S 0
+#define HTT_MSDU_FLOW_STATS_TID_NUM_M 0x000f0000
+#define HTT_MSDU_FLOW_STATS_TID_NUM_S 16
+#define HTT_MSDU_FLOW_STATS_DROP_M 0x00100000
+#define HTT_MSDU_FLOW_STATS_DROP_S 20
#define HTT_MSDU_FLOW_STATS_TX_FLOW_NUM_GET(_var) \
(((_var) & HTT_MSDU_FLOW_STATS_TX_FLOW_NUM_M) >> \
- HTT_MSDU_FLOW_STATS_TX_FLOW_NUM_S)
+ HTT_MSDU_FLOW_STATS_TX_FLOW_NUM_S)
#define HTT_MSDU_FLOW_STATS_TX_FLOW_NUM_SET(_var, _val) \
- do { \
- HTT_CHECK_SET_VAL(HTT_MSDU_FLOW_STATS_TX_FLOW_NUM, _val); \
- ((_var) |= ((_val) << HTT_MSDU_FLOW_STATS_TX_FLOW_NUM_S)); \
- } while (0)
+ do { \
+ HTT_CHECK_SET_VAL(HTT_MSDU_FLOW_STATS_TX_FLOW_NUM, _val); \
+ ((_var) |= ((_val) << HTT_MSDU_FLOW_STATS_TX_FLOW_NUM_S)); \
+ } while (0)
#define HTT_MSDU_FLOW_STATS_TID_NUM_GET(_var) \
(((_var) & HTT_MSDU_FLOW_STATS_TID_NUM_M) >> \
- HTT_MSDU_FLOW_STATS_TID_NUM_S)
+ HTT_MSDU_FLOW_STATS_TID_NUM_S)
#define HTT_MSDU_FLOW_STATS_TID_NUM_SET(_var, _val) \
- do { \
- HTT_CHECK_SET_VAL(HTT_MSDU_FLOW_STATS_TID_NUM, _val); \
- ((_var) |= ((_val) << HTT_MSDU_FLOW_STATS_TID_NUM_S)); \
- } while (0)
+ do { \
+ HTT_CHECK_SET_VAL(HTT_MSDU_FLOW_STATS_TID_NUM, _val); \
+ ((_var) |= ((_val) << HTT_MSDU_FLOW_STATS_TID_NUM_S)); \
+ } while (0)
#define HTT_MSDU_FLOW_STATS_DROP_GET(_var) \
(((_var) & HTT_MSDU_FLOW_STATS_DROP_M) >> \
- HTT_MSDU_FLOW_STATS_DROP_S)
+ HTT_MSDU_FLOW_STATS_DROP_S)
#define HTT_MSDU_FLOW_STATS_DROP_SET(_var, _val) \
- do { \
- HTT_CHECK_SET_VAL(HTT_MSDU_FLOW_STATS_DROP, _val); \
- ((_var) |= ((_val) << HTT_MSDU_FLOW_STATS_DROP_S)); \
- } while (0)
+ do { \
+ HTT_CHECK_SET_VAL(HTT_MSDU_FLOW_STATS_DROP, _val); \
+ ((_var) |= ((_val) << HTT_MSDU_FLOW_STATS_DROP_S)); \
+ } while (0)
typedef struct _htt_msdu_flow_stats_tlv {
htt_tlv_hdr_t tlv_hdr;
+
A_UINT32 last_update_timestamp;
A_UINT32 last_add_timestamp;
A_UINT32 last_remove_timestamp;
@@ -824,65 +834,63 @@ typedef struct _htt_msdu_flow_stats_tlv {
#define MAX_HTT_TID_NAME 8
/* DWORD sw_peer_id__tid_num */
-#define HTT_TX_TID_STATS_SW_PEER_ID_M 0x0000ffff
-#define HTT_TX_TID_STATS_SW_PEER_ID_S 0
-#define HTT_TX_TID_STATS_TID_NUM_M 0xffff0000
-#define HTT_TX_TID_STATS_TID_NUM_S 16
+#define HTT_TX_TID_STATS_SW_PEER_ID_M 0x0000ffff
+#define HTT_TX_TID_STATS_SW_PEER_ID_S 0
+#define HTT_TX_TID_STATS_TID_NUM_M 0xffff0000
+#define HTT_TX_TID_STATS_TID_NUM_S 16
#define HTT_TX_TID_STATS_SW_PEER_ID_GET(_var) \
(((_var) & HTT_TX_TID_STATS_SW_PEER_ID_M) >> \
- HTT_TX_TID_STATS_SW_PEER_ID_S)
+ HTT_TX_TID_STATS_SW_PEER_ID_S)
#define HTT_TX_TID_STATS_SW_PEER_ID_SET(_var, _val) \
- do { \
- HTT_CHECK_SET_VAL(HTT_TX_TID_STATS_SW_PEER_ID, _val); \
- ((_var) |= ((_val) << HTT_TX_TID_STATS_SW_PEER_ID_S)); \
- } while (0)
-
+ do { \
+ HTT_CHECK_SET_VAL(HTT_TX_TID_STATS_SW_PEER_ID, _val); \
+ ((_var) |= ((_val) << HTT_TX_TID_STATS_SW_PEER_ID_S)); \
+ } while (0)
#define HTT_TX_TID_STATS_TID_NUM_GET(_var) \
(((_var) & HTT_TX_TID_STATS_TID_NUM_M) >> \
- HTT_TX_TID_STATS_TID_NUM_S)
+ HTT_TX_TID_STATS_TID_NUM_S)
#define HTT_TX_TID_STATS_TID_NUM_SET(_var, _val) \
- do { \
- HTT_CHECK_SET_VAL(HTT_TX_TID_STATS_TID_NUM, _val); \
- ((_var) |= ((_val) << HTT_TX_TID_STATS_TID_NUM_S)); \
- } while (0)
+ do { \
+ HTT_CHECK_SET_VAL(HTT_TX_TID_STATS_TID_NUM, _val); \
+ ((_var) |= ((_val) << HTT_TX_TID_STATS_TID_NUM_S)); \
+ } while (0)
/* DWORD num_sched_pending__num_ppdu_in_hwq */
-#define HTT_TX_TID_STATS_NUM_SCHED_PENDING_M 0x000000ff
-#define HTT_TX_TID_STATS_NUM_SCHED_PENDING_S 0
-#define HTT_TX_TID_STATS_NUM_PPDU_IN_HWQ_M 0x0000ff00
-#define HTT_TX_TID_STATS_NUM_PPDU_IN_HWQ_S 8
+#define HTT_TX_TID_STATS_NUM_SCHED_PENDING_M 0x000000ff
+#define HTT_TX_TID_STATS_NUM_SCHED_PENDING_S 0
+#define HTT_TX_TID_STATS_NUM_PPDU_IN_HWQ_M 0x0000ff00
+#define HTT_TX_TID_STATS_NUM_PPDU_IN_HWQ_S 8
#define HTT_TX_TID_STATS_NUM_SCHED_PENDING_GET(_var) \
(((_var) & HTT_TX_TID_STATS_NUM_SCHED_PENDING_M) >> \
- HTT_TX_TID_STATS_NUM_SCHED_PENDING_S)
+ HTT_TX_TID_STATS_NUM_SCHED_PENDING_S)
#define HTT_TX_TID_STATS_NUM_SCHED_PENDING_SET(_var, _val) \
- do { \
- HTT_CHECK_SET_VAL(HTT_TX_TID_STATS_NUM_SCHED_PENDING, _val); \
- ((_var) |= ((_val) << HTT_TX_TID_STATS_NUM_SCHED_PENDING_S)); \
- } while (0)
-
+ do { \
+ HTT_CHECK_SET_VAL(HTT_TX_TID_STATS_NUM_SCHED_PENDING, _val); \
+ ((_var) |= ((_val) << HTT_TX_TID_STATS_NUM_SCHED_PENDING_S)); \
+ } while (0)
#define HTT_TX_TID_STATS_NUM_PPDU_IN_HWQ_GET(_var) \
(((_var) & HTT_TX_TID_STATS_NUM_PPDU_IN_HWQ_M) >> \
- HTT_TX_TID_STATS_NUM_PPDU_IN_HWQ_S)
+ HTT_TX_TID_STATS_NUM_PPDU_IN_HWQ_S)
#define HTT_TX_TID_STATS_NUM_PPDU_IN_HWQ_SET(_var, _val) \
- do { \
- HTT_CHECK_SET_VAL(HTT_TX_TID_STATS_NUM_PPDU_IN_HWQ, _val); \
- ((_var) |= ((_val) << HTT_TX_TID_STATS_NUM_PPDU_IN_HWQ_S)); \
- } while (0)
-
+ do { \
+ HTT_CHECK_SET_VAL(HTT_TX_TID_STATS_NUM_PPDU_IN_HWQ, _val); \
+ ((_var) |= ((_val) << HTT_TX_TID_STATS_NUM_PPDU_IN_HWQ_S)); \
+ } while (0)
/* Tidq stats */
typedef struct _htt_tx_tid_stats_tlv {
htt_tlv_hdr_t tlv_hdr;
+
/* Stored as little endian */
- A_UINT8 tid_name[MAX_HTT_TID_NAME];
+ A_UINT8 tid_name[MAX_HTT_TID_NAME];
/* BIT [15 : 0] :- sw_peer_id
* BIT [31 : 16] :- tid_num
*/
@@ -914,7 +922,7 @@ typedef struct _htt_tx_tid_stats_tlv {
typedef struct _htt_tx_tid_stats_v1_tlv {
htt_tlv_hdr_t tlv_hdr;
/* Stored as little endian */
- A_UINT8 tid_name[MAX_HTT_TID_NAME];
+ A_UINT8 tid_name[MAX_HTT_TID_NAME];
/* BIT [15 : 0] :- sw_peer_id
* BIT [31 : 16] :- tid_num
*/
@@ -947,34 +955,34 @@ typedef struct _htt_tx_tid_stats_v1_tlv {
A_UINT32 sendn_frms_allowed;
} htt_tx_tid_stats_v1_tlv;
-#define HTT_RX_TID_STATS_SW_PEER_ID_M 0x0000ffff
-#define HTT_RX_TID_STATS_SW_PEER_ID_S 0
-#define HTT_RX_TID_STATS_TID_NUM_M 0xffff0000
-#define HTT_RX_TID_STATS_TID_NUM_S 16
+#define HTT_RX_TID_STATS_SW_PEER_ID_M 0x0000ffff
+#define HTT_RX_TID_STATS_SW_PEER_ID_S 0
+#define HTT_RX_TID_STATS_TID_NUM_M 0xffff0000
+#define HTT_RX_TID_STATS_TID_NUM_S 16
#define HTT_RX_TID_STATS_SW_PEER_ID_GET(_var) \
(((_var) & HTT_RX_TID_STATS_SW_PEER_ID_M) >> \
- HTT_RX_TID_STATS_SW_PEER_ID_S)
+ HTT_RX_TID_STATS_SW_PEER_ID_S)
#define HTT_RX_TID_STATS_SW_PEER_ID_SET(_var, _val) \
- do { \
- HTT_CHECK_SET_VAL(HTT_RX_TID_STATS_SW_PEER_ID, _val); \
- ((_var) |= ((_val) << HTT_RX_TID_STATS_SW_PEER_ID_S)); \
- } while (0)
-
+ do { \
+ HTT_CHECK_SET_VAL(HTT_RX_TID_STATS_SW_PEER_ID, _val); \
+ ((_var) |= ((_val) << HTT_RX_TID_STATS_SW_PEER_ID_S)); \
+ } while (0)
#define HTT_RX_TID_STATS_TID_NUM_GET(_var) \
(((_var) & HTT_RX_TID_STATS_TID_NUM_M) >> \
- HTT_RX_TID_STATS_TID_NUM_S)
+ HTT_RX_TID_STATS_TID_NUM_S)
#define HTT_RX_TID_STATS_TID_NUM_SET(_var, _val) \
- do { \
- HTT_CHECK_SET_VAL(HTT_RX_TID_STATS_TID_NUM, _val); \
- ((_var) |= ((_val) << HTT_RX_TID_STATS_TID_NUM_S)); \
- } while (0)
+ do { \
+ HTT_CHECK_SET_VAL(HTT_RX_TID_STATS_TID_NUM, _val); \
+ ((_var) |= ((_val) << HTT_RX_TID_STATS_TID_NUM_S)); \
+ } while (0)
typedef struct _htt_rx_tid_stats_tlv {
htt_tlv_hdr_t tlv_hdr;
+
/* BIT [15 : 0] : sw_peer_id
* BIT [31 : 16] : tid_num
*/
@@ -982,7 +990,7 @@ typedef struct _htt_rx_tid_stats_tlv {
/* Stored as little endian */
A_UINT8 tid_name[MAX_HTT_TID_NAME];
/* dup_in_reorder not collected per tid for now,
- as there is no wal_peer back ptr in data rx peer. */
+ as there is no wal_peer back ptr in data rx peer. */
A_UINT32 dup_in_reorder;
A_UINT32 dup_past_outside_window;
A_UINT32 dup_past_within_window;
@@ -996,11 +1004,10 @@ typedef struct _htt_rx_tid_stats_tlv {
typedef struct {
htt_tlv_hdr_t tlv_hdr;
/* Stored as little endian */
- A_UINT8 counter_name[HTT_MAX_COUNTER_NAME];
- A_UINT32 count;
+ A_UINT8 counter_name[HTT_MAX_COUNTER_NAME];
+ A_UINT32 count;
} htt_counter_tlv;
-
typedef struct {
htt_tlv_hdr_t tlv_hdr;
/* Number of rx ppdu. */
@@ -1038,6 +1045,8 @@ typedef struct {
* If the peer is currently active, this inactive_time will be 0x0.
*/
A_UINT32 inactive_time;
+ /* Number of MPDUs dropped after max retries */
+ A_UINT32 remove_mpdus_max_retries;
} htt_peer_stats_cmn_tlv;
typedef struct {
@@ -1049,10 +1058,10 @@ typedef struct {
* BIT [15 : 8] :- pdev_id
* BIT [31 : 16] :- ast_indx
*/
- A_UINT32 vdev_pdev_ast_idx;
+ A_UINT32 vdev_pdev_ast_idx;
htt_mac_addr mac_addr;
- A_UINT32 peer_flags;
- A_UINT32 qpeer_flags;
+ A_UINT32 peer_flags;
+ A_UINT32 qpeer_flags;
} htt_peer_details_tlv;
typedef enum {
@@ -1067,12 +1076,12 @@ typedef enum {
HTT_STATS_PREAM_COUNT,
} HTT_STATS_PREAM_TYPE;
-#define HTT_TX_PEER_STATS_NUM_MCS_COUNTERS 12
-#define HTT_TX_PEER_STATS_NUM_GI_COUNTERS 4
-#define HTT_TX_PEER_STATS_NUM_DCM_COUNTERS 5
-#define HTT_TX_PEER_STATS_NUM_BW_COUNTERS 4
-#define HTT_TX_PEER_STATS_NUM_SPATIAL_STREAMS 8
-#define HTT_TX_PEER_STATS_NUM_PREAMBLE_TYPES HTT_STATS_PREAM_COUNT
+#define HTT_TX_PEER_STATS_NUM_MCS_COUNTERS 12
+#define HTT_TX_PEER_STATS_NUM_GI_COUNTERS 4
+#define HTT_TX_PEER_STATS_NUM_DCM_COUNTERS 5
+#define HTT_TX_PEER_STATS_NUM_BW_COUNTERS 4
+#define HTT_TX_PEER_STATS_NUM_SPATIAL_STREAMS 8
+#define HTT_TX_PEER_STATS_NUM_PREAMBLE_TYPES HTT_STATS_PREAM_COUNT
typedef struct _htt_tx_peer_rate_stats_tlv {
htt_tlv_hdr_t tlv_hdr;
@@ -1088,7 +1097,7 @@ typedef struct _htt_tx_peer_rate_stats_tlv {
A_UINT32 tx_su_mcs[HTT_TX_PEER_STATS_NUM_MCS_COUNTERS];
A_UINT32 tx_mu_mcs[HTT_TX_PEER_STATS_NUM_MCS_COUNTERS];
A_UINT32 tx_nss[HTT_TX_PEER_STATS_NUM_SPATIAL_STREAMS]; /* element 0,1, ...7 -> NSS 1,2, ...8 */
- A_UINT32 tx_bw[HTT_TX_PEER_STATS_NUM_BW_COUNTERS]; /* element 0: 20 MHz, 1: 40 MHz, 2: 80 MHz, 3: 160 and 80+80 MHz */
+ A_UINT32 tx_bw[HTT_TX_PEER_STATS_NUM_BW_COUNTERS]; /* element 0: 20 MHz, 1: 40 MHz, 2: 80 MHz, 3: 160 and 80+80 MHz */
A_UINT32 tx_stbc[HTT_TX_PEER_STATS_NUM_MCS_COUNTERS];
A_UINT32 tx_pream[HTT_TX_PEER_STATS_NUM_PREAMBLE_TYPES];
@@ -1097,19 +1106,18 @@ typedef struct _htt_tx_peer_rate_stats_tlv {
/* Counters to track packets in dcm mcs (MCS 0, 1, 3, 4) */
A_UINT32 tx_dcm[HTT_TX_PEER_STATS_NUM_DCM_COUNTERS];
-
} htt_tx_peer_rate_stats_tlv;
-#define HTT_RX_PEER_STATS_NUM_MCS_COUNTERS 12
-#define HTT_RX_PEER_STATS_NUM_GI_COUNTERS 4
-#define HTT_RX_PEER_STATS_NUM_DCM_COUNTERS 5
-#define HTT_RX_PEER_STATS_NUM_BW_COUNTERS 4
-#define HTT_RX_PEER_STATS_NUM_SPATIAL_STREAMS 8
-#define HTT_RX_PEER_STATS_NUM_PREAMBLE_TYPES HTT_STATS_PREAM_COUNT
+#define HTT_RX_PEER_STATS_NUM_MCS_COUNTERS 12
+#define HTT_RX_PEER_STATS_NUM_GI_COUNTERS 4
+#define HTT_RX_PEER_STATS_NUM_DCM_COUNTERS 5
+#define HTT_RX_PEER_STATS_NUM_BW_COUNTERS 4
+#define HTT_RX_PEER_STATS_NUM_SPATIAL_STREAMS 8
+#define HTT_RX_PEER_STATS_NUM_PREAMBLE_TYPES HTT_STATS_PREAM_COUNT
typedef struct _htt_rx_peer_rate_stats_tlv {
htt_tlv_hdr_t tlv_hdr;
- A_UINT32 nsts;
+ A_UINT32 nsts;
/* Number of rx ldpc packets */
A_UINT32 rx_ldpc;
@@ -1125,16 +1133,16 @@ typedef struct _htt_rx_peer_rate_stats_tlv {
A_UINT32 rx_stbc[HTT_RX_PEER_STATS_NUM_MCS_COUNTERS];
A_UINT32 rx_bw[HTT_RX_PEER_STATS_NUM_BW_COUNTERS]; /* element 0: 20 MHz, 1: 40 MHz, 2: 80 MHz, 3: 160 and 80+80 MHz */
A_UINT32 rx_pream[HTT_RX_PEER_STATS_NUM_PREAMBLE_TYPES];
- A_UINT8 rssi_chain[HTT_RX_PEER_STATS_NUM_SPATIAL_STREAMS][HTT_RX_PEER_STATS_NUM_BW_COUNTERS]; /* units = dB above noise floor */
+ A_UINT8 rssi_chain[HTT_RX_PEER_STATS_NUM_SPATIAL_STREAMS][HTT_RX_PEER_STATS_NUM_BW_COUNTERS]; /* units = dB above noise floor */
/* Counters to track number of rx packets in each GI in each mcs (0-11) */
A_UINT32 rx_gi[HTT_RX_PEER_STATS_NUM_GI_COUNTERS][HTT_RX_PEER_STATS_NUM_MCS_COUNTERS];
- A_UINT32 rx_ulofdma_non_data_ppdu; /* ppdu level */
- A_UINT32 rx_ulofdma_data_ppdu; /* ppdu level */
- A_UINT32 rx_ulofdma_mpdu_ok; /* mpdu level */
- A_UINT32 rx_ulofdma_mpdu_fail; /* mpdu level */
- A_INT8 rx_ul_fd_rssi[HTT_RX_PEER_STATS_NUM_SPATIAL_STREAMS];/* dBm unit */
+ A_UINT32 rx_ulofdma_non_data_ppdu; /* ppdu level */
+ A_UINT32 rx_ulofdma_data_ppdu; /* ppdu level */
+ A_UINT32 rx_ulofdma_mpdu_ok; /* mpdu level */
+ A_UINT32 rx_ulofdma_mpdu_fail; /* mpdu level */
+ A_INT8 rx_ul_fd_rssi[HTT_RX_PEER_STATS_NUM_SPATIAL_STREAMS]; /* dBm unit */
/* per_chain_rssi_pkt_type:
* This field shows what type of rx frame the per-chain RSSI was computed
* on, by recording the frame type and sub-type as bit-fields within this
@@ -1143,7 +1151,8 @@ typedef struct _htt_rx_peer_rate_stats_tlv {
* BIT [7 : 4] :- IEEE80211_FC0_SUBTYPE
* BIT [31 : 8] :- Reserved
*/
- A_UINT32 per_chain_rssi_pkt_type;
+ A_UINT32 per_chain_rssi_pkt_type;
+ A_INT8 rx_per_chain_rssi_in_dbm[HTT_RX_PEER_STATS_NUM_SPATIAL_STREAMS][HTT_RX_PEER_STATS_NUM_BW_COUNTERS];
} htt_rx_peer_rate_stats_tlv;
typedef enum {
@@ -1153,55 +1162,54 @@ typedef enum {
} htt_peer_stats_req_mode_t;
typedef enum {
- HTT_PEER_STATS_CMN_TLV = 0,
- HTT_PEER_DETAILS_TLV = 1,
- HTT_TX_PEER_RATE_STATS_TLV = 2,
- HTT_RX_PEER_RATE_STATS_TLV = 3,
- HTT_TX_TID_STATS_TLV = 4,
- HTT_RX_TID_STATS_TLV = 5,
- HTT_MSDU_FLOW_STATS_TLV = 6,
-
- HTT_PEER_STATS_MAX_TLV = 31,
+ HTT_PEER_STATS_CMN_TLV = 0,
+ HTT_PEER_DETAILS_TLV = 1,
+ HTT_TX_PEER_RATE_STATS_TLV = 2,
+ HTT_RX_PEER_RATE_STATS_TLV = 3,
+ HTT_TX_TID_STATS_TLV = 4,
+ HTT_RX_TID_STATS_TLV = 5,
+ HTT_MSDU_FLOW_STATS_TLV = 6,
+
+ HTT_PEER_STATS_MAX_TLV = 31,
} htt_peer_stats_tlv_enum;
/* config_param0 */
-#define HTT_DBG_EXT_STATS_PEER_INFO_IS_MAC_ADDR_M 0x00000001
-#define HTT_DBG_EXT_STATS_PEER_INFO_IS_MAC_ADDR_S 0
+#define HTT_DBG_EXT_STATS_PEER_INFO_IS_MAC_ADDR_M 0x00000001
+#define HTT_DBG_EXT_STATS_PEER_INFO_IS_MAC_ADDR_S 0
-#define HTT_DBG_EXT_STATS_PEER_REQ_MODE_M 0x0000FFFE
-#define HTT_DBG_EXT_STATS_PEER_REQ_MODE_S 1
+#define HTT_DBG_EXT_STATS_PEER_REQ_MODE_M 0x0000FFFE
+#define HTT_DBG_EXT_STATS_PEER_REQ_MODE_S 1
-#define HTT_DBG_EXT_STATS_PEER_INFO_SW_PEER_ID_M 0xFFFF0000
-#define HTT_DBG_EXT_STATS_PEER_INFO_SW_PEER_ID_S 16
+#define HTT_DBG_EXT_STATS_PEER_INFO_SW_PEER_ID_M 0xFFFF0000
+#define HTT_DBG_EXT_STATS_PEER_INFO_SW_PEER_ID_S 16
-#define HTT_DBG_EXT_STATS_PEER_INFO_IS_MAC_ADDR_SET( _var, _val)\
- do { \
- HTT_CHECK_SET_VAL(HTT_DBG_EXT_STATS_PEER_INFO_IS_MAC_ADDR, _val); \
- ((_var) |= ((_val) << HTT_DBG_EXT_STATS_PEER_INFO_IS_MAC_ADDR_S)); \
- } while (0)
+#define HTT_DBG_EXT_STATS_PEER_INFO_IS_MAC_ADDR_SET(_var, _val) \
+ do { \
+ HTT_CHECK_SET_VAL(HTT_DBG_EXT_STATS_PEER_INFO_IS_MAC_ADDR, _val); \
+ ((_var) |= ((_val) << HTT_DBG_EXT_STATS_PEER_INFO_IS_MAC_ADDR_S)); \
+ } while (0)
#define HTT_DBG_EXT_STATS_PEER_INFO_IS_MAC_ADDR_GET(_var) \
(((_var) & HTT_DBG_EXT_STATS_PEER_INFO_IS_MAC_ADDR_M) >> \
- HTT_DBG_EXT_STATS_PEER_INFO_IS_MAC_ADDR_S)
-
+ HTT_DBG_EXT_STATS_PEER_INFO_IS_MAC_ADDR_S)
#define HTT_DBG_EXT_STATS_PEER_REQ_MODE_GET(_var) \
(((_var) & HTT_DBG_EXT_STATS_PEER_REQ_MODE_M) >> \
- HTT_DBG_EXT_STATS_PEER_REQ_MODE_S)
+ HTT_DBG_EXT_STATS_PEER_REQ_MODE_S)
#define HTT_DBG_EXT_STATS_PEER_REQ_MODE_SET(_var, _val) \
- do { \
- ((_var) |= ((_val) << HTT_DBG_EXT_STATS_PEER_REQ_MODE_S)); \
- } while (0)
+ do { \
+ ((_var) |= ((_val) << HTT_DBG_EXT_STATS_PEER_REQ_MODE_S)); \
+ } while (0)
#define HTT_DBG_EXT_STATS_PEER_INFO_SW_PEER_ID_GET(_var) \
(((_var) & HTT_DBG_EXT_STATS_PEER_INFO_SW_PEER_ID_M) >> \
- HTT_DBG_EXT_STATS_PEER_INFO_SW_PEER_ID_S)
+ HTT_DBG_EXT_STATS_PEER_INFO_SW_PEER_ID_S)
#define HTT_DBG_EXT_STATS_PEER_INFO_SW_PEER_ID_SET(_var, _val) \
- do { \
- ((_var) |= ((_val) << HTT_DBG_EXT_STATS_PEER_INFO_SW_PEER_ID_S)); \
- } while (0)
+ do { \
+ ((_var) |= ((_val) << HTT_DBG_EXT_STATS_PEER_INFO_SW_PEER_ID_S)); \
+ } while (0)
/* STATS_TYPE : HTT_DBG_EXT_STATS_PEER_INFO
* TLV_TAGS:
@@ -1220,14 +1228,15 @@ typedef enum {
*/
typedef struct _htt_peer_stats {
htt_peer_stats_cmn_tlv cmn_tlv;
+
htt_peer_details_tlv peer_details;
/* from g_rate_info_stats */
htt_tx_peer_rate_stats_tlv tx_rate;
htt_rx_peer_rate_stats_tlv rx_rate;
- htt_tx_tid_stats_tlv tx_tid_stats[1];
- htt_rx_tid_stats_tlv rx_tid_stats[1];
- htt_msdu_flow_stats_tlv msdu_flowq[1];
- htt_tx_tid_stats_v1_tlv tx_tid_stats_v1[1];
+ htt_tx_tid_stats_tlv tx_tid_stats[1];
+ htt_rx_tid_stats_tlv rx_tid_stats[1];
+ htt_msdu_flow_stats_tlv msdu_flowq[1];
+ htt_tx_tid_stats_v1_tlv tx_tid_stats_v1[1];
} htt_peer_stats_t;
/* =========== ACTIVE PEER LIST ========== */
@@ -1244,56 +1253,56 @@ typedef struct {
htt_peer_details_tlv peer_details[1];
} htt_active_peer_details_list_t;
-
/* =========== MUMIMO HWQ stats =========== */
/* MU MIMO stats per hwQ */
typedef struct {
htt_tlv_hdr_t tlv_hdr;
- A_UINT32 mu_mimo_sch_posted;
- A_UINT32 mu_mimo_sch_failed;
- A_UINT32 mu_mimo_ppdu_posted;
+ A_UINT32 mu_mimo_sch_posted;
+ A_UINT32 mu_mimo_sch_failed;
+ A_UINT32 mu_mimo_ppdu_posted;
} htt_tx_hwq_mu_mimo_sch_stats_tlv;
typedef struct {
htt_tlv_hdr_t tlv_hdr;
- A_UINT32 mu_mimo_mpdus_queued_usr; /* Number of mpdus queued per user */
- A_UINT32 mu_mimo_mpdus_tried_usr; /* Number of mpdus actually transmitted by TxPCU per user */
- A_UINT32 mu_mimo_mpdus_failed_usr; /* Number of mpdus failed per user */
- A_UINT32 mu_mimo_mpdus_requeued_usr; /* Number of mpdus requeued per user */
- A_UINT32 mu_mimo_err_no_ba_usr; /* Number of times BA is not received for a user in MU PPDU */
- A_UINT32 mu_mimo_mpdu_underrun_usr;
- A_UINT32 mu_mimo_ampdu_underrun_usr;
+ A_UINT32 mu_mimo_mpdus_queued_usr; /* Number of mpdus queued per user */
+ A_UINT32 mu_mimo_mpdus_tried_usr; /* Number of mpdus actually transmitted by TxPCU per user */
+ A_UINT32 mu_mimo_mpdus_failed_usr; /* Number of mpdus failed per user */
+ A_UINT32 mu_mimo_mpdus_requeued_usr; /* Number of mpdus requeued per user */
+ A_UINT32 mu_mimo_err_no_ba_usr; /* Number of times BA is not received for a user in MU PPDU */
+ A_UINT32 mu_mimo_mpdu_underrun_usr;
+ A_UINT32 mu_mimo_ampdu_underrun_usr;
} htt_tx_hwq_mu_mimo_mpdu_stats_tlv;
-#define HTT_TX_HWQ_MU_MIMO_CMN_STATS_MAC_ID_M 0x000000ff
-#define HTT_TX_HWQ_MU_MIMO_CMN_STATS_MAC_ID_S 0
+#define HTT_TX_HWQ_MU_MIMO_CMN_STATS_MAC_ID_M 0x000000ff
+#define HTT_TX_HWQ_MU_MIMO_CMN_STATS_MAC_ID_S 0
-#define HTT_TX_HWQ_MU_MIMO_CMN_STATS_HWQ_ID_M 0x0000ff00
-#define HTT_TX_HWQ_MU_MIMO_CMN_STATS_HWQ_ID_S 8
+#define HTT_TX_HWQ_MU_MIMO_CMN_STATS_HWQ_ID_M 0x0000ff00
+#define HTT_TX_HWQ_MU_MIMO_CMN_STATS_HWQ_ID_S 8
#define HTT_TX_HWQ_MU_MIMO_CMN_STATS_MAC_ID_GET(_var) \
(((_var) & HTT_TX_HWQ_MU_MIMO_CMN_STATS_MAC_ID_M) >> \
- HTT_TX_HWQ_MU_MIMO_CMN_STATS_MAC_ID_S)
+ HTT_TX_HWQ_MU_MIMO_CMN_STATS_MAC_ID_S)
#define HTT_TX_HWQ_MU_MIMO_CMN_STATS_MAC_ID_SET(_var, _val) \
- do { \
- HTT_CHECK_SET_VAL(HTT_TX_HWQ_MU_MIMO_CMN_STATS_MAC_ID, _val); \
- ((_var) |= ((_val) << HTT_TX_HWQ_MU_MIMO_CMN_STATS_MAC_ID_S)); \
- } while (0)
+ do { \
+ HTT_CHECK_SET_VAL(HTT_TX_HWQ_MU_MIMO_CMN_STATS_MAC_ID, _val); \
+ ((_var) |= ((_val) << HTT_TX_HWQ_MU_MIMO_CMN_STATS_MAC_ID_S)); \
+ } while (0)
#define HTT_TX_HWQ_MU_MIMO_CMN_STATS_HWQ_ID_GET(_var) \
(((_var) & HTT_TX_HWQ_MU_MIMO_CMN_STATS_HWQ_ID_M) >> \
- HTT_TX_HWQ_MU_MIMO_CMN_STATS_HWQ_ID_S)
+ HTT_TX_HWQ_MU_MIMO_CMN_STATS_HWQ_ID_S)
#define HTT_TX_HWQ_MU_MIMO_CMN_STATS_HWQ_ID_SET(_var, _val) \
- do { \
- HTT_CHECK_SET_VAL(HTT_TX_HWQ_MU_MIMO_CMN_STATS_HWQ_ID, _val); \
- ((_var) |= ((_val) << HTT_TX_HWQ_MU_MIMO_CMN_STATS_HWQ_ID_S)); \
- } while (0)
+ do { \
+ HTT_CHECK_SET_VAL(HTT_TX_HWQ_MU_MIMO_CMN_STATS_HWQ_ID, _val); \
+ ((_var) |= ((_val) << HTT_TX_HWQ_MU_MIMO_CMN_STATS_HWQ_ID_S)); \
+ } while (0)
typedef struct {
htt_tlv_hdr_t tlv_hdr;
+
/* BIT [ 7 : 0] :- mac_id
* BIT [15 : 8] :- hwq_id
* BIT [31 : 16] :- reserved
@@ -1307,41 +1316,42 @@ typedef struct {
*/
typedef struct {
struct _hwq_mu_mimo_stats {
- htt_tx_hwq_mu_mimo_cmn_stats_tlv cmn_tlv;
- htt_tx_hwq_mu_mimo_sch_stats_tlv mu_mimo_sch_stats_tlv[1]; /* WAL_TX_STATS_MAX_GROUP_SIZE */
+ htt_tx_hwq_mu_mimo_cmn_stats_tlv cmn_tlv;
+ htt_tx_hwq_mu_mimo_sch_stats_tlv mu_mimo_sch_stats_tlv[1]; /* WAL_TX_STATS_MAX_GROUP_SIZE */
htt_tx_hwq_mu_mimo_mpdu_stats_tlv mu_mimo_mpdu_stats_tlv[1]; /* WAL_TX_STATS_TX_MAX_NUM_USERS */
} hwq[1];
} htt_tx_hwq_mu_mimo_stats_t;
/* == TX HWQ STATS == */
-#define HTT_TX_HWQ_STATS_CMN_MAC_ID_M 0x000000ff
-#define HTT_TX_HWQ_STATS_CMN_MAC_ID_S 0
+#define HTT_TX_HWQ_STATS_CMN_MAC_ID_M 0x000000ff
+#define HTT_TX_HWQ_STATS_CMN_MAC_ID_S 0
-#define HTT_TX_HWQ_STATS_CMN_HWQ_ID_M 0x0000ff00
-#define HTT_TX_HWQ_STATS_CMN_HWQ_ID_S 8
+#define HTT_TX_HWQ_STATS_CMN_HWQ_ID_M 0x0000ff00
+#define HTT_TX_HWQ_STATS_CMN_HWQ_ID_S 8
#define HTT_TX_HWQ_STATS_CMN_MAC_ID_GET(_var) \
(((_var) & HTT_TX_HWQ_STATS_CMN_MAC_ID_M) >> \
- HTT_TX_HWQ_STATS_CMN_MAC_ID_S)
+ HTT_TX_HWQ_STATS_CMN_MAC_ID_S)
#define HTT_TX_HWQ_STATS_CMN_MAC_ID_SET(_var, _val) \
- do { \
- HTT_CHECK_SET_VAL(HTT_TX_HWQ_STATS_CMN_MAC_ID, _val); \
- ((_var) |= ((_val) << HTT_TX_HWQ_STATS_CMN_MAC_ID_S)); \
- } while (0)
+ do { \
+ HTT_CHECK_SET_VAL(HTT_TX_HWQ_STATS_CMN_MAC_ID, _val); \
+ ((_var) |= ((_val) << HTT_TX_HWQ_STATS_CMN_MAC_ID_S)); \
+ } while (0)
#define HTT_TX_HWQ_STATS_CMN_HWQ_ID_GET(_var) \
(((_var) & HTT_TX_HWQ_STATS_CMN_HWQ_ID_M) >> \
- HTT_TX_HWQ_STATS_CMN_HWQ_ID_S)
+ HTT_TX_HWQ_STATS_CMN_HWQ_ID_S)
#define HTT_TX_HWQ_STATS_CMN_HWQ_ID_SET(_var, _val) \
- do { \
- HTT_CHECK_SET_VAL(HTT_TX_HWQ_STATS_CMN_HWQ_ID, _val); \
- ((_var) |= ((_val) << HTT_TX_HWQ_STATS_CMN_HWQ_ID_S)); \
- } while (0)
+ do { \
+ HTT_CHECK_SET_VAL(HTT_TX_HWQ_STATS_CMN_HWQ_ID, _val); \
+ ((_var) |= ((_val) << HTT_TX_HWQ_STATS_CMN_HWQ_ID_S)); \
+ } while (0)
typedef struct {
htt_tlv_hdr_t tlv_hdr;
+
/* BIT [ 7 : 0] :- mac_id
* BIT [15 : 8] :- hwq_id
* BIT [31 : 16] :- reserved
@@ -1349,39 +1359,39 @@ typedef struct {
A_UINT32 mac_id__hwq_id__word;
/* PPDU level stats */
- A_UINT32 xretry; /* Number of times ack is failed for the PPDU scheduled on this txQ */
- A_UINT32 underrun_cnt; /* Number of times sched cmd status reported mpdu underrun */
- A_UINT32 flush_cnt; /* Number of times sched cmd is flushed */
- A_UINT32 filt_cnt; /* Number of times sched cmd is filtered */
- A_UINT32 null_mpdu_bmap; /* Number of times HWSCH uploaded null mpdu bitmap */
- A_UINT32 user_ack_failure; /* Number of time user ack or ba tlv is not seen on FES ring where it is expected to be */
- A_UINT32 ack_tlv_proc; /* Number of times TQM processed ack tlv received from HWSCH */
- A_UINT32 sched_id_proc; /* Cache latest processed scheduler ID received from ack ba tlv */
- A_UINT32 null_mpdu_tx_count; /* Number of times TxPCU reported mpdus transmitted for a user is zero */
- A_UINT32 mpdu_bmap_not_recvd; /* Number of times SW did not see any mpdu info bitmap tlv on FES status ring */
+ A_UINT32 xretry; /* Number of times ack is failed for the PPDU scheduled on this txQ */
+ A_UINT32 underrun_cnt; /* Number of times sched cmd status reported mpdu underrun */
+ A_UINT32 flush_cnt; /* Number of times sched cmd is flushed */
+ A_UINT32 filt_cnt; /* Number of times sched cmd is filtered */
+ A_UINT32 null_mpdu_bmap; /* Number of times HWSCH uploaded null mpdu bitmap */
+ A_UINT32 user_ack_failure; /* Number of time user ack or ba tlv is not seen on FES ring where it is expected to be */
+ A_UINT32 ack_tlv_proc; /* Number of times TQM processed ack tlv received from HWSCH */
+ A_UINT32 sched_id_proc; /* Cache latest processed scheduler ID received from ack ba tlv */
+ A_UINT32 null_mpdu_tx_count; /* Number of times TxPCU reported mpdus transmitted for a user is zero */
+ A_UINT32 mpdu_bmap_not_recvd; /* Number of times SW did not see any mpdu info bitmap tlv on FES status ring */
/* Selfgen stats per hwQ */
- A_UINT32 num_bar; /* Number of SU/MU BAR frames posted to hwQ */
- A_UINT32 rts; /* Number of RTS frames posted to hwQ */
- A_UINT32 cts2self; /* Number of cts2self frames posted to hwQ */
- A_UINT32 qos_null; /* Number of qos null frames posted to hwQ */
+ A_UINT32 num_bar; /* Number of SU/MU BAR frames posted to hwQ */
+ A_UINT32 rts; /* Number of RTS frames posted to hwQ */
+ A_UINT32 cts2self; /* Number of cts2self frames posted to hwQ */
+ A_UINT32 qos_null; /* Number of qos null frames posted to hwQ */
/* MPDU level stats */
- A_UINT32 mpdu_tried_cnt; /* mpdus tried Tx by HWSCH/TQM */
- A_UINT32 mpdu_queued_cnt; /* mpdus queued to HWSCH */
- A_UINT32 mpdu_ack_fail_cnt; /* mpdus tried but ack was not received */
- A_UINT32 mpdu_filt_cnt; /* This will include sched cmd flush and time based discard */
- A_UINT32 false_mpdu_ack_count; /* Number of MPDUs for which ACK was sucessful but no Tx happened */
+ A_UINT32 mpdu_tried_cnt; /* mpdus tried Tx by HWSCH/TQM */
+ A_UINT32 mpdu_queued_cnt; /* mpdus queued to HWSCH */
+ A_UINT32 mpdu_ack_fail_cnt; /* mpdus tried but ack was not received */
+ A_UINT32 mpdu_filt_cnt; /* This will include sched cmd flush and time based discard */
+ A_UINT32 false_mpdu_ack_count; /* Number of MPDUs for which ACK was sucessful but no Tx happened */
- A_UINT32 txq_timeout; /* Number of times txq timeout happened */
+ A_UINT32 txq_timeout; /* Number of times txq timeout happened */
} htt_tx_hwq_stats_cmn_tlv;
-#define HTT_TX_HWQ_DIFS_LATENCY_STATS_TLV_SZ(_num_elems) ( sizeof(A_UINT32) + /* hist_intvl */ \
+#define HTT_TX_HWQ_DIFS_LATENCY_STATS_TLV_SZ(_num_elems) (sizeof(A_UINT32) + /* hist_intvl */ \
(sizeof(A_UINT32) * (_num_elems)))
/* NOTE: Variable length TLV, use length spec to infer array size */
typedef struct {
htt_tlv_hdr_t tlv_hdr;
- A_UINT32 hist_intvl;
+ A_UINT32 hist_intvl;
/* histogram of ppdu post to hwsch - > cmd status received */
A_UINT32 difs_latency_hist[1]; /* HTT_TX_HWQ_MAX_DIFS_LATENCY_BINS */
} htt_tx_hwq_difs_latency_stats_tlv_v;
@@ -1429,7 +1439,7 @@ typedef struct {
* */
typedef struct {
htt_tlv_hdr_t tlv_hdr;
- A_UINT32 hist_bin_size;
+ A_UINT32 hist_bin_size;
/* Histogram of number of mpdus on tried mpdu */
A_UINT32 tried_mpdu_cnt_hist[1]; /* HTT_TX_HWQ_TRIED_MPDU_CNT_HIST */
} htt_tx_hwq_tried_mpdu_cnt_hist_tlv_v;
@@ -1473,30 +1483,30 @@ typedef struct {
* HWQ distinctly.
*/
typedef struct _htt_tx_hwq_stats {
- htt_stats_string_tlv hwq_str_tlv;
- htt_tx_hwq_stats_cmn_tlv cmn_tlv;
- htt_tx_hwq_difs_latency_stats_tlv_v difs_tlv;
- htt_tx_hwq_cmd_result_stats_tlv_v cmd_result_tlv;
- htt_tx_hwq_cmd_stall_stats_tlv_v cmd_stall_tlv;
- htt_tx_hwq_fes_result_stats_tlv_v fes_stats_tlv;
+ htt_stats_string_tlv hwq_str_tlv;
+ htt_tx_hwq_stats_cmn_tlv cmn_tlv;
+ htt_tx_hwq_difs_latency_stats_tlv_v difs_tlv;
+ htt_tx_hwq_cmd_result_stats_tlv_v cmd_result_tlv;
+ htt_tx_hwq_cmd_stall_stats_tlv_v cmd_stall_tlv;
+ htt_tx_hwq_fes_result_stats_tlv_v fes_stats_tlv;
htt_tx_hwq_tried_mpdu_cnt_hist_tlv_v tried_mpdu_tlv;
- htt_tx_hwq_txop_used_cnt_hist_tlv_v txop_used_tlv;
+ htt_tx_hwq_txop_used_cnt_hist_tlv_v txop_used_tlv;
} htt_tx_hwq_stats_t;
/* == TX SELFGEN STATS == */
-#define HTT_TX_SELFGEN_CMN_STATS_MAC_ID_M 0x000000ff
-#define HTT_TX_SELFGEN_CMN_STATS_MAC_ID_S 0
+#define HTT_TX_SELFGEN_CMN_STATS_MAC_ID_M 0x000000ff
+#define HTT_TX_SELFGEN_CMN_STATS_MAC_ID_S 0
#define HTT_TX_SELFGEN_CMN_STATS_MAC_ID_GET(_var) \
(((_var) & HTT_TX_SELFGEN_CMN_STATS_MAC_ID_M) >> \
- HTT_TX_SELFGEN_CMN_STATS_MAC_ID_S)
+ HTT_TX_SELFGEN_CMN_STATS_MAC_ID_S)
#define HTT_TX_SELFGEN_CMN_STATS_MAC_ID_SET(_var, _val) \
- do { \
- HTT_CHECK_SET_VAL(HTT_TX_SELFGEN_CMN_STATS_MAC_ID, _val); \
- ((_var) |= ((_val) << HTT_TX_SELFGEN_CMN_STATS_MAC_ID_S)); \
- } while (0)
+ do { \
+ HTT_CHECK_SET_VAL(HTT_TX_SELFGEN_CMN_STATS_MAC_ID, _val); \
+ ((_var) |= ((_val) << HTT_TX_SELFGEN_CMN_STATS_MAC_ID_S)); \
+ } while (0)
typedef struct {
htt_tlv_hdr_t tlv_hdr;
@@ -1548,6 +1558,7 @@ typedef struct {
A_UINT32 ax_bsr_trigger;
A_UINT32 ax_mu_bar_trigger;
A_UINT32 ax_mu_rts_trigger;
+ A_UINT32 ax_ulmumimo_trigger;
} htt_tx_selfgen_ax_stats_tlv;
typedef struct {
@@ -1580,6 +1591,7 @@ typedef struct {
A_UINT32 ax_bsr_trigger_err;
A_UINT32 ax_mu_bar_trigger_err;
A_UINT32 ax_mu_rts_trigger_err;
+ A_UINT32 ax_ulmumimo_trigger_err;
} htt_tx_selfgen_ax_err_stats_tlv;
/* STATS_TYPE : HTT_DBG_EXT_STATS_TX_SELFGEN_INFO
@@ -1610,7 +1622,7 @@ typedef struct {
#define HTT_TX_PDEV_STATS_NUM_AC_MUMIMO_USER_STATS 4
#define HTT_TX_PDEV_STATS_NUM_AX_MUMIMO_USER_STATS 8
-#define HTT_TX_PDEV_STATS_NUM_OFDMA_USER_STATS 74
+#define HTT_TX_PDEV_STATS_NUM_OFDMA_USER_STATS 74
typedef struct {
htt_tlv_hdr_t tlv_hdr;
@@ -1662,8 +1674,8 @@ typedef struct {
A_UINT32 ax_ofdma_ampdu_underrun_usr;
} htt_tx_pdev_mu_mimo_mpdu_stats_tlv;
-#define HTT_STATS_TX_SCHED_MODE_MU_MIMO_AC 1 /* SCHED_TX_MODE_MU_MIMO_AC */
-#define HTT_STATS_TX_SCHED_MODE_MU_MIMO_AX 2 /* SCHED_TX_MODE_MU_MIMO_AX */
+#define HTT_STATS_TX_SCHED_MODE_MU_MIMO_AC 1 /* SCHED_TX_MODE_MU_MIMO_AC */
+#define HTT_STATS_TX_SCHED_MODE_MU_MIMO_AX 2 /* SCHED_TX_MODE_MU_MIMO_AX */
#define HTT_STATS_TX_SCHED_MODE_MU_OFDMA_AX 3 /* SCHED_TX_MODE_MU_OFDMA_AX */
typedef struct {
@@ -1764,31 +1776,31 @@ typedef struct {
A_UINT32 sched_ineligibility[1]; /* indexed by htt_sched_txq_sched_ineligibility_tlv_enum */
} htt_sched_txq_sched_ineligibility_tlv_v;
-#define HTT_TX_PDEV_STATS_SCHED_PER_TXQ_MAC_ID_M 0x000000ff
-#define HTT_TX_PDEV_STATS_SCHED_PER_TXQ_MAC_ID_S 0
+#define HTT_TX_PDEV_STATS_SCHED_PER_TXQ_MAC_ID_M 0x000000ff
+#define HTT_TX_PDEV_STATS_SCHED_PER_TXQ_MAC_ID_S 0
-#define HTT_TX_PDEV_STATS_SCHED_PER_TXQ_TXQUEUE_ID_M 0x0000ff00
-#define HTT_TX_PDEV_STATS_SCHED_PER_TXQ_TXQUEUE_ID_S 8
+#define HTT_TX_PDEV_STATS_SCHED_PER_TXQ_TXQUEUE_ID_M 0x0000ff00
+#define HTT_TX_PDEV_STATS_SCHED_PER_TXQ_TXQUEUE_ID_S 8
#define HTT_TX_PDEV_STATS_SCHED_PER_TXQ_MAC_ID_GET(_var) \
(((_var) & HTT_TX_PDEV_STATS_SCHED_PER_TXQ_MAC_ID_M) >> \
- HTT_TX_PDEV_STATS_SCHED_PER_TXQ_MAC_ID_S)
+ HTT_TX_PDEV_STATS_SCHED_PER_TXQ_MAC_ID_S)
#define HTT_TX_PDEV_STATS_SCHED_PER_TXQ_MAC_ID_SET(_var, _val) \
- do { \
- HTT_CHECK_SET_VAL(HTT_TX_PDEV_STATS_SCHED_PER_TXQ_MAC_ID, _val); \
- ((_var) |= ((_val) << HTT_TX_PDEV_STATS_SCHED_PER_TXQ_MAC_ID_S)); \
- } while (0)
+ do { \
+ HTT_CHECK_SET_VAL(HTT_TX_PDEV_STATS_SCHED_PER_TXQ_MAC_ID, _val); \
+ ((_var) |= ((_val) << HTT_TX_PDEV_STATS_SCHED_PER_TXQ_MAC_ID_S)); \
+ } while (0)
#define HTT_TX_PDEV_STATS_SCHED_PER_TXQ_TXQUEUE_ID_GET(_var) \
(((_var) & HTT_TX_PDEV_STATS_SCHED_PER_TXQ_TXQUEUE_ID_M) >> \
- HTT_TX_PDEV_STATS_SCHED_PER_TXQ_TXQUEUE_ID_S)
+ HTT_TX_PDEV_STATS_SCHED_PER_TXQ_TXQUEUE_ID_S)
#define HTT_TX_PDEV_STATS_SCHED_PER_TXQ_TXQUEUE_ID_SET(_var, _val) \
- do { \
- HTT_CHECK_SET_VAL(HTT_TX_PDEV_STATS_SCHED_PER_TXQ_TXQUEUE_ID, _val); \
- ((_var) |= ((_val) << HTT_TX_PDEV_STATS_SCHED_PER_TXQ_TXQUEUE_ID_S)); \
- } while (0)
+ do { \
+ HTT_CHECK_SET_VAL(HTT_TX_PDEV_STATS_SCHED_PER_TXQ_TXQUEUE_ID, _val); \
+ ((_var) |= ((_val) << HTT_TX_PDEV_STATS_SCHED_PER_TXQ_TXQUEUE_ID_S)); \
+ } while (0)
typedef struct {
htt_tlv_hdr_t tlv_hdr;
@@ -1840,21 +1852,22 @@ typedef struct {
A_UINT32 dur_based_sendn_term;
} htt_tx_pdev_stats_sched_per_txq_tlv;
-#define HTT_STATS_TX_SCHED_CMN_MAC_ID_M 0x000000ff
-#define HTT_STATS_TX_SCHED_CMN_MAC_ID_S 0
+#define HTT_STATS_TX_SCHED_CMN_MAC_ID_M 0x000000ff
+#define HTT_STATS_TX_SCHED_CMN_MAC_ID_S 0
#define HTT_STATS_TX_SCHED_CMN_MAC_ID_GET(_var) \
(((_var) & HTT_STATS_TX_SCHED_CMN_MAC_ID_M) >> \
- HTT_STATS_TX_SCHED_CMN_MAC_ID_S)
+ HTT_STATS_TX_SCHED_CMN_MAC_ID_S)
#define HTT_STATS_TX_SCHED_CMN_MAC_ID_SET(_var, _val) \
- do { \
- HTT_CHECK_SET_VAL(HTT_STATS_TX_SCHED_CMN_MAC_ID, _val); \
- ((_var) |= ((_val) << HTT_STATS_TX_SCHED_CMN_MAC_ID_S)); \
- } while (0)
+ do { \
+ HTT_CHECK_SET_VAL(HTT_STATS_TX_SCHED_CMN_MAC_ID, _val); \
+ ((_var) |= ((_val) << HTT_STATS_TX_SCHED_CMN_MAC_ID_S)); \
+ } while (0)
typedef struct {
htt_tlv_hdr_t tlv_hdr;
+
/* BIT [ 7 : 0] :- mac_id
* BIT [31 : 8] :- reserved
*/
@@ -1879,19 +1892,18 @@ typedef struct {
typedef struct {
htt_stats_tx_sched_cmn_tlv cmn_tlv;
struct _txq_tx_sched_stats {
- htt_tx_pdev_stats_sched_per_txq_tlv txq_tlv;
- htt_sched_txq_cmd_posted_tlv_v cmd_posted_tlv;
- htt_sched_txq_cmd_reaped_tlv_v cmd_reaped_tlv;
- htt_sched_txq_sched_order_su_tlv_v sched_order_su_tlv;
+ htt_tx_pdev_stats_sched_per_txq_tlv txq_tlv;
+ htt_sched_txq_cmd_posted_tlv_v cmd_posted_tlv;
+ htt_sched_txq_cmd_reaped_tlv_v cmd_reaped_tlv;
+ htt_sched_txq_sched_order_su_tlv_v sched_order_su_tlv;
htt_sched_txq_sched_ineligibility_tlv_v sched_ineligibility_tlv;
} txq[1];
} htt_stats_tx_sched_t;
-
/* == TQM STATS == */
-#define HTT_TX_TQM_MAX_GEN_MPDU_END_REASON 16
-#define HTT_TX_TQM_MAX_LIST_MPDU_END_REASON 16
+#define HTT_TX_TQM_MAX_GEN_MPDU_END_REASON 16
+#define HTT_TX_TQM_MAX_LIST_MPDU_END_REASON 16
#define HTT_TX_TQM_MAX_LIST_MPDU_CNT_HISTOGRAM_BINS 16
#define HTT_TX_TQM_GEN_MPDU_STATS_TLV_SZ(_num_elems) (sizeof(A_UINT32) * (_num_elems))
@@ -1899,7 +1911,7 @@ typedef struct {
/* NOTE: Variable length TLV, use length spec to infer array size */
typedef struct {
htt_tlv_hdr_t tlv_hdr;
- A_UINT32 gen_mpdu_end_reason[1]; /* HTT_TX_TQM_MAX_GEN_MPDU_END_REASON */
+ A_UINT32 gen_mpdu_end_reason[1]; /* HTT_TX_TQM_MAX_GEN_MPDU_END_REASON */
} htt_tx_tqm_gen_mpdu_stats_tlv_v;
#define HTT_TX_TQM_LIST_MPDU_STATS_TLV_SZ(_num_elems) (sizeof(A_UINT32) * (_num_elems))
@@ -1907,7 +1919,7 @@ typedef struct {
/* NOTE: Variable length TLV, use length spec to infer array size */
typedef struct {
htt_tlv_hdr_t tlv_hdr;
- A_UINT32 list_mpdu_end_reason[1]; /* HTT_TX_TQM_MAX_LIST_MPDU_END_REASON */
+ A_UINT32 list_mpdu_end_reason[1]; /* HTT_TX_TQM_MAX_LIST_MPDU_END_REASON */
} htt_tx_tqm_list_mpdu_stats_tlv_v;
#define HTT_TX_TQM_LIST_MPDU_CNT_TLV_SZ(_num_elems) (sizeof(A_UINT32) * (_num_elems))
@@ -1915,38 +1927,38 @@ typedef struct {
/* NOTE: Variable length TLV, use length spec to infer array size */
typedef struct {
htt_tlv_hdr_t tlv_hdr;
- A_UINT32 list_mpdu_cnt_hist[1]; /* HTT_TX_TQM_MAX_LIST_MPDU_CNT_HISTOGRAM_BINS */
+ A_UINT32 list_mpdu_cnt_hist[1]; /* HTT_TX_TQM_MAX_LIST_MPDU_CNT_HISTOGRAM_BINS */
} htt_tx_tqm_list_mpdu_cnt_tlv_v;
typedef struct {
htt_tlv_hdr_t tlv_hdr;
- A_UINT32 msdu_count;
- A_UINT32 mpdu_count;
- A_UINT32 remove_msdu;
- A_UINT32 remove_mpdu;
- A_UINT32 remove_msdu_ttl;
- A_UINT32 send_bar;
- A_UINT32 bar_sync;
- A_UINT32 notify_mpdu;
- A_UINT32 sync_cmd;
- A_UINT32 write_cmd;
- A_UINT32 hwsch_trigger;
- A_UINT32 ack_tlv_proc;
- A_UINT32 gen_mpdu_cmd;
- A_UINT32 gen_list_cmd;
- A_UINT32 remove_mpdu_cmd;
- A_UINT32 remove_mpdu_tried_cmd;
- A_UINT32 mpdu_queue_stats_cmd;
- A_UINT32 mpdu_head_info_cmd;
- A_UINT32 msdu_flow_stats_cmd;
- A_UINT32 remove_msdu_cmd;
- A_UINT32 remove_msdu_ttl_cmd;
- A_UINT32 flush_cache_cmd;
- A_UINT32 update_mpduq_cmd;
- A_UINT32 enqueue;
- A_UINT32 enqueue_notify;
- A_UINT32 notify_mpdu_at_head;
- A_UINT32 notify_mpdu_state_valid;
+ A_UINT32 msdu_count;
+ A_UINT32 mpdu_count;
+ A_UINT32 remove_msdu;
+ A_UINT32 remove_mpdu;
+ A_UINT32 remove_msdu_ttl;
+ A_UINT32 send_bar;
+ A_UINT32 bar_sync;
+ A_UINT32 notify_mpdu;
+ A_UINT32 sync_cmd;
+ A_UINT32 write_cmd;
+ A_UINT32 hwsch_trigger;
+ A_UINT32 ack_tlv_proc;
+ A_UINT32 gen_mpdu_cmd;
+ A_UINT32 gen_list_cmd;
+ A_UINT32 remove_mpdu_cmd;
+ A_UINT32 remove_mpdu_tried_cmd;
+ A_UINT32 mpdu_queue_stats_cmd;
+ A_UINT32 mpdu_head_info_cmd;
+ A_UINT32 msdu_flow_stats_cmd;
+ A_UINT32 remove_msdu_cmd;
+ A_UINT32 remove_msdu_ttl_cmd;
+ A_UINT32 flush_cache_cmd;
+ A_UINT32 update_mpduq_cmd;
+ A_UINT32 enqueue;
+ A_UINT32 enqueue_notify;
+ A_UINT32 notify_mpdu_at_head;
+ A_UINT32 notify_mpdu_state_valid;
/*
* On receiving TQM_FLOW_NOT_EMPTY_STATUS from TQM, (on MSDUs being enqueued
* the flow is non empty), if the number of MSDUs is greater than the threshold,
@@ -1965,18 +1977,18 @@ typedef struct {
A_UINT32 sched_nonudp_notify2;
} htt_tx_tqm_pdev_stats_tlv_v;
-#define HTT_TX_TQM_CMN_STATS_MAC_ID_M 0x000000ff
-#define HTT_TX_TQM_CMN_STATS_MAC_ID_S 0
+#define HTT_TX_TQM_CMN_STATS_MAC_ID_M 0x000000ff
+#define HTT_TX_TQM_CMN_STATS_MAC_ID_S 0
#define HTT_TX_TQM_CMN_STATS_MAC_ID_GET(_var) \
(((_var) & HTT_TX_TQM_CMN_STATS_MAC_ID_M) >> \
- HTT_TX_TQM_CMN_STATS_MAC_ID_S)
+ HTT_TX_TQM_CMN_STATS_MAC_ID_S)
#define HTT_TX_TQM_CMN_STATS_MAC_ID_SET(_var, _val) \
- do { \
- HTT_CHECK_SET_VAL(HTT_TX_TQM_CMN_STATS_MAC_ID, _val); \
- ((_var) |= ((_val) << HTT_TX_TQM_CMN_STATS_MAC_ID_S)); \
- } while (0)
+ do { \
+ HTT_CHECK_SET_VAL(HTT_TX_TQM_CMN_STATS_MAC_ID, _val); \
+ ((_var) |= ((_val) << HTT_TX_TQM_CMN_STATS_MAC_ID_S)); \
+ } while (0)
typedef struct {
htt_tlv_hdr_t tlv_hdr;
@@ -2018,40 +2030,40 @@ typedef struct {
* Instead, use the constituent TLV structures to fill/parse.
*/
typedef struct {
- htt_tx_tqm_cmn_stats_tlv cmn_tlv;
- htt_tx_tqm_error_stats_tlv err_tlv;
- htt_tx_tqm_gen_mpdu_stats_tlv_v gen_mpdu_stats_tlv;
+ htt_tx_tqm_cmn_stats_tlv cmn_tlv;
+ htt_tx_tqm_error_stats_tlv err_tlv;
+ htt_tx_tqm_gen_mpdu_stats_tlv_v gen_mpdu_stats_tlv;
htt_tx_tqm_list_mpdu_stats_tlv_v list_mpdu_stats_tlv;
- htt_tx_tqm_list_mpdu_cnt_tlv_v list_mpdu_cnt_tlv;
- htt_tx_tqm_pdev_stats_tlv_v tqm_pdev_stats_tlv;
+ htt_tx_tqm_list_mpdu_cnt_tlv_v list_mpdu_cnt_tlv;
+ htt_tx_tqm_pdev_stats_tlv_v tqm_pdev_stats_tlv;
} htt_tx_tqm_pdev_stats_t;
/* == TQM CMDQ stats == */
-#define HTT_TX_TQM_CMDQ_STATUS_MAC_ID_M 0x000000ff
-#define HTT_TX_TQM_CMDQ_STATUS_MAC_ID_S 0
+#define HTT_TX_TQM_CMDQ_STATUS_MAC_ID_M 0x000000ff
+#define HTT_TX_TQM_CMDQ_STATUS_MAC_ID_S 0
-#define HTT_TX_TQM_CMDQ_STATUS_CMDQ_ID_M 0x0000ff00
-#define HTT_TX_TQM_CMDQ_STATUS_CMDQ_ID_S 8
+#define HTT_TX_TQM_CMDQ_STATUS_CMDQ_ID_M 0x0000ff00
+#define HTT_TX_TQM_CMDQ_STATUS_CMDQ_ID_S 8
#define HTT_TX_TQM_CMDQ_STATUS_MAC_ID_GET(_var) \
(((_var) & HTT_TX_TQM_CMDQ_STATUS_MAC_ID_M) >> \
- HTT_TX_TQM_CMDQ_STATUS_MAC_ID_S)
+ HTT_TX_TQM_CMDQ_STATUS_MAC_ID_S)
#define HTT_TX_TQM_CMDQ_STATUS_MAC_ID_SET(_var, _val) \
- do { \
- HTT_CHECK_SET_VAL(HTT_TX_TQM_CMDQ_STATUS_MAC_ID, _val); \
- ((_var) |= ((_val) << HTT_TX_TQM_CMDQ_STATUS_MAC_ID_S)); \
- } while (0)
+ do { \
+ HTT_CHECK_SET_VAL(HTT_TX_TQM_CMDQ_STATUS_MAC_ID, _val); \
+ ((_var) |= ((_val) << HTT_TX_TQM_CMDQ_STATUS_MAC_ID_S)); \
+ } while (0)
#define HTT_TX_TQM_CMDQ_STATUS_CMDQ_ID_GET(_var) \
(((_var) & HTT_TX_TQM_CMDQ_STATUS_CMDQ_ID_M) >> \
- HTT_TX_TQM_CMDQ_STATUS_CMDQ_ID_S)
+ HTT_TX_TQM_CMDQ_STATUS_CMDQ_ID_S)
#define HTT_TX_TQM_CMDQ_STATUS_CMDQ_ID_SET(_var, _val) \
- do { \
- HTT_CHECK_SET_VAL(HTT_TX_TQM_CMDQ_STATUS_CMDQ_ID, _val); \
- ((_var) |= ((_val) << HTT_TX_TQM_CMDQ_STATUS_CMDQ_ID_S)); \
- } while (0)
+ do { \
+ HTT_CHECK_SET_VAL(HTT_TX_TQM_CMDQ_STATUS_CMDQ_ID, _val); \
+ ((_var) |= ((_val) << HTT_TX_TQM_CMDQ_STATUS_CMDQ_ID_S)); \
+ } while (0)
typedef struct {
htt_tlv_hdr_t tlv_hdr;
@@ -2085,7 +2097,7 @@ typedef struct {
*/
typedef struct {
struct _cmdq_stats {
- htt_stats_string_tlv cmdq_str_tlv;
+ htt_stats_string_tlv cmdq_str_tlv;
htt_tx_tqm_cmdq_status_tlv status_tlv;
} q[1];
} htt_tx_tqm_cmdq_stats_t;
@@ -2095,120 +2107,120 @@ typedef struct {
/* Structures for tx de stats */
typedef struct {
htt_tlv_hdr_t tlv_hdr;
- A_UINT32 m1_packets;
- A_UINT32 m2_packets;
- A_UINT32 m3_packets;
- A_UINT32 m4_packets;
- A_UINT32 g1_packets;
- A_UINT32 g2_packets;
+ A_UINT32 m1_packets;
+ A_UINT32 m2_packets;
+ A_UINT32 m3_packets;
+ A_UINT32 m4_packets;
+ A_UINT32 g1_packets;
+ A_UINT32 g2_packets;
} htt_tx_de_eapol_packets_stats_tlv;
typedef struct {
htt_tlv_hdr_t tlv_hdr;
- A_UINT32 ap_bss_peer_not_found;
- A_UINT32 ap_bcast_mcast_no_peer;
- A_UINT32 sta_delete_in_progress;
- A_UINT32 ibss_no_bss_peer;
- A_UINT32 invaild_vdev_type;
- A_UINT32 invalid_ast_peer_entry;
- A_UINT32 peer_entry_invalid;
- A_UINT32 ethertype_not_ip;
- A_UINT32 eapol_lookup_failed;
- A_UINT32 qpeer_not_allow_data;
- A_UINT32 fse_tid_override;
- A_UINT32 ipv6_jumbogram_zero_length;
- A_UINT32 qos_to_non_qos_in_prog;
+ A_UINT32 ap_bss_peer_not_found;
+ A_UINT32 ap_bcast_mcast_no_peer;
+ A_UINT32 sta_delete_in_progress;
+ A_UINT32 ibss_no_bss_peer;
+ A_UINT32 invaild_vdev_type;
+ A_UINT32 invalid_ast_peer_entry;
+ A_UINT32 peer_entry_invalid;
+ A_UINT32 ethertype_not_ip;
+ A_UINT32 eapol_lookup_failed;
+ A_UINT32 qpeer_not_allow_data;
+ A_UINT32 fse_tid_override;
+ A_UINT32 ipv6_jumbogram_zero_length;
+ A_UINT32 qos_to_non_qos_in_prog;
} htt_tx_de_classify_failed_stats_tlv;
typedef struct {
htt_tlv_hdr_t tlv_hdr;
- A_UINT32 arp_packets;
- A_UINT32 igmp_packets;
- A_UINT32 dhcp_packets;
- A_UINT32 host_inspected;
- A_UINT32 htt_included;
- A_UINT32 htt_valid_mcs;
- A_UINT32 htt_valid_nss;
- A_UINT32 htt_valid_preamble_type;
- A_UINT32 htt_valid_chainmask;
- A_UINT32 htt_valid_guard_interval;
- A_UINT32 htt_valid_retries;
- A_UINT32 htt_valid_bw_info;
- A_UINT32 htt_valid_power;
- A_UINT32 htt_valid_key_flags;
- A_UINT32 htt_valid_no_encryption;
- A_UINT32 fse_entry_count;
- A_UINT32 fse_priority_be;
- A_UINT32 fse_priority_high;
- A_UINT32 fse_priority_low;
- A_UINT32 fse_traffic_ptrn_be;
- A_UINT32 fse_traffic_ptrn_over_sub;
- A_UINT32 fse_traffic_ptrn_bursty;
- A_UINT32 fse_traffic_ptrn_interactive;
- A_UINT32 fse_traffic_ptrn_periodic;
- A_UINT32 fse_hwqueue_alloc;
- A_UINT32 fse_hwqueue_created;
- A_UINT32 fse_hwqueue_send_to_host;
- A_UINT32 mcast_entry;
- A_UINT32 bcast_entry;
- A_UINT32 htt_update_peer_cache;
- A_UINT32 htt_learning_frame;
- A_UINT32 fse_invalid_peer;
+ A_UINT32 arp_packets;
+ A_UINT32 igmp_packets;
+ A_UINT32 dhcp_packets;
+ A_UINT32 host_inspected;
+ A_UINT32 htt_included;
+ A_UINT32 htt_valid_mcs;
+ A_UINT32 htt_valid_nss;
+ A_UINT32 htt_valid_preamble_type;
+ A_UINT32 htt_valid_chainmask;
+ A_UINT32 htt_valid_guard_interval;
+ A_UINT32 htt_valid_retries;
+ A_UINT32 htt_valid_bw_info;
+ A_UINT32 htt_valid_power;
+ A_UINT32 htt_valid_key_flags;
+ A_UINT32 htt_valid_no_encryption;
+ A_UINT32 fse_entry_count;
+ A_UINT32 fse_priority_be;
+ A_UINT32 fse_priority_high;
+ A_UINT32 fse_priority_low;
+ A_UINT32 fse_traffic_ptrn_be;
+ A_UINT32 fse_traffic_ptrn_over_sub;
+ A_UINT32 fse_traffic_ptrn_bursty;
+ A_UINT32 fse_traffic_ptrn_interactive;
+ A_UINT32 fse_traffic_ptrn_periodic;
+ A_UINT32 fse_hwqueue_alloc;
+ A_UINT32 fse_hwqueue_created;
+ A_UINT32 fse_hwqueue_send_to_host;
+ A_UINT32 mcast_entry;
+ A_UINT32 bcast_entry;
+ A_UINT32 htt_update_peer_cache;
+ A_UINT32 htt_learning_frame;
+ A_UINT32 fse_invalid_peer;
/*
* mec_notify is HTT TX WBM multicast echo check notification
* from firmware to host. FW sends SA addresses to host for all
* multicast/broadcast packets received on STA side.
*/
- A_UINT32 mec_notify;
+ A_UINT32 mec_notify;
} htt_tx_de_classify_stats_tlv;
typedef struct {
htt_tlv_hdr_t tlv_hdr;
- A_UINT32 eok;
- A_UINT32 classify_done;
- A_UINT32 lookup_failed;
- A_UINT32 send_host_dhcp;
- A_UINT32 send_host_mcast;
- A_UINT32 send_host_unknown_dest;
- A_UINT32 send_host;
- A_UINT32 status_invalid;
+ A_UINT32 eok;
+ A_UINT32 classify_done;
+ A_UINT32 lookup_failed;
+ A_UINT32 send_host_dhcp;
+ A_UINT32 send_host_mcast;
+ A_UINT32 send_host_unknown_dest;
+ A_UINT32 send_host;
+ A_UINT32 status_invalid;
} htt_tx_de_classify_status_stats_tlv;
typedef struct {
htt_tlv_hdr_t tlv_hdr;
- A_UINT32 enqueued_pkts;
- A_UINT32 to_tqm;
- A_UINT32 to_tqm_bypass;
+ A_UINT32 enqueued_pkts;
+ A_UINT32 to_tqm;
+ A_UINT32 to_tqm_bypass;
} htt_tx_de_enqueue_packets_stats_tlv;
typedef struct {
htt_tlv_hdr_t tlv_hdr;
- A_UINT32 discarded_pkts;
- A_UINT32 local_frames;
- A_UINT32 is_ext_msdu;
+ A_UINT32 discarded_pkts;
+ A_UINT32 local_frames;
+ A_UINT32 is_ext_msdu;
} htt_tx_de_enqueue_discard_stats_tlv;
typedef struct {
htt_tlv_hdr_t tlv_hdr;
- A_UINT32 tcl_dummy_frame;
- A_UINT32 tqm_dummy_frame;
- A_UINT32 tqm_notify_frame;
- A_UINT32 fw2wbm_enq;
- A_UINT32 tqm_bypass_frame;
+ A_UINT32 tcl_dummy_frame;
+ A_UINT32 tqm_dummy_frame;
+ A_UINT32 tqm_notify_frame;
+ A_UINT32 fw2wbm_enq;
+ A_UINT32 tqm_bypass_frame;
} htt_tx_de_compl_stats_tlv;
-#define HTT_TX_DE_CMN_STATS_MAC_ID_M 0x000000ff
-#define HTT_TX_DE_CMN_STATS_MAC_ID_S 0
+#define HTT_TX_DE_CMN_STATS_MAC_ID_M 0x000000ff
+#define HTT_TX_DE_CMN_STATS_MAC_ID_S 0
#define HTT_TX_DE_CMN_STATS_MAC_ID_GET(_var) \
(((_var) & HTT_TX_DE_CMN_STATS_MAC_ID_M) >> \
- HTT_TX_DE_CMN_STATS_MAC_ID_S)
+ HTT_TX_DE_CMN_STATS_MAC_ID_S)
#define HTT_TX_DE_CMN_STATS_MAC_ID_SET(_var, _val) \
- do { \
- HTT_CHECK_SET_VAL(HTT_TX_DE_CMN_STATS_MAC_ID, _val); \
- ((_var) |= ((_val) << HTT_TX_DE_CMN_STATS_MAC_ID_S)); \
- } while (0)
+ do { \
+ HTT_CHECK_SET_VAL(HTT_TX_DE_CMN_STATS_MAC_ID, _val); \
+ ((_var) |= ((_val) << HTT_TX_DE_CMN_STATS_MAC_ID_S)); \
+ } while (0)
/*
* The htt_tx_de_fw2wbm_ring_full_hist_tlv is a histogram of time we waited
@@ -2222,8 +2234,9 @@ typedef struct {
* ENTRIES_PER_BIN_COUNT)
*/
typedef struct {
- htt_tlv_hdr_t tlv_hdr;
- A_UINT32 fw2wbm_ring_full_hist[1];
+ htt_tlv_hdr_t tlv_hdr;
+
+ A_UINT32 fw2wbm_ring_full_hist[1];
} htt_tx_de_fw2wbm_ring_full_hist_tlv;
typedef struct {
@@ -2231,15 +2244,15 @@ typedef struct {
/* BIT [ 7 : 0] :- mac_id
* BIT [31 : 8] :- reserved
*/
- A_UINT32 mac_id__word;
+ A_UINT32 mac_id__word;
/* Global Stats */
- A_UINT32 tcl2fw_entry_count;
- A_UINT32 not_to_fw;
- A_UINT32 invalid_pdev_vdev_peer;
- A_UINT32 tcl_res_invalid_addrx;
- A_UINT32 wbm2fw_entry_count;
- A_UINT32 invalid_pdev;
+ A_UINT32 tcl2fw_entry_count;
+ A_UINT32 not_to_fw;
+ A_UINT32 invalid_pdev_vdev_peer;
+ A_UINT32 tcl_res_invalid_addrx;
+ A_UINT32 wbm2fw_entry_count;
+ A_UINT32 invalid_pdev;
} htt_tx_de_cmn_stats_tlv;
/* STATS_TYPE : HTT_DBG_EXT_STATS_TX_DE_INFO
@@ -2272,119 +2285,119 @@ typedef struct {
/* == RING-IF STATS == */
/* DWORD num_elems__prefetch_tail_idx */
-#define HTT_RING_IF_STATS_NUM_ELEMS_M 0x0000ffff
-#define HTT_RING_IF_STATS_NUM_ELEMS_S 0
+#define HTT_RING_IF_STATS_NUM_ELEMS_M 0x0000ffff
+#define HTT_RING_IF_STATS_NUM_ELEMS_S 0
-#define HTT_RING_IF_STATS_PREFETCH_TAIL_IDX_M 0xffff0000
-#define HTT_RING_IF_STATS_PREFETCH_TAIL_IDX_S 16
+#define HTT_RING_IF_STATS_PREFETCH_TAIL_IDX_M 0xffff0000
+#define HTT_RING_IF_STATS_PREFETCH_TAIL_IDX_S 16
#define HTT_RING_IF_STATS_NUM_ELEMS_GET(_var) \
(((_var) & HTT_RING_IF_STATS_NUM_ELEMS_M) >> \
- HTT_RING_IF_STATS_NUM_ELEMS_S)
+ HTT_RING_IF_STATS_NUM_ELEMS_S)
#define HTT_RING_IF_STATS_NUM_ELEMS_SET(_var, _val) \
- do { \
- HTT_CHECK_SET_VAL(HTT_RING_IF_STATS_NUM_ELEMS, _val); \
- ((_var) |= ((_val) << HTT_RING_IF_STATS_NUM_ELEMS_S)); \
- } while (0)
+ do { \
+ HTT_CHECK_SET_VAL(HTT_RING_IF_STATS_NUM_ELEMS, _val); \
+ ((_var) |= ((_val) << HTT_RING_IF_STATS_NUM_ELEMS_S)); \
+ } while (0)
#define HTT_RING_IF_STATS_PREFETCH_TAIL_IDX_GET(_var) \
(((_var) & HTT_RING_IF_STATS_PREFETCH_TAIL_IDX_M) >> \
- HTT_RING_IF_STATS_PREFETCH_TAIL_IDX_S)
+ HTT_RING_IF_STATS_PREFETCH_TAIL_IDX_S)
#define HTT_RING_IF_STATS_PREFETCH_TAIL_IDX_SET(_var, _val) \
- do { \
- HTT_CHECK_SET_VAL(HTT_RING_IF_STATS_PREFETCH_TAIL_IDX, _val); \
- ((_var) |= ((_val) << HTT_RING_IF_STATS_PREFETCH_TAIL_IDX_S)); \
- } while (0)
+ do { \
+ HTT_CHECK_SET_VAL(HTT_RING_IF_STATS_PREFETCH_TAIL_IDX, _val); \
+ ((_var) |= ((_val) << HTT_RING_IF_STATS_PREFETCH_TAIL_IDX_S)); \
+ } while (0)
/* DWORD head_idx__tail_idx */
-#define HTT_RING_IF_STATS_HEAD_IDX_M 0x0000ffff
-#define HTT_RING_IF_STATS_HEAD_IDX_S 0
+#define HTT_RING_IF_STATS_HEAD_IDX_M 0x0000ffff
+#define HTT_RING_IF_STATS_HEAD_IDX_S 0
-#define HTT_RING_IF_STATS_TAIL_IDX_M 0xffff0000
-#define HTT_RING_IF_STATS_TAIL_IDX_S 16
+#define HTT_RING_IF_STATS_TAIL_IDX_M 0xffff0000
+#define HTT_RING_IF_STATS_TAIL_IDX_S 16
#define HTT_RING_IF_STATS_HEAD_IDX_GET(_var) \
(((_var) & HTT_RING_IF_STATS_HEAD_IDX_M) >> \
- HTT_RING_IF_STATS_HEAD_IDX_S)
+ HTT_RING_IF_STATS_HEAD_IDX_S)
#define HTT_RING_IF_STATS_HEAD_IDX_SET(_var, _val) \
- do { \
- HTT_CHECK_SET_VAL(HTT_RING_IF_STATS_HEAD_IDX, _val); \
- ((_var) |= ((_val) << HTT_RING_IF_STATS_HEAD_IDX_S)); \
- } while (0)
+ do { \
+ HTT_CHECK_SET_VAL(HTT_RING_IF_STATS_HEAD_IDX, _val); \
+ ((_var) |= ((_val) << HTT_RING_IF_STATS_HEAD_IDX_S)); \
+ } while (0)
#define HTT_RING_IF_STATS_TAIL_IDX_GET(_var) \
(((_var) & HTT_RING_IF_STATS_TAIL_IDX_M) >> \
- HTT_RING_IF_STATS_TAIL_IDX_S)
+ HTT_RING_IF_STATS_TAIL_IDX_S)
#define HTT_RING_IF_STATS_TAIL_IDX_SET(_var, _val) \
- do { \
- HTT_CHECK_SET_VAL(HTT_RING_IF_STATS_TAIL_IDX, _val); \
- ((_var) |= ((_val) << HTT_RING_IF_STATS_TAIL_IDX_S)); \
- } while (0)
+ do { \
+ HTT_CHECK_SET_VAL(HTT_RING_IF_STATS_TAIL_IDX, _val); \
+ ((_var) |= ((_val) << HTT_RING_IF_STATS_TAIL_IDX_S)); \
+ } while (0)
/* DWORD shadow_head_idx__shadow_tail_idx */
-#define HTT_RING_IF_STATS_SHADOW_HEAD_IDX_M 0x0000ffff
-#define HTT_RING_IF_STATS_SHADOW_HEAD_IDX_S 0
+#define HTT_RING_IF_STATS_SHADOW_HEAD_IDX_M 0x0000ffff
+#define HTT_RING_IF_STATS_SHADOW_HEAD_IDX_S 0
-#define HTT_RING_IF_STATS_SHADOW_TAIL_IDX_M 0xffff0000
-#define HTT_RING_IF_STATS_SHADOW_TAIL_IDX_S 16
+#define HTT_RING_IF_STATS_SHADOW_TAIL_IDX_M 0xffff0000
+#define HTT_RING_IF_STATS_SHADOW_TAIL_IDX_S 16
#define HTT_RING_IF_STATS_SHADOW_HEAD_IDX_GET(_var) \
(((_var) & HTT_RING_IF_STATS_SHADOW_HEAD_IDX_M) >> \
- HTT_RING_IF_STATS_SHADOW_HEAD_IDX_S)
+ HTT_RING_IF_STATS_SHADOW_HEAD_IDX_S)
#define HTT_RING_IF_STATS_SHADOW_HEAD_IDX_SET(_var, _val) \
- do { \
- HTT_CHECK_SET_VAL(HTT_RING_IF_STATS_SHADOW_HEAD_IDX, _val); \
- ((_var) |= ((_val) << HTT_RING_IF_STATS_SHADOW_HEAD_IDX_S)); \
- } while (0)
+ do { \
+ HTT_CHECK_SET_VAL(HTT_RING_IF_STATS_SHADOW_HEAD_IDX, _val); \
+ ((_var) |= ((_val) << HTT_RING_IF_STATS_SHADOW_HEAD_IDX_S)); \
+ } while (0)
#define HTT_RING_IF_STATS_SHADOW_TAIL_IDX_GET(_var) \
(((_var) & HTT_RING_IF_STATS_SHADOW_TAIL_IDX_M) >> \
- HTT_RING_IF_STATS_SHADOW_TAIL_IDX_S)
+ HTT_RING_IF_STATS_SHADOW_TAIL_IDX_S)
#define HTT_RING_IF_STATS_SHADOW_TAIL_IDX_SET(_var, _val) \
- do { \
- HTT_CHECK_SET_VAL(HTT_RING_IF_STATS_SHADOW_TAIL_IDX, _val); \
- ((_var) |= ((_val) << HTT_RING_IF_STATS_SHADOW_TAIL_IDX_S)); \
- } while (0)
+ do { \
+ HTT_CHECK_SET_VAL(HTT_RING_IF_STATS_SHADOW_TAIL_IDX, _val); \
+ ((_var) |= ((_val) << HTT_RING_IF_STATS_SHADOW_TAIL_IDX_S)); \
+ } while (0)
/* DWORD lwm_thresh__hwm_thresh */
-#define HTT_RING_IF_STATS_LWM_THRESHOLD_M 0x0000ffff
-#define HTT_RING_IF_STATS_LWM_THRESHOLD_S 0
+#define HTT_RING_IF_STATS_LWM_THRESHOLD_M 0x0000ffff
+#define HTT_RING_IF_STATS_LWM_THRESHOLD_S 0
-#define HTT_RING_IF_STATS_HWM_THRESHOLD_M 0xffff0000
-#define HTT_RING_IF_STATS_HWM_THRESHOLD_S 16
+#define HTT_RING_IF_STATS_HWM_THRESHOLD_M 0xffff0000
+#define HTT_RING_IF_STATS_HWM_THRESHOLD_S 16
#define HTT_RING_IF_STATS_LWM_THRESHOLD_GET(_var) \
(((_var) & HTT_RING_IF_STATS_LWM_THRESHOLD_M) >> \
- HTT_RING_IF_STATS_LWM_THRESHOLD_S)
+ HTT_RING_IF_STATS_LWM_THRESHOLD_S)
#define HTT_RING_IF_STATS_LWM_THRESHOLD_SET(_var, _val) \
- do { \
- HTT_CHECK_SET_VAL(HTT_RING_IF_STATS_LWM_THRESHOLD, _val); \
- ((_var) |= ((_val) << HTT_RING_IF_STATS_LWM_THRESHOLD_S)); \
- } while (0)
+ do { \
+ HTT_CHECK_SET_VAL(HTT_RING_IF_STATS_LWM_THRESHOLD, _val); \
+ ((_var) |= ((_val) << HTT_RING_IF_STATS_LWM_THRESHOLD_S)); \
+ } while (0)
#define HTT_RING_IF_STATS_HWM_THRESHOLD_GET(_var) \
(((_var) & HTT_RING_IF_STATS_HWM_THRESHOLD_M) >> \
- HTT_RING_IF_STATS_HWM_THRESHOLD_S)
+ HTT_RING_IF_STATS_HWM_THRESHOLD_S)
#define HTT_RING_IF_STATS_HWM_THRESHOLD_SET(_var, _val) \
- do { \
- HTT_CHECK_SET_VAL(HTT_RING_IF_STATS_HWM_THRESHOLD, _val); \
- ((_var) |= ((_val) << HTT_RING_IF_STATS_HWM_THRESHOLD_S)); \
- } while (0)
+ do { \
+ HTT_CHECK_SET_VAL(HTT_RING_IF_STATS_HWM_THRESHOLD, _val); \
+ ((_var) |= ((_val) << HTT_RING_IF_STATS_HWM_THRESHOLD_S)); \
+ } while (0)
-
-#define HTT_STATS_LOW_WM_BINS 5
-#define HTT_STATS_HIGH_WM_BINS 5
+#define HTT_STATS_LOW_WM_BINS 5
+#define HTT_STATS_HIGH_WM_BINS 5
typedef struct {
A_UINT32 base_addr; /* DWORD aligned base memory address of the ring */
+
A_UINT32 elem_size; /* size of each ring element */
/* BIT [15 : 0] :- num_elems
@@ -2408,25 +2421,25 @@ typedef struct {
A_UINT32 underrun_hit_count;
A_UINT32 prod_blockwait_count;
A_UINT32 cons_blockwait_count;
- A_UINT32 low_wm_hit_count[HTT_STATS_LOW_WM_BINS]; /* FIX THIS: explain what each array element is for */
+ A_UINT32 low_wm_hit_count[HTT_STATS_LOW_WM_BINS]; /* FIX THIS: explain what each array element is for */
A_UINT32 high_wm_hit_count[HTT_STATS_HIGH_WM_BINS]; /* FIX THIS: explain what each array element is for */
} htt_ring_if_stats_tlv;
-#define HTT_RING_IF_CMN_MAC_ID_M 0x000000ff
-#define HTT_RING_IF_CMN_MAC_ID_S 0
+#define HTT_RING_IF_CMN_MAC_ID_M 0x000000ff
+#define HTT_RING_IF_CMN_MAC_ID_S 0
#define HTT_RING_IF_CMN_MAC_ID_GET(_var) \
(((_var) & HTT_RING_IF_CMN_MAC_ID_M) >> \
- HTT_RING_IF_CMN_MAC_ID_S)
+ HTT_RING_IF_CMN_MAC_ID_S)
#define HTT_RING_IF_CMN_MAC_ID_SET(_var, _val) \
- do { \
- HTT_CHECK_SET_VAL(HTT_RING_IF_CMN_MAC_ID, _val); \
- ((_var) |= ((_val) << HTT_RING_IF_CMN_MAC_ID_S)); \
- } while (0)
+ do { \
+ HTT_CHECK_SET_VAL(HTT_RING_IF_CMN_MAC_ID, _val); \
+ ((_var) |= ((_val) << HTT_RING_IF_CMN_MAC_ID_S)); \
+ } while (0)
typedef struct {
- htt_tlv_hdr_t tlv_hdr;
+ htt_tlv_hdr_t tlv_hdr;
/* BIT [ 7 : 0] :- mac_id
* BIT [31 : 8] :- reserved
@@ -2449,7 +2462,7 @@ typedef struct {
htt_ring_if_cmn_tlv cmn_tlv;
/* Variable based on the Number of records. */
struct _ring_if {
- htt_stats_string_tlv ring_str_tlv;
+ htt_stats_string_tlv ring_str_tlv;
htt_ring_if_stats_tlv ring_tlv;
} r[1];
} htt_ring_if_stats_t;
@@ -2460,13 +2473,13 @@ typedef struct {
/* NOTE: Variable length TLV, use length spec to infer array size */
typedef struct {
- htt_tlv_hdr_t tlv_hdr;
+ htt_tlv_hdr_t tlv_hdr;
/* Number of DWORDS used per user and per client */
A_UINT32 dwords_used_by_user_n[1];
} htt_sfm_client_user_tlv_v;
typedef struct {
- htt_tlv_hdr_t tlv_hdr;
+ htt_tlv_hdr_t tlv_hdr;
/* Client ID */
A_UINT32 client_id;
/* Minimum number of buffers */
@@ -2483,21 +2496,21 @@ typedef struct {
A_UINT32 num_users;
} htt_sfm_client_tlv;
-#define HTT_SFM_CMN_MAC_ID_M 0x000000ff
-#define HTT_SFM_CMN_MAC_ID_S 0
+#define HTT_SFM_CMN_MAC_ID_M 0x000000ff
+#define HTT_SFM_CMN_MAC_ID_S 0
#define HTT_SFM_CMN_MAC_ID_GET(_var) \
(((_var) & HTT_SFM_CMN_MAC_ID_M) >> \
- HTT_SFM_CMN_MAC_ID_S)
+ HTT_SFM_CMN_MAC_ID_S)
#define HTT_SFM_CMN_MAC_ID_SET(_var, _val) \
- do { \
- HTT_CHECK_SET_VAL(HTT_SFM_CMN_MAC_ID, _val); \
- ((_var) |= ((_val) << HTT_SFM_CMN_MAC_ID_S)); \
- } while (0)
+ do { \
+ HTT_CHECK_SET_VAL(HTT_SFM_CMN_MAC_ID, _val); \
+ ((_var) |= ((_val) << HTT_SFM_CMN_MAC_ID_S)); \
+ } while (0)
typedef struct {
- htt_tlv_hdr_t tlv_hdr;
+ htt_tlv_hdr_t tlv_hdr;
/* BIT [ 7 : 0] :- mac_id
* BIT [31 : 8] :- reserved
@@ -2510,7 +2523,7 @@ typedef struct {
/* DEALLOCATE_BUFFERS, refer to register SFM_R0_DEALLOCATE_BUFFERS */
A_UINT32 deallocate_bufs;
/* Number of Records */
- A_UINT32 num_records;
+ A_UINT32 num_records;
} htt_sfm_cmn_tlv;
/* STATS_TYPE : HTT_DBG_EXT_STATS_RING_IF_INFO
@@ -2528,177 +2541,176 @@ typedef struct {
htt_sfm_cmn_tlv cmn_tlv;
/* Variable based on the Number of records. */
struct _sfm_client {
- htt_stats_string_tlv client_str_tlv;
- htt_sfm_client_tlv client_tlv;
+ htt_stats_string_tlv client_str_tlv;
+ htt_sfm_client_tlv client_tlv;
htt_sfm_client_user_tlv_v user_tlv;
} r[1];
} htt_sfm_stats_t;
/* == SRNG STATS == */
/* DWORD mac_id__ring_id__arena__ep */
-#define HTT_SRING_STATS_MAC_ID_M 0x000000ff
-#define HTT_SRING_STATS_MAC_ID_S 0
+#define HTT_SRING_STATS_MAC_ID_M 0x000000ff
+#define HTT_SRING_STATS_MAC_ID_S 0
-#define HTT_SRING_STATS_RING_ID_M 0x0000ff00
-#define HTT_SRING_STATS_RING_ID_S 8
+#define HTT_SRING_STATS_RING_ID_M 0x0000ff00
+#define HTT_SRING_STATS_RING_ID_S 8
-#define HTT_SRING_STATS_ARENA_M 0x00ff0000
-#define HTT_SRING_STATS_ARENA_S 16
+#define HTT_SRING_STATS_ARENA_M 0x00ff0000
+#define HTT_SRING_STATS_ARENA_S 16
-#define HTT_SRING_STATS_EP_TYPE_M 0x01000000
-#define HTT_SRING_STATS_EP_TYPE_S 24
+#define HTT_SRING_STATS_EP_TYPE_M 0x01000000
+#define HTT_SRING_STATS_EP_TYPE_S 24
#define HTT_SRING_STATS_MAC_ID_GET(_var) \
(((_var) & HTT_SRING_STATS_MAC_ID_M) >> \
- HTT_SRING_STATS_MAC_ID_S)
+ HTT_SRING_STATS_MAC_ID_S)
#define HTT_SRING_STATS_MAC_ID_SET(_var, _val) \
- do { \
- HTT_CHECK_SET_VAL(HTT_SRING_STATS_MAC_ID, _val); \
- ((_var) |= ((_val) << HTT_SRING_STATS_MAC_ID_S)); \
- } while (0)
+ do { \
+ HTT_CHECK_SET_VAL(HTT_SRING_STATS_MAC_ID, _val); \
+ ((_var) |= ((_val) << HTT_SRING_STATS_MAC_ID_S)); \
+ } while (0)
#define HTT_SRING_STATS_RING_ID_GET(_var) \
(((_var) & HTT_SRING_STATS_RING_ID_M) >> \
- HTT_SRING_STATS_RING_ID_S)
+ HTT_SRING_STATS_RING_ID_S)
#define HTT_SRING_STATS_RING_ID_SET(_var, _val) \
- do { \
- HTT_CHECK_SET_VAL(HTT_SRING_STATS_RING_ID, _val); \
- ((_var) |= ((_val) << HTT_SRING_STATS_RING_ID_S)); \
- } while (0)
+ do { \
+ HTT_CHECK_SET_VAL(HTT_SRING_STATS_RING_ID, _val); \
+ ((_var) |= ((_val) << HTT_SRING_STATS_RING_ID_S)); \
+ } while (0)
#define HTT_SRING_STATS_ARENA_GET(_var) \
(((_var) & HTT_SRING_STATS_ARENA_M) >> \
- HTT_SRING_STATS_ARENA_S)
+ HTT_SRING_STATS_ARENA_S)
#define HTT_SRING_STATS_ARENA_SET(_var, _val) \
- do { \
- HTT_CHECK_SET_VAL(HTT_SRING_STATS_ARENA, _val); \
- ((_var) |= ((_val) << HTT_SRING_STATS_ARENA_S)); \
- } while (0)
+ do { \
+ HTT_CHECK_SET_VAL(HTT_SRING_STATS_ARENA, _val); \
+ ((_var) |= ((_val) << HTT_SRING_STATS_ARENA_S)); \
+ } while (0)
#define HTT_SRING_STATS_EP_TYPE_GET(_var) \
(((_var) & HTT_SRING_STATS_EP_TYPE_M) >> \
- HTT_SRING_STATS_EP_TYPE_S)
+ HTT_SRING_STATS_EP_TYPE_S)
#define HTT_SRING_STATS_EP_TYPE_SET(_var, _val) \
- do { \
- HTT_CHECK_SET_VAL(HTT_SRING_STATS_EP_TYPE, _val); \
- ((_var) |= ((_val) << HTT_SRING_STATS_EP_TYPE_S)); \
- } while (0)
+ do { \
+ HTT_CHECK_SET_VAL(HTT_SRING_STATS_EP_TYPE, _val); \
+ ((_var) |= ((_val) << HTT_SRING_STATS_EP_TYPE_S)); \
+ } while (0)
/* DWORD num_avail_words__num_valid_words */
-#define HTT_SRING_STATS_NUM_AVAIL_WORDS_M 0x0000ffff
-#define HTT_SRING_STATS_NUM_AVAIL_WORDS_S 0
+#define HTT_SRING_STATS_NUM_AVAIL_WORDS_M 0x0000ffff
+#define HTT_SRING_STATS_NUM_AVAIL_WORDS_S 0
-#define HTT_SRING_STATS_NUM_VALID_WORDS_M 0xffff0000
-#define HTT_SRING_STATS_NUM_VALID_WORDS_S 16
+#define HTT_SRING_STATS_NUM_VALID_WORDS_M 0xffff0000
+#define HTT_SRING_STATS_NUM_VALID_WORDS_S 16
#define HTT_SRING_STATS_NUM_AVAIL_WORDS_GET(_var) \
(((_var) & HTT_SRING_STATS_NUM_AVAIL_WORDS_M) >> \
- HTT_SRING_STATS_NUM_AVAIL_WORDS_S)
+ HTT_SRING_STATS_NUM_AVAIL_WORDS_S)
#define HTT_SRING_STATS_NUM_AVAIL_WORDS_SET(_var, _val) \
- do { \
- HTT_CHECK_SET_VAL(HTT_SRING_STATS_NUM_AVAIL_WORDS, _val); \
- ((_var) |= ((_val) << HTT_SRING_STATS_NUM_AVAIL_WORDS_S)); \
- } while (0)
+ do { \
+ HTT_CHECK_SET_VAL(HTT_SRING_STATS_NUM_AVAIL_WORDS, _val); \
+ ((_var) |= ((_val) << HTT_SRING_STATS_NUM_AVAIL_WORDS_S)); \
+ } while (0)
#define HTT_SRING_STATS_NUM_VALID_WORDS_GET(_var) \
(((_var) & HTT_SRING_STATS_NUM_VALID_WORDS_M) >> \
- HTT_SRING_STATS_NUM_VALID_WORDS_S)
+ HTT_SRING_STATS_NUM_VALID_WORDS_S)
#define HTT_SRING_STATS_NUM_VALID_WORDS_SET(_var, _val) \
- do { \
- HTT_CHECK_SET_VAL(HTT_SRING_STATS_NUM_VALID_WORDS, _val); \
- ((_var) |= ((_val) << HTT_SRING_STATS_NUM_VALID_WORDS_S)); \
- } while (0)
+ do { \
+ HTT_CHECK_SET_VAL(HTT_SRING_STATS_NUM_VALID_WORDS, _val); \
+ ((_var) |= ((_val) << HTT_SRING_STATS_NUM_VALID_WORDS_S)); \
+ } while (0)
/* DWORD head_ptr__tail_ptr */
-#define HTT_SRING_STATS_HEAD_PTR_M 0x0000ffff
-#define HTT_SRING_STATS_HEAD_PTR_S 0
+#define HTT_SRING_STATS_HEAD_PTR_M 0x0000ffff
+#define HTT_SRING_STATS_HEAD_PTR_S 0
-#define HTT_SRING_STATS_TAIL_PTR_M 0xffff0000
-#define HTT_SRING_STATS_TAIL_PTR_S 16
+#define HTT_SRING_STATS_TAIL_PTR_M 0xffff0000
+#define HTT_SRING_STATS_TAIL_PTR_S 16
#define HTT_SRING_STATS_HEAD_PTR_GET(_var) \
(((_var) & HTT_SRING_STATS_HEAD_PTR_M) >> \
- HTT_SRING_STATS_HEAD_PTR_S)
+ HTT_SRING_STATS_HEAD_PTR_S)
#define HTT_SRING_STATS_HEAD_PTR_SET(_var, _val) \
- do { \
- HTT_CHECK_SET_VAL(HTT_SRING_STATS_HEAD_PTR, _val); \
- ((_var) |= ((_val) << HTT_SRING_STATS_HEAD_PTR_S)); \
- } while (0)
+ do { \
+ HTT_CHECK_SET_VAL(HTT_SRING_STATS_HEAD_PTR, _val); \
+ ((_var) |= ((_val) << HTT_SRING_STATS_HEAD_PTR_S)); \
+ } while (0)
#define HTT_SRING_STATS_TAIL_PTR_GET(_var) \
(((_var) & HTT_SRING_STATS_TAIL_PTR_M) >> \
- HTT_SRING_STATS_TAIL_PTR_S)
+ HTT_SRING_STATS_TAIL_PTR_S)
#define HTT_SRING_STATS_TAIL_PTR_SET(_var, _val) \
- do { \
- HTT_CHECK_SET_VAL(HTT_SRING_STATS_TAIL_PTR, _val); \
- ((_var) |= ((_val) << HTT_SRING_STATS_TAIL_PTR_S)); \
- } while (0)
+ do { \
+ HTT_CHECK_SET_VAL(HTT_SRING_STATS_TAIL_PTR, _val); \
+ ((_var) |= ((_val) << HTT_SRING_STATS_TAIL_PTR_S)); \
+ } while (0)
/* DWORD consumer_empty__producer_full */
-#define HTT_SRING_STATS_CONSUMER_EMPTY_M 0x0000ffff
-#define HTT_SRING_STATS_CONSUMER_EMPTY_S 0
+#define HTT_SRING_STATS_CONSUMER_EMPTY_M 0x0000ffff
+#define HTT_SRING_STATS_CONSUMER_EMPTY_S 0
-#define HTT_SRING_STATS_PRODUCER_FULL_M 0xffff0000
-#define HTT_SRING_STATS_PRODUCER_FULL_S 16
+#define HTT_SRING_STATS_PRODUCER_FULL_M 0xffff0000
+#define HTT_SRING_STATS_PRODUCER_FULL_S 16
#define HTT_SRING_STATS_CONSUMER_EMPTY_GET(_var) \
(((_var) & HTT_SRING_STATS_CONSUMER_EMPTY_M) >> \
- HTT_SRING_STATS_CONSUMER_EMPTY_S)
+ HTT_SRING_STATS_CONSUMER_EMPTY_S)
#define HTT_SRING_STATS_CONSUMER_EMPTY_SET(_var, _val) \
- do { \
- HTT_CHECK_SET_VAL(HTT_SRING_STATS_CONSUMER_EMPTY, _val); \
- ((_var) |= ((_val) << HTT_SRING_STATS_CONSUMER_EMPTY_S)); \
- } while (0)
+ do { \
+ HTT_CHECK_SET_VAL(HTT_SRING_STATS_CONSUMER_EMPTY, _val); \
+ ((_var) |= ((_val) << HTT_SRING_STATS_CONSUMER_EMPTY_S)); \
+ } while (0)
#define HTT_SRING_STATS_PRODUCER_FULL_GET(_var) \
(((_var) & HTT_SRING_STATS_PRODUCER_FULL_M) >> \
- HTT_SRING_STATS_PRODUCER_FULL_S)
+ HTT_SRING_STATS_PRODUCER_FULL_S)
#define HTT_SRING_STATS_PRODUCER_FULL_SET(_var, _val) \
- do { \
- HTT_CHECK_SET_VAL(HTT_SRING_STATS_PRODUCER_FULL, _val); \
- ((_var) |= ((_val) << HTT_SRING_STATS_PRODUCER_FULL_S)); \
- } while (0)
+ do { \
+ HTT_CHECK_SET_VAL(HTT_SRING_STATS_PRODUCER_FULL, _val); \
+ ((_var) |= ((_val) << HTT_SRING_STATS_PRODUCER_FULL_S)); \
+ } while (0)
/* DWORD prefetch_count__internal_tail_ptr */
-#define HTT_SRING_STATS_PREFETCH_COUNT_M 0x0000ffff
-#define HTT_SRING_STATS_PREFETCH_COUNT_S 0
+#define HTT_SRING_STATS_PREFETCH_COUNT_M 0x0000ffff
+#define HTT_SRING_STATS_PREFETCH_COUNT_S 0
-#define HTT_SRING_STATS_INTERNAL_TP_M 0xffff0000
-#define HTT_SRING_STATS_INTERNAL_TP_S 16
+#define HTT_SRING_STATS_INTERNAL_TP_M 0xffff0000
+#define HTT_SRING_STATS_INTERNAL_TP_S 16
#define HTT_SRING_STATS_PREFETCH_COUNT_GET(_var) \
(((_var) & HTT_SRING_STATS_PREFETCH_COUNT_M) >> \
- HTT_SRING_STATS_PREFETCH_COUNT_S)
+ HTT_SRING_STATS_PREFETCH_COUNT_S)
#define HTT_SRING_STATS_PREFETCH_COUNT_SET(_var, _val) \
- do { \
- HTT_CHECK_SET_VAL(HTT_SRING_STATS_PREFETCH_COUNT, _val); \
- ((_var) |= ((_val) << HTT_SRING_STATS_PREFETCH_COUNT_S)); \
- } while (0)
+ do { \
+ HTT_CHECK_SET_VAL(HTT_SRING_STATS_PREFETCH_COUNT, _val); \
+ ((_var) |= ((_val) << HTT_SRING_STATS_PREFETCH_COUNT_S)); \
+ } while (0)
#define HTT_SRING_STATS_INTERNAL_TP_GET(_var) \
(((_var) & HTT_SRING_STATS_INTERNAL_TP_M) >> \
- HTT_SRING_STATS_INTERNAL_TP_S)
+ HTT_SRING_STATS_INTERNAL_TP_S)
#define HTT_SRING_STATS_INTERNAL_TP_SET(_var, _val) \
- do { \
- HTT_CHECK_SET_VAL(HTT_SRING_STATS_INTERNAL_TP, _val); \
- ((_var) |= ((_val) << HTT_SRING_STATS_INTERNAL_TP_S)); \
- } while (0)
-
+ do { \
+ HTT_CHECK_SET_VAL(HTT_SRING_STATS_INTERNAL_TP, _val); \
+ ((_var) |= ((_val) << HTT_SRING_STATS_INTERNAL_TP_S)); \
+ } while (0)
typedef struct {
- htt_tlv_hdr_t tlv_hdr;
+ htt_tlv_hdr_t tlv_hdr;
/* BIT [ 7 : 0] :- mac_id
* BIT [15 : 8] :- ring_id
@@ -2738,8 +2750,8 @@ typedef struct {
} htt_sring_stats_tlv;
typedef struct {
- htt_tlv_hdr_t tlv_hdr;
- A_UINT32 num_records;
+ htt_tlv_hdr_t tlv_hdr;
+ A_UINT32 num_records;
} htt_sring_cmn_tlv;
/* STATS_TYPE : HTT_DBG_EXT_STATS_SRNG_INFO
@@ -2757,38 +2769,38 @@ typedef struct {
/* Variable based on the Number of records. */
struct _sring_stats {
htt_stats_string_tlv sring_str_tlv;
- htt_sring_stats_tlv sring_stats_tlv;
+ htt_sring_stats_tlv sring_stats_tlv;
} r[1];
} htt_sring_stats_t;
-
/* == PDEV TX RATE CTRL STATS == */
-#define HTT_TX_PDEV_STATS_NUM_MCS_COUNTERS 12
-#define HTT_TX_PDEV_STATS_NUM_GI_COUNTERS 4
-#define HTT_TX_PDEV_STATS_NUM_DCM_COUNTERS 5
-#define HTT_TX_PDEV_STATS_NUM_BW_COUNTERS 4
-#define HTT_TX_PDEV_STATS_NUM_SPATIAL_STREAMS 8
-#define HTT_TX_PDEV_STATS_NUM_PREAMBLE_TYPES HTT_STATS_PREAM_COUNT
-#define HTT_TX_PDEV_STATS_NUM_LEGACY_CCK_STATS 4
-#define HTT_TX_PDEV_STATS_NUM_LEGACY_OFDM_STATS 8
-#define HTT_TX_PDEV_STATS_NUM_LTF 4
+#define HTT_TX_PDEV_STATS_NUM_MCS_COUNTERS 12
+#define HTT_TX_PDEV_STATS_NUM_GI_COUNTERS 4
+#define HTT_TX_PDEV_STATS_NUM_DCM_COUNTERS 5
+#define HTT_TX_PDEV_STATS_NUM_BW_COUNTERS 4
+#define HTT_TX_PDEV_STATS_NUM_SPATIAL_STREAMS 8
+#define HTT_TX_PDEV_STATS_NUM_PREAMBLE_TYPES HTT_STATS_PREAM_COUNT
+#define HTT_TX_PDEV_STATS_NUM_LEGACY_CCK_STATS 4
+#define HTT_TX_PDEV_STATS_NUM_LEGACY_OFDM_STATS 8
+#define HTT_TX_PDEV_STATS_NUM_LTF 4
+#define HTT_TX_PDEV_STATS_NUM_11AX_TRIGGER_TYPES 6
#define HTT_TX_NUM_OF_SOUNDING_STATS_WORDS \
(HTT_TX_PDEV_STATS_NUM_BW_COUNTERS * \
- HTT_TX_PDEV_STATS_NUM_AX_MUMIMO_USER_STATS)
+ HTT_TX_PDEV_STATS_NUM_AX_MUMIMO_USER_STATS)
-#define HTT_TX_PDEV_RATE_STATS_MAC_ID_M 0x000000ff
-#define HTT_TX_PDEV_RATE_STATS_MAC_ID_S 0
+#define HTT_TX_PDEV_RATE_STATS_MAC_ID_M 0x000000ff
+#define HTT_TX_PDEV_RATE_STATS_MAC_ID_S 0
#define HTT_TX_PDEV_RATE_STATS_MAC_ID_GET(_var) \
(((_var) & HTT_TX_PDEV_RATE_STATS_MAC_ID_M) >> \
- HTT_TX_PDEV_RATE_STATS_MAC_ID_S)
+ HTT_TX_PDEV_RATE_STATS_MAC_ID_S)
#define HTT_TX_PDEV_RATE_STATS_MAC_ID_SET(_var, _val) \
- do { \
- HTT_CHECK_SET_VAL(HTT_TX_PDEV_RATE_STATS_MAC_ID, _val); \
- ((_var) |= ((_val) << HTT_TX_PDEV_RATE_STATS_MAC_ID_S)); \
- } while (0)
+ do { \
+ HTT_CHECK_SET_VAL(HTT_TX_PDEV_RATE_STATS_MAC_ID, _val); \
+ ((_var) |= ((_val) << HTT_TX_PDEV_RATE_STATS_MAC_ID_S)); \
+ } while (0)
typedef struct {
htt_tlv_hdr_t tlv_hdr;
@@ -2811,7 +2823,7 @@ typedef struct {
A_UINT32 tx_mu_mcs[HTT_TX_PDEV_STATS_NUM_MCS_COUNTERS];
A_UINT32 tx_nss[HTT_TX_PDEV_STATS_NUM_SPATIAL_STREAMS]; /* element 0,1, ...7 -> NSS 1,2, ...8 */
- A_UINT32 tx_bw[HTT_TX_PDEV_STATS_NUM_BW_COUNTERS]; /* element 0: 20 MHz, 1: 40 MHz, 2: 80 MHz, 3: 160 and 80+80 MHz */
+ A_UINT32 tx_bw[HTT_TX_PDEV_STATS_NUM_BW_COUNTERS]; /* element 0: 20 MHz, 1: 40 MHz, 2: 80 MHz, 3: 160 and 80+80 MHz */
A_UINT32 tx_stbc[HTT_TX_PDEV_STATS_NUM_MCS_COUNTERS];
A_UINT32 tx_pream[HTT_TX_PDEV_STATS_NUM_PREAMBLE_TYPES];
@@ -2864,6 +2876,7 @@ typedef struct {
A_UINT32 ac_mu_mimo_tx_gi[HTT_TX_PDEV_STATS_NUM_GI_COUNTERS][HTT_TX_PDEV_STATS_NUM_MCS_COUNTERS];
A_UINT32 ax_mu_mimo_tx_gi[HTT_TX_PDEV_STATS_NUM_GI_COUNTERS][HTT_TX_PDEV_STATS_NUM_MCS_COUNTERS];
A_UINT32 ofdma_tx_gi[HTT_TX_PDEV_STATS_NUM_GI_COUNTERS][HTT_TX_PDEV_STATS_NUM_MCS_COUNTERS];
+ A_UINT32 trigger_type_11ax[HTT_TX_PDEV_STATS_NUM_11AX_TRIGGER_TYPES];
} htt_tx_pdev_rate_stats_tlv;
/* STATS_TYPE : HTT_DBG_EXT_STATS_PDEV_TX_RATE
@@ -2878,36 +2891,36 @@ typedef struct {
htt_tx_pdev_rate_stats_tlv rate_tlv;
} htt_tx_pdev_rate_stats_t;
-
/* == PDEV RX RATE CTRL STATS == */
-#define HTT_RX_PDEV_STATS_NUM_LEGACY_CCK_STATS 4
-#define HTT_RX_PDEV_STATS_NUM_LEGACY_OFDM_STATS 8
-#define HTT_RX_PDEV_STATS_NUM_MCS_COUNTERS 12
-#define HTT_RX_PDEV_STATS_NUM_GI_COUNTERS 4
-#define HTT_RX_PDEV_STATS_NUM_DCM_COUNTERS 5
-#define HTT_RX_PDEV_STATS_NUM_BW_COUNTERS 4
-#define HTT_RX_PDEV_STATS_NUM_SPATIAL_STREAMS 8
-#define HTT_RX_PDEV_STATS_NUM_PREAMBLE_TYPES HTT_STATS_PREAM_COUNT
-#define HTT_RX_PDEV_MAX_OFDMA_NUM_USER 8
+#define HTT_RX_PDEV_STATS_NUM_LEGACY_CCK_STATS 4
+#define HTT_RX_PDEV_STATS_NUM_LEGACY_OFDM_STATS 8
+#define HTT_RX_PDEV_STATS_NUM_MCS_COUNTERS 12
+#define HTT_RX_PDEV_STATS_NUM_GI_COUNTERS 4
+#define HTT_RX_PDEV_STATS_NUM_DCM_COUNTERS 5
+#define HTT_RX_PDEV_STATS_NUM_BW_COUNTERS 4
+#define HTT_RX_PDEV_STATS_NUM_SPATIAL_STREAMS 8
+#define HTT_RX_PDEV_STATS_NUM_PREAMBLE_TYPES HTT_STATS_PREAM_COUNT
+#define HTT_RX_PDEV_MAX_OFDMA_NUM_USER 8
#define HTT_RX_PDEV_STATS_RXEVM_MAX_PILOTS_PER_NSS 16
+#define HTT_RX_PDEV_STATS_NUM_RU_SIZE_COUNTERS 6
-#define HTT_RX_PDEV_RATE_STATS_MAC_ID_M 0x000000ff
-#define HTT_RX_PDEV_RATE_STATS_MAC_ID_S 0
+#define HTT_RX_PDEV_RATE_STATS_MAC_ID_M 0x000000ff
+#define HTT_RX_PDEV_RATE_STATS_MAC_ID_S 0
#define HTT_RX_PDEV_RATE_STATS_MAC_ID_GET(_var) \
(((_var) & HTT_RX_PDEV_RATE_STATS_MAC_ID_M) >> \
- HTT_RX_PDEV_RATE_STATS_MAC_ID_S)
+ HTT_RX_PDEV_RATE_STATS_MAC_ID_S)
#define HTT_RX_PDEV_RATE_STATS_MAC_ID_SET(_var, _val) \
- do { \
- HTT_CHECK_SET_VAL(HTT_RX_PDEV_RATE_STATS_MAC_ID, _val); \
- ((_var) |= ((_val) << HTT_RX_PDEV_RATE_STATS_MAC_ID_S)); \
- } while (0)
-
+ do { \
+ HTT_CHECK_SET_VAL(HTT_RX_PDEV_RATE_STATS_MAC_ID, _val); \
+ ((_var) |= ((_val) << HTT_RX_PDEV_RATE_STATS_MAC_ID_S)); \
+ } while (0)
typedef struct {
htt_tlv_hdr_t tlv_hdr;
+
/* BIT [ 7 : 0] :- mac_id
* BIT [31 : 8] :- reserved
*/
@@ -2928,11 +2941,11 @@ typedef struct {
A_UINT32 rx_stbc[HTT_RX_PDEV_STATS_NUM_MCS_COUNTERS];
A_UINT32 rx_bw[HTT_RX_PDEV_STATS_NUM_BW_COUNTERS]; /* element 0: 20 MHz, 1: 40 MHz, 2: 80 MHz, 3: 160 and 80+80 MHz */
A_UINT32 rx_pream[HTT_RX_PDEV_STATS_NUM_PREAMBLE_TYPES];
- A_UINT8 rssi_chain[HTT_RX_PDEV_STATS_NUM_SPATIAL_STREAMS][HTT_RX_PDEV_STATS_NUM_BW_COUNTERS]; /* units = dB above noise floor */
+ A_UINT8 rssi_chain[HTT_RX_PDEV_STATS_NUM_SPATIAL_STREAMS][HTT_RX_PDEV_STATS_NUM_BW_COUNTERS]; /* units = dB above noise floor */
/* Counters to track number of rx packets in each GI in each mcs (0-11) */
A_UINT32 rx_gi[HTT_RX_PDEV_STATS_NUM_GI_COUNTERS][HTT_RX_PDEV_STATS_NUM_MCS_COUNTERS];
- A_INT32 rssi_in_dbm; /* rx Signal Strength value in dBm unit */
+ A_INT32 rssi_in_dbm; /* rx Signal Strength value in dBm unit */
A_UINT32 rx_11ax_su_ext;
A_UINT32 rx_11ac_mumimo;
@@ -2962,7 +2975,7 @@ typedef struct {
A_UINT32 nss_count;
A_UINT32 pilot_count;
/* RxEVM stats in dB */
- A_INT32 rx_pilot_evm_dB[HTT_RX_PDEV_STATS_NUM_SPATIAL_STREAMS][HTT_RX_PDEV_STATS_RXEVM_MAX_PILOTS_PER_NSS];
+ A_INT32 rx_pilot_evm_dB[HTT_RX_PDEV_STATS_NUM_SPATIAL_STREAMS][HTT_RX_PDEV_STATS_RXEVM_MAX_PILOTS_PER_NSS];
/* rx_pilot_evm_dB_mean:
* EVM mean across pilots, computed as
* mean(10*log10(rx_pilot_evm_linear)) = mean(rx_pilot_evm_dB)
@@ -2977,10 +2990,17 @@ typedef struct {
* BIT [7 : 4] :- IEEE80211_FC0_SUBTYPE
* BIT [31 : 8] :- Reserved
*/
- A_UINT32 per_chain_rssi_pkt_type;
+ A_UINT32 per_chain_rssi_pkt_type;
+ A_INT8 rx_per_chain_rssi_in_dbm[HTT_RX_PDEV_STATS_NUM_SPATIAL_STREAMS][HTT_RX_PDEV_STATS_NUM_BW_COUNTERS];
+ A_UINT32 rx_su_ndpa;
+ A_UINT32 rx_11ax_su_txbf_mcs[HTT_RX_PDEV_STATS_NUM_MCS_COUNTERS];
+ A_UINT32 rx_mu_ndpa;
+ A_UINT32 rx_11ax_mu_txbf_mcs[HTT_RX_PDEV_STATS_NUM_MCS_COUNTERS];
+ A_UINT32 rx_br_poll;
+ A_UINT32 rx_11ax_dl_ofdma_mcs[HTT_RX_PDEV_STATS_NUM_MCS_COUNTERS];
+ A_UINT32 rx_11ax_dl_ofdma_ru[HTT_RX_PDEV_STATS_NUM_RU_SIZE_COUNTERS];
} htt_rx_pdev_rate_stats_tlv;
-
/* STATS_TYPE : HTT_DBG_EXT_STATS_PDEV_RX_RATE
* TLV_TAGS:
* - HTT_STATS_RX_PDEV_RATE_STATS_TAG
@@ -2993,7 +3013,6 @@ typedef struct {
htt_rx_pdev_rate_stats_tlv rate_tlv;
} htt_rx_pdev_rate_stats_t;
-
/* == RX PDEV/SOC STATS == */
typedef struct {
@@ -3034,7 +3053,6 @@ typedef struct {
A_UINT32 refill_ring_empty_cnt[1]; /* HTT_RX_STATS_REFILL_MAX_RING */
} htt_rx_soc_fw_refill_ring_empty_tlv_v;
-
#define HTT_RX_SOC_FW_REFILL_RING_EMPTY_TLV_SZ(_num_elems) (sizeof(A_UINT32) * (_num_elems))
/* NOTE: Variable length TLV, use length spec to infer array size */
@@ -3046,22 +3064,22 @@ typedef struct {
/* RXDMA error code from WBM released packets */
typedef enum {
- HTT_RX_RXDMA_OVERFLOW_ERR = 0,
- HTT_RX_RXDMA_MPDU_LENGTH_ERR = 1,
- HTT_RX_RXDMA_FCS_ERR = 2,
- HTT_RX_RXDMA_DECRYPT_ERR = 3,
- HTT_RX_RXDMA_TKIP_MIC_ERR = 4,
- HTT_RX_RXDMA_UNECRYPTED_ERR = 5,
- HTT_RX_RXDMA_MSDU_LEN_ERR = 6,
- HTT_RX_RXDMA_MSDU_LIMIT_ERR = 7,
- HTT_RX_RXDMA_WIFI_PARSE_ERR = 8,
- HTT_RX_RXDMA_AMSDU_PARSE_ERR = 9,
- HTT_RX_RXDMA_SA_TIMEOUT_ERR = 10,
- HTT_RX_RXDMA_DA_TIMEOUT_ERR = 11,
- HTT_RX_RXDMA_FLOW_TIMEOUT_ERR = 12,
- HTT_RX_RXDMA_FLUSH_REQUEST = 13,
- HTT_RX_RXDMA_ERR_CODE_RVSD0 = 14,
- HTT_RX_RXDMA_ERR_CODE_RVSD1 = 15,
+ HTT_RX_RXDMA_OVERFLOW_ERR = 0,
+ HTT_RX_RXDMA_MPDU_LENGTH_ERR = 1,
+ HTT_RX_RXDMA_FCS_ERR = 2,
+ HTT_RX_RXDMA_DECRYPT_ERR = 3,
+ HTT_RX_RXDMA_TKIP_MIC_ERR = 4,
+ HTT_RX_RXDMA_UNECRYPTED_ERR = 5,
+ HTT_RX_RXDMA_MSDU_LEN_ERR = 6,
+ HTT_RX_RXDMA_MSDU_LIMIT_ERR = 7,
+ HTT_RX_RXDMA_WIFI_PARSE_ERR = 8,
+ HTT_RX_RXDMA_AMSDU_PARSE_ERR = 9,
+ HTT_RX_RXDMA_SA_TIMEOUT_ERR = 10,
+ HTT_RX_RXDMA_DA_TIMEOUT_ERR = 11,
+ HTT_RX_RXDMA_FLOW_TIMEOUT_ERR = 12,
+ HTT_RX_RXDMA_FLUSH_REQUEST = 13,
+ HTT_RX_RXDMA_ERR_CODE_RVSD0 = 14,
+ HTT_RX_RXDMA_ERR_CODE_RVSD1 = 15,
/*
* This MAX_ERR_CODE should not be used in any host/target messages,
@@ -3077,33 +3095,33 @@ typedef struct {
htt_tlv_hdr_t tlv_hdr;
/* NOTE:
- * The mapping of RXDMA error types to rxdma_err array elements is HW dependent.
- * It is expected but not required that the target will provide a rxdma_err element
- * for each of the htt_rx_rxdma_error_code_enum values, up to but not including
- * MAX_ERR_CODE. The host should ignore any array elements whose
- * indices are >= the MAX_ERR_CODE value the host was compiled with.
- */
+ * The mapping of RXDMA error types to rxdma_err array elements is HW dependent.
+ * It is expected but not required that the target will provide a rxdma_err element
+ * for each of the htt_rx_rxdma_error_code_enum values, up to but not including
+ * MAX_ERR_CODE. The host should ignore any array elements whose
+ * indices are >= the MAX_ERR_CODE value the host was compiled with.
+ */
A_UINT32 rxdma_err[1]; /* HTT_RX_RXDMA_MAX_ERR_CODE */
} htt_rx_soc_fw_refill_ring_num_rxdma_err_tlv_v;
/* REO error code from WBM released packets */
typedef enum {
- HTT_RX_REO_QUEUE_DESC_ADDR_ZERO = 0,
- HTT_RX_REO_QUEUE_DESC_NOT_VALID = 1,
- HTT_RX_AMPDU_IN_NON_BA = 2,
- HTT_RX_NON_BA_DUPLICATE = 3,
- HTT_RX_BA_DUPLICATE = 4,
- HTT_RX_REGULAR_FRAME_2K_JUMP = 5,
- HTT_RX_BAR_FRAME_2K_JUMP = 6,
- HTT_RX_REGULAR_FRAME_OOR = 7,
- HTT_RX_BAR_FRAME_OOR = 8,
- HTT_RX_BAR_FRAME_NO_BA_SESSION = 9,
- HTT_RX_BAR_FRAME_SN_EQUALS_SSN = 10,
- HTT_RX_PN_CHECK_FAILED = 11,
- HTT_RX_2K_ERROR_HANDLING_FLAG_SET = 12,
- HTT_RX_PN_ERROR_HANDLING_FLAG_SET = 13,
- HTT_RX_QUEUE_DESCRIPTOR_BLOCKED_SET = 14,
- HTT_RX_REO_ERR_CODE_RVSD = 15,
+ HTT_RX_REO_QUEUE_DESC_ADDR_ZERO = 0,
+ HTT_RX_REO_QUEUE_DESC_NOT_VALID = 1,
+ HTT_RX_AMPDU_IN_NON_BA = 2,
+ HTT_RX_NON_BA_DUPLICATE = 3,
+ HTT_RX_BA_DUPLICATE = 4,
+ HTT_RX_REGULAR_FRAME_2K_JUMP = 5,
+ HTT_RX_BAR_FRAME_2K_JUMP = 6,
+ HTT_RX_REGULAR_FRAME_OOR = 7,
+ HTT_RX_BAR_FRAME_OOR = 8,
+ HTT_RX_BAR_FRAME_NO_BA_SESSION = 9,
+ HTT_RX_BAR_FRAME_SN_EQUALS_SSN = 10,
+ HTT_RX_PN_CHECK_FAILED = 11,
+ HTT_RX_2K_ERROR_HANDLING_FLAG_SET = 12,
+ HTT_RX_PN_ERROR_HANDLING_FLAG_SET = 13,
+ HTT_RX_QUEUE_DESCRIPTOR_BLOCKED_SET = 14,
+ HTT_RX_REO_ERR_CODE_RVSD = 15,
/*
* This MAX_ERR_CODE should not be used in any host/target messages,
@@ -3119,12 +3137,12 @@ typedef struct {
htt_tlv_hdr_t tlv_hdr;
/* NOTE:
- * The mapping of REO error types to reo_err array elements is HW dependent.
- * It is expected but not required that the target will provide a rxdma_err element
- * for each of the htt_rx_reo_error_code_enum values, up to but not including
- * MAX_ERR_CODE. The host should ignore any array elements whose
- * indices are >= the MAX_ERR_CODE value the host was compiled with.
- */
+ * The mapping of REO error types to reo_err array elements is HW dependent.
+ * It is expected but not required that the target will provide a rxdma_err element
+ * for each of the htt_rx_reo_error_code_enum values, up to but not including
+ * MAX_ERR_CODE. The host should ignore any array elements whose
+ * indices are >= the MAX_ERR_CODE value the host was compiled with.
+ */
A_UINT32 reo_err[1]; /* HTT_RX_REO_MAX_ERR_CODE */
} htt_rx_soc_fw_refill_ring_num_reo_err_tlv_v;
@@ -3133,28 +3151,28 @@ typedef struct {
* Instead, use the constituent TLV structures to fill/parse.
*/
typedef struct {
- htt_rx_soc_fw_stats_tlv fw_tlv;
- htt_rx_soc_fw_refill_ring_empty_tlv_v fw_refill_ring_empty_tlv;
- htt_rx_soc_fw_refill_ring_num_refill_tlv_v fw_refill_ring_num_refill_tlv;
+ htt_rx_soc_fw_stats_tlv fw_tlv;
+ htt_rx_soc_fw_refill_ring_empty_tlv_v fw_refill_ring_empty_tlv;
+ htt_rx_soc_fw_refill_ring_num_refill_tlv_v fw_refill_ring_num_refill_tlv;
htt_rx_soc_fw_refill_ring_num_rxdma_err_tlv_v fw_refill_ring_num_rxdma_err_tlv;
- htt_rx_soc_fw_refill_ring_num_reo_err_tlv_v fw_refill_ring_num_reo_err_tlv;
+ htt_rx_soc_fw_refill_ring_num_reo_err_tlv_v fw_refill_ring_num_reo_err_tlv;
} htt_rx_soc_stats_t;
/* == RX PDEV STATS == */
-#define HTT_RX_PDEV_FW_STATS_MAC_ID_M 0x000000ff
-#define HTT_RX_PDEV_FW_STATS_MAC_ID_S 0
+#define HTT_RX_PDEV_FW_STATS_MAC_ID_M 0x000000ff
+#define HTT_RX_PDEV_FW_STATS_MAC_ID_S 0
#define HTT_RX_PDEV_FW_STATS_MAC_ID_GET(_var) \
(((_var) & HTT_RX_PDEV_FW_STATS_MAC_ID_M) >> \
- HTT_RX_PDEV_FW_STATS_MAC_ID_S)
+ HTT_RX_PDEV_FW_STATS_MAC_ID_S)
#define HTT_RX_PDEV_FW_STATS_MAC_ID_SET(_var, _val) \
- do { \
- HTT_CHECK_SET_VAL(HTT_RX_PDEV_FW_STATS_MAC_ID, _val); \
- ((_var) |= ((_val) << HTT_RX_PDEV_FW_STATS_MAC_ID_S)); \
- } while (0)
+ do { \
+ HTT_CHECK_SET_VAL(HTT_RX_PDEV_FW_STATS_MAC_ID, _val); \
+ ((_var) |= ((_val) << HTT_RX_PDEV_FW_STATS_MAC_ID_S)); \
+ } while (0)
-#define HTT_STATS_SUBTYPE_MAX 16
+#define HTT_STATS_SUBTYPE_MAX 16
typedef struct {
htt_tlv_hdr_t tlv_hdr;
@@ -3353,34 +3371,34 @@ typedef struct {
* Instead, use the constituent TLV structures to fill/parse.
*/
typedef struct {
- htt_rx_soc_stats_t soc_stats;
- htt_rx_pdev_fw_stats_tlv fw_stats_tlv;
+ htt_rx_soc_stats_t soc_stats;
+ htt_rx_pdev_fw_stats_tlv fw_stats_tlv;
htt_rx_pdev_fw_ring_mpdu_err_tlv_v fw_ring_mpdu_err_tlv;
- htt_rx_pdev_fw_mpdu_drop_tlv_v fw_ring_mpdu_drop;
- htt_rx_pdev_fw_stats_phy_err_tlv fw_stats_phy_err_tlv;
+ htt_rx_pdev_fw_mpdu_drop_tlv_v fw_ring_mpdu_drop;
+ htt_rx_pdev_fw_stats_phy_err_tlv fw_stats_phy_err_tlv;
} htt_rx_pdev_stats_t;
-#define HTT_PDEV_CCA_STATS_TX_FRAME_INFO_PRESENT (0x1)
-#define HTT_PDEV_CCA_STATS_RX_FRAME_INFO_PRESENT (0x2)
-#define HTT_PDEV_CCA_STATS_RX_CLEAR_INFO_PRESENT (0x4)
-#define HTT_PDEV_CCA_STATS_MY_RX_FRAME_INFO_PRESENT (0x8)
-#define HTT_PDEV_CCA_STATS_USEC_CNT_INFO_PRESENT (0x10)
-#define HTT_PDEV_CCA_STATS_MED_RX_IDLE_INFO_PRESENT (0x20)
-#define HTT_PDEV_CCA_STATS_MED_TX_IDLE_GLOBAL_INFO_PRESENT (0x40)
-#define HTT_PDEV_CCA_STATS_CCA_OBBS_USEC_INFO_PRESENT (0x80)
+#define HTT_PDEV_CCA_STATS_TX_FRAME_INFO_PRESENT (0x1)
+#define HTT_PDEV_CCA_STATS_RX_FRAME_INFO_PRESENT (0x2)
+#define HTT_PDEV_CCA_STATS_RX_CLEAR_INFO_PRESENT (0x4)
+#define HTT_PDEV_CCA_STATS_MY_RX_FRAME_INFO_PRESENT (0x8)
+#define HTT_PDEV_CCA_STATS_USEC_CNT_INFO_PRESENT (0x10)
+#define HTT_PDEV_CCA_STATS_MED_RX_IDLE_INFO_PRESENT (0x20)
+#define HTT_PDEV_CCA_STATS_MED_TX_IDLE_GLOBAL_INFO_PRESENT (0x40)
+#define HTT_PDEV_CCA_STATS_CCA_OBBS_USEC_INFO_PRESENT (0x80)
typedef struct {
htt_tlv_hdr_t tlv_hdr;
/* Below values are obtained from the HW Cycles counter registers */
- A_UINT32 tx_frame_usec;
- A_UINT32 rx_frame_usec;
- A_UINT32 rx_clear_usec;
- A_UINT32 my_rx_frame_usec;
- A_UINT32 usec_cnt;
- A_UINT32 med_rx_idle_usec;
- A_UINT32 med_tx_idle_global_usec;
- A_UINT32 cca_obss_usec;
+ A_UINT32 tx_frame_usec;
+ A_UINT32 rx_frame_usec;
+ A_UINT32 rx_clear_usec;
+ A_UINT32 my_rx_frame_usec;
+ A_UINT32 usec_cnt;
+ A_UINT32 med_rx_idle_usec;
+ A_UINT32 med_tx_idle_global_usec;
+ A_UINT32 cca_obss_usec;
} htt_pdev_stats_cca_counters_tlv;
/* NOTE: THIS htt_pdev_cca_stats_hist_tlv STRUCTURE IS DEPRECATED,
@@ -3391,10 +3409,10 @@ typedef struct {
htt_tlv_hdr_t tlv_hdr;
/* The channel number on which these stats were collected */
- A_UINT32 chan_num;
+ A_UINT32 chan_num;
/* num of CCA records (Num of htt_pdev_stats_cca_counters_tlv)*/
- A_UINT32 num_records;
+ A_UINT32 num_records;
/*
* Bit map of valid CCA counters
@@ -3409,7 +3427,7 @@ typedef struct {
*
* See HTT_PDEV_CCA_STATS_xxx_INFO_PRESENT defs
*/
- A_UINT32 valid_cca_counters_bitmap;
+ A_UINT32 valid_cca_counters_bitmap;
/* Indicates the stats collection interval
* Valid Values:
@@ -3417,7 +3435,7 @@ typedef struct {
* 1000 - For 1sec interval CCA histogram
* 0xFFFFFFFF - For Cumulative CCA Stats
*/
- A_UINT32 collection_interval;
+ A_UINT32 collection_interval;
/**
* This will be followed by an array which contains the CCA stats
@@ -3433,10 +3451,10 @@ typedef struct {
htt_tlv_hdr_t tlv_hdr;
/* The channel number on which these stats were collected */
- A_UINT32 chan_num;
+ A_UINT32 chan_num;
/* num of CCA records (Num of htt_pdev_stats_cca_counters_tlv)*/
- A_UINT32 num_records;
+ A_UINT32 num_records;
/*
* Bit map of valid CCA counters
@@ -3451,7 +3469,7 @@ typedef struct {
*
* See HTT_PDEV_CCA_STATS_xxx_INFO_PRESENT defs
*/
- A_UINT32 valid_cca_counters_bitmap;
+ A_UINT32 valid_cca_counters_bitmap;
/* Indicates the stats collection interval
* Valid Values:
@@ -3459,7 +3477,7 @@ typedef struct {
* 1000 - For 1sec interval CCA histogram
* 0xFFFFFFFF - For Cumulative CCA Stats
*/
- A_UINT32 collection_interval;
+ A_UINT32 collection_interval;
/**
* This will be followed by an array which contains the CCA stats
@@ -3471,77 +3489,77 @@ typedef struct {
*/
} htt_pdev_cca_stats_hist_v1_tlv;
-#define HTT_TWT_SESSION_FLAG_FLOW_ID_M 0x0000ffff
-#define HTT_TWT_SESSION_FLAG_FLOW_ID_S 0
+#define HTT_TWT_SESSION_FLAG_FLOW_ID_M 0x0000ffff
+#define HTT_TWT_SESSION_FLAG_FLOW_ID_S 0
-#define HTT_TWT_SESSION_FLAG_BCAST_TWT_M 0x00010000
-#define HTT_TWT_SESSION_FLAG_BCAST_TWT_S 16
+#define HTT_TWT_SESSION_FLAG_BCAST_TWT_M 0x00010000
+#define HTT_TWT_SESSION_FLAG_BCAST_TWT_S 16
-#define HTT_TWT_SESSION_FLAG_TRIGGER_TWT_M 0x00020000
-#define HTT_TWT_SESSION_FLAG_TRIGGER_TWT_S 17
+#define HTT_TWT_SESSION_FLAG_TRIGGER_TWT_M 0x00020000
+#define HTT_TWT_SESSION_FLAG_TRIGGER_TWT_S 17
-#define HTT_TWT_SESSION_FLAG_ANNOUN_TWT_M 0x00040000
-#define HTT_TWT_SESSION_FLAG_ANNOUN_TWT_S 18
+#define HTT_TWT_SESSION_FLAG_ANNOUN_TWT_M 0x00040000
+#define HTT_TWT_SESSION_FLAG_ANNOUN_TWT_S 18
#define HTT_TWT_SESSION_FLAG_FLOW_ID_GET(_var) \
- (((_var) & HTT_TWT_SESSION_FLAG_FLOW_ID_M) >> \
- HTT_TWT_SESSION_FLAG_FLOW_ID_S)
+ (((_var) & HTT_TWT_SESSION_FLAG_FLOW_ID_M) >> \
+ HTT_TWT_SESSION_FLAG_FLOW_ID_S)
#define HTT_TWT_SESSION_FLAG_FLOW_ID_SET(_var, _val) \
- do { \
- HTT_CHECK_SET_VAL(HTT_TWT_SESSION_FLAG_FLOW_ID, _val); \
- ((_var) |= ((_val) << HTT_TWT_SESSION_FLAG_FLOW_ID_S)); \
- } while (0)
+ do { \
+ HTT_CHECK_SET_VAL(HTT_TWT_SESSION_FLAG_FLOW_ID, _val); \
+ ((_var) |= ((_val) << HTT_TWT_SESSION_FLAG_FLOW_ID_S)); \
+ } while (0)
#define HTT_TWT_SESSION_FLAG_BCAST_TWT_GET(_var) \
- (((_var) & HTT_TWT_SESSION_FLAG_BCAST_TWT_M) >> \
- HTT_TWT_SESSION_FLAG_BCAST_TWT_S)
+ (((_var) & HTT_TWT_SESSION_FLAG_BCAST_TWT_M) >> \
+ HTT_TWT_SESSION_FLAG_BCAST_TWT_S)
#define HTT_TWT_SESSION_FLAG_BCAST_TWT_SET(_var, _val) \
- do { \
- HTT_CHECK_SET_VAL(HTT_TWT_SESSION_FLAG_BCAST_TWT, _val); \
- ((_var) |= ((_val) << HTT_TWT_SESSION_FLAG_BCAST_TWT_S)); \
- } while (0)
+ do { \
+ HTT_CHECK_SET_VAL(HTT_TWT_SESSION_FLAG_BCAST_TWT, _val); \
+ ((_var) |= ((_val) << HTT_TWT_SESSION_FLAG_BCAST_TWT_S)); \
+ } while (0)
#define HTT_TWT_SESSION_FLAG_TRIGGER_TWT_GET(_var) \
- (((_var) & HTT_TWT_SESSION_FLAG_TRIGGER_TWT_M) >> \
- HTT_TWT_SESSION_FLAG_TRIGGER_TWT_S)
+ (((_var) & HTT_TWT_SESSION_FLAG_TRIGGER_TWT_M) >> \
+ HTT_TWT_SESSION_FLAG_TRIGGER_TWT_S)
#define HTT_TWT_SESSION_FLAG_TRIGGER_TWT_SET(_var, _val) \
- do { \
- HTT_CHECK_SET_VAL(HTT_TWT_SESSION_FLAG_TRIGGER_TWT, _val); \
- ((_var) |= ((_val) << HTT_TWT_SESSION_FLAG_TRIGGER_TWT_S)); \
- } while (0)
+ do { \
+ HTT_CHECK_SET_VAL(HTT_TWT_SESSION_FLAG_TRIGGER_TWT, _val); \
+ ((_var) |= ((_val) << HTT_TWT_SESSION_FLAG_TRIGGER_TWT_S)); \
+ } while (0)
#define HTT_TWT_SESSION_FLAG_ANNOUN_TWT_GET(_var) \
- (((_var) & HTT_TWT_SESSION_FLAG_ANNOUN_TWT_M) >> \
- HTT_TWT_SESSION_FLAG_ANNOUN_TWT_S)
+ (((_var) & HTT_TWT_SESSION_FLAG_ANNOUN_TWT_M) >> \
+ HTT_TWT_SESSION_FLAG_ANNOUN_TWT_S)
#define HTT_TWT_SESSION_FLAG_ANNOUN_TWT_SET(_var, _val) \
- do { \
- HTT_CHECK_SET_VAL(HTT_TWT_SESSION_FLAG_ANNOUN_TWT, _val); \
- ((_var) |= ((_val) << HTT_TWT_SESSION_FLAG_ANNOUN_TWT_S)); \
- } while (0)
+ do { \
+ HTT_CHECK_SET_VAL(HTT_TWT_SESSION_FLAG_ANNOUN_TWT, _val); \
+ ((_var) |= ((_val) << HTT_TWT_SESSION_FLAG_ANNOUN_TWT_S)); \
+ } while (0)
-#define TWT_DIALOG_ID_UNAVAILABLE 0xFFFFFFFF
+#define TWT_DIALOG_ID_UNAVAILABLE 0xFFFFFFFF
typedef struct {
- htt_tlv_hdr_t tlv_hdr;
+ htt_tlv_hdr_t tlv_hdr;
- A_UINT32 vdev_id;
- htt_mac_addr peer_mac;
- A_UINT32 flow_id_flags;
- A_UINT32 dialog_id; /* TWT_DIALOG_ID_UNAVAILABLE is used when TWT session is not initiated by host */
- A_UINT32 wake_dura_us;
- A_UINT32 wake_intvl_us;
- A_UINT32 sp_offset_us;
+ A_UINT32 vdev_id;
+ htt_mac_addr peer_mac;
+ A_UINT32 flow_id_flags;
+ A_UINT32 dialog_id; /* TWT_DIALOG_ID_UNAVAILABLE is used when TWT session is not initiated by host */
+ A_UINT32 wake_dura_us;
+ A_UINT32 wake_intvl_us;
+ A_UINT32 sp_offset_us;
} htt_pdev_stats_twt_session_tlv;
typedef struct {
- htt_tlv_hdr_t tlv_hdr;
+ htt_tlv_hdr_t tlv_hdr;
- A_UINT32 pdev_id;
- A_UINT32 num_sessions;
+ A_UINT32 pdev_id;
+ A_UINT32 num_sessions;
htt_pdev_stats_twt_session_tlv twt_session[1];
} htt_pdev_stats_twt_sessions_tlv;
@@ -3561,21 +3579,21 @@ typedef struct {
typedef enum {
/* Global link descriptor queued in REO */
- HTT_RX_REO_RESOURCE_GLOBAL_LINK_DESC_COUNT_0 = 0,
- HTT_RX_REO_RESOURCE_GLOBAL_LINK_DESC_COUNT_1 = 1,
- HTT_RX_REO_RESOURCE_GLOBAL_LINK_DESC_COUNT_2 = 2,
+ HTT_RX_REO_RESOURCE_GLOBAL_LINK_DESC_COUNT_0 = 0,
+ HTT_RX_REO_RESOURCE_GLOBAL_LINK_DESC_COUNT_1 = 1,
+ HTT_RX_REO_RESOURCE_GLOBAL_LINK_DESC_COUNT_2 = 2,
/*Number of queue descriptors of this aging group */
- HTT_RX_REO_RESOURCE_BUFFERS_USED_AC0 = 3,
- HTT_RX_REO_RESOURCE_BUFFERS_USED_AC1 = 4,
- HTT_RX_REO_RESOURCE_BUFFERS_USED_AC2 = 5,
- HTT_RX_REO_RESOURCE_BUFFERS_USED_AC3 = 6,
+ HTT_RX_REO_RESOURCE_BUFFERS_USED_AC0 = 3,
+ HTT_RX_REO_RESOURCE_BUFFERS_USED_AC1 = 4,
+ HTT_RX_REO_RESOURCE_BUFFERS_USED_AC2 = 5,
+ HTT_RX_REO_RESOURCE_BUFFERS_USED_AC3 = 6,
/* Total number of MSDUs buffered in AC */
- HTT_RX_REO_RESOURCE_AGING_NUM_QUEUES_AC0 = 7,
- HTT_RX_REO_RESOURCE_AGING_NUM_QUEUES_AC1 = 8,
- HTT_RX_REO_RESOURCE_AGING_NUM_QUEUES_AC2 = 9,
- HTT_RX_REO_RESOURCE_AGING_NUM_QUEUES_AC3 = 10,
+ HTT_RX_REO_RESOURCE_AGING_NUM_QUEUES_AC0 = 7,
+ HTT_RX_REO_RESOURCE_AGING_NUM_QUEUES_AC1 = 8,
+ HTT_RX_REO_RESOURCE_AGING_NUM_QUEUES_AC2 = 9,
+ HTT_RX_REO_RESOURCE_AGING_NUM_QUEUES_AC3 = 10,
- HTT_RX_REO_RESOURCE_STATS_MAX = 16
+ HTT_RX_REO_RESOURCE_STATS_MAX = 16
} htt_rx_reo_resource_sample_id_enum;
typedef struct {
@@ -3619,33 +3637,33 @@ typedef struct {
/* config_param0 */
-#define HTT_DBG_EXT_STATS_SET_VDEV_MASK(_var) ((_var << 1) | 0x1)
+#define HTT_DBG_EXT_STATS_SET_VDEV_MASK(_var) ((_var << 1) | 0x1)
#define HTT_DBG_EXT_STATS_GET_VDEV_ID_FROM_VDEV_MASK(_var) ((_var >> 1) & 0xFF)
-#define HTT_DBG_EXT_STATS_IS_VDEV_ID_SET(_var) ((_var) & 0x1)
+#define HTT_DBG_EXT_STATS_IS_VDEV_ID_SET(_var) ((_var) & 0x1)
typedef enum {
/* Implicit beamforming stats */
- HTT_IMPLICIT_TXBF_STEER_STATS = 0,
+ HTT_IMPLICIT_TXBF_STEER_STATS = 0,
/* Single user short inter frame sequence steer stats */
- HTT_EXPLICIT_TXBF_SU_SIFS_STEER_STATS = 1,
+ HTT_EXPLICIT_TXBF_SU_SIFS_STEER_STATS = 1,
/* Single user random back off steer stats */
- HTT_EXPLICIT_TXBF_SU_RBO_STEER_STATS = 2,
+ HTT_EXPLICIT_TXBF_SU_RBO_STEER_STATS = 2,
/* Multi user short inter frame sequence steer stats */
- HTT_EXPLICIT_TXBF_MU_SIFS_STEER_STATS = 3,
+ HTT_EXPLICIT_TXBF_MU_SIFS_STEER_STATS = 3,
/* Multi user random back off steer stats */
- HTT_EXPLICIT_TXBF_MU_RBO_STEER_STATS = 4,
+ HTT_EXPLICIT_TXBF_MU_RBO_STEER_STATS = 4,
/* For backward compatability new modes cannot be added */
- HTT_TXBF_MAX_NUM_OF_MODES = 5
+ HTT_TXBF_MAX_NUM_OF_MODES = 5
} htt_txbf_sound_steer_modes;
typedef enum {
- HTT_TX_AC_SOUNDING_MODE = 0,
- HTT_TX_AX_SOUNDING_MODE = 1,
+ HTT_TX_AC_SOUNDING_MODE = 0,
+ HTT_TX_AX_SOUNDING_MODE = 1,
} htt_stats_sounding_tx_mode;
typedef struct {
htt_tlv_hdr_t tlv_hdr;
- A_UINT32 tx_sounding_mode; /* HTT_TX_XX_SOUNDING_MODE */
+ A_UINT32 tx_sounding_mode; /* HTT_TX_XX_SOUNDING_MODE */
/* Counts number of soundings for all steering modes in each bw */
A_UINT32 cbf_20[HTT_TXBF_MAX_NUM_OF_MODES];
A_UINT32 cbf_40[HTT_TXBF_MAX_NUM_OF_MODES];
@@ -3676,10 +3694,10 @@ typedef struct {
} htt_tx_sounding_stats_t;
typedef struct {
- htt_tlv_hdr_t tlv_hdr;
+ htt_tlv_hdr_t tlv_hdr;
- A_UINT32 num_obss_tx_ppdu_success;
- A_UINT32 num_obss_tx_ppdu_failure;
+ A_UINT32 num_obss_tx_ppdu_success;
+ A_UINT32 num_obss_tx_ppdu_failure;
} htt_pdev_obss_pd_stats_tlv;
/* NOTE:
diff --git a/fw/wlan_defs.h b/fw/wlan_defs.h
index d2cd217c4196..beeb87b17a75 100755
--- a/fw/wlan_defs.h
+++ b/fw/wlan_defs.h
@@ -115,6 +115,8 @@
#define HE_PET_8_USEC 1
#define HE_PET_16_USEC 2
+#define DEFAULT_OFDMA_RU26_COUNT 0
+
typedef enum {
MODE_11A = 0, /* 11a Mode */
MODE_11G = 1, /* 11b/g Mode */
diff --git a/fw/wmi_services.h b/fw/wmi_services.h
index 14b05734d497..c87b61838db1 100755
--- a/fw/wmi_services.h
+++ b/fw/wmi_services.h
@@ -379,6 +379,16 @@ typedef enum {
WMI_SERVICE_EXT_PEER_TID_CONFIGS_SUPPORT = 194, /* Extended Peer Tid configuration support for QoS related settings */
WMI_SERVICE_WPA3_FT_SAE_SUPPORT = 195, /* FW roaming support for WPA3_FT_SAE */
WMI_SERVICE_WPA3_FT_SUITE_B_SUPPORT = 196, /* FW roaming support for WPA3_FT_SUITE_B */
+ WMI_SERVICE_VOW_ENABLE=197, /* FW supports a set of features to optimize VoW performance */
+ WMI_SERVICE_CFR_CAPTURE_IND_EVT_TYPE_1 = 198, /* support WMI_PEER_CFR_CAPTURE_EVENT msg */
+ WMI_SERVICE_BROADCAST_TWT = 199, /* support of Broadcast TWT (Target Wake Time) for STA/AP */
+ WMI_SERVICE_RAP_DETECTION_SUPPORT = 200, /* indicate FW supports rogue AP detection */
+ WMI_SERVICE_PS_TDCC = 201, /* FW support tx_duty_cycle_control powersave */
+ WMI_SERVICE_THREE_WAY_COEX_CONFIG_LEGACY = 202, /* BTCOEX Three-way CoEx Config Legacy Feature support */
+ WMI_SERVICE_THREE_WAY_COEX_CONFIG_OVERRIDE = 203, /* BTCOEX Three-way CoEx Config Override Feature support */
+ WMI_SERVICE_TX_PWR_PER_PEER = 204, /* target supports per-peer tx pwr spec via WMI_PEER_USE_FIXED_PWR */
+ WMI_SERVICE_STA_PLUS_STA_SUPPORT = 205, /* indicates target supports STA + STA concurrency */
+ WMI_SERVICE_WPA3_FT_FILS = 206,
/******* ADD NEW SERVICES HERE *******/
diff --git a/fw/wmi_tlv_defs.h b/fw/wmi_tlv_defs.h
index aa17d6db91d6..14922014440c 100755
--- a/fw/wmi_tlv_defs.h
+++ b/fw/wmi_tlv_defs.h
@@ -965,6 +965,18 @@ typedef enum {
WMITLV_TAG_STRUC_wmi_request_wlm_stats_cmd_fixed_param,
WMITLV_TAG_STRUC_wmi_wlm_stats_event_fixed_param,
WMITLV_TAG_STRUC_wmi_key_material_ext,
+ WMITLV_TAG_STRUC_wmi_peer_cfr_capture_event_fixed_param,
+ WMITLV_TAG_STRUC_wmi_cold_boot_cal_data_fixed_param,
+ WMITLV_TAG_STRUC_wmi_pdev_set_rap_config_fixed_param,
+ WMITLV_TAG_STRUC_wmi_pdev_set_rap_config_on_sta_ps_tlv_param,
+ WMITLV_TAG_STRUC_wmi_pdev_rap_info_event_fixed_param,
+ WMITLV_TAG_STRUC_wmi_sta_tdcc_config_cmd_fixed_param,
+ WMITLV_TAG_STRUC_wmi_roam_deauth_config_cmd_fixed_param,
+ WMITLV_TAG_STRUC_wmi_roam_idle_config_cmd_fixed_param,
+ WMITLV_TAG_STRUC_wmi_idle_trigger_monitor_cmd_fixed_param,
+ WMITLV_TAG_STRUC_wmi_stats_interference,
+ WMITLV_TAG_STRUC_wmi_roam_score_delta_param,
+ WMITLV_TAG_STRUC_wmi_roam_cnd_min_rssi_param,
} WMITLV_TAG_ID;
/*
@@ -979,6 +991,7 @@ typedef enum {
OP(WMI_PEER_SET_PARAM_CMDID) \
OP(WMI_STA_POWERSAVE_MODE_CMDID) \
OP(WMI_STA_POWERSAVE_PARAM_CMDID) \
+ OP(WMI_STA_TDCC_CONFIG_CMDID) \
OP(WMI_STA_DTIM_PS_METHOD_CMDID) \
OP(WMI_PDEV_SET_REGDOMAIN_CMDID) \
OP(WMI_PEER_TID_ADDBA_CMDID) \
@@ -1358,6 +1371,10 @@ typedef enum {
OP(WMI_ROAM_BSS_LOAD_CONFIG_CMDID) \
OP(WMI_VDEV_GET_MWS_COEX_INFO_CMDID) \
OP(WMI_REQUEST_WLM_STATS_CMDID) \
+ OP(WMI_PDEV_SET_RAP_CONFIG_CMDID) \
+ OP(WMI_ROAM_DEAUTH_CONFIG_CMDID) \
+ OP(WMI_ROAM_IDLE_CONFIG_CMDID) \
+ OP(WMI_IDLE_TRIGGER_MONITOR_CMDID) \
/* add new CMD_LIST elements above this line */
@@ -1580,6 +1597,9 @@ typedef enum {
OP(WMI_VDEV_GET_MWS_COEX_IDRX_STATE_EVENTID) \
OP(WMI_VDEV_GET_MWS_COEX_ANTENNA_SHARING_STATE_EVENTID) \
OP(WMI_WLM_STATS_EVENTID) \
+ OP(WMI_PEER_CFR_CAPTURE_EVENTID) \
+ OP(WMI_PDEV_COLD_BOOT_CAL_DATA_EVENTID) \
+ OP(WMI_PDEV_RAP_INFO_EVENTID) \
/* add new EVT_LIST elements above this line */
@@ -1638,6 +1658,12 @@ WMITLV_CREATE_PARAM_STRUC(WMI_STA_POWERSAVE_MODE_CMDID);
WMITLV_CREATE_PARAM_STRUC(WMI_STA_POWERSAVE_PARAM_CMDID);
+/* STA TDCC Param Config Cmd */
+#define WMITLV_TABLE_WMI_STA_TDCC_CONFIG_CMDID(id,op,buf,len) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_sta_tdcc_config_cmd_fixed_param, wmi_sta_tdcc_config_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX)
+
+WMITLV_CREATE_PARAM_STRUC(WMI_STA_TDCC_CONFIG_CMDID);
+
/* STA DTIM PS METHOD Cmd */
#define WMITLV_TABLE_WMI_STA_DTIM_PS_METHOD_CMDID(id,op,buf,len) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_sta_dtim_ps_method_cmd_fixed_param, wmi_sta_dtim_ps_method_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX)
@@ -2532,7 +2558,9 @@ WMITLV_CREATE_PARAM_STRUC(WMI_PEER_MCAST_GROUP_CMDID);
#define WMITLV_TABLE_WMI_ROAM_AP_PROFILE(id,op,buf,len) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_roam_ap_profile_fixed_param, wmi_roam_ap_profile_fixed_param, fixed_param, WMITLV_SIZE_FIX) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_ap_profile, wmi_ap_profile, ap_profile, WMITLV_SIZE_FIX) \
- WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_roam_cnd_scoring_param, wmi_roam_cnd_scoring_param, roam_cnd_scoring_param, WMITLV_SIZE_FIX)
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_roam_cnd_scoring_param, wmi_roam_cnd_scoring_param, roam_cnd_scoring_param, WMITLV_SIZE_FIX) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_roam_score_delta_param, roam_score_delta_param_list, WMITLV_SIZE_VAR) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_roam_cnd_min_rssi_param, roam_cnd_min_rssi_param_list, WMITLV_SIZE_VAR)
WMITLV_CREATE_PARAM_STRUC(WMI_ROAM_AP_PROFILE);
@@ -3002,6 +3030,21 @@ WMITLV_CREATE_PARAM_STRUC(WMI_REQUEST_ROAM_SCAN_STATS_CMDID);
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_roam_bss_load_config_cmd_fixed_param, wmi_roam_bss_load_config_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX)
WMITLV_CREATE_PARAM_STRUC(WMI_ROAM_BSS_LOAD_CONFIG_CMDID);
+/* Deauth roam trigger parameters */
+#define WMITLV_TABLE_WMI_ROAM_DEAUTH_CONFIG_CMDID(id,op,buf,len) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_roam_deauth_config_cmd_fixed_param, wmi_roam_deauth_config_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX)
+WMITLV_CREATE_PARAM_STRUC(WMI_ROAM_DEAUTH_CONFIG_CMDID);
+
+/* Idle roam trigger parameters */
+#define WMITLV_TABLE_WMI_ROAM_IDLE_CONFIG_CMDID(id,op,buf,len) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_roam_idle_config_cmd_fixed_param, wmi_roam_idle_config_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX)
+WMITLV_CREATE_PARAM_STRUC(WMI_ROAM_IDLE_CONFIG_CMDID);
+
+/* Screen Status Command parameters */
+#define WMITLV_TABLE_WMI_IDLE_TRIGGER_MONITOR_CMDID(id,op,buf,len) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_idle_trigger_monitor_cmd_fixed_param, wmi_idle_trigger_monitor_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX)
+WMITLV_CREATE_PARAM_STRUC(WMI_IDLE_TRIGGER_MONITOR_CMDID);
+
#define WMITLV_TABLE_WMI_ROAM_BLACKLIST_EVENTID(id,op,buf,len) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_roam_blacklist_event_fixed_param, wmi_roam_blacklist_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_roam_blacklist_with_timeout_tlv_param, blacklist_with_timeout, WMITLV_SIZE_VAR)
@@ -3913,6 +3956,13 @@ WMITLV_CREATE_PARAM_STRUC(WMI_HPCS_PULSE_START_CMDID);
WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_PKTLOG_FILTER_CMDID);
+/* PDev Set Rogue AP Config cmd */
+#define WMITLV_TABLE_WMI_PDEV_SET_RAP_CONFIG_CMDID(id,op,buf,len) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_pdev_set_rap_config_fixed_param, wmi_pdev_set_rap_config_fixed_param, fixed_param, WMITLV_SIZE_FIX) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_pdev_set_rap_config_on_sta_ps_tlv_param, rap_param, WMITLV_SIZE_VAR)
+WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_SET_RAP_CONFIG_CMDID);
+
+
/************************** TLV definitions of WMI events *******************************/
/* Service Ready event */
@@ -5047,6 +5097,7 @@ WMITLV_CREATE_PARAM_STRUC(WMI_RMC_NEW_LEADER_EVENTID);
* array index is (peer_index * WLAN_MAX_AC + ac_index) * rx_mcs_array_len + MCS index
* Contains a count of rx PPDUs for each MCS of each AC of each peer.
* wmi_stats_period stats_period[]; Array length is specified by stats_period_array_len
+ * wmi_stats_interference stats_interference[]; Array length is determied by dividing array level TLV header's length value by array-element TLV header's length value.
*
* For example, if there were 2 peers (X and Y) whose stats were being reported,
* the message and its TLV arrays would look like this:
@@ -5137,7 +5188,8 @@ WMITLV_CREATE_PARAM_STRUC(WMI_RMC_NEW_LEADER_EVENTID);
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_rx_stats, rx_stats, WMITLV_SIZE_VAR) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_UINT32, A_UINT32, rx_mpdu_aggr, WMITLV_SIZE_VAR) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_UINT32, A_UINT32, rx_mcs, WMITLV_SIZE_VAR) \
- WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_stats_period, stats_period, WMITLV_SIZE_VAR)
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_stats_period, stats_period, WMITLV_SIZE_VAR) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_stats_interference, stats_interference, WMITLV_SIZE_VAR)
WMITLV_CREATE_PARAM_STRUC(WMI_REPORT_STATS_EVENTID);
#define WMITLV_TABLE_WMI_VDEV_ENCRYPT_DECRYPT_DATA_RESP_EVENTID(id, op, buf, len) \
@@ -5280,6 +5332,20 @@ WMITLV_CREATE_PARAM_STRUC(WMI_MOTION_DET_BASE_LINE_HOST_EVENTID);
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_esp_estimate_event_fixed_param, wmi_esp_estimate_event_fixed_param, fixed_param, WMITLV_SIZE_FIX)
WMITLV_CREATE_PARAM_STRUC(WMI_ESP_ESTIMATE_EVENTID);
+/* Peer CFR capture event */
+#define WMITLV_TABLE_WMI_PEER_CFR_CAPTURE_EVENTID(id,op,buf,len) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_peer_cfr_capture_event_fixed_param, wmi_peer_cfr_capture_event_fixed_param, fixed_param, WMITLV_SIZE_FIX)
+WMITLV_CREATE_PARAM_STRUC(WMI_PEER_CFR_CAPTURE_EVENTID);
+
+#define WMITLV_TABLE_WMI_PDEV_COLD_BOOT_CAL_DATA_EVENTID(id,op,buf,len) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_cold_boot_cal_data_fixed_param, wmi_cold_boot_cal_data_fixed_param, fixed_param, WMITLV_SIZE_FIX) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_BYTE, A_UINT8, data, WMITLV_SIZE_VAR)
+WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_COLD_BOOT_CAL_DATA_EVENTID);
+
+/* rogue ap info event */
+#define WMITLV_TABLE_WMI_PDEV_RAP_INFO_EVENTID(id,op,buf,len) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_pdev_rap_info_event_fixed_param, wmi_pdev_rap_info_event_fixed_param, fixed_param, WMITLV_SIZE_FIX)
+WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_RAP_INFO_EVENTID);
#ifdef __cplusplus
}
diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h
index e085b98d0bad..85c11642be34 100755
--- a/fw/wmi_unified.h
+++ b/fw/wmi_unified.h
@@ -405,6 +405,8 @@ typedef enum {
WMI_PDEV_HE_TB_ACTION_FRM_CMDID,
/** filter packet log based on MAC address */
WMI_PDEV_PKTLOG_FILTER_CMDID,
+ /** wmi command for setting rogue ap configuration */
+ WMI_PDEV_SET_RAP_CONFIG_CMDID,
/* VDEV (virtual device) specific commands */
/** vdev create */
@@ -549,8 +551,21 @@ typedef enum {
WMI_PEER_TID_CONFIGURATIONS_CMDID,
/** Peer configuration for Channel Frequency Response (CFR) capture
- * of type wmi_peer_cfr_capture_cmd. The CFR capture is communicated
- * through HTT_T2H_MSG_TYPE_CFR_DUMP_COMPL_IND.
+ * of type wmi_peer_cfr_capture_cmd.
+ *
+ * On targets that do not use the direct DMA framework,
+ * completion of the CFR capture is communicated through
+ * HTT_T2H_MSG_TYPE_CFR_DUMP_COMPL_IND.
+ * Such targets will set WMI_SERVICE_CFR_CAPTURE_IND_MSG_TYPE_1
+ * in WMI Service Ready.
+ *
+ * On targets that use direct DMA, completion of CFR capture is
+ * communicated through WMI_PDEV_DMA_RING_BUF_RELEASE_EVENTID
+ * using module ID WMI_DMA_RING_CONFIG_MODULE_RTT.
+ * Such targets will set WMI_SERVICE_CFR_CAPTURE_IND_EVT_TYPE_1
+ * in WMI Service Ready and enumerate WMI_DMA_RING_CONFIG_MODULE_RTT
+ * in the dma_ring_caps entry of WMI_SERVICE_READY_EXT_EVENTID.
+ * Additional MAC metadata is provided in WMI_PEER_CFR_CAPTURE_EVENTID.
*/
WMI_PEER_CFR_CAPTURE_CMDID,
@@ -617,6 +632,8 @@ typedef enum {
WMI_STA_POWERSAVE_PARAM_CMDID,
/** set station mimo powersave mode */
WMI_STA_MIMO_PS_MODE_CMDID,
+ /** config station TX cycle percentage in a beacon interval */
+ WMI_STA_TDCC_CONFIG_CMDID,
/** DFS-specific commands */
@@ -676,6 +693,10 @@ typedef enum {
WMI_REQUEST_ROAM_SCAN_STATS_CMDID,
/** Configure BSS load parameters for roam trigger */
WMI_ROAM_BSS_LOAD_CONFIG_CMDID,
+ /** Configure deauth roam trigger parameters */
+ WMI_ROAM_DEAUTH_CONFIG_CMDID,
+ /** Configure idle roam trigger parameters */
+ WMI_ROAM_IDLE_CONFIG_CMDID,
/** offload scan specific commands */
/** set offload scan AP profile */
@@ -951,6 +972,8 @@ typedef enum {
WMI_RUNTIME_DPD_RECAL_CMDID,
/* get TX power for input HALPHY parameters */
WMI_GET_TPC_POWER_CMDID,
+ /* Specify when to start monitoring for idle state */
+ WMI_IDLE_TRIGGER_MONITOR_CMDID,
/* Offload 11k related requests */
WMI_11K_OFFLOAD_REPORT_CMDID = WMI_CMD_GRP_START_ID(WMI_GRP_11K_OFFLOAD),
@@ -1291,6 +1314,12 @@ typedef enum {
/* Event to report the switch count in BSS color of one or more VDEVs */
WMI_PDEV_CSC_SWITCH_COUNT_STATUS_EVENTID,
+ /* Event to send cold boot calibration data */
+ WMI_PDEV_COLD_BOOT_CAL_DATA_EVENTID,
+
+ /* Event to report a rogue ap info that is detected in fw */
+ WMI_PDEV_RAP_INFO_EVENTID,
+
/* VDEV specific events */
/** VDEV started event in response to VDEV_START request */
@@ -1406,6 +1435,8 @@ typedef enum {
/** report the current tx PN for the peer */
WMI_PEER_TX_PN_RESPONSE_EVENTID,
+ WMI_PEER_CFR_CAPTURE_EVENTID,
+
/* beacon/mgmt specific events */
/** RX management frame. the entire frame is carried along with the event. */
WMI_MGMT_RX_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_MGMT),
@@ -2949,6 +2980,45 @@ typedef struct {
#define WMI_RSRC_CFG_FLAG_PEER_TID_EXT_S 22
#define WMI_RSRC_CFG_FLAG_PEER_TID_EXT_M 0x400000
+ /*
+ * If the VIDEO_OVER_WIFI_ENABLE flag is set, the target will use a
+ * series of algorithmic adjustments to optimize Video performance
+ * by reducing latency, reducing latency jitter, and minimizing
+ * dropped packets.
+ */
+ #define WMI_RSRC_CFG_FLAG_VIDEO_OVER_WIFI_ENABLE_S 23
+ #define WMI_RSRC_CFG_FLAG_VIDEO_OVER_WIFI_ENABLE_M 0x800000
+
+ /*
+ * If the THREE_WAY_COEX_CONFIG_LEGACY flag is set, the target will use
+ * the configuration parameters given by Host driver to WLAN FW and
+ * apply them along with the existing CoEx Weights Override logic to
+ * prioritize the WLAN-BT-Zigbee packets accordingly.
+ *
+ * The host shall only set the THREE_WAY_COEX_CONFIG_LEGACY_SUPPORT
+ * RSRC_CFG flag if the target has set the WMI_SERVICE
+ * THREE_WAY_COEX_CONFIG_LEGACY_SUPPORT flag.
+ *
+ * The logic to send GPM to BT-SOC with BT-ZB priorities remains the same.
+ */
+ #define WMI_RSRC_CFG_FLAG_THREE_WAY_COEX_CONFIG_LEGACY_SUPPORT_S 24
+ #define WMI_RSRC_CFG_FLAG_THREE_WAY_COEX_CONFIG_LEGACY_SUPPORT_M 0x1000000
+
+ /*
+ * If the THREE_WAY_COEX_CONFIG_OVERRIDE flag is set, the target will use
+ * the configuration parameters given by Host driver to WLAN FW and
+ * apply them by OVERRIDing the existing CoEx Weights Override logic to
+ * prioritize the WLAN-BT-Zigbee packets accordingly.
+ *
+ * The host shall only set the THREE_WAY_COEX_CONFIG_OVERRIDE_SUPPORT
+ * RSRC_CFG flag if the target has set the WMI_SERVICE
+ * THREE_WAY_COEX_CONFIG_OVERRIDE_SUPPORT flag.
+ *
+ * The logic to send GPM to BT-SOC with BT-ZB priorities remains the same.
+ */
+ #define WMI_RSRC_CFG_FLAG_THREE_WAY_COEX_CONFIG_OVERRIDE_SUPPORT_S 25
+ #define WMI_RSRC_CFG_FLAG_THREE_WAY_COEX_CONFIG_OVERRIDE_SUPPORT_M 0x2000000
+
A_UINT32 flag1;
/** @brief smart_ant_cap - Smart Antenna capabilities information
@@ -3202,6 +3272,20 @@ typedef struct {
#define WMI_RSRC_CFG_FLAG_PEER_TID_EXT_GET(word32) \
WMI_RSRC_CFG_FLAG_GET((word32), PEER_TID_EXT)
+#define WMI_RSRC_CFG_FLAG_VIDEO_OVER_WIFI_ENABLE_SET(word32, value) \
+ WMI_RSRC_CFG_FLAG_SET((word32), VIDEO_OVER_WIFI_ENABLE, (value))
+#define WMI_RSRC_CFG_FLAG_VIDEO_OVER_WIFI_ENABLE_GET(word32) \
+ WMI_RSRC_CFG_FLAG_GET((word32), VIDEO_OVER_WIFI_ENABLE)
+
+#define WMI_RSRC_CFG_FLAG_THREE_WAY_COEX_CONFIG_LEGACY_SUPPORT_SET(word32, value) \
+ WMI_RSRC_CFG_FLAG_SET((word32), THREE_WAY_COEX_CONFIG_LEGACY_SUPPORT, (value))
+#define WMI_RSRC_CFG_FLAG_THREE_WAY_COEX_CONFIG_LEGACY_SUPPORT_GET(word32) \
+ WMI_RSRC_CFG_FLAG_GET((word32), THREE_WAY_COEX_CONFIG_LEGACY_SUPPORT)
+
+#define WMI_RSRC_CFG_FLAG_THREE_WAY_COEX_CONFIG_OVERRIDE_SUPPORT_SET(word32, value) \
+ WMI_RSRC_CFG_FLAG_SET((word32), THREE_WAY_COEX_CONFIG_OVERRIDE_SUPPORT, (value))
+#define WMI_RSRC_CFG_FLAG_THREE_WAY_COEX_CONFIG_OVERRIDE_SUPPORT_GET(word32) \
+ WMI_RSRC_CFG_FLAG_GET((word32), THREE_WAY_COEX_CONFIG_OVERRIDE_SUPPORT)
typedef struct {
A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_init_cmd_fixed_param */
@@ -4188,6 +4272,9 @@ typedef struct {
((int8_t) (WMI_F_MS((hdr)->rssi_chain##c, \
WMI_UNIFIED_RSSI_CHAN_##ch)))
+#define WMI_UNIFIED_CHAIN_RSSI_GET(tlv, chain_idx, band) \
+ ((A_INT8) WMI_F_MS((tlv)->chain_rssi[chain_idx], WMI_UNIFIED_RSSI_CHAN_ ## band))
+
typedef struct {
/** Phy error event header */
wmi_single_phyerr_rx_hdr hdr;
@@ -5557,8 +5644,140 @@ typedef enum {
*/
WMI_PDEV_PARAM_NAV_OVERRIDE_CONFIG,
+ /* Set global MU PPDU duration for DL (usec units) */
+ WMI_PDEV_PARAM_SET_MU_PPDU_DURATION,
+
+ /*
+ * Enable / disable test mode configuration.
+ * By default FW will always send triggers dynamically (mix of BSR/Basic).
+ * The below testmode are only used for certain tests.
+ * A value of 1 in a given bit enables corresponding test mode.
+ * bit | test mode
+ * ---------------
+ * 0 | FW only sends BSR triggers.
+ * 1 | FW only sends Basic triggers.
+ * 2 | If set, FW enables MU-RTS trigger.
+ * | If cleared, FW uses implementation-specific internal default setting.
+ * 3 | FW enables unicast embedded trigger in HE MU PPDU.
+ * 4-31| reserved.
+ */
+ WMI_PDEV_PARAM_SET_TEST_CMD_UL_TRIGGER_TYPE_ENABLE,
+
+ /*
+ * Configure test command to set LSIG len.
+ * Value 0: Dynamic LSIG based on STA's qdepth.
+ * Non zero Value: LSIG length to be configured
+ * as part of trigger frame.
+ * bit |
+ * ---------------
+ * 0 - 30 | Bits storing the host supplied <value>.
+ * 31 | If set: The legitimate value closest to the value specified in
+ * | in bits 30:0 is directly set in UL len in trigger frame.
+ * | The FW performs calculations to determine which legitimate
+ * | value is closest to the specified value, if the specified
+ * | value is not already legitimate.
+ * | If not set: The value in lower bits is the duration (in ms),
+ * | from which the UL len is derived.
+ * | Example: if host sets 2000 (2ms), then UL Len in trigger
+ * | will be derived to accomodate the given duration.
+ */
+ WMI_PDEV_PARAM_SET_TEST_CMD_UL_TRIGGER_LSIG_LEN,
+
+ /*
+ * Configure test cmd for fixed rate setting used for UL Trigger
+ * (only Basic/BSR triggers).
+ * The top nibble is used to select which format to use for encoding
+ * the rate specification: 0xVXXXXXXX, V must be 1 for the UL
+ * format.
+ * If V == 0b0001: format is: 0x1000RRRR.
+ * This will be output of WMI_ASSEMBLE_RATECODE_V1
+ *
+ */
+ WMI_PDEV_PARAM_SET_TEST_CMD_UL_TRIGGER_FIXED_RATE,
+
+ /*
+ * Configure test command to set the mac padding duration.
+ * 0 - FW set Mac Padding to 0us
+ * 1 - FW set Mac Padding to 8us
+ * 2 - FW set Mac Padding to 16us
+ */
+ WMI_PDEV_PARAM_SET_TEST_CMD_UL_MAC_PADDING,
+
+ /*
+ * Configure test command to set the fc duration in BSR trigger frame.
+ * value 0 - FW calulates the duration(default).
+ * Non zero Value: Duration to be configured.
+ */
+ WMI_PDEV_PARAM_SET_TEST_CMD_UL_BSR_FC_DURATION,
+
+ /* Parameter used for configuring TWT scheduling properties
+ * bit | config_mode
+ * -----------------
+ * 0 | Disables DL MU for TWT peers within TWT SP
+ * 1 | Disables UL MU for TWT peers within TWT SP
+ * 2 | Disables scheduling from WMM sched context for TWT peers
+ * 3 | If set, FW only sends Basic triggers in TWT SP.
+ * 4-31| reserved.
+ */
+ WMI_PDEV_PARAM_SET_TEST_CMD_TWT_SCHED_CONFIG,
+
+ /* Parameter used to configure OBSS Packet Detect threshold
+ * for Spatial Reuse feature.
+ * The accepted values are in between 62 and 95, inclusive.
+ * The parameter value is programmed into the spatial reuse register,
+ * to specify how low the background signal strength from neighboring
+ * BSS cells must be, for this AP to employ spatial reuse.
+ * The value of the parameter is multiplied by -1 to get the
+ * OBSS RSSI threshold, in dBm, below which spatial reuse will
+ * be allowed.
+ * For example, if the parameter value is 62, the target will
+ * allow spatial reuse if the RSSI detected from other BSS
+ * is below -62 dBm.
+ * Similarly, if the parameter value is 80, the target will
+ * allow spatial reuse only if the RSSI detected from neighboring
+ * BSS cells is no more than -80 dBm.
+ */
+ WMI_PDEV_PARAM_SET_CMD_OBSS_PD_THRESHOLD,
+
} WMI_PDEV_PARAM;
+#define WMI_PDEV_ONLY_BSR_TRIG_IS_ENABLED(trig_type) WMI_GET_BITS(trig_type, 0, 1)
+#define WMI_PDEV_ONLY_BSR_TRIG_ENABLE(trig_type) WMI_SET_BITS(trig_type, 0, 1, 1)
+#define WMI_PDEV_ONLY_BSR_TRIG_DISABLE(trig_type) WMI_SET_BITS(trig_type, 0, 1, 0)
+
+#define WMI_PDEV_ONLY_BASIC_TRIG_IS_ENABLED(trig_type) WMI_GET_BITS(trig_type, 1, 1)
+#define WMI_PDEV_ONLY_BASIC_TRIG_ENABLE(trig_type) WMI_SET_BITS(trig_type, 1, 1, 1)
+#define WMI_PDEV_ONLY_BASIC_TRIG_DISABLE(trig_type) WMI_SET_BITS(trig_type, 1, 1, 0)
+
+#define WMI_PDEV_MU_RTS_IS_ENABLED(trig_type) WMI_GET_BITS(trig_type, 2, 1)
+#define WMI_PDEV_MU_RTS_ENABLE(trig_type) WMI_SET_BITS(trig_type, 2, 1, 1)
+#define WMI_PDEV_MU_RTS_DISABLE(trig_type) WMI_SET_BITS(trig_type, 2, 1, 0)
+
+#define WMI_PDEV_EMBEDDED_TRIGGER_IS_ENABLED(trig_type) WMI_GET_BITS(trig_type, 3, 1)
+#define WMI_PDEV_EMBEDDED_TRIGGER_ENABLE(trig_type) WMI_SET_BITS(trig_type, 3, 1, 1)
+#define WMI_PDEV_EMBEDDED_TRIGGER_DISABLE(trig_type) WMI_SET_BITS(trig_type, 3, 1, 0)
+
+#define WMI_PDEV_TWT_SCHED_CFG_IS_DL_MU_IS_ENABLED(twt_sched_cfg) WMI_GET_BITS(twt_sched_cfg, 0, 1)
+#define WMI_PDEV_TWT_SCHED_CFG_DL_MU_ENABLE(twt_sched_cfg) WMI_SET_BITS(twt_sched_cfg, 0, 1, 1)
+#define WMI_PDEV_TWT_SCHED_CFG_DL_MU_DISABLE(twt_sched_cfg) WMI_SET_BITS(twt_sched_cfg, 0, 1, 0)
+
+#define WMI_PDEV_TWT_SCHED_CFG_IS_UL_MU_IS_ENABLED(twt_sched_cfg) WMI_GET_BITS(twt_sched_cfg, 1, 1)
+#define WMI_PDEV_TWT_SCHED_CFG_UL_MU_ENABLE(twt_sched_cfg) WMI_SET_BITS(twt_sched_cfg, 1, 1, 1)
+#define WMI_PDEV_TWT_SCHED_CFG_UL_MU_DISABLE(twt_sched_cfg) WMI_SET_BITS(twt_sched_cfg, 1, 1, 0)
+
+#define WMI_PDEV_TWT_SCHED_CFG_IS_WMM_IS_ENABLED(twt_sched_cfg) WMI_GET_BITS(twt_sched_cfg, 2, 1)
+#define WMI_PDEV_TWT_SCHED_CFG_WMM_ENABLE(twt_sched_cfg) WMI_SET_BITS(twt_sched_cfg, 2, 1, 1)
+#define WMI_PDEV_TWT_SCHED_CFG_WMM_DISABLE(twt_sched_cfg) WMI_SET_BITS(twt_sched_cfg, 2, 1, 0)
+
+#define WMI_PDEV_TWT_SCHED_CFG_IS_USE_ONLY_BASIC_TRIGGER_IS_ENABLED(twt_sched_cfg) WMI_GET_BITS(twt_sched_cfg, 3, 1)
+#define WMI_PDEV_TWT_SCHED_CFG_USE_ONLY_BASIC_TRIGGER_ENABLE(twt_sched_cfg) WMI_SET_BITS(twt_sched_cfg, 3, 1, 1)
+#define WMI_PDEV_TWT_SCHED_CFG_USE_ONLY_BASIC_TRIGGER_DISABLE(twt_sched_cfg) WMI_SET_BITS(twt_sched_cfg, 3, 1, 0)
+
+#define WMI_PDEV_LSIG_LEN_DURATION_ENABLE(lsig_len) WMI_SET_BITS(lsig_len, 0, 31, 1)
+#define WMI_PDEV_LSIG_LEN_DURATION_DISABLE(lsig_len) WMI_SET_BITS(lsig_len, 0, 31, 0)
+#define WMI_PDEV_LSIG_LEN_DURATION_GET(lsig_len) WMI_GET_BITS(lsig_len, 0, 30)
+#define WMI_PDEV_LSIG_LEN_DURATION_SET(lsig_len, value) WMI_SET_BITS(lsig_len, 0, 30, value)
+
typedef struct {
A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_pdev_set_param_cmd_fixed_param */
/** pdev_id for identifying the MAC
@@ -6060,8 +6279,34 @@ typedef struct {
*/
} wmi_pdev_pktlog_filter_cmd_fixed_param;
+typedef enum {
+ WMI_ROGUE_AP_ON_STA_PS = 1, /* rogue ap on sta ps module */
+} WMI_ROGUE_AP_TYPE;
+typedef struct {
+ A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_pdev_set_rap_config_fixed_param */
+ /** pdev_id for identifying the MAC, the default value is WMI_PDEV_ID_SOC
+ * See macros starting with WMI_PDEV_ID_ for values.
+ */
+ A_UINT32 pdev_id;
+ /** rogue ap type, see WMI_ROGUE_AP_TYPE */
+ A_UINT32 type;
+ /** Enable detection of rogue ap in the ps module
+ *
+ * 0 -> disabled
+ * 1 -> enabled (default)
+ */
+ A_UINT32 sta_ps_detection_enabled;
+/* This TLV is followed by rap_param for each rogue ap:
+ * wmi_pdev_set_rap_config_on_sta_ps_tlv_param rap_param[];
+ */
+} wmi_pdev_set_rap_config_fixed_param;
+typedef struct {
+ A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_pdev_set_rap_config_on_sta_ps_tlv_param */
+ /** bssid of rogue ap */
+ wmi_mac_addr bssid;
+} wmi_pdev_set_rap_config_on_sta_ps_tlv_param;
typedef struct {
A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_mib_stats_enable_cmd_fixed_param */
@@ -7304,6 +7549,31 @@ typedef enum {
TRIGGER_COND_ID_ONE_TIME_REQUEST = 0x3,
} wmi_report_stats_event_trigger_cond_id;
+typedef struct
+{
+ A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_stats_interference */
+
+ /** For cases where a single rx chain has options to be connected to
+ * different rx antennas, show which rx antennas were in use during
+ * receipt of a given PPDU.
+ * This sa_ant_matrix provides a bitmask of the antennas used while
+ * receiving this frame.
+ */
+ A_UINT32 sa_ant_matrix;
+
+ /** Count how many times the hal_rxerr_phy is marked, in this time period.
+ * The counter value is reset each period. The host specifies the period
+ * via WMI_PDEV_PARAM_STATS_OBSERVATION_PERIOD.
+ */
+ A_UINT32 phyerr_count;
+
+ /** The timestamp at which the WMI event is reported.
+ * In targets that have a WBTIMER_1 timer, this timestamp is taken
+ * from WBTIMER_1.
+ */
+ A_UINT32 timestamp;
+} wmi_stats_interference;
+
typedef struct {
A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_report_stats_event_fixed_param */
/** Indicate what triggered this event, check wmi_report_stats_event_trigger_cond_id for details */
@@ -7384,6 +7654,7 @@ typedef struct {
* A_UINT32 rx_mcs[][][]; Array length is (num_peer_ac_rx_stats * WLAN_MAX_AC) * rx_mcs_array_len,
* array index is (peer_index * WLAN_MAX_AC + ac_index) * rx_mcs_array_len + MCS index
* wmi_stats_period stats_period[]; Array length is specified by stats_period_array_len
+ * wmi_stats_interference stats_interference[]; Array length is determied by dividing array level TLV header's length value by array-element TLV header's length value.
**/
} wmi_report_stats_event_fixed_param;
@@ -9391,6 +9662,11 @@ typedef enum {
*/
WMI_VDEV_PARAM_MAX_MTU_SIZE, /* 0x91 */
+ /** Send every nth beacon to host
+ * if value of n is 0, it means this Nth beacon upload is disabled
+ */
+ WMI_VDEV_PARAM_NTH_BEACON_TO_HOST, /* 0x92 */
+
/*=== ADD NEW VDEV PARAM TYPES ABOVE THIS LINE ===
* The below vdev param types are used for prototyping, and are
@@ -9833,6 +10109,14 @@ typedef struct {
A_UINT32 sta_ps_mode;
} wmi_sta_powersave_mode_cmd_fixed_param;
+typedef struct {
+ A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_sta_tdcc_config_cmd_fixed_param */
+ /** Set a max tx period: percentage of one beacon interval. range: 0 - 100 */
+ A_UINT32 tx_cycle_percentage;
+ /** Enable/disable TX Duty Cycle Control powersave */
+ A_UINT32 enabled;
+} wmi_sta_tdcc_config_cmd_fixed_param;
+
enum wmi_csa_offload_en {
WMI_CSA_OFFLOAD_DISABLE = 0,
WMI_CSA_OFFLOAD_ENABLE = 1,
@@ -10475,6 +10759,7 @@ enum wmi_peer_type {
WMI_PEER_TYPE_TDLS = 2, /* Peer is a TDLS Peer */
WMI_PEER_TYPE_OCB = 3, /* Peer is a OCB Peer */
WMI_PEER_TYPE_NAN_DATA = 4, /* Peer is NAN DATA */
+ WMI_PEER_TYPE_TRANS_BSS = 5, /* For creating BSS peer when connecting with non-transmit AP */
WMI_PEER_TYPE_HOST_MAX = 127, /* Host <-> Target Peer type is assigned up to 127 */
/* Reserved from 128 - 255 for target internal use.*/
WMI_PEER_TYPE_ROAMOFFLOAD_TEMP = 128, /* Temporarily created during offload roam */
@@ -10834,6 +11119,9 @@ typedef struct {
/* update peer flag for M4 sent */
#define WMI_PEER_PARAM_M4_SENT 0x21
+/* Per peer MISC stats enable or disable */
+#define WMI_PEER_PARAM_MISC_STATS_ENABLE 0x22
+
/** mimo ps values for the parameter WMI_PEER_MIMO_PS_STATE */
#define WMI_PEER_MIMO_PS_NONE 0x0
#define WMI_PEER_MIMO_PS_STATIC 0x1
@@ -11135,8 +11423,11 @@ typedef struct {
A_UINT32 vdev_id;
} wmi_peer_add_wds_entry_cmd_fixed_param;
-#define WMI_CHAN_InFO_START_RESP 0
-#define WMI_CHAN_InFO_END_RESP 1
+#define WMI_CHAN_INFO_START_RESP 0
+#define WMI_CHAN_INFO_END_RESP 1
+/* deprecated but maintained as aliases: old names containing typo */
+#define WMI_CHAN_InFO_START_RESP WMI_CHAN_INFO_START_RESP
+#define WMI_CHAN_InFO_END_RESP WMI_CHAN_INFO_END_RESP
typedef struct {
A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_peer_remove_wds_entry_cmd_fixed_param */
@@ -11518,6 +11809,11 @@ typedef struct {
* If roam trigger reasons are unspecified, btm_bitmap will be 0x0.
*/
A_UINT32 btm_bitmap;
+ /*
+ * Consider AP as roam candidate only if AP score is better than
+ * btm_candidate_min_score for BTM roam trigger
+ */
+ A_UINT32 btm_candidate_min_score;
} wmi_btm_config_fixed_param;
#define WMI_ROAM_5G_BOOST_PENALIZE_ALGO_FIXED 0x0
@@ -11550,6 +11846,12 @@ typedef struct {
A_UINT32 roam_scan_period;
/** Aging for Roam scans */
A_UINT32 roam_scan_age;
+ /** Inactivity monitoring time to consider device is in inactive state with data count is less than roam_inactive_count */
+ A_UINT32 inactivity_time_period; /* units = milli seconds */
+ /** Maximum allowed data packets count during inactivity_time_period */
+ A_UINT32 roam_inactive_count;
+ /** New roam scan period after device is in inactivity state */
+ A_UINT32 roam_scan_period_after_inactivity; /* units = milli seconds */
} wmi_roam_scan_period_fixed_param;
/**
@@ -11618,6 +11920,8 @@ enum {
WMI_AUTH_RSNA_SUITE_B_8021X_SHA384,
WMI_AUTH_FT_RSNA_SAE,
WMI_AUTH_FT_RSNA_SUITE_B_8021X_SHA384,
+ WMI_AUTH_FT_RSNA_FILS_SHA256,
+ WMI_AUTH_FT_RSNA_FILS_SHA384,
};
typedef enum {
@@ -11877,6 +12181,31 @@ typedef struct {
A_UINT32 roam_score_delta_mask;
} wmi_roam_cnd_scoring_param;
+typedef struct {
+ A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_roam_score_delta_param */
+ /* Roam trigger reason ID from WMI_ROAM_TRIGGER_REASON_ID */
+ A_UINT32 roam_trigger_reason;
+ /* Roam score delta in %.
+ * Consider AP as roam candidate only if AP score is at least
+ * roam_score_delta % better than connected AP score.
+ * Ex: roam_score_delta = 20, and connected AP score is 4000,
+ * then consider candidate AP only if its score is at least
+ * 4800 (= 4000 * 120%)
+ */
+ A_UINT32 roam_score_delta;
+} wmi_roam_score_delta_param;
+
+typedef struct {
+ A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_roam_cnd_min_rssi_param */
+ /* Roam trigger reason ID from WMI_ROAM_TRIGGER_REASON_ID */
+ A_UINT32 roam_trigger_reason;
+ /*
+ * Consider AP as roam candidate only if AP rssi is better than
+ * candidate_min_rssi
+ */
+ A_UINT32 candidate_min_rssi; /* units = dbm */
+} wmi_roam_cnd_min_rssi_param;
+
/** To match an open AP, the rs_authmode should be set to WMI_AUTH_NONE
* and WMI_AP_PROFILE_FLAG_CRYPTO should be clear.
* To match a WEP enabled AP, the rs_authmode should be set to WMI_AUTH_NONE
@@ -12063,6 +12392,8 @@ typedef struct {
* Following this structure is the TLV:
* wmi_ap_profile ap_profile; <-- AP profile info
* wmi_roam_cnd_scoring_param roam_cnd_scoring_param
+ * wmi_roam_score_delta_param roam_score_delta_param_list[]
+ * wmi_roam_cnd_min_rssi_param roam_cnd_min_rssi_param_list[]
*/
} wmi_roam_ap_profile_fixed_param;
@@ -12975,6 +13306,7 @@ typedef enum wake_reason_e {
WOW_REASON_TKIP_MIC_ERR_FRAME_RECVD_DETECT,
WOW_REASON_WLAN_MD, /* motion detected */
WOW_REASON_WLAN_BL, /* baselining done */
+ WOW_REASON_NTH_BCN_OFLD, /* nth beacon forward to host */
WOW_REASON_DEBUG_TEST = 0xFF,
} WOW_WAKE_REASON_TYPE;
@@ -17710,7 +18042,11 @@ typedef struct {
typedef struct {
/** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_key_material_ext */
A_UINT32 tlv_header;
- A_UINT8 key_buffer[GTK_OFFLOAD_KEK_EXTENDED_BYTES+GTK_OFFLOAD_KCK_EXTENDED_BYTES+GTK_REPLAY_COUNTER_BYTES]; /*the split of kck, kek should be known to host based on akmp*/
+ /*
+ * key_buffer contains kck,kck2,kek,kek2,replay counter, in order
+ * The split between kck vs. kek should be known to host based on akmp.
+ */
+ A_UINT8 key_buffer[GTK_OFFLOAD_KEK_EXTENDED_BYTES+GTK_OFFLOAD_KCK_EXTENDED_BYTES+GTK_REPLAY_COUNTER_BYTES];
} wmi_key_material_ext;
typedef struct {
@@ -22130,6 +22466,43 @@ typedef enum wmi_coex_config_type {
* arg4 - priority level 4, same parameters rules as arg1
*/
WMI_COEX_CONFIG_THREE_WAY_COEX_START = 34,
+ /* WMI_COEX_CONFIG_MPTA_HELPER_ENABLE
+ * config to enable(1)/disable(0) mpta-helper function
+ */
+ WMI_COEX_CONFIG_MPTA_HELPER_ENABLE = 35,
+ /* WMI_COEX_CONFIG_MPTA_HELPER_ZIGBEE_STATE
+ * config zigbee state
+ * arg1: zigbee state
+ * (idle form-network wait-join join-network network-up HMI)
+ */
+ WMI_COEX_CONFIG_MPTA_HELPER_ZIGBEE_STATE = 36,
+ /* WMI_COEX_CONFIG_MPTA_HELPER_INT_OCS_PARAMS
+ * config ocs wlan/nonwlan params after MPTA interrupt fired
+ * arg1: wlan duration (ms units) in Shape-OCS
+ * arg2: nonwlan duration (ms units) in Shape-OCS
+ */
+ WMI_COEX_CONFIG_MPTA_HELPER_INT_OCS_PARAMS = 37,
+ /* WMI_COEX_CONFIG_MPTA_HELPER_MON_OCS_PARAMS
+ * config ocs wlan/nonwlan params during monitor period after
+ * interrupt period finished
+ * arg1: wlan duration (ms units) in Shape-OCS
+ * arg2: nonwlan duration (ms units) in Shape-OCS
+ */
+ WMI_COEX_CONFIG_MPTA_HELPER_MON_OCS_PARAMS = 38,
+ /* WMI_COEX_CONFIG_MPTA_HELPER_INT_MON_DURATION
+ * config ocs duration in interrupt period and monitor period
+ * arg1: duration (ms units) in interrupt period
+ * arg2: duration (ms units) in monitor period
+ */
+ WMI_COEX_CONFIG_MPTA_HELPER_INT_MON_DURATION = 39,
+ /* WMI_COEX_CONFIG_MPTA_HELPER_ZIGBEE_CHANNEL
+ * config zigbee channel 11 - 26
+ */
+ WMI_COEX_CONFIG_MPTA_HELPER_ZIGBEE_CHANNEL = 40,
+ /* WMI_COEX_CONFIG_MPTA_HELPER_WLAN_MUTE_DURATION
+ * config msw mute duration (ms units) after MPTA interrupt fired
+ */
+ WMI_COEX_CONFIG_MPTA_HELPER_WLAN_MUTE_DURATION = 41,
} WMI_COEX_CONFIG_TYPE;
typedef struct {
@@ -23477,6 +23850,11 @@ static INLINE A_UINT8 *wmi_id_to_name(A_UINT32 wmi_command)
WMI_RETURN_STRING(WMI_ROAM_BSS_LOAD_CONFIG_CMDID);
WMI_RETURN_STRING(WMI_VDEV_GET_MWS_COEX_INFO_CMDID);
WMI_RETURN_STRING(WMI_REQUEST_WLM_STATS_CMDID);
+ WMI_RETURN_STRING(WMI_PDEV_SET_RAP_CONFIG_CMDID);
+ WMI_RETURN_STRING(WMI_STA_TDCC_CONFIG_CMDID);
+ WMI_RETURN_STRING(WMI_ROAM_DEAUTH_CONFIG_CMDID);
+ WMI_RETURN_STRING(WMI_ROAM_IDLE_CONFIG_CMDID);
+ WMI_RETURN_STRING(WMI_IDLE_TRIGGER_MONITOR_CMDID);
}
return "Invalid WMI cmd";
@@ -23812,8 +24190,28 @@ typedef enum {
WMI_PDEV_ROUTING_TYPE_MLD_IPV6,
WMI_PDEV_ROUTING_TYPE_DHCP_IPV4,
WMI_PDEV_ROUTING_TYPE_DHCP_IPV6,
+ WMI_PDEV_ROUTING_TYPE_DNS_TCP_IPV4,
+ WMI_PDEV_ROUTING_TYPE_DNS_TCP_IPV6,
+ WMI_PDEV_ROUTING_TYPE_DNS_UDP_IPV4,
+ WMI_PDEV_ROUTING_TYPE_DNS_UDP_IPV6,
+ WMI_PDEV_ROUTING_TYPE_ICMP_IPV4,
+ WMI_PDEV_ROUTING_TYPE_ICMP_IPV6,
+ WMI_PDEV_ROUTING_TYPE_TCP_IPV4,
+ WMI_PDEV_ROUTING_TYPE_TCP_IPV6,
+ WMI_PDEV_ROUTING_TYPE_UDP_IPV4,
+ WMI_PDEV_ROUTING_TYPE_UDP_IPV6,
+ WMI_PDEV_ROUTING_TYPE_IPV4,
+ WMI_PDEV_ROUTING_TYPE_IPV6,
+ WMI_PDEV_ROUTING_TYPE_EAP,
} wmi_pdev_pkt_routing_type;
+typedef enum {
+ WMI_PDEV_WIFIRXCCE_USE_CCE_E = 0,
+ WMI_PDEV_WIFIRXCCE_USE_ASPT_E = 1,
+ WMI_PDEV_WIFIRXCCE_USE_FT_E = 2,
+ WMI_PDEV_WIFIRXCCE_USE_CCE2_E = 3,
+} wmi_pdev_dest_ring_handler_type;
+
/* This command shall be sent only when no VDEV is up. If the command is sent after any VDEV is up, target will ignore the command */
typedef struct {
/** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_pdev_update_pkt_routing_cmd_fixed_param */
@@ -23832,6 +24230,11 @@ typedef struct {
* CCE copies this back in RX_MSDU_END_TLV.
*/
A_UINT32 meta_data;
+ /**
+ * Indicates the dest ring handler type: CCE, APST, FT, CCE2
+ * Refer to wmi_pdev_dest_ring_handler_type / WMI_PDEV_WIFIRXCCE_USE_xxx
+ */
+ A_UINT32 dest_ring_handler;
} wmi_pdev_update_pkt_routing_cmd_fixed_param;
typedef enum {
@@ -24074,6 +24477,10 @@ typedef struct {
A_UINT32 flags;
} wmi_wlm_config_cmd_fixed_param;
+/* Broadcast TWT enable/disable */
+#define TWT_EN_DIS_FLAGS_GET_BTWT(flag) WMI_GET_BITS(flag, 0, 1)
+#define TWT_EN_DIS_FLAGS_SET_BTWT(flag, val) WMI_SET_BITS(flag, 0, 1, val)
+
typedef struct {
A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_twt_enable_cmd_fixed_param */
/** pdev_id for identifying the MAC. See macros starting with WMI_PDEV_ID_ for values. In non-DBDC case host should set it to 0
@@ -24106,7 +24513,8 @@ typedef struct {
*/
A_UINT32 mode_check_interval; /* Interval between two successive check to decide the mode of TWT */
A_UINT32 add_sta_slot_interval; /* Interval between decisions making to create TWT slots for STAs */
- A_UINT32 remove_sta_slot_interval; /* Inrerval between decisions making to remove TWT slot of STAs */
+ A_UINT32 remove_sta_slot_interval; /* Interval between decisions making to remove TWT slot of STAs */
+ A_UINT32 flags; /* enable/disable flags, refer to MACROs TWT_EN_DIS_FLAGS_* (TWT_EN_DIS_FLAGS_GET_BTWT etc.) */
} wmi_twt_enable_cmd_fixed_param;
/* status code of enabling TWT */
@@ -24128,7 +24536,8 @@ typedef struct {
typedef struct {
A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_twt_disable_cmd_fixed_param */
/** pdev_id for identifying the MAC. See macros starting with WMI_PDEV_ID_ for values. In non-DBDC case host should set it to 0 */
- A_UINT32 pdev_id; /* host should never set it to WMI_PDEV_ID_SOC */
+ A_UINT32 pdev_id; /* host should never set it to WMI_PDEV_ID_SOC */
+ A_UINT32 flags; /* enable/disable flags, refer to MACROs TWT_EN_DIS_FLAGS_* (TWT_EN_DIS_FLAGS_GET_BTWT etc.) */
} wmi_twt_disable_cmd_fixed_param;
typedef struct {
@@ -24294,7 +24703,8 @@ typedef struct {
} wmi_twt_resume_dialog_complete_event_fixed_param;
typedef enum {
- WMI_DMA_RING_CONFIG_MODULE_SPECTRAL,
+ WMI_DMA_RING_CONFIG_MODULE_SPECTRAL,
+ WMI_DMA_RING_CONFIG_MODULE_RTT,
} WMI_DMA_RING_SUPPORTED_MODULE;
typedef struct {
@@ -24399,8 +24809,8 @@ typedef struct {
*/
A_UINT32 paddr_lo;
/**
- * Bits 15:0: address of data [47:32]
- * Bits 31:16: reserved
+ * Bits 11:0: address of data [43:32]
+ * Bits 31:12: host context data [19:0]
*/
A_UINT32 paddr_hi;
} wmi_dma_buf_release_entry;
@@ -24489,6 +24899,8 @@ typedef enum {
WMI_ROAM_TRIGGER_REASON_BTM,
WMI_ROAM_TRIGGER_REASON_UNIT_TEST,
WMI_ROAM_TRIGGER_REASON_BSS_LOAD,
+ WMI_ROAM_TRIGGER_REASON_DEAUTH,
+ WMI_ROAM_TRIGGER_REASON_IDLE,
WMI_ROAM_TRIGGER_REASON_MAX,
} WMI_ROAM_TRIGGER_REASON_ID;
@@ -24526,8 +24938,85 @@ typedef struct {
A_UINT32 monitor_time_window;
/** BSS load threshold after which roam scan should trigger */
A_UINT32 bss_load_threshold;
+ /** rssi_2g_threshold
+ * If connected AP is in 2.4Ghz, then consider bss load roam triggered
+ * only if load % > bss_load_threshold && connected AP rssi is worse
+ * than rssi_2g_threshold.
+ */
+ A_INT32 rssi_2g_threshold; /* units = dbm */
+ /** rssi_5g_threshold
+ * If connected AP is in 5Ghz, then consider bss load roam triggered
+ * only if load % > bss_load_threshold && connected AP rssi is worse
+ * than rssi_5g_threshold.
+ */
+ A_INT32 rssi_5g_threshold; /* units = dbm */
} wmi_roam_bss_load_config_cmd_fixed_param;
+/** Deauth roam trigger parameters */
+typedef struct {
+ A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_roam_deauth_config_cmd_fixed_param */
+ A_UINT32 vdev_id;
+ /* 1-Enable, 0-Disable */
+ A_UINT32 enable;
+} wmi_roam_deauth_config_cmd_fixed_param;
+
+/** IDLE roam trigger parameters */
+typedef struct {
+ A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_roam_idle_config_cmd_fixed_param */
+ A_UINT32 vdev_id;
+ /* 1-Enable, 0-Disable */
+ A_UINT32 enable;
+ /* Connected AP band. 0 - Any Band, 1 - 2.4Ghz Band, 2 - 5Ghz Band */
+ A_UINT32 band;
+ /* Trigger Idle roaming only if rssi change of connected AP is within rssi_delta during idle time */
+ A_UINT32 rssi_delta; /* units = dB */
+ /* Trigger idle roam only if connected RSSI is better than min_rssi */
+ A_INT32 min_rssi; /* units = dBm */
+ /* Inactive/Idle time duration
+ * After screen is OFF (or whatever condition is suitable in a given
+ * system as an indication that the system is likely idle)
+ * and if below conditions are met then idle roaming will be triggered.
+ * 1. Connected AP band is matching with band value configured
+ * 2. No TX/RX data for more than idle_time configured
+ * or TX/RX data packets count is less than data_packet_count
+ * during idle_time
+ * 3. Connected AP rssi change is not more than rssi_delta
+ * 4. Connected AP rssi is better than min_rssi.
+ * The purpose of this trigger for idle scan is to issue the scan
+ * even if (moreover, particularly if) the connection to the
+ * existing AP is still good, to keep the STA from getting locked
+ * onto the current good AP and thus missing out on an available
+ * even better AP. This min_rssi threshold can be used to adjust
+ * the connection quality level at which the STA considers doing an
+ * idle scan.
+ */
+ A_UINT32 idle_time; /* units = seconds */
+ /* Maximum allowed data packets count during idle time */
+ A_UINT32 data_packet_count;
+} wmi_roam_idle_config_cmd_fixed_param;
+
+/** trigger to start/stop monitoring if system is idle command parameters */
+typedef struct {
+ A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_idle_trigger_monitor_cmd_fixed_param */
+ /* idle_trigger_monitor values are from WMI_IDLE_TRIGGER_MONITOR_ID */
+ A_UINT32 idle_trigger_monitor;
+} wmi_idle_trigger_monitor_cmd_fixed_param;
+
+typedef enum {
+ WMI_IDLE_TRIGGER_MONITOR_NONE = 0, /* no-op */
+ /* IDLE_TRIGGER_MONITOR_ON
+ * The host's screen has turned off (or some other event indicating that
+ * the system is likely idle) -
+ * start monitoring to check if the system is idle.
+ */
+ WMI_IDLE_TRIGGER_MONITOR_ON,
+ /* IDLE_TRIGGER_MONITOR_OFF
+ * The host's screen has turned on (or some other event indicating that
+ * the system is not idle)
+ */
+ WMI_IDLE_TRIGGER_MONITOR_OFF,
+} WMI_SCREEN_STATUS_NOTIFY_ID;
+
typedef struct {
/*
* The timestamp is in units of ticks of a 19.2MHz clock.
@@ -25874,6 +26363,100 @@ typedef struct {
#define WMI_HECAP_MAC_HTVHTTRIGRX_SET WMI_HECAP_MAC_HTVHTTRIGRX_SET_D2
#endif /* SUPPORT_11AX_D3 */
+typedef struct {
+ /** TLV tag and len; tag equals
+ * WMITLV_TAG_STRUC_wmi_cfr_capture_event_fixed_param */
+ A_UINT32 tlv_header;
+ /* Method used to capture CFR - of type WMI_PEER_CFR_CAPTURE_METHOD */
+ A_UINT32 capture_method;
+ /* VDEV identifier */
+ A_UINT32 vdev_id;
+ /* Peer MAC address. In AP mode, this is the address of the connected peer
+ * for which CFR capture is needed. In case of STA mode, this is the address
+ * of the AP to which the STA is connected
+ */
+ wmi_mac_addr mac_addr;
+ /* primary 20 MHz channel frequency in mhz */
+ A_UINT32 chan_mhz;
+ /* BW of measurement - of type WMI_PEER_CFR_CAPTURE_BW */
+ A_UINT32 bandwidth;
+ /* phy mode WLAN_PHY_MODE of the channel defined in wlan_defs.h*/
+ A_UINT32 phy_mode;
+ /* Center frequency 1 in MHz*/
+ A_UINT32 band_center_freq1;
+ /* Center frequency 2 in MHz - valid only for 11acvht 80plus80 mode*/
+ A_UINT32 band_center_freq2;
+ /* Number of spatial streams */
+ A_UINT32 sts_count;
+ /* Bits 31:0: address of data from wmi_dma_buf_release_entry [31:0] */
+ A_UINT32 correlation_info_1;
+ /* Bits 11:0: address of data from wmi_dma_buf_release_entry [43:32]
+ * Bits 15:12: reserved (set to 0x0)
+ * Bits 31:16: hardware PPDU ID [15:0]
+ */
+ A_UINT32 correlation_info_2;
+ /* Bits 1:0: TX status (if any); values defined in enum
+ * WMI_FRAME_TX_STATUS
+ * Bits 30:2: reserved (set to 0x0)
+ * Bit 31: Status of the CFR capture of the peer
+ * 1 (True) - Successful; 0 (False) - Not successful
+ */
+ A_UINT32 status;
+ /* Timestamp in microseconds at which the CFR was captured in the hardware.
+ * The clock used for this timestamp is private to the target and
+ * is not visible to the host i.e., Host can interpret only the
+ * relative timestamp deltas from one message to the next,
+ * but can't interpret the absolute timestamp from a single message.
+ */
+ A_UINT32 timestamp_us;
+ /*
+ * Count of the current CFR capture from FW.
+ * This is helpful to identify any drops in FW.
+ */
+ A_UINT32 counter;
+ /* Per chain RSSI of the peer, for up to WMI_MAX_CHAINS.
+ * Each chain's entry reports the RSSI for different bands in dBm units.
+ * Use WMI_UNIFIED_CHAIN_RSSI_GET to extract the value for a particular
+ * band.
+ * A band value of 0x80 (-128) is invalid.
+ */
+ A_UINT32 chain_rssi[WMI_MAX_CHAINS];
+} wmi_peer_cfr_capture_event_fixed_param;
+
+#define WMI_PEER_CFR_CAPTURE_EVT_STATUS_OK 0x80000000
+#define WMI_PEER_CFR_CAPTURE_EVT_STATUS_OK_S 31
+
+#define WMI_PEER_CFR_CAPTURE_EVT_STATUS_TX 0x00000003
+#define WMI_PEER_CFR_CAPTURE_EVT_STATUS_TX_S 0
+
+/**
+ * wmi_cold_boot_cal_data config flags
+ * BIT 0 : 1 means more data will come, 0 means last event
+ * BIT 1-31 : Reserved
+ */
+#define WMI_COLD_BOOT_CAL_DATA_SET_IS_MORE_DATA(flags, val) WMI_SET_BITS(flags, 0, 1, val)
+#define WMI_COLD_BOOT_CAL_DATA_GET_IS_MORE_DATA(flags) WMI_GET_BITS(flags, 0, 1)
+
+typedef struct {
+ A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_cold_boot_cal_data_fixed_param */
+ A_UINT32 data_len; /** length in byte of data[]. */
+ A_UINT32 flags; /** config flags : Only 0th bit is used, bit 1-31 are reserved */
+/* Following this structure is the TLV:
+ * A_UINT8 data[]; <-- length in byte given by field data_len.
+ * This data array contains cold boot data calibration raw data.
+ */
+} wmi_cold_boot_cal_data_fixed_param;
+
+typedef struct {
+ A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_pdev_rap_info_event_fixed_param */
+ /** pdev_id for identifying the MAC, the default value is WMI_PDEV_ID_SOC
+ * See macros starting with WMI_PDEV_ID_ for values.
+ */
+ A_UINT32 pdev_id;
+ A_UINT32 type; /** type of the rogue ap, see WMI_ROGUE_AP_TYPE */
+ wmi_mac_addr bssid; /** bssid of the rogue ap */
+} wmi_pdev_rap_info_event_fixed_param;
+
/* ADD NEW DEFS HERE */
diff --git a/fw/wmi_version.h b/fw/wmi_version.h
index c1c746c9fcb7..7c37323f7d03 100755
--- a/fw/wmi_version.h
+++ b/fw/wmi_version.h
@@ -36,7 +36,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_ 631
+#define __WMI_REVISION_ 653
/** The Version Namespace should not be normally changed. Only
* host and firmware of the same WMI namespace will work