Loading fw/htt.h +190 −10 Original line number Diff line number Diff line Loading @@ -229,9 +229,10 @@ * 3.102 Add HTT_H2T_MSG_TYPE_MSI_SETUP def. * 3.103 Add HTT_T2H_SAWF_MSDUQ_INFO_IND defs. * 3.104 Add mgmt/ctrl/data specs in rx ring cfg. * 3.105 Add HTT_H2T STREAMING_STATS_REQ + HTT_T2H STREAMING_STATS_IND defs. */ #define HTT_CURRENT_VERSION_MAJOR 3 #define HTT_CURRENT_VERSION_MINOR 104 #define HTT_CURRENT_VERSION_MINOR 105 #define HTT_NUM_TX_FRAG_DESC 1024 Loading Loading @@ -697,10 +698,10 @@ typedef enum { HTT_STATS_UNAVAILABLE_ERROR_STATS_TAG = 110, /* htt_stats_error_tlv_v */ HTT_STATS_TX_SELFGEN_AC_SCHED_STATUS_STATS_TAG = 111, /* htt_tx_selfgen_ac_sched_status_stats_tlv */ HTT_STATS_TX_SELFGEN_AX_SCHED_STATUS_STATS_TAG = 112, /* htt_tx_selfgen_ax_sched_status_stats_tlv */ HTT_STATS_TXBF_OFDMA_NDPA_STATS_TAG = 113, /* htt_txbf_ofdma_ndpa_stats_tlv */ HTT_STATS_TXBF_OFDMA_NDP_STATS_TAG = 114, /* htt_txbf_ofdma_ndp_stats_tlv */ HTT_STATS_TXBF_OFDMA_BRP_STATS_TAG = 115, /* htt_txbf_ofdma_brp_stats_tlv */ HTT_STATS_TXBF_OFDMA_STEER_STATS_TAG = 116, /* htt_txbf_ofdma_steer_stats_tlv */ HTT_STATS_TXBF_OFDMA_NDPA_STATS_TAG = 113, /* htt_txbf_ofdma_ndpa_stats_tlv - DEPRECATED */ HTT_STATS_TXBF_OFDMA_NDP_STATS_TAG = 114, /* htt_txbf_ofdma_ndp_stats_tlv - DEPRECATED */ HTT_STATS_TXBF_OFDMA_BRP_STATS_TAG = 115, /* htt_txbf_ofdma_brp_stats_tlv - DEPRECATED */ HTT_STATS_TXBF_OFDMA_STEER_STATS_TAG = 116, /* htt_txbf_ofdma_steer_stats_tlv - DEPRECATED */ HTT_STATS_STA_UL_OFDMA_STATS_TAG = 117, /* htt_sta_ul_ofdma_stats_tlv */ HTT_STATS_VDEV_RTT_RESP_STATS_TAG = 118, /* htt_vdev_rtt_resp_stats_tlv */ HTT_STATS_PKTLOG_AND_HTT_RING_STATS_TAG = 119, /* htt_pktlog_and_htt_ring_stats_tlv */ Loading Loading @@ -729,6 +730,17 @@ typedef enum { HTT_STATS_RX_RING_STATS_TAG = 142, /* htt_rx_fw_ring_stats_tlv_v */ HTT_STATS_RX_PDEV_BE_UL_TRIG_STATS_TAG = 143, /* htt_rx_pdev_be_ul_trigger_stats_tlv */ HTT_STATS_TX_PDEV_SAWF_RATE_STATS_TAG = 144, /* htt_tx_pdev_rate_stats_sawf_tlv */ HTT_STATS_STRM_GEN_MPDUS_TAG = 145, /* htt_stats_strm_gen_mpdus_tlv_t */ HTT_STATS_STRM_GEN_MPDUS_DETAILS_TAG = 146, /* htt_stats_strm_gen_mpdus_details_tlv_t */ HTT_STATS_TXBF_OFDMA_AX_NDPA_STATS_TAG = 147, /* htt_txbf_ofdma_ax_ndpa_stats_tlv */ HTT_STATS_TXBF_OFDMA_AX_NDP_STATS_TAG = 148, /* htt_txbf_ofdma_ax_ndp_stats_tlv */ HTT_STATS_TXBF_OFDMA_AX_BRP_STATS_TAG = 149, /* htt_txbf_ofdma_ax_brp_stats_tlv */ HTT_STATS_TXBF_OFDMA_AX_STEER_STATS_TAG = 150, /* htt_txbf_ofdma_ax_steer_stats_tlv */ HTT_STATS_TXBF_OFDMA_BE_NDPA_STATS_TAG = 151, /* htt_txbf_ofdma_be_ndpa_stats_tlv */ HTT_STATS_TXBF_OFDMA_BE_NDP_STATS_TAG = 152, /* htt_txbf_ofdma_be_ndp_stats_tlv */ HTT_STATS_TXBF_OFDMA_BE_BRP_STATS_TAG = 153, /* htt_txbf_ofdma_be_brp_stats_tlv */ HTT_STATS_TXBF_OFDMA_BE_STEER_STATS_TAG = 154, /* htt_txbf_ofdma_be_steer_stats_tlv */ HTT_STATS_DMAC_RESET_STATS_TAG = 155, /* htt_dmac_reset_stats_tlv */ HTT_STATS_MAX_TAG, Loading Loading @@ -796,6 +808,7 @@ enum htt_h2t_msg_type { HTT_H2T_SAWF_DEF_QUEUES_UNMAP_REQ = 0x1d, HTT_H2T_SAWF_DEF_QUEUES_MAP_REPORT_REQ = 0x1e, HTT_H2T_MSG_TYPE_MSI_SETUP = 0x1f, HTT_H2T_MSG_TYPE_STREAMING_STATS_REQ = 0x20, /* keep this last */ HTT_H2T_NUM_MSGS Loading Loading @@ -5572,7 +5585,15 @@ enum htt_srng_ring_id { * 010 - 128bytes * 100 - 256bytes * 111 - Full mpdu bytes * b'25:31 - rsvd2: Reserved for future use * b'25:26 - rx_hdr_len: * Specifies the number of bytes of recvd packet to copy * into the rx_hdr tlv. * supported values for now by host: * 01 - 64bytes * 10 - 128bytes * 11 - 256bytes * default - 128 bytes * b'27:31 - rsvd2: Reserved for future use * dword2 - b'0:31 - packet_type_enable_flags_0: * Enable MGMT packet from 0b0000 to 0b1001 * bits from low to high: FP, MD, MO - 3 bits Loading Loading @@ -5710,7 +5731,8 @@ PREPACK struct htt_rx_ring_selection_cfg_t { config_length_mgmt:3, config_length_ctrl:3, config_length_data:3, rsvd2: 7; rx_hdr_len: 2, rsvd2: 5; A_UINT32 packet_type_enable_flags_0; A_UINT32 packet_type_enable_flags_1; A_UINT32 packet_type_enable_flags_2; Loading Loading @@ -5873,6 +5895,16 @@ PREPACK struct htt_rx_ring_selection_cfg_t { ((_var) |= ((_val) << HTT_RX_RING_SELECTION_CFG_CONFIG_LENGTH_DATA_S)); \ } while (0) #define HTT_RX_RING_SELECTION_CFG_RX_HDR_LEN_M 0x06000000 #define HTT_RX_RING_SELECTION_CFG_RX_HDR_LEN_S 25 #define HTT_RX_RING_SELECTION_CFG_RX_HDR_LEN_GET(_var) \ (((_var) & HTT_RX_RING_SELECTION_CFG_RX_HDR_LEN_M) >> \ HTT_RX_RING_SELECTION_CFG_RX_HDR_LEN_S) #define HTT_RX_RING_SELECTION_CFG_RX_HDR_LEN_SET(_var, _val) \ do { \ HTT_CHECK_SET_VAL( HTT_RX_RING_SELECTION_CFG_RX_HDR_LEN, _val); \ ((_var) |= ((_val) << HTT_RX_RING_SELECTION_CFG_RX_HDR_LEN_S));\ } while(0) #define HTT_RX_RING_SELECTION_CFG_PKT_TYPE_ENABLE_FLAG_0_M 0xffffffff #define HTT_RX_RING_SELECTION_CFG_PKT_TYPE_ENABLE_FLAG_0_S 0 Loading Loading @@ -6647,6 +6679,9 @@ PREPACK struct htt_rx_ring_selection_cfg_t { #define HTT_RX_RING_SELECTION_CFG_TLV_FILTER_IN_FLAG_RX_PPDU_END_STATUS_DONE_M 0x00001000 #define HTT_RX_RING_SELECTION_CFG_TLV_FILTER_IN_FLAG_RX_PPDU_END_STATUS_DONE_S 12 #define HTT_RX_RING_SELECTION_CFG_TLV_FILTER_IN_FLAG_RX_PPDU_START_USER_INFO_M 0x00002000 #define HTT_RX_RING_SELECTION_CFG_TLV_FILTER_IN_FLAG_RX_PPDU_START_USER_INFO_S 13 #define HTT_RX_RING_TLV_ENABLE_SET(word, httsym, enable) \ do { \ HTT_CHECK_SET_VAL(httsym, enable); \ Loading Loading @@ -7789,7 +7824,7 @@ PREPACK struct htt_tx_monitor_cfg_t { /** * @brief host -> target FW extended statistics retrieve * @brief host -> target FW extended statistics request * * MSG_TYPE => HTT_H2T_MSG_TYPE_EXT_STATS_REQ * Loading Loading @@ -7906,6 +7941,95 @@ PREPACK struct htt_tx_monitor_cfg_t { ((_var) |= ((_val) << HTT_H2T_EXT_STATS_REQ_CONFIG_PARAM_S)); \ } while (0) /** * @brief host -> target FW streaming statistics request * * MSG_TYPE => HTT_H2T_MSG_TYPE_STREAMING_STATS_REQ * * @details * The following field definitions describe the format of the HTT host * to target message that requests the target to start or stop producing * ongoing stats of the specified type. * * |31|30 |23 16|15 8|7 0| * |-----------------------------------------------------------| * |EN| reserved | stats type | reserved | msg type | * |-----------------------------------------------------------| * | config param [0] | * |-----------------------------------------------------------| * | config param [1] | * |-----------------------------------------------------------| * | config param [2] | * |-----------------------------------------------------------| * | config param [3] | * |-----------------------------------------------------------| * Where: * - EN is an enable/disable flag * Header fields: * - MSG_TYPE * Bits 7:0 * Purpose: identifies this is a streaming stats upload request message * Value: 0x20 (HTT_H2T_MSG_TYPE_STREAMING_STATS_REQ) * - STATS_TYPE * Bits 23:16 * Purpose: identifies which FW statistics to upload * Value: Defined by htt_dbg_ext_stats_type (see htt_stats.h) * Only the htt_dbg_ext_stats_type values identified as streaming * stats are valid to specify in this STEAMING_STATS_REQ message. * - ENABLE * Bit 31 * Purpose: enable/disable the target's ongoing stats of the specified type * Value: * 0 - disable ongoing production of the specified stats type * 1 - enable ongoing production of the specified stats type * - CONFIG_PARAM [0] * Bits 31:0 * Purpose: give an opaque configuration value to the specified stats type * Value: stats-type specific configuration value * Refer to htt_stats.h for interpretation for each stats sub_type * - CONFIG_PARAM [1] * Bits 31:0 * Purpose: give an opaque configuration value to the specified stats type * Value: stats-type specific configuration value * Refer to htt_stats.h for interpretation for each stats sub_type * - CONFIG_PARAM [2] * Bits 31:0 * Purpose: give an opaque configuration value to the specified stats type * Value: stats-type specific configuration value * Refer to htt_stats.h for interpretation for each stats sub_type * - CONFIG_PARAM [3] * Bits 31:0 * Purpose: give an opaque configuration value to the specified stats type * Value: stats-type specific configuration value * Refer to htt_stats.h for interpretation for each stats sub_type */ #define HTT_H2T_STREAMING_STATS_REQ_MSG_SZ 20 /* bytes */ #define HTT_H2T_STREAMING_STATS_REQ_STATS_TYPE_M 0x00ff0000 #define HTT_H2T_STREAMING_STATS_REQ_STATS_TYPE_S 16 #define HTT_H2T_STREAMING_STATS_REQ_ENABLE_M 0x80000000 #define HTT_H2T_STREAMING_STATS_REQ_ENABLE_S 31 #define HTT_H2T_STREAMING_STATS_REQ_STATS_TYPE_GET(_var) \ (((_var) & HTT_H2T_STREAMING_STATS_REQ_STATS_TYPE_M) >> \ HTT_H2T_STREAMING_STATS_REQ_STATS_TYPE_S) #define HTT_H2T_STREAMING_STATS_REQ_STATS_TYPE_SET(_var, _val) \ do { \ HTT_CHECK_SET_VAL(HTT_H2T_STREAMING_STATS_REQ_STATS_TYPE, _val); \ ((_var) |= ((_val) << HTT_H2T_STREAMING_STATS_REQ_STATS_TYPE_S)); \ } while (0) #define HTT_H2T_STREAMING_STATS_REQ_ENABLE_GET(_var) \ (((_var) & HTT_H2T_STREAMING_STATS_REQ_ENABLE_M) >> \ HTT_H2T_STREAMING_STATS_REQ_ENABLE_S) #define HTT_H2T_STREAMING_STATS_REQ_ENABLE_SET(_var, _val) \ do { \ HTT_CHECK_SET_VAL(HTT_H2T_STREAMING_STATS_REQ_ENABLE, _val); \ ((_var) |= ((_val) << HTT_H2T_STREAMING_STATS_REQ_ENABLE_S)); \ } while (0) /** * @brief host -> target FW PPDU_STATS request message * Loading Loading @@ -9532,8 +9656,11 @@ enum htt_t2h_msg_type { HTT_T2H_MSG_TYPE_MLO_RX_PEER_UNMAP = 0x2a, HTT_T2H_MSG_TYPE_PEER_MAP_V3 = 0x2b, HTT_T2H_MSG_TYPE_VDEVS_TXRX_STATS_PERIODIC_IND = 0x2c, HTT_T2H_SAWF_DEF_QUEUES_MAP_REPORT_CONF = 0x2d, HTT_T2H_SAWF_MSDUQ_INFO_IND = 0x2e, HTT_T2H_MSG_TYPE_SAWF_DEF_QUEUES_MAP_REPORT_CONF = 0x2d, HTT_T2H_SAWF_DEF_QUEUES_MAP_REPORT_CONF = 0x2d, /* alias */ HTT_T2H_MSG_TYPE_SAWF_MSDUQ_INFO_IND = 0x2e, HTT_T2H_SAWF_MSDUQ_INFO_IND = 0x2e, /* alias */ HTT_T2H_MSG_TYPE_STREAMING_STATS_IND = 0x2f, HTT_T2H_MSG_TYPE_TEST, Loading Loading @@ -15919,6 +16046,40 @@ typedef struct { (((word) & HTT_T2H_EXT_STATS_CONF_TLV_LENGTH_M) >> \ HTT_T2H_EXT_STATS_CONF_TLV_LENGTH_S) /** * @brief target -> host streaming statistics upload * * MSG_TYPE => HTT_T2H_MSG_TYPE_STREAMING_STATS_IND * * @details * The following field definitions describe the format of the HTT target * to host streaming stats upload indication message. * The host can use a STREAMING_STATS_REQ message to enable the target to * produce an ongoing series of STREAMING_STATS_IND messages, and can also * use the STREAMING_STATS_REQ message to halt the target's production of * STREAMING_STATS_IND messages. * The STREAMING_STATS_IND message contains a payload of TLVs containing * the stats enabled by the host's STREAMING_STATS_REQ message. * * |31 8|7 0| * |--------------------------------------------------------------| * | reserved | msg type | * |--------------------------------------------------------------| * | type-specific stats info | * | (see htt_stats.h) | * |--------------------------------------------------------------| * Header fields: * - MSG_TYPE * Bits 7:0 * Purpose: Identifies this as a streaming statistics upload indication * message. * Value: 0x2f (HTT_T2H_MSG_TYPE_STREAMING_STATS_IND) */ #define HTT_T2H_STREAMING_STATS_IND_HDR_SIZE 4 typedef enum { HTT_PEER_TYPE_DEFAULT = 0, /* Generic/Non-BSS/Self Peer */ HTT_PEER_TYPE_BSS = 1, /* Peer is BSS Peer entry */ Loading Loading @@ -17996,6 +18157,14 @@ typedef struct { /* discarded tx msdus byte cnt coz of time to live expiry */ A_UINT32 tx_msdu_ttl_expire_drop_byte_cnt_lo; A_UINT32 tx_msdu_ttl_expire_drop_byte_cnt_hi; /* TQM bypass frame cnt */ A_UINT32 tqm_bypass_frame_cnt_lo; A_UINT32 tqm_bypass_frame_cnt_hi; /* TQM bypass byte cnt */ A_UINT32 tqm_bypass_byte_cnt_lo; A_UINT32 tqm_bypass_byte_cnt_hi; } htt_t2h_vdev_txrx_stats_hw_stats_tlv; /* Loading Loading @@ -18231,5 +18400,16 @@ PREPACK struct htt_t2h_sawf_msduq_event { ((_var) |= ((_val) << HTT_T2H_SAWF_MSDUQ_INFO_HTT_AST_LIST_IDX_S)); \ } while (0) #define HTT_T2H_SAWF_MSDUQ_INFO_HTT_TGT_OPAQUE_ID_M 0x00FFFFFF #define HTT_T2H_SAWF_MSDUQ_INFO_HTT_TGT_OPAQUE_ID_S 0 #define HTT_T2H_SAWF_MSDUQ_INFO_HTT_TGT_OPAQUE_ID_GET(_var) \ (((_var) & HTT_T2H_SAWF_MSDUQ_INFO_HTT_TGT_OPAQUE_ID) >> \ HTT_T2H_SAWF_MSDUQ_INFO_HTT_TGT_OPAQUE_ID_S) #define HTT_T2H_SAWF_MSDUQ_INFO_HTT_TGT_OPAQUE_ID_SET(_var, _val) \ do { \ HTT_CHECK_SET_VAL(HTT_T2H_SAWF_MSDUQ_INFO_HTT_TGT_OPAQUE_ID, _val); \ ((_var) |= ((_val) << HTT_T2H_SAWF_MSDUQ_INFO_HTT_TGT_OPAQUE_ID_S)); \ } while (0) #endif fw/htt_ppdu_stats.h +142 −3 Original line number Diff line number Diff line Loading @@ -1571,6 +1571,144 @@ typedef enum HTT_PPDU_STATS_RESP_PPDU_TYPE HTT_PPDU_STATS_RESP_PPDU_TYPE; ((_var) |= ((_val) << HTT_PPDU_STATS_USER_RATE_TLV_RESP_PPDU_TYPE_S)); \ } while (0) #define HTT_PPDU_STATS_USER_RATE_TLV_RU_FORMAT_M 0x0000f000 #define HTT_PPDU_STATS_USER_RATE_TLV_RU_FORMAT_S 12 #define HTT_PPDU_STATS_USER_RATE_TLV_RU_FORMAT_GET(_var) \ (((_var) & HTT_PPDU_STATS_USER_RATE_TLV_RU_FORMAT_M) >> \ HTT_PPDU_STATS_USER_RATE_TLV_RU_FORMAT_S) #define HTT_PPDU_STATS_USER_RATE_TLV_RU_FORMAT_SET(_var, _val) \ do { \ HTT_CHECK_SET_VAL(HTT_PPDU_STATS_USER_RATE_TLV_RU_FORMAT, _val); \ ((_var) |= ((_val) << HTT_PPDU_STATS_USER_RATE_TLV_RU_FORMAT_S)); \ } while (0) #define HTT_PPDU_STATS_USER_RATE_TLV_RU_END_M 0x0000ffff #define HTT_PPDU_STATS_USER_RATE_TLV_RU_END_S 0 #define HTT_PPDU_STATS_USER_RATE_TLV_RU_END_GET(_var) \ (((_var) & HTT_PPDU_STATS_USER_RATE_TLV_RU_END_M) >> \ HTT_PPDU_STATS_USER_RATE_TLV_RU_END_S) #define HTT_PPDU_STATS_USER_RATE_TLV_RU_END_SET(_var, _val) \ do { \ HTT_CHECK_SET_VAL(HTT_PPDU_STATS_USER_RATE_TLV_RU_END, _val); \ ((_var) |= ((_val) << HTT_PPDU_STATS_USER_RATE_TLV_RU_END_S)); \ } while (0) #define HTT_PPDU_STATS_USER_RATE_TLV_RU_START_M 0xffff0000 #define HTT_PPDU_STATS_USER_RATE_TLV_RU_START_S 16 #define HTT_PPDU_STATS_USER_RATE_TLV_RU_START_GET(_var) \ (((_var) & HTT_PPDU_STATS_USER_RATE_TLV_RU_START_M) >> \ HTT_PPDU_STATS_USER_RATE_TLV_RU_START_S) #define HTT_PPDU_STATS_USER_RATE_TLV_RU_START_SET(_var, _val) \ do { \ HTT_CHECK_SET_VAL(HTT_PPDU_STATS_USER_RATE_TLV_RU_START, _val); \ ((_var) |= ((_val) << HTT_PPDU_STATS_USER_RATE_TLV_RU_START_S)); \ } while (0) #define HTT_PPDU_STATS_USER_RATE_TLV_RU_INDEX_M 0x0000ffff #define HTT_PPDU_STATS_USER_RATE_TLV_RU_INDEX_S 0 #define HTT_PPDU_STATS_USER_RATE_TLV_RU_INDEX_GET(_var) \ (((_var) & HTT_PPDU_STATS_USER_RATE_TLV_RU_INDEX_M) >> \ HTT_PPDU_STATS_USER_RATE_TLV_RU_INDEX_S) #define HTT_PPDU_STATS_USER_RATE_TLV_RU_INDEX_SET(_var, _val) \ do { \ HTT_CHECK_SET_VAL(HTT_PPDU_STATS_USER_RATE_TLV_RU_INDEX, _val); \ ((_var) |= ((_val) << HTT_PPDU_STATS_USER_RATE_TLV_RU_INDEX_S)); \ } while (0) #define HTT_PPDU_STATS_USER_RATE_TLV_RU_SIZE_M 0xffff0000 #define HTT_PPDU_STATS_USER_RATE_TLV_RU_SIZE_S 16 #define HTT_PPDU_STATS_USER_RATE_TLV_RU_SIZE_GET(_var) \ (((_var) & HTT_PPDU_STATS_USER_RATE_TLV_RU_SIZE_M) >> \ HTT_PPDU_STATS_USER_RATE_TLV_RU_SIZE_S) #define HTT_PPDU_STATS_USER_RATE_TLV_RU_SIZE_SET(_var, _val) \ do { \ HTT_CHECK_SET_VAL(HTT_PPDU_STATS_USER_RATE_TLV_RU_SIZE, _val); \ ((_var) |= ((_val) << HTT_PPDU_STATS_USER_RATE_TLV_RU_SIZE_S)); \ } while (0) #define HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_END_M 0x0000ffff #define HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_END_S 0 #define HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_END_GET(_var) \ (((_var) & HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_END_M) >> \ HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_END_S) #define HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_END_SET(_var, _val) \ do { \ HTT_CHECK_SET_VAL(HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_END, _val); \ ((_var) |= ((_val) << HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_END_S)); \ } while (0) #define HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_START_M 0xffff0000 #define HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_START_S 16 #define HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_START_GET(_var) \ (((_var) & HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_START_M) >> \ HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_START_S) #define HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_START_SET(_var, _val) \ do { \ HTT_CHECK_SET_VAL(HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_START, _val); \ ((_var) |= ((_val) << HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_START_S)); \ } while (0) #define HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_INDEX_M 0x0000ffff #define HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_INDEX_S 0 #define HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_INDEX_GET(_var) \ (((_var) & HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_INDEX_M) >> \ HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_INDEX_S) #define HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_INDEX_SET(_var, _val) \ do { \ HTT_CHECK_SET_VAL(HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_INDEX, _val); \ ((_var) |= ((_val) << HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_INDEX_S)); \ } while (0) #define HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_SIZE_M 0xffff0000 #define HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_SIZE_S 16 #define HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_SIZE_GET(_var) \ (((_var) & HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_SIZE_M) >> \ HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_SIZE_S) #define HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_SIZE_SET(_var, _val) \ do { \ HTT_CHECK_SET_VAL(HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_SIZE, _val); \ ((_var) |= ((_val) << HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_SIZE_S)); \ } while (0) #define HTT_PPDU_STATS_USER_RATE_TLV_PUNC_PATTERN_BITMAP_M 0x0000ffff #define HTT_PPDU_STATS_USER_RATE_TLV_PUNC_PATTERN_BITMAP_S 0 #define HTT_PPDU_STATS_USER_RATE_TLV_PUNC_PATTERN_BITMAP_GET(_var) \ (((_var) & HTT_PPDU_STATS_USER_RATE_TLV_PUNC_PATTERN_BITMAP_M) >> \ HTT_PPDU_STATS_USER_RATE_TLV_PUNC_PATTERN_BITMAP_S) #define HTT_PPDU_STATS_USER_RATE_TLV_PUNC_PATTERN_BITMAP_SET (_var , _val) \ do { \ HTT_CHECK_SET_VAL(HTT_PPDU_STATS_USER_RATE_TLV_PUNC_PATTERN_BITMAP, _val); \ ((_var) |= ((_val) << HTT_PPDU_STATS_USER_RATE_TLV_PUNC_PATTERN_BITMAP_S)); \ } while (0) typedef enum HTT_PPDU_STATS_RU_SIZE { HTT_PPDU_STATS_RU_26, HTT_PPDU_STATS_RU_52, Loading Loading @@ -1754,10 +1892,11 @@ typedef struct { }; /* * This is an unused word that can be safely renamed / used * by any future feature. * BIT [15:0] :- Punctured BW bitmap pattern to indicate which BWs are * punctured. */ A_UINT32 reserved4; A_UINT32 punc_pattern_bitmap: 16, reserved4: 16; } htt_ppdu_stats_user_rate_tlv; #define HTT_PPDU_STATS_USR_RATE_VALID_M 0x80000000 Loading Loading
fw/htt.h +190 −10 Original line number Diff line number Diff line Loading @@ -229,9 +229,10 @@ * 3.102 Add HTT_H2T_MSG_TYPE_MSI_SETUP def. * 3.103 Add HTT_T2H_SAWF_MSDUQ_INFO_IND defs. * 3.104 Add mgmt/ctrl/data specs in rx ring cfg. * 3.105 Add HTT_H2T STREAMING_STATS_REQ + HTT_T2H STREAMING_STATS_IND defs. */ #define HTT_CURRENT_VERSION_MAJOR 3 #define HTT_CURRENT_VERSION_MINOR 104 #define HTT_CURRENT_VERSION_MINOR 105 #define HTT_NUM_TX_FRAG_DESC 1024 Loading Loading @@ -697,10 +698,10 @@ typedef enum { HTT_STATS_UNAVAILABLE_ERROR_STATS_TAG = 110, /* htt_stats_error_tlv_v */ HTT_STATS_TX_SELFGEN_AC_SCHED_STATUS_STATS_TAG = 111, /* htt_tx_selfgen_ac_sched_status_stats_tlv */ HTT_STATS_TX_SELFGEN_AX_SCHED_STATUS_STATS_TAG = 112, /* htt_tx_selfgen_ax_sched_status_stats_tlv */ HTT_STATS_TXBF_OFDMA_NDPA_STATS_TAG = 113, /* htt_txbf_ofdma_ndpa_stats_tlv */ HTT_STATS_TXBF_OFDMA_NDP_STATS_TAG = 114, /* htt_txbf_ofdma_ndp_stats_tlv */ HTT_STATS_TXBF_OFDMA_BRP_STATS_TAG = 115, /* htt_txbf_ofdma_brp_stats_tlv */ HTT_STATS_TXBF_OFDMA_STEER_STATS_TAG = 116, /* htt_txbf_ofdma_steer_stats_tlv */ HTT_STATS_TXBF_OFDMA_NDPA_STATS_TAG = 113, /* htt_txbf_ofdma_ndpa_stats_tlv - DEPRECATED */ HTT_STATS_TXBF_OFDMA_NDP_STATS_TAG = 114, /* htt_txbf_ofdma_ndp_stats_tlv - DEPRECATED */ HTT_STATS_TXBF_OFDMA_BRP_STATS_TAG = 115, /* htt_txbf_ofdma_brp_stats_tlv - DEPRECATED */ HTT_STATS_TXBF_OFDMA_STEER_STATS_TAG = 116, /* htt_txbf_ofdma_steer_stats_tlv - DEPRECATED */ HTT_STATS_STA_UL_OFDMA_STATS_TAG = 117, /* htt_sta_ul_ofdma_stats_tlv */ HTT_STATS_VDEV_RTT_RESP_STATS_TAG = 118, /* htt_vdev_rtt_resp_stats_tlv */ HTT_STATS_PKTLOG_AND_HTT_RING_STATS_TAG = 119, /* htt_pktlog_and_htt_ring_stats_tlv */ Loading Loading @@ -729,6 +730,17 @@ typedef enum { HTT_STATS_RX_RING_STATS_TAG = 142, /* htt_rx_fw_ring_stats_tlv_v */ HTT_STATS_RX_PDEV_BE_UL_TRIG_STATS_TAG = 143, /* htt_rx_pdev_be_ul_trigger_stats_tlv */ HTT_STATS_TX_PDEV_SAWF_RATE_STATS_TAG = 144, /* htt_tx_pdev_rate_stats_sawf_tlv */ HTT_STATS_STRM_GEN_MPDUS_TAG = 145, /* htt_stats_strm_gen_mpdus_tlv_t */ HTT_STATS_STRM_GEN_MPDUS_DETAILS_TAG = 146, /* htt_stats_strm_gen_mpdus_details_tlv_t */ HTT_STATS_TXBF_OFDMA_AX_NDPA_STATS_TAG = 147, /* htt_txbf_ofdma_ax_ndpa_stats_tlv */ HTT_STATS_TXBF_OFDMA_AX_NDP_STATS_TAG = 148, /* htt_txbf_ofdma_ax_ndp_stats_tlv */ HTT_STATS_TXBF_OFDMA_AX_BRP_STATS_TAG = 149, /* htt_txbf_ofdma_ax_brp_stats_tlv */ HTT_STATS_TXBF_OFDMA_AX_STEER_STATS_TAG = 150, /* htt_txbf_ofdma_ax_steer_stats_tlv */ HTT_STATS_TXBF_OFDMA_BE_NDPA_STATS_TAG = 151, /* htt_txbf_ofdma_be_ndpa_stats_tlv */ HTT_STATS_TXBF_OFDMA_BE_NDP_STATS_TAG = 152, /* htt_txbf_ofdma_be_ndp_stats_tlv */ HTT_STATS_TXBF_OFDMA_BE_BRP_STATS_TAG = 153, /* htt_txbf_ofdma_be_brp_stats_tlv */ HTT_STATS_TXBF_OFDMA_BE_STEER_STATS_TAG = 154, /* htt_txbf_ofdma_be_steer_stats_tlv */ HTT_STATS_DMAC_RESET_STATS_TAG = 155, /* htt_dmac_reset_stats_tlv */ HTT_STATS_MAX_TAG, Loading Loading @@ -796,6 +808,7 @@ enum htt_h2t_msg_type { HTT_H2T_SAWF_DEF_QUEUES_UNMAP_REQ = 0x1d, HTT_H2T_SAWF_DEF_QUEUES_MAP_REPORT_REQ = 0x1e, HTT_H2T_MSG_TYPE_MSI_SETUP = 0x1f, HTT_H2T_MSG_TYPE_STREAMING_STATS_REQ = 0x20, /* keep this last */ HTT_H2T_NUM_MSGS Loading Loading @@ -5572,7 +5585,15 @@ enum htt_srng_ring_id { * 010 - 128bytes * 100 - 256bytes * 111 - Full mpdu bytes * b'25:31 - rsvd2: Reserved for future use * b'25:26 - rx_hdr_len: * Specifies the number of bytes of recvd packet to copy * into the rx_hdr tlv. * supported values for now by host: * 01 - 64bytes * 10 - 128bytes * 11 - 256bytes * default - 128 bytes * b'27:31 - rsvd2: Reserved for future use * dword2 - b'0:31 - packet_type_enable_flags_0: * Enable MGMT packet from 0b0000 to 0b1001 * bits from low to high: FP, MD, MO - 3 bits Loading Loading @@ -5710,7 +5731,8 @@ PREPACK struct htt_rx_ring_selection_cfg_t { config_length_mgmt:3, config_length_ctrl:3, config_length_data:3, rsvd2: 7; rx_hdr_len: 2, rsvd2: 5; A_UINT32 packet_type_enable_flags_0; A_UINT32 packet_type_enable_flags_1; A_UINT32 packet_type_enable_flags_2; Loading Loading @@ -5873,6 +5895,16 @@ PREPACK struct htt_rx_ring_selection_cfg_t { ((_var) |= ((_val) << HTT_RX_RING_SELECTION_CFG_CONFIG_LENGTH_DATA_S)); \ } while (0) #define HTT_RX_RING_SELECTION_CFG_RX_HDR_LEN_M 0x06000000 #define HTT_RX_RING_SELECTION_CFG_RX_HDR_LEN_S 25 #define HTT_RX_RING_SELECTION_CFG_RX_HDR_LEN_GET(_var) \ (((_var) & HTT_RX_RING_SELECTION_CFG_RX_HDR_LEN_M) >> \ HTT_RX_RING_SELECTION_CFG_RX_HDR_LEN_S) #define HTT_RX_RING_SELECTION_CFG_RX_HDR_LEN_SET(_var, _val) \ do { \ HTT_CHECK_SET_VAL( HTT_RX_RING_SELECTION_CFG_RX_HDR_LEN, _val); \ ((_var) |= ((_val) << HTT_RX_RING_SELECTION_CFG_RX_HDR_LEN_S));\ } while(0) #define HTT_RX_RING_SELECTION_CFG_PKT_TYPE_ENABLE_FLAG_0_M 0xffffffff #define HTT_RX_RING_SELECTION_CFG_PKT_TYPE_ENABLE_FLAG_0_S 0 Loading Loading @@ -6647,6 +6679,9 @@ PREPACK struct htt_rx_ring_selection_cfg_t { #define HTT_RX_RING_SELECTION_CFG_TLV_FILTER_IN_FLAG_RX_PPDU_END_STATUS_DONE_M 0x00001000 #define HTT_RX_RING_SELECTION_CFG_TLV_FILTER_IN_FLAG_RX_PPDU_END_STATUS_DONE_S 12 #define HTT_RX_RING_SELECTION_CFG_TLV_FILTER_IN_FLAG_RX_PPDU_START_USER_INFO_M 0x00002000 #define HTT_RX_RING_SELECTION_CFG_TLV_FILTER_IN_FLAG_RX_PPDU_START_USER_INFO_S 13 #define HTT_RX_RING_TLV_ENABLE_SET(word, httsym, enable) \ do { \ HTT_CHECK_SET_VAL(httsym, enable); \ Loading Loading @@ -7789,7 +7824,7 @@ PREPACK struct htt_tx_monitor_cfg_t { /** * @brief host -> target FW extended statistics retrieve * @brief host -> target FW extended statistics request * * MSG_TYPE => HTT_H2T_MSG_TYPE_EXT_STATS_REQ * Loading Loading @@ -7906,6 +7941,95 @@ PREPACK struct htt_tx_monitor_cfg_t { ((_var) |= ((_val) << HTT_H2T_EXT_STATS_REQ_CONFIG_PARAM_S)); \ } while (0) /** * @brief host -> target FW streaming statistics request * * MSG_TYPE => HTT_H2T_MSG_TYPE_STREAMING_STATS_REQ * * @details * The following field definitions describe the format of the HTT host * to target message that requests the target to start or stop producing * ongoing stats of the specified type. * * |31|30 |23 16|15 8|7 0| * |-----------------------------------------------------------| * |EN| reserved | stats type | reserved | msg type | * |-----------------------------------------------------------| * | config param [0] | * |-----------------------------------------------------------| * | config param [1] | * |-----------------------------------------------------------| * | config param [2] | * |-----------------------------------------------------------| * | config param [3] | * |-----------------------------------------------------------| * Where: * - EN is an enable/disable flag * Header fields: * - MSG_TYPE * Bits 7:0 * Purpose: identifies this is a streaming stats upload request message * Value: 0x20 (HTT_H2T_MSG_TYPE_STREAMING_STATS_REQ) * - STATS_TYPE * Bits 23:16 * Purpose: identifies which FW statistics to upload * Value: Defined by htt_dbg_ext_stats_type (see htt_stats.h) * Only the htt_dbg_ext_stats_type values identified as streaming * stats are valid to specify in this STEAMING_STATS_REQ message. * - ENABLE * Bit 31 * Purpose: enable/disable the target's ongoing stats of the specified type * Value: * 0 - disable ongoing production of the specified stats type * 1 - enable ongoing production of the specified stats type * - CONFIG_PARAM [0] * Bits 31:0 * Purpose: give an opaque configuration value to the specified stats type * Value: stats-type specific configuration value * Refer to htt_stats.h for interpretation for each stats sub_type * - CONFIG_PARAM [1] * Bits 31:0 * Purpose: give an opaque configuration value to the specified stats type * Value: stats-type specific configuration value * Refer to htt_stats.h for interpretation for each stats sub_type * - CONFIG_PARAM [2] * Bits 31:0 * Purpose: give an opaque configuration value to the specified stats type * Value: stats-type specific configuration value * Refer to htt_stats.h for interpretation for each stats sub_type * - CONFIG_PARAM [3] * Bits 31:0 * Purpose: give an opaque configuration value to the specified stats type * Value: stats-type specific configuration value * Refer to htt_stats.h for interpretation for each stats sub_type */ #define HTT_H2T_STREAMING_STATS_REQ_MSG_SZ 20 /* bytes */ #define HTT_H2T_STREAMING_STATS_REQ_STATS_TYPE_M 0x00ff0000 #define HTT_H2T_STREAMING_STATS_REQ_STATS_TYPE_S 16 #define HTT_H2T_STREAMING_STATS_REQ_ENABLE_M 0x80000000 #define HTT_H2T_STREAMING_STATS_REQ_ENABLE_S 31 #define HTT_H2T_STREAMING_STATS_REQ_STATS_TYPE_GET(_var) \ (((_var) & HTT_H2T_STREAMING_STATS_REQ_STATS_TYPE_M) >> \ HTT_H2T_STREAMING_STATS_REQ_STATS_TYPE_S) #define HTT_H2T_STREAMING_STATS_REQ_STATS_TYPE_SET(_var, _val) \ do { \ HTT_CHECK_SET_VAL(HTT_H2T_STREAMING_STATS_REQ_STATS_TYPE, _val); \ ((_var) |= ((_val) << HTT_H2T_STREAMING_STATS_REQ_STATS_TYPE_S)); \ } while (0) #define HTT_H2T_STREAMING_STATS_REQ_ENABLE_GET(_var) \ (((_var) & HTT_H2T_STREAMING_STATS_REQ_ENABLE_M) >> \ HTT_H2T_STREAMING_STATS_REQ_ENABLE_S) #define HTT_H2T_STREAMING_STATS_REQ_ENABLE_SET(_var, _val) \ do { \ HTT_CHECK_SET_VAL(HTT_H2T_STREAMING_STATS_REQ_ENABLE, _val); \ ((_var) |= ((_val) << HTT_H2T_STREAMING_STATS_REQ_ENABLE_S)); \ } while (0) /** * @brief host -> target FW PPDU_STATS request message * Loading Loading @@ -9532,8 +9656,11 @@ enum htt_t2h_msg_type { HTT_T2H_MSG_TYPE_MLO_RX_PEER_UNMAP = 0x2a, HTT_T2H_MSG_TYPE_PEER_MAP_V3 = 0x2b, HTT_T2H_MSG_TYPE_VDEVS_TXRX_STATS_PERIODIC_IND = 0x2c, HTT_T2H_SAWF_DEF_QUEUES_MAP_REPORT_CONF = 0x2d, HTT_T2H_SAWF_MSDUQ_INFO_IND = 0x2e, HTT_T2H_MSG_TYPE_SAWF_DEF_QUEUES_MAP_REPORT_CONF = 0x2d, HTT_T2H_SAWF_DEF_QUEUES_MAP_REPORT_CONF = 0x2d, /* alias */ HTT_T2H_MSG_TYPE_SAWF_MSDUQ_INFO_IND = 0x2e, HTT_T2H_SAWF_MSDUQ_INFO_IND = 0x2e, /* alias */ HTT_T2H_MSG_TYPE_STREAMING_STATS_IND = 0x2f, HTT_T2H_MSG_TYPE_TEST, Loading Loading @@ -15919,6 +16046,40 @@ typedef struct { (((word) & HTT_T2H_EXT_STATS_CONF_TLV_LENGTH_M) >> \ HTT_T2H_EXT_STATS_CONF_TLV_LENGTH_S) /** * @brief target -> host streaming statistics upload * * MSG_TYPE => HTT_T2H_MSG_TYPE_STREAMING_STATS_IND * * @details * The following field definitions describe the format of the HTT target * to host streaming stats upload indication message. * The host can use a STREAMING_STATS_REQ message to enable the target to * produce an ongoing series of STREAMING_STATS_IND messages, and can also * use the STREAMING_STATS_REQ message to halt the target's production of * STREAMING_STATS_IND messages. * The STREAMING_STATS_IND message contains a payload of TLVs containing * the stats enabled by the host's STREAMING_STATS_REQ message. * * |31 8|7 0| * |--------------------------------------------------------------| * | reserved | msg type | * |--------------------------------------------------------------| * | type-specific stats info | * | (see htt_stats.h) | * |--------------------------------------------------------------| * Header fields: * - MSG_TYPE * Bits 7:0 * Purpose: Identifies this as a streaming statistics upload indication * message. * Value: 0x2f (HTT_T2H_MSG_TYPE_STREAMING_STATS_IND) */ #define HTT_T2H_STREAMING_STATS_IND_HDR_SIZE 4 typedef enum { HTT_PEER_TYPE_DEFAULT = 0, /* Generic/Non-BSS/Self Peer */ HTT_PEER_TYPE_BSS = 1, /* Peer is BSS Peer entry */ Loading Loading @@ -17996,6 +18157,14 @@ typedef struct { /* discarded tx msdus byte cnt coz of time to live expiry */ A_UINT32 tx_msdu_ttl_expire_drop_byte_cnt_lo; A_UINT32 tx_msdu_ttl_expire_drop_byte_cnt_hi; /* TQM bypass frame cnt */ A_UINT32 tqm_bypass_frame_cnt_lo; A_UINT32 tqm_bypass_frame_cnt_hi; /* TQM bypass byte cnt */ A_UINT32 tqm_bypass_byte_cnt_lo; A_UINT32 tqm_bypass_byte_cnt_hi; } htt_t2h_vdev_txrx_stats_hw_stats_tlv; /* Loading Loading @@ -18231,5 +18400,16 @@ PREPACK struct htt_t2h_sawf_msduq_event { ((_var) |= ((_val) << HTT_T2H_SAWF_MSDUQ_INFO_HTT_AST_LIST_IDX_S)); \ } while (0) #define HTT_T2H_SAWF_MSDUQ_INFO_HTT_TGT_OPAQUE_ID_M 0x00FFFFFF #define HTT_T2H_SAWF_MSDUQ_INFO_HTT_TGT_OPAQUE_ID_S 0 #define HTT_T2H_SAWF_MSDUQ_INFO_HTT_TGT_OPAQUE_ID_GET(_var) \ (((_var) & HTT_T2H_SAWF_MSDUQ_INFO_HTT_TGT_OPAQUE_ID) >> \ HTT_T2H_SAWF_MSDUQ_INFO_HTT_TGT_OPAQUE_ID_S) #define HTT_T2H_SAWF_MSDUQ_INFO_HTT_TGT_OPAQUE_ID_SET(_var, _val) \ do { \ HTT_CHECK_SET_VAL(HTT_T2H_SAWF_MSDUQ_INFO_HTT_TGT_OPAQUE_ID, _val); \ ((_var) |= ((_val) << HTT_T2H_SAWF_MSDUQ_INFO_HTT_TGT_OPAQUE_ID_S)); \ } while (0) #endif
fw/htt_ppdu_stats.h +142 −3 Original line number Diff line number Diff line Loading @@ -1571,6 +1571,144 @@ typedef enum HTT_PPDU_STATS_RESP_PPDU_TYPE HTT_PPDU_STATS_RESP_PPDU_TYPE; ((_var) |= ((_val) << HTT_PPDU_STATS_USER_RATE_TLV_RESP_PPDU_TYPE_S)); \ } while (0) #define HTT_PPDU_STATS_USER_RATE_TLV_RU_FORMAT_M 0x0000f000 #define HTT_PPDU_STATS_USER_RATE_TLV_RU_FORMAT_S 12 #define HTT_PPDU_STATS_USER_RATE_TLV_RU_FORMAT_GET(_var) \ (((_var) & HTT_PPDU_STATS_USER_RATE_TLV_RU_FORMAT_M) >> \ HTT_PPDU_STATS_USER_RATE_TLV_RU_FORMAT_S) #define HTT_PPDU_STATS_USER_RATE_TLV_RU_FORMAT_SET(_var, _val) \ do { \ HTT_CHECK_SET_VAL(HTT_PPDU_STATS_USER_RATE_TLV_RU_FORMAT, _val); \ ((_var) |= ((_val) << HTT_PPDU_STATS_USER_RATE_TLV_RU_FORMAT_S)); \ } while (0) #define HTT_PPDU_STATS_USER_RATE_TLV_RU_END_M 0x0000ffff #define HTT_PPDU_STATS_USER_RATE_TLV_RU_END_S 0 #define HTT_PPDU_STATS_USER_RATE_TLV_RU_END_GET(_var) \ (((_var) & HTT_PPDU_STATS_USER_RATE_TLV_RU_END_M) >> \ HTT_PPDU_STATS_USER_RATE_TLV_RU_END_S) #define HTT_PPDU_STATS_USER_RATE_TLV_RU_END_SET(_var, _val) \ do { \ HTT_CHECK_SET_VAL(HTT_PPDU_STATS_USER_RATE_TLV_RU_END, _val); \ ((_var) |= ((_val) << HTT_PPDU_STATS_USER_RATE_TLV_RU_END_S)); \ } while (0) #define HTT_PPDU_STATS_USER_RATE_TLV_RU_START_M 0xffff0000 #define HTT_PPDU_STATS_USER_RATE_TLV_RU_START_S 16 #define HTT_PPDU_STATS_USER_RATE_TLV_RU_START_GET(_var) \ (((_var) & HTT_PPDU_STATS_USER_RATE_TLV_RU_START_M) >> \ HTT_PPDU_STATS_USER_RATE_TLV_RU_START_S) #define HTT_PPDU_STATS_USER_RATE_TLV_RU_START_SET(_var, _val) \ do { \ HTT_CHECK_SET_VAL(HTT_PPDU_STATS_USER_RATE_TLV_RU_START, _val); \ ((_var) |= ((_val) << HTT_PPDU_STATS_USER_RATE_TLV_RU_START_S)); \ } while (0) #define HTT_PPDU_STATS_USER_RATE_TLV_RU_INDEX_M 0x0000ffff #define HTT_PPDU_STATS_USER_RATE_TLV_RU_INDEX_S 0 #define HTT_PPDU_STATS_USER_RATE_TLV_RU_INDEX_GET(_var) \ (((_var) & HTT_PPDU_STATS_USER_RATE_TLV_RU_INDEX_M) >> \ HTT_PPDU_STATS_USER_RATE_TLV_RU_INDEX_S) #define HTT_PPDU_STATS_USER_RATE_TLV_RU_INDEX_SET(_var, _val) \ do { \ HTT_CHECK_SET_VAL(HTT_PPDU_STATS_USER_RATE_TLV_RU_INDEX, _val); \ ((_var) |= ((_val) << HTT_PPDU_STATS_USER_RATE_TLV_RU_INDEX_S)); \ } while (0) #define HTT_PPDU_STATS_USER_RATE_TLV_RU_SIZE_M 0xffff0000 #define HTT_PPDU_STATS_USER_RATE_TLV_RU_SIZE_S 16 #define HTT_PPDU_STATS_USER_RATE_TLV_RU_SIZE_GET(_var) \ (((_var) & HTT_PPDU_STATS_USER_RATE_TLV_RU_SIZE_M) >> \ HTT_PPDU_STATS_USER_RATE_TLV_RU_SIZE_S) #define HTT_PPDU_STATS_USER_RATE_TLV_RU_SIZE_SET(_var, _val) \ do { \ HTT_CHECK_SET_VAL(HTT_PPDU_STATS_USER_RATE_TLV_RU_SIZE, _val); \ ((_var) |= ((_val) << HTT_PPDU_STATS_USER_RATE_TLV_RU_SIZE_S)); \ } while (0) #define HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_END_M 0x0000ffff #define HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_END_S 0 #define HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_END_GET(_var) \ (((_var) & HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_END_M) >> \ HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_END_S) #define HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_END_SET(_var, _val) \ do { \ HTT_CHECK_SET_VAL(HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_END, _val); \ ((_var) |= ((_val) << HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_END_S)); \ } while (0) #define HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_START_M 0xffff0000 #define HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_START_S 16 #define HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_START_GET(_var) \ (((_var) & HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_START_M) >> \ HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_START_S) #define HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_START_SET(_var, _val) \ do { \ HTT_CHECK_SET_VAL(HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_START, _val); \ ((_var) |= ((_val) << HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_START_S)); \ } while (0) #define HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_INDEX_M 0x0000ffff #define HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_INDEX_S 0 #define HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_INDEX_GET(_var) \ (((_var) & HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_INDEX_M) >> \ HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_INDEX_S) #define HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_INDEX_SET(_var, _val) \ do { \ HTT_CHECK_SET_VAL(HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_INDEX, _val); \ ((_var) |= ((_val) << HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_INDEX_S)); \ } while (0) #define HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_SIZE_M 0xffff0000 #define HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_SIZE_S 16 #define HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_SIZE_GET(_var) \ (((_var) & HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_SIZE_M) >> \ HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_SIZE_S) #define HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_SIZE_SET(_var, _val) \ do { \ HTT_CHECK_SET_VAL(HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_SIZE, _val); \ ((_var) |= ((_val) << HTT_PPDU_STATS_USER_RATE_TLV_RESP_RU_SIZE_S)); \ } while (0) #define HTT_PPDU_STATS_USER_RATE_TLV_PUNC_PATTERN_BITMAP_M 0x0000ffff #define HTT_PPDU_STATS_USER_RATE_TLV_PUNC_PATTERN_BITMAP_S 0 #define HTT_PPDU_STATS_USER_RATE_TLV_PUNC_PATTERN_BITMAP_GET(_var) \ (((_var) & HTT_PPDU_STATS_USER_RATE_TLV_PUNC_PATTERN_BITMAP_M) >> \ HTT_PPDU_STATS_USER_RATE_TLV_PUNC_PATTERN_BITMAP_S) #define HTT_PPDU_STATS_USER_RATE_TLV_PUNC_PATTERN_BITMAP_SET (_var , _val) \ do { \ HTT_CHECK_SET_VAL(HTT_PPDU_STATS_USER_RATE_TLV_PUNC_PATTERN_BITMAP, _val); \ ((_var) |= ((_val) << HTT_PPDU_STATS_USER_RATE_TLV_PUNC_PATTERN_BITMAP_S)); \ } while (0) typedef enum HTT_PPDU_STATS_RU_SIZE { HTT_PPDU_STATS_RU_26, HTT_PPDU_STATS_RU_52, Loading Loading @@ -1754,10 +1892,11 @@ typedef struct { }; /* * This is an unused word that can be safely renamed / used * by any future feature. * BIT [15:0] :- Punctured BW bitmap pattern to indicate which BWs are * punctured. */ A_UINT32 reserved4; A_UINT32 punc_pattern_bitmap: 16, reserved4: 16; } htt_ppdu_stats_user_rate_tlv; #define HTT_PPDU_STATS_USR_RATE_VALID_M 0x80000000 Loading