/*
 * Copyright (c) 2019, The Linux Foundation. All rights reserved.
 *
 * Permission to use, copy, modify, and/or distribute this software for any
 * purpose with or without fee is hereby granted, provided that the above
 * copyright notice and this permission notice appear in all copies.
 *
 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 */

#ifndef _RX_PPDU_END_USER_STATS_H_
#define _RX_PPDU_END_USER_STATS_H_
#if !defined(__ASSEMBLER__)
#endif

#include "rx_rxpcu_classification_overview.h"

// ################ START SUMMARY #################
//
//	Dword	Fields
//	0	struct rx_rxpcu_classification_overview rxpcu_classification_details;
//	1	sta_full_aid[12:0], mcs[16:13], nss[19:17], ofdma_info_valid[20], dl_ofdma_ru_start_index[27:21], reserved_1a[31:28]
//	2	dl_ofdma_ru_width[6:0], reserved_2a[7], user_receive_quality[15:8], mpdu_cnt_fcs_err[25:16], wbm2rxdma_buf_source_used[26], fw2rxdma_buf_source_used[27], sw2rxdma_buf_source_used[28], reserved_2b[31:29]
//	3	mpdu_cnt_fcs_ok[8:0], frame_control_info_valid[9], qos_control_info_valid[10], ht_control_info_valid[11], data_sequence_control_info_valid[12], ht_control_info_null_valid[13], reserved_3a[15:14], rxdma2reo_ring_used[16], rxdma2fw_ring_used[17], rxdma2sw_ring_used[18], rxdma_release_ring_used[19], ht_control_field_pkt_type[23:20], reserved_3b[31:24]
//	4	ast_index[15:0], frame_control_field[31:16]
//	5	first_data_seq_ctrl[15:0], qos_control_field[31:16]
//	6	ht_control_field[31:0]
//	7	fcs_ok_bitmap_31_0[31:0]
//	8	fcs_ok_bitmap_63_32[31:0]
//	9	udp_msdu_count[15:0], tcp_msdu_count[31:16]
//	10	other_msdu_count[15:0], tcp_ack_msdu_count[31:16]
//	11	sw_response_reference_ptr[31:0]
//	12	received_qos_data_tid_bitmap[15:0], received_qos_data_tid_eosp_bitmap[31:16]
//	13	qosctrl_15_8_tid0[7:0], qosctrl_15_8_tid1[15:8], qosctrl_15_8_tid2[23:16], qosctrl_15_8_tid3[31:24]
//	14	qosctrl_15_8_tid4[7:0], qosctrl_15_8_tid5[15:8], qosctrl_15_8_tid6[23:16], qosctrl_15_8_tid7[31:24]
//	15	qosctrl_15_8_tid8[7:0], qosctrl_15_8_tid9[15:8], qosctrl_15_8_tid10[23:16], qosctrl_15_8_tid11[31:24]
//	16	qosctrl_15_8_tid12[7:0], qosctrl_15_8_tid13[15:8], qosctrl_15_8_tid14[23:16], qosctrl_15_8_tid15[31:24]
//	17	mpdu_ok_byte_count[24:0], ampdu_delim_ok_count_6_0[31:25]
//	18	ampdu_delim_err_count[24:0], ampdu_delim_ok_count_13_7[31:25]
//	19	mpdu_err_byte_count[24:0], ampdu_delim_ok_count_20_14[31:25]
//	20	non_consecutive_delimiter_err[15:0], reserved_20a[31:16]
//	21	ht_control_null_field[31:0]
//	22	sw_response_reference_ptr_ext[31:0]
//
// ################ END SUMMARY #################

#define NUM_OF_DWORDS_RX_PPDU_END_USER_STATS 23

struct rx_ppdu_end_user_stats {
    struct            rx_rxpcu_classification_overview                       rxpcu_classification_details;
             uint32_t sta_full_aid                    : 13, //[12:0]
                      mcs                             :  4, //[16:13]
                      nss                             :  3, //[19:17]
                      ofdma_info_valid                :  1, //[20]
                      dl_ofdma_ru_start_index         :  7, //[27:21]
                      reserved_1a                     :  4; //[31:28]
             uint32_t dl_ofdma_ru_width               :  7, //[6:0]
                      reserved_2a                     :  1, //[7]
                      user_receive_quality            :  8, //[15:8]
                      mpdu_cnt_fcs_err                : 10, //[25:16]
                      wbm2rxdma_buf_source_used       :  1, //[26]
                      fw2rxdma_buf_source_used        :  1, //[27]
                      sw2rxdma_buf_source_used        :  1, //[28]
                      reserved_2b                     :  3; //[31:29]
             uint32_t mpdu_cnt_fcs_ok                 :  9, //[8:0]
                      frame_control_info_valid        :  1, //[9]
                      qos_control_info_valid          :  1, //[10]
                      ht_control_info_valid           :  1, //[11]
                      data_sequence_control_info_valid:  1, //[12]
                      ht_control_info_null_valid      :  1, //[13]
                      reserved_3a                     :  2, //[15:14]
                      rxdma2reo_ring_used             :  1, //[16]
                      rxdma2fw_ring_used              :  1, //[17]
                      rxdma2sw_ring_used              :  1, //[18]
                      rxdma_release_ring_used         :  1, //[19]
                      ht_control_field_pkt_type       :  4, //[23:20]
                      reserved_3b                     :  8; //[31:24]
             uint32_t ast_index                       : 16, //[15:0]
                      frame_control_field             : 16; //[31:16]
             uint32_t first_data_seq_ctrl             : 16, //[15:0]
                      qos_control_field               : 16; //[31:16]
             uint32_t ht_control_field                : 32; //[31:0]
             uint32_t fcs_ok_bitmap_31_0              : 32; //[31:0]
             uint32_t fcs_ok_bitmap_63_32             : 32; //[31:0]
             uint32_t udp_msdu_count                  : 16, //[15:0]
                      tcp_msdu_count                  : 16; //[31:16]
             uint32_t other_msdu_count                : 16, //[15:0]
                      tcp_ack_msdu_count              : 16; //[31:16]
             uint32_t sw_response_reference_ptr       : 32; //[31:0]
             uint32_t received_qos_data_tid_bitmap    : 16, //[15:0]
                      received_qos_data_tid_eosp_bitmap: 16; //[31:16]
             uint32_t qosctrl_15_8_tid0               :  8, //[7:0]
                      qosctrl_15_8_tid1               :  8, //[15:8]
                      qosctrl_15_8_tid2               :  8, //[23:16]
                      qosctrl_15_8_tid3               :  8; //[31:24]
             uint32_t qosctrl_15_8_tid4               :  8, //[7:0]
                      qosctrl_15_8_tid5               :  8, //[15:8]
                      qosctrl_15_8_tid6               :  8, //[23:16]
                      qosctrl_15_8_tid7               :  8; //[31:24]
             uint32_t qosctrl_15_8_tid8               :  8, //[7:0]
                      qosctrl_15_8_tid9               :  8, //[15:8]
                      qosctrl_15_8_tid10              :  8, //[23:16]
                      qosctrl_15_8_tid11              :  8; //[31:24]
             uint32_t qosctrl_15_8_tid12              :  8, //[7:0]
                      qosctrl_15_8_tid13              :  8, //[15:8]
                      qosctrl_15_8_tid14              :  8, //[23:16]
                      qosctrl_15_8_tid15              :  8; //[31:24]
             uint32_t mpdu_ok_byte_count              : 25, //[24:0]
                      ampdu_delim_ok_count_6_0        :  7; //[31:25]
             uint32_t ampdu_delim_err_count           : 25, //[24:0]
                      ampdu_delim_ok_count_13_7       :  7; //[31:25]
             uint32_t mpdu_err_byte_count             : 25, //[24:0]
                      ampdu_delim_ok_count_20_14      :  7; //[31:25]
             uint32_t non_consecutive_delimiter_err   : 16, //[15:0]
                      reserved_20a                    : 16; //[31:16]
             uint32_t ht_control_null_field           : 32; //[31:0]
             uint32_t sw_response_reference_ptr_ext   : 32; //[31:0]
};

/*

struct rx_rxpcu_classification_overview rxpcu_classification_details
			
			Details related to what RXPCU classification types of
			MPDUs have been received

sta_full_aid
			
			Consumer: FW
			
			Producer: RXPCU
			
			
			
			The full AID of this station. 
			
			
			
			<legal all>

mcs
			
			MCS of the received frame
			
			
			
			For details, refer to  MCS_TYPE description
			
			Note: This is rate in case of 11a/11b
			
			
			
			<legal all>

nss
			
			Number of spatial streams.
			
			
			
			NOTE: RXPCU derives this from the 'Mimo_ss_bitmap'
			
			
			
			<enum 0 1_spatial_stream>Single spatial stream
			
			<enum 1 2_spatial_streams>2 spatial streams
			
			<enum 2 3_spatial_streams>3 spatial streams
			
			<enum 3 4_spatial_streams>4 spatial streams
			
			<enum 4 5_spatial_streams>5 spatial streams
			
			<enum 5 6_spatial_streams>6 spatial streams
			
			<enum 6 7_spatial_streams>7 spatial streams
			
			<enum 7 8_spatial_streams>8 spatial streams

ofdma_info_valid
			
			When set, ofdma RU related info in the following fields
			is valid
			
			<legal all>

dl_ofdma_ru_start_index
			
			Field only valid when Ofdma_info_valid is set
			
			
			
			RU index number to which User is assigned
			
			RU numbering is over the entire BW, starting from 0
			
			<legal 0-73>

reserved_1a
			
			<legal 0>

dl_ofdma_ru_width
			
			The size of the RU for this user.
			
			In units of 1 (26 tone) RU
			
			<legal 1-74>

reserved_2a
			
			<legal 0>

user_receive_quality
			
			DO NOT USE
			
			
			
			Field not populated by MAC HW
			
			<legal all>

mpdu_cnt_fcs_err
			
			The number of MPDUs received from this STA in this PPDU
			with FCS errors
			
			<legal all>

wbm2rxdma_buf_source_used
			
			Field filled in by RXDMA
			
			
			
			When set, RXDMA has used the wbm2rxdma_buf ring as
			source for at least one of the frames in this PPDU.

fw2rxdma_buf_source_used
			
			Field filled in by RXDMA
			
			
			
			When set, RXDMA has used the fw2rxdma_buf ring as source
			for at least one of the frames in this PPDU.

sw2rxdma_buf_source_used
			
			Field filled in by RXDMA
			
			
			
			When set, RXDMA has used the sw2rxdma_buf ring as source
			for at least one of the frames in this PPDU.

reserved_2b
			
			<legal 0>

mpdu_cnt_fcs_ok
			
			The number of MPDUs received from this STA in this PPDU
			with correct FCS
			
			<legal all>

frame_control_info_valid
			
			When set, the frame_control_info field contains valid
			information
			
			<legal all>

qos_control_info_valid
			
			When set, the QoS_control_info field contains valid
			information
			
			<legal all>

ht_control_info_valid
			
			When set, the HT_control_field contains valid
			information
			
			<legal all>

data_sequence_control_info_valid
			
			When set, the First_data_seq_ctrl field contains valid
			information
			
			<legal all>

ht_control_info_null_valid
			
			When set, the HT_control_NULL_field contains valid
			information
			
			<legal all>

reserved_3a
			
			<legal 0>

rxdma2reo_ring_used
			
			Field filled in by RXDMA
			
			
			
			Set when at least one frame during this PPDU got pushed
			to this ring by RXDMA

rxdma2fw_ring_used
			
			Field filled in by RXDMA
			
			
			
			Set when at least one frame during this PPDU got pushed
			to this ring by RXDMA

rxdma2sw_ring_used
			
			Field filled in by RXDMA
			
			
			
			Set when at least one frame during this PPDU got pushed
			to this ring by RXDMA

rxdma_release_ring_used
			
			Field filled in by RXDMA
			
			
			
			Set when at least one frame during this PPDU got pushed
			to this ring by RXDMA

ht_control_field_pkt_type
			
			Field only valid when HT_control_info_valid or
			HT_control_info_NULL_valid    is set.
			
			
			
			Indicates what the PHY receive type was for receiving
			this frame. Can help determine if the HT_CONTROL field shall
			be interpreted as HT/VHT or HE.
			
			
			
			NOTE: later on in the 11ax IEEE spec a bit within the HT
			control field was introduced that explicitly indicated how
			to interpret the HT control field.... As HT, VHT, or HE.
			
			
			
			<enum 0 dot11a>802.11a PPDU type
			
			<enum 1 dot11b>802.11b PPDU type
			
			<enum 2 dot11n_mm>802.11n Mixed Mode PPDU type
			
			<enum 3 dot11ac>802.11ac PPDU type
			
			<enum 4 dot11ax>802.11ax PPDU type
			
			<enum 5 dot11ba>802.11ba (WUR) PPDU type

reserved_3b
			
			<legal 0>

ast_index
			
			This field indicates the index of the AST entry
			corresponding to this MPDU. It is provided by the GSE module
			instantiated in RXPCU.
			
			A value of 0xFFFF indicates an invalid AST index,
			meaning that No AST entry was found or NO AST search was
			performed
			
			<legal all>

frame_control_field
			
			Field only valid when Frame_control_info_valid is set.
			
			
			
			Last successfully received Frame_control field of data
			frame (excluding Data NULL/ QoS Null) for this user
			
			Mainly used to track the PM state of the transmitted
			device
			
			
			
			NOTE: only data frame info is needed, as control and
			management frames are already routed to the FW.
			
			<legal all>

first_data_seq_ctrl
			
			Field only valid when Data_sequence_control_info_valid
			is set.
			
			
			
			Sequence control field of the first data frame
			(excluding Data NULL or QoS Data null) received for this
			user with correct FCS
			
			
			
			NOTE: only data frame info is needed, as control and
			management frames are already routed to the FW.
			
			<legal all>

qos_control_field
			
			Field only valid when QoS_control_info_valid is set.
			
			
			
			Last successfully received QoS_control field of data
			frame (excluding Data NULL/ QoS Null) for this user
			
			
			
			Note that in case of multi TID, this field can only
			reflect the last properly received MPDU, and thus can not
			indicate all potentially different TIDs that had been
			received earlier. 
			
			
			
			There are however per TID fields, that will contain
			among other things all buffer status info: See
			
			QoSCtrl_15_8_tid???
			
			<legal all>

ht_control_field
			
			Field only valid when HT_control_info_valid is set.
			
			
			
			Last successfully received
			HT_CONTROL/VHT_CONTROL/HE_CONTROL  field of data frames,
			excluding QoS Null frames for this user. 
			
			
			
			NOTE: HT control fields  from QoS Null frames are
			captured in field HT_control_NULL_field
			
			<legal all>

fcs_ok_bitmap_31_0
			
			Bitmap indicates in order of received MPDUs, which MPDUs
			had an passing FCS or had an error.
			
			1: FCS OK
			
			0: FCS error
			
			<legal all>

fcs_ok_bitmap_63_32
			
			Bitmap indicates in order of received MPDUs, which MPDUs
			had an passing FCS or had an error.
			
			1: FCS OK
			
			0: FCS error
			
			
			
			NOTE: for users 0, 1, 2 and 3, additional bitmap info
			(up to 256 bitmap window) is provided in
			RX_PPDU_END_USER_STATS_EXT TLV
			
			<legal all>

udp_msdu_count
			
			Field filled in by RX OLE
			
			Set to 0 by RXPCU
			
			
			
			The number of MSDUs that are part of MPDUs without FCS
			error, that contain UDP frames.
			
			<legal all>

tcp_msdu_count
			
			Field filled in by RX OLE
			
			Set to 0 by RXPCU
			
			
			
			The number of MSDUs that are part of MPDUs without FCS
			error, that contain TCP frames.
			
			
			
			(Note: This does NOT include TCP-ACK)
			
			<legal all>

other_msdu_count
			
			Field filled in by RX OLE
			
			Set to 0 by RXPCU
			
			
			
			The number of MSDUs that are part of MPDUs without FCS
			error, that contain neither UDP or TCP frames.
			
			
			
			Includes Management and control frames.
			
			
			
			<legal all>

tcp_ack_msdu_count
			
			Field filled in by RX OLE
			
			Set to 0 by RXPCU
			
			
			
			The number of MSDUs that are part of MPDUs without FCS
			error, that contain TCP ack frames.
			
			<legal all>

sw_response_reference_ptr
			
			Pointer that SW uses to refer back to an expected
			response reception. Used for Rate adaptation purposes.
			
			When a reception occurs that is not tied to an expected
			response, this field is set to 0x0.
			
			
			
			Note: further on in this TLV there is also the field:
			Sw_response_reference_ptr_ext.
			
			<legal all>

received_qos_data_tid_bitmap
			
			Whenever a frame is received that contains a QoS control
			field (that includes QoS Data and/or QoS Null), the bit in
			this field that corresponds to the received TID shall be
			set.
			
			...Bitmap[0] = TID0
			
			...Bitmap[1] = TID1
			
			Etc.
			
			<legal all>

received_qos_data_tid_eosp_bitmap
			
			Field initialized to 0
			
			For every QoS Data frame that is correctly received, the
			EOSP bit of that frame is copied over into the corresponding
			TID related field.
			
			Note that this implies that the bits here represent the
			EOSP bit status for each TID of the last MPDU received for
			that TID.
			
			
			
			received TID shall be set.
			
			...eosp_bitmap[0] = eosp of TID0
			
			...eosp_bitmap[1] = eosp of TID1
			
			Etc.
			
			<legal all>

qosctrl_15_8_tid0
			
			Field only valid when Received_qos_data_tid_bitmap[0] is
			set
			
			
			
			QoS control field bits 15-8 of the last properly
			received MPDU with a QoS control field embedded, with  TID
			== 0

qosctrl_15_8_tid1
			
			Field only valid when Received_qos_data_tid_bitmap[1] is
			set
			
			
			
			QoS control field bits 15-8 of the last properly
			received MPDU with a QoS control field embedded, with  TID
			== 1

qosctrl_15_8_tid2
			
			Field only valid when Received_qos_data_tid_bitmap[2] is
			set
			
			
			
			QoS control field bits 15-8 of the last properly
			received MPDU with a QoS control field embedded, with  TID
			== 2

qosctrl_15_8_tid3
			
			Field only valid when Received_qos_data_tid_bitmap[3] is
			set
			
			
			
			QoS control field bits 15-8 of the last properly
			received MPDU with a QoS control field embedded, with  TID
			== 3

qosctrl_15_8_tid4
			
			Field only valid when Received_qos_data_tid_bitmap[4] is
			set
			
			
			
			QoS control field bits 15-8 of the last properly
			received MPDU with a QoS control field embedded, with  TID
			== 4

qosctrl_15_8_tid5
			
			Field only valid when Received_qos_data_tid_bitmap[5] is
			set
			
			
			
			QoS control field bits 15-8 of the last properly
			received MPDU with a QoS control field embedded, with  TID
			== 5

qosctrl_15_8_tid6
			
			Field only valid when Received_qos_data_tid_bitmap[6] is
			set
			
			
			
			QoS control field bits 15-8 of the last properly
			received MPDU with a QoS control field embedded, with  TID
			== 6

qosctrl_15_8_tid7
			
			Field only valid when Received_qos_data_tid_bitmap[7] is
			set
			
			
			
			QoS control field bits 15-8 of the last properly
			received MPDU with a QoS control field embedded, with  TID
			== 7

qosctrl_15_8_tid8
			
			Field only valid when Received_qos_data_tid_bitmap[8] is
			set
			
			
			
			QoS control field bits 15-8 of the last properly
			received MPDU with a QoS control field embedded, with  TID
			== 8

qosctrl_15_8_tid9
			
			Field only valid when Received_qos_data_tid_bitmap[9] is
			set
			
			
			
			QoS control field bits 15-8 of the last properly
			received MPDU with a QoS control field embedded, with  TID
			== 9

qosctrl_15_8_tid10
			
			Field only valid when Received_qos_data_tid_bitmap[10]
			is set
			
			
			
			QoS control field bits 15-8 of the last properly
			received MPDU with a QoS control field embedded, with  TID
			== 10

qosctrl_15_8_tid11
			
			Field only valid when Received_qos_data_tid_bitmap[11]
			is set
			
			
			
			QoS control field bits 15-8 of the last properly
			received MPDU with a QoS control field embedded, with  TID
			== 11

qosctrl_15_8_tid12
			
			Field only valid when Received_qos_data_tid_bitmap[12]
			is set
			
			
			
			QoS control field bits 15-8 of the last properly
			received MPDU with a QoS control field embedded, with  TID
			== 12

qosctrl_15_8_tid13
			
			Field only valid when Received_qos_data_tid_bitmap[13]
			is set
			
			
			
			QoS control field bits 15-8 of the last properly
			received MPDU with a QoS control field embedded, with  TID
			== 13

qosctrl_15_8_tid14
			
			Field only valid when Received_qos_data_tid_bitmap[14]
			is set
			
			
			
			QoS control field bits 15-8 of the last properly
			received MPDU with a QoS control field embedded, with  TID
			== 14

qosctrl_15_8_tid15
			
			Field only valid when Received_qos_data_tid_bitmap[15]
			is set
			
			
			
			QoS control field bits 15-8 of the last properly
			received MPDU with a QoS control field embedded, with  TID
			== 15

mpdu_ok_byte_count
			
			The number of bytes received within an MPDU for this
			user with correct FCS. This includes the FCS field
			
			
			
			NOTE:
			
			The sum of the four fields.....
			
			Mpdu_ok_byte_count +
			
			mpdu_err_byte_count +
			
			
			.....is the total number of bytes that were received for
			this user from the PHY.
			
			
			
			<legal all>

ampdu_delim_ok_count_6_0
			
			Number of AMPDU delimiter received with correct
			structure
			
			LSB 7 bits from this counter
			
			
			
			Note that this is a delimiter count and not byte count.
			To get to the number of bytes occupied by these delimiters,
			multiply this number by 4
			
			
			
			<legal all>

ampdu_delim_err_count
			
			The number of MPDU delimiter errors counted for this
			user.
			
			
			
			Note that this is a delimiter count and not byte count.
			To get to the number of bytes occupied by these delimiters,
			multiply this number by 4
			
			<legal all>

ampdu_delim_ok_count_13_7
			
			Number of AMPDU delimiters received with correct
			structure
			
			Bits 13-7 from this counter
			
			
			
			Note that this is a delimiter count and not byte count.
			To get to the number of bytes occupied by these delimiters,
			multiply this number by 4
			
			<legal all>

mpdu_err_byte_count
			
			The number of bytes belonging to MPDUs with an FCS
			error. This includes the FCS field.
			
			
			
			<legal all>

ampdu_delim_ok_count_20_14
			
			Number of AMPDU delimiters received with correct
			structure
			
			Bits 20-14 from this counter
			
			
			
			Note that this is a delimiter count and not byte count.
			To get to the number of bytes occupied by these delimiters,
			multiply this number by 4
			
			
			
			<legal all>

non_consecutive_delimiter_err
			
			The number of times an MPDU delimiter error is detected
			that is not immediately preceded by another MPDU delimiter
			also with FCS error.
			
			
			
			The counter saturates at 0xFFFF
			
			
			
			<legal all>

reserved_20a
			
			<legal 0>

ht_control_null_field
			
			
			
			
			Last successfully received
			HT_CONTROL/VHT_CONTROL/HE_CONTROL  field from QoS Null frame
			for this user. 
			
			<legal all>

sw_response_reference_ptr_ext
			
			Extended Pointer info that SW uses to refer back to an
			expected response transmission. Used for Rate adaptation
			purposes.
			
			When a reception occurs that is not tied to an expected
			response, this field is set to 0x0.
			
			
			
			Note: earlier on in this TLV there is also the field:
			Sw_response_reference_ptr.
			
			<legal all>
*/


 /* EXTERNAL REFERENCE : struct rx_rxpcu_classification_overview rxpcu_classification_details */ 


/* Description		RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_FILTER_PASS_MPDUS
			
			When set, at least one Filter Pass MPDU has been
			received. FCS might or might not have been passing.
			
			
			
			For MU UL, in  TLVs RX_PPDU_END and
			RX_PPDU_END_STATUS_DONE, this field is the OR of all the
			users.
			
			<legal all>
*/
#define RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_FILTER_PASS_MPDUS_OFFSET 0x00000000
#define RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_FILTER_PASS_MPDUS_LSB 0
#define RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_FILTER_PASS_MPDUS_MASK 0x00000001

/* Description		RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_FILTER_PASS_MPDUS_FCS_OK
			
			When set, at least one Filter Pass MPDU has been
			received that has a correct FCS.
			
			
			
			For MU UL, in  TLVs RX_PPDU_END and
			RX_PPDU_END_STATUS_DONE, this field is the OR of all the
			users.
			
			
			
			<legal all>
*/
#define RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_FILTER_PASS_MPDUS_FCS_OK_OFFSET 0x00000000
#define RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_FILTER_PASS_MPDUS_FCS_OK_LSB 1
#define RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_FILTER_PASS_MPDUS_FCS_OK_MASK 0x00000002

/* Description		RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_MONITOR_DIRECT_MPDUS
			
			When set, at least one Monitor Direct MPDU has been
			received. FCS might or might not have been passing
			
			
			
			For MU UL, in  TLVs RX_PPDU_END and
			RX_PPDU_END_STATUS_DONE, this field is the OR of all the
			users.
			
			<legal all>
*/
#define RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_MONITOR_DIRECT_MPDUS_OFFSET 0x00000000
#define RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_MONITOR_DIRECT_MPDUS_LSB 2
#define RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_MONITOR_DIRECT_MPDUS_MASK 0x00000004

/* Description		RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_MONITOR_DIRECT_MPDUS_FCS_OK
			
			When set, at least one Monitor Direct MPDU has been
			received that has a correct FCS.
			
			
			
			For MU UL, in  TLVs RX_PPDU_END and
			RX_PPDU_END_STATUS_DONE, this field is the OR of all the
			users.
			
			
			
			<legal all>
*/
#define RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_MONITOR_DIRECT_MPDUS_FCS_OK_OFFSET 0x00000000
#define RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_MONITOR_DIRECT_MPDUS_FCS_OK_LSB 3
#define RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_MONITOR_DIRECT_MPDUS_FCS_OK_MASK 0x00000008

/* Description		RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_MONITOR_OTHER_MPDUS
			
			When set, at least one Monitor Direct MPDU has been
			received. FCS might or might not have been passing.
			
			
			
			For MU UL, in  TLVs RX_PPDU_END and
			RX_PPDU_END_STATUS_DONE, this field is the OR of all the
			users.
			
			<legal all>
*/
#define RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_MONITOR_OTHER_MPDUS_OFFSET 0x00000000
#define RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_MONITOR_OTHER_MPDUS_LSB 4
#define RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_MONITOR_OTHER_MPDUS_MASK 0x00000010

/* Description		RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_MONITOR_OTHER_MPDUS_FCS_OK
			
			When set, at least one Monitor Direct MPDU has been
			received that has a correct FCS.
			
			
			
			For MU UL, in  TLVs RX_PPDU_END and
			RX_PPDU_END_STATUS_DONE, this field is the OR of all the
			users.
			
			<legal all>
*/
#define RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_MONITOR_OTHER_MPDUS_FCS_OK_OFFSET 0x00000000
#define RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_MONITOR_OTHER_MPDUS_FCS_OK_LSB 5
#define RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_MONITOR_OTHER_MPDUS_FCS_OK_MASK 0x00000020

/* Description		RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_PHYRX_ABORT_RECEIVED
			
			When set, PPDU reception was aborted by the PHY
			
			<legal all>
*/
#define RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_PHYRX_ABORT_RECEIVED_OFFSET 0x00000000
#define RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_PHYRX_ABORT_RECEIVED_LSB 6
#define RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_PHYRX_ABORT_RECEIVED_MASK 0x00000040

/* Description		RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_RESERVED_0
			
			<legal 0>
*/
#define RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_RESERVED_0_OFFSET 0x00000000
#define RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_RESERVED_0_LSB 7
#define RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_RESERVED_0_MASK 0x0000ff80

/* Description		RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_PHY_PPDU_ID
			
			A ppdu counter value that PHY increments for every PPDU
			received. The counter value wraps around  
			
			<legal all>
*/
#define RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_PHY_PPDU_ID_OFFSET 0x00000000
#define RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_PHY_PPDU_ID_LSB 16
#define RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_PHY_PPDU_ID_MASK 0xffff0000

/* Description		RX_PPDU_END_USER_STATS_1_STA_FULL_AID
			
			Consumer: FW
			
			Producer: RXPCU
			
			
			
			The full AID of this station. 
			
			
			
			<legal all>
*/
#define RX_PPDU_END_USER_STATS_1_STA_FULL_AID_OFFSET                 0x00000004
#define RX_PPDU_END_USER_STATS_1_STA_FULL_AID_LSB                    0
#define RX_PPDU_END_USER_STATS_1_STA_FULL_AID_MASK                   0x00001fff

/* Description		RX_PPDU_END_USER_STATS_1_MCS
			
			MCS of the received frame
			
			
			
			For details, refer to  MCS_TYPE description
			
			Note: This is rate in case of 11a/11b
			
			
			
			<legal all>
*/
#define RX_PPDU_END_USER_STATS_1_MCS_OFFSET                          0x00000004
#define RX_PPDU_END_USER_STATS_1_MCS_LSB                             13
#define RX_PPDU_END_USER_STATS_1_MCS_MASK                            0x0001e000

/* Description		RX_PPDU_END_USER_STATS_1_NSS
			
			Number of spatial streams.
			
			
			
			NOTE: RXPCU derives this from the 'Mimo_ss_bitmap'
			
			
			
			<enum 0 1_spatial_stream>Single spatial stream
			
			<enum 1 2_spatial_streams>2 spatial streams
			
			<enum 2 3_spatial_streams>3 spatial streams
			
			<enum 3 4_spatial_streams>4 spatial streams
			
			<enum 4 5_spatial_streams>5 spatial streams
			
			<enum 5 6_spatial_streams>6 spatial streams
			
			<enum 6 7_spatial_streams>7 spatial streams
			
			<enum 7 8_spatial_streams>8 spatial streams
*/
#define RX_PPDU_END_USER_STATS_1_NSS_OFFSET                          0x00000004
#define RX_PPDU_END_USER_STATS_1_NSS_LSB                             17
#define RX_PPDU_END_USER_STATS_1_NSS_MASK                            0x000e0000

/* Description		RX_PPDU_END_USER_STATS_1_OFDMA_INFO_VALID
			
			When set, ofdma RU related info in the following fields
			is valid
			
			<legal all>
*/
#define RX_PPDU_END_USER_STATS_1_OFDMA_INFO_VALID_OFFSET             0x00000004
#define RX_PPDU_END_USER_STATS_1_OFDMA_INFO_VALID_LSB                20
#define RX_PPDU_END_USER_STATS_1_OFDMA_INFO_VALID_MASK               0x00100000

/* Description		RX_PPDU_END_USER_STATS_1_DL_OFDMA_RU_START_INDEX
			
			Field only valid when Ofdma_info_valid is set
			
			
			
			RU index number to which User is assigned
			
			RU numbering is over the entire BW, starting from 0
			
			<legal 0-73>
*/
#define RX_PPDU_END_USER_STATS_1_DL_OFDMA_RU_START_INDEX_OFFSET      0x00000004
#define RX_PPDU_END_USER_STATS_1_DL_OFDMA_RU_START_INDEX_LSB         21
#define RX_PPDU_END_USER_STATS_1_DL_OFDMA_RU_START_INDEX_MASK        0x0fe00000

/* Description		RX_PPDU_END_USER_STATS_1_RESERVED_1A
			
			<legal 0>
*/
#define RX_PPDU_END_USER_STATS_1_RESERVED_1A_OFFSET                  0x00000004
#define RX_PPDU_END_USER_STATS_1_RESERVED_1A_LSB                     28
#define RX_PPDU_END_USER_STATS_1_RESERVED_1A_MASK                    0xf0000000

/* Description		RX_PPDU_END_USER_STATS_2_DL_OFDMA_RU_WIDTH
			
			The size of the RU for this user.
			
			In units of 1 (26 tone) RU
			
			<legal 1-74>
*/
#define RX_PPDU_END_USER_STATS_2_DL_OFDMA_RU_WIDTH_OFFSET            0x00000008
#define RX_PPDU_END_USER_STATS_2_DL_OFDMA_RU_WIDTH_LSB               0
#define RX_PPDU_END_USER_STATS_2_DL_OFDMA_RU_WIDTH_MASK              0x0000007f

/* Description		RX_PPDU_END_USER_STATS_2_RESERVED_2A
			
			<legal 0>
*/
#define RX_PPDU_END_USER_STATS_2_RESERVED_2A_OFFSET                  0x00000008
#define RX_PPDU_END_USER_STATS_2_RESERVED_2A_LSB                     7
#define RX_PPDU_END_USER_STATS_2_RESERVED_2A_MASK                    0x00000080

/* Description		RX_PPDU_END_USER_STATS_2_USER_RECEIVE_QUALITY
			
			DO NOT USE
			
			
			
			Field not populated by MAC HW
			
			<legal all>
*/
#define RX_PPDU_END_USER_STATS_2_USER_RECEIVE_QUALITY_OFFSET         0x00000008
#define RX_PPDU_END_USER_STATS_2_USER_RECEIVE_QUALITY_LSB            8
#define RX_PPDU_END_USER_STATS_2_USER_RECEIVE_QUALITY_MASK           0x0000ff00

/* Description		RX_PPDU_END_USER_STATS_2_MPDU_CNT_FCS_ERR
			
			The number of MPDUs received from this STA in this PPDU
			with FCS errors
			
			<legal all>
*/
#define RX_PPDU_END_USER_STATS_2_MPDU_CNT_FCS_ERR_OFFSET             0x00000008
#define RX_PPDU_END_USER_STATS_2_MPDU_CNT_FCS_ERR_LSB                16
#define RX_PPDU_END_USER_STATS_2_MPDU_CNT_FCS_ERR_MASK               0x03ff0000

/* Description		RX_PPDU_END_USER_STATS_2_WBM2RXDMA_BUF_SOURCE_USED
			
			Field filled in by RXDMA
			
			
			
			When set, RXDMA has used the wbm2rxdma_buf ring as
			source for at least one of the frames in this PPDU.
*/
#define RX_PPDU_END_USER_STATS_2_WBM2RXDMA_BUF_SOURCE_USED_OFFSET    0x00000008
#define RX_PPDU_END_USER_STATS_2_WBM2RXDMA_BUF_SOURCE_USED_LSB       26
#define RX_PPDU_END_USER_STATS_2_WBM2RXDMA_BUF_SOURCE_USED_MASK      0x04000000

/* Description		RX_PPDU_END_USER_STATS_2_FW2RXDMA_BUF_SOURCE_USED
			
			Field filled in by RXDMA
			
			
			
			When set, RXDMA has used the fw2rxdma_buf ring as source
			for at least one of the frames in this PPDU.
*/
#define RX_PPDU_END_USER_STATS_2_FW2RXDMA_BUF_SOURCE_USED_OFFSET     0x00000008
#define RX_PPDU_END_USER_STATS_2_FW2RXDMA_BUF_SOURCE_USED_LSB        27
#define RX_PPDU_END_USER_STATS_2_FW2RXDMA_BUF_SOURCE_USED_MASK       0x08000000

/* Description		RX_PPDU_END_USER_STATS_2_SW2RXDMA_BUF_SOURCE_USED
			
			Field filled in by RXDMA
			
			
			
			When set, RXDMA has used the sw2rxdma_buf ring as source
			for at least one of the frames in this PPDU.
*/
#define RX_PPDU_END_USER_STATS_2_SW2RXDMA_BUF_SOURCE_USED_OFFSET     0x00000008
#define RX_PPDU_END_USER_STATS_2_SW2RXDMA_BUF_SOURCE_USED_LSB        28
#define RX_PPDU_END_USER_STATS_2_SW2RXDMA_BUF_SOURCE_USED_MASK       0x10000000

/* Description		RX_PPDU_END_USER_STATS_2_RESERVED_2B
			
			<legal 0>
*/
#define RX_PPDU_END_USER_STATS_2_RESERVED_2B_OFFSET                  0x00000008
#define RX_PPDU_END_USER_STATS_2_RESERVED_2B_LSB                     29
#define RX_PPDU_END_USER_STATS_2_RESERVED_2B_MASK                    0xe0000000

/* Description		RX_PPDU_END_USER_STATS_3_MPDU_CNT_FCS_OK
			
			The number of MPDUs received from this STA in this PPDU
			with correct FCS
			
			<legal all>
*/
#define RX_PPDU_END_USER_STATS_3_MPDU_CNT_FCS_OK_OFFSET              0x0000000c
#define RX_PPDU_END_USER_STATS_3_MPDU_CNT_FCS_OK_LSB                 0
#define RX_PPDU_END_USER_STATS_3_MPDU_CNT_FCS_OK_MASK                0x000001ff

/* Description		RX_PPDU_END_USER_STATS_3_FRAME_CONTROL_INFO_VALID
			
			When set, the frame_control_info field contains valid
			information
			
			<legal all>
*/
#define RX_PPDU_END_USER_STATS_3_FRAME_CONTROL_INFO_VALID_OFFSET     0x0000000c
#define RX_PPDU_END_USER_STATS_3_FRAME_CONTROL_INFO_VALID_LSB        9
#define RX_PPDU_END_USER_STATS_3_FRAME_CONTROL_INFO_VALID_MASK       0x00000200

/* Description		RX_PPDU_END_USER_STATS_3_QOS_CONTROL_INFO_VALID
			
			When set, the QoS_control_info field contains valid
			information
			
			<legal all>
*/
#define RX_PPDU_END_USER_STATS_3_QOS_CONTROL_INFO_VALID_OFFSET       0x0000000c
#define RX_PPDU_END_USER_STATS_3_QOS_CONTROL_INFO_VALID_LSB          10
#define RX_PPDU_END_USER_STATS_3_QOS_CONTROL_INFO_VALID_MASK         0x00000400

/* Description		RX_PPDU_END_USER_STATS_3_HT_CONTROL_INFO_VALID
			
			When set, the HT_control_field contains valid
			information
			
			<legal all>
*/
#define RX_PPDU_END_USER_STATS_3_HT_CONTROL_INFO_VALID_OFFSET        0x0000000c
#define RX_PPDU_END_USER_STATS_3_HT_CONTROL_INFO_VALID_LSB           11
#define RX_PPDU_END_USER_STATS_3_HT_CONTROL_INFO_VALID_MASK          0x00000800

/* Description		RX_PPDU_END_USER_STATS_3_DATA_SEQUENCE_CONTROL_INFO_VALID
			
			When set, the First_data_seq_ctrl field contains valid
			information
			
			<legal all>
*/
#define RX_PPDU_END_USER_STATS_3_DATA_SEQUENCE_CONTROL_INFO_VALID_OFFSET 0x0000000c
#define RX_PPDU_END_USER_STATS_3_DATA_SEQUENCE_CONTROL_INFO_VALID_LSB 12
#define RX_PPDU_END_USER_STATS_3_DATA_SEQUENCE_CONTROL_INFO_VALID_MASK 0x00001000

/* Description		RX_PPDU_END_USER_STATS_3_HT_CONTROL_INFO_NULL_VALID
			
			When set, the HT_control_NULL_field contains valid
			information
			
			<legal all>
*/
#define RX_PPDU_END_USER_STATS_3_HT_CONTROL_INFO_NULL_VALID_OFFSET   0x0000000c
#define RX_PPDU_END_USER_STATS_3_HT_CONTROL_INFO_NULL_VALID_LSB      13
#define RX_PPDU_END_USER_STATS_3_HT_CONTROL_INFO_NULL_VALID_MASK     0x00002000

/* Description		RX_PPDU_END_USER_STATS_3_RESERVED_3A
			
			<legal 0>
*/
#define RX_PPDU_END_USER_STATS_3_RESERVED_3A_OFFSET                  0x0000000c
#define RX_PPDU_END_USER_STATS_3_RESERVED_3A_LSB                     14
#define RX_PPDU_END_USER_STATS_3_RESERVED_3A_MASK                    0x0000c000

/* Description		RX_PPDU_END_USER_STATS_3_RXDMA2REO_RING_USED
			
			Field filled in by RXDMA
			
			
			
			Set when at least one frame during this PPDU got pushed
			to this ring by RXDMA
*/
#define RX_PPDU_END_USER_STATS_3_RXDMA2REO_RING_USED_OFFSET          0x0000000c
#define RX_PPDU_END_USER_STATS_3_RXDMA2REO_RING_USED_LSB             16
#define RX_PPDU_END_USER_STATS_3_RXDMA2REO_RING_USED_MASK            0x00010000

/* Description		RX_PPDU_END_USER_STATS_3_RXDMA2FW_RING_USED
			
			Field filled in by RXDMA
			
			
			
			Set when at least one frame during this PPDU got pushed
			to this ring by RXDMA
*/
#define RX_PPDU_END_USER_STATS_3_RXDMA2FW_RING_USED_OFFSET           0x0000000c
#define RX_PPDU_END_USER_STATS_3_RXDMA2FW_RING_USED_LSB              17
#define RX_PPDU_END_USER_STATS_3_RXDMA2FW_RING_USED_MASK             0x00020000

/* Description		RX_PPDU_END_USER_STATS_3_RXDMA2SW_RING_USED
			
			Field filled in by RXDMA
			
			
			
			Set when at least one frame during this PPDU got pushed
			to this ring by RXDMA
*/
#define RX_PPDU_END_USER_STATS_3_RXDMA2SW_RING_USED_OFFSET           0x0000000c
#define RX_PPDU_END_USER_STATS_3_RXDMA2SW_RING_USED_LSB              18
#define RX_PPDU_END_USER_STATS_3_RXDMA2SW_RING_USED_MASK             0x00040000

/* Description		RX_PPDU_END_USER_STATS_3_RXDMA_RELEASE_RING_USED
			
			Field filled in by RXDMA
			
			
			
			Set when at least one frame during this PPDU got pushed
			to this ring by RXDMA
*/
#define RX_PPDU_END_USER_STATS_3_RXDMA_RELEASE_RING_USED_OFFSET      0x0000000c
#define RX_PPDU_END_USER_STATS_3_RXDMA_RELEASE_RING_USED_LSB         19
#define RX_PPDU_END_USER_STATS_3_RXDMA_RELEASE_RING_USED_MASK        0x00080000

/* Description		RX_PPDU_END_USER_STATS_3_HT_CONTROL_FIELD_PKT_TYPE
			
			Field only valid when HT_control_info_valid or
			HT_control_info_NULL_valid    is set.
			
			
			
			Indicates what the PHY receive type was for receiving
			this frame. Can help determine if the HT_CONTROL field shall
			be interpreted as HT/VHT or HE.
			
			
			
			NOTE: later on in the 11ax IEEE spec a bit within the HT
			control field was introduced that explicitly indicated how
			to interpret the HT control field.... As HT, VHT, or HE.
			
			
			
			<enum 0 dot11a>802.11a PPDU type
			
			<enum 1 dot11b>802.11b PPDU type
			
			<enum 2 dot11n_mm>802.11n Mixed Mode PPDU type
			
			<enum 3 dot11ac>802.11ac PPDU type
			
			<enum 4 dot11ax>802.11ax PPDU type
			
			<enum 5 dot11ba>802.11ba (WUR) PPDU type
*/
#define RX_PPDU_END_USER_STATS_3_HT_CONTROL_FIELD_PKT_TYPE_OFFSET    0x0000000c
#define RX_PPDU_END_USER_STATS_3_HT_CONTROL_FIELD_PKT_TYPE_LSB       20
#define RX_PPDU_END_USER_STATS_3_HT_CONTROL_FIELD_PKT_TYPE_MASK      0x00f00000

/* Description		RX_PPDU_END_USER_STATS_3_RESERVED_3B
			
			<legal 0>
*/
#define RX_PPDU_END_USER_STATS_3_RESERVED_3B_OFFSET                  0x0000000c
#define RX_PPDU_END_USER_STATS_3_RESERVED_3B_LSB                     24
#define RX_PPDU_END_USER_STATS_3_RESERVED_3B_MASK                    0xff000000

/* Description		RX_PPDU_END_USER_STATS_4_AST_INDEX
			
			This field indicates the index of the AST entry
			corresponding to this MPDU. It is provided by the GSE module
			instantiated in RXPCU.
			
			A value of 0xFFFF indicates an invalid AST index,
			meaning that No AST entry was found or NO AST search was
			performed
			
			<legal all>
*/
#define RX_PPDU_END_USER_STATS_4_AST_INDEX_OFFSET                    0x00000010
#define RX_PPDU_END_USER_STATS_4_AST_INDEX_LSB                       0
#define RX_PPDU_END_USER_STATS_4_AST_INDEX_MASK                      0x0000ffff

/* Description		RX_PPDU_END_USER_STATS_4_FRAME_CONTROL_FIELD
			
			Field only valid when Frame_control_info_valid is set.
			
			
			
			Last successfully received Frame_control field of data
			frame (excluding Data NULL/ QoS Null) for this user
			
			Mainly used to track the PM state of the transmitted
			device
			
			
			
			NOTE: only data frame info is needed, as control and
			management frames are already routed to the FW.
			
			<legal all>
*/
#define RX_PPDU_END_USER_STATS_4_FRAME_CONTROL_FIELD_OFFSET          0x00000010
#define RX_PPDU_END_USER_STATS_4_FRAME_CONTROL_FIELD_LSB             16
#define RX_PPDU_END_USER_STATS_4_FRAME_CONTROL_FIELD_MASK            0xffff0000

/* Description		RX_PPDU_END_USER_STATS_5_FIRST_DATA_SEQ_CTRL
			
			Field only valid when Data_sequence_control_info_valid
			is set.
			
			
			
			Sequence control field of the first data frame
			(excluding Data NULL or QoS Data null) received for this
			user with correct FCS
			
			
			
			NOTE: only data frame info is needed, as control and
			management frames are already routed to the FW.
			
			<legal all>
*/
#define RX_PPDU_END_USER_STATS_5_FIRST_DATA_SEQ_CTRL_OFFSET          0x00000014
#define RX_PPDU_END_USER_STATS_5_FIRST_DATA_SEQ_CTRL_LSB             0
#define RX_PPDU_END_USER_STATS_5_FIRST_DATA_SEQ_CTRL_MASK            0x0000ffff

/* Description		RX_PPDU_END_USER_STATS_5_QOS_CONTROL_FIELD
			
			Field only valid when QoS_control_info_valid is set.
			
			
			
			Last successfully received QoS_control field of data
			frame (excluding Data NULL/ QoS Null) for this user
			
			
			
			Note that in case of multi TID, this field can only
			reflect the last properly received MPDU, and thus can not
			indicate all potentially different TIDs that had been
			received earlier. 
			
			
			
			There are however per TID fields, that will contain
			among other things all buffer status info: See
			
			QoSCtrl_15_8_tid???
			
			<legal all>
*/
#define RX_PPDU_END_USER_STATS_5_QOS_CONTROL_FIELD_OFFSET            0x00000014
#define RX_PPDU_END_USER_STATS_5_QOS_CONTROL_FIELD_LSB               16
#define RX_PPDU_END_USER_STATS_5_QOS_CONTROL_FIELD_MASK              0xffff0000

/* Description		RX_PPDU_END_USER_STATS_6_HT_CONTROL_FIELD
			
			Field only valid when HT_control_info_valid is set.
			
			
			
			Last successfully received
			HT_CONTROL/VHT_CONTROL/HE_CONTROL  field of data frames,
			excluding QoS Null frames for this user. 
			
			
			
			NOTE: HT control fields  from QoS Null frames are
			captured in field HT_control_NULL_field
			
			<legal all>
*/
#define RX_PPDU_END_USER_STATS_6_HT_CONTROL_FIELD_OFFSET             0x00000018
#define RX_PPDU_END_USER_STATS_6_HT_CONTROL_FIELD_LSB                0
#define RX_PPDU_END_USER_STATS_6_HT_CONTROL_FIELD_MASK               0xffffffff

/* Description		RX_PPDU_END_USER_STATS_7_FCS_OK_BITMAP_31_0
			
			Bitmap indicates in order of received MPDUs, which MPDUs
			had an passing FCS or had an error.
			
			1: FCS OK
			
			0: FCS error
			
			<legal all>
*/
#define RX_PPDU_END_USER_STATS_7_FCS_OK_BITMAP_31_0_OFFSET           0x0000001c
#define RX_PPDU_END_USER_STATS_7_FCS_OK_BITMAP_31_0_LSB              0
#define RX_PPDU_END_USER_STATS_7_FCS_OK_BITMAP_31_0_MASK             0xffffffff

/* Description		RX_PPDU_END_USER_STATS_8_FCS_OK_BITMAP_63_32
			
			Bitmap indicates in order of received MPDUs, which MPDUs
			had an passing FCS or had an error.
			
			1: FCS OK
			
			0: FCS error
			
			
			
			NOTE: for users 0, 1, 2 and 3, additional bitmap info
			(up to 256 bitmap window) is provided in
			RX_PPDU_END_USER_STATS_EXT TLV
			
			<legal all>
*/
#define RX_PPDU_END_USER_STATS_8_FCS_OK_BITMAP_63_32_OFFSET          0x00000020
#define RX_PPDU_END_USER_STATS_8_FCS_OK_BITMAP_63_32_LSB             0
#define RX_PPDU_END_USER_STATS_8_FCS_OK_BITMAP_63_32_MASK            0xffffffff

/* Description		RX_PPDU_END_USER_STATS_9_UDP_MSDU_COUNT
			
			Field filled in by RX OLE
			
			Set to 0 by RXPCU
			
			
			
			The number of MSDUs that are part of MPDUs without FCS
			error, that contain UDP frames.
			
			<legal all>
*/
#define RX_PPDU_END_USER_STATS_9_UDP_MSDU_COUNT_OFFSET               0x00000024
#define RX_PPDU_END_USER_STATS_9_UDP_MSDU_COUNT_LSB                  0
#define RX_PPDU_END_USER_STATS_9_UDP_MSDU_COUNT_MASK                 0x0000ffff

/* Description		RX_PPDU_END_USER_STATS_9_TCP_MSDU_COUNT
			
			Field filled in by RX OLE
			
			Set to 0 by RXPCU
			
			
			
			The number of MSDUs that are part of MPDUs without FCS
			error, that contain TCP frames.
			
			
			
			(Note: This does NOT include TCP-ACK)
			
			<legal all>
*/
#define RX_PPDU_END_USER_STATS_9_TCP_MSDU_COUNT_OFFSET               0x00000024
#define RX_PPDU_END_USER_STATS_9_TCP_MSDU_COUNT_LSB                  16
#define RX_PPDU_END_USER_STATS_9_TCP_MSDU_COUNT_MASK                 0xffff0000

/* Description		RX_PPDU_END_USER_STATS_10_OTHER_MSDU_COUNT
			
			Field filled in by RX OLE
			
			Set to 0 by RXPCU
			
			
			
			The number of MSDUs that are part of MPDUs without FCS
			error, that contain neither UDP or TCP frames.
			
			
			
			Includes Management and control frames.
			
			
			
			<legal all>
*/
#define RX_PPDU_END_USER_STATS_10_OTHER_MSDU_COUNT_OFFSET            0x00000028
#define RX_PPDU_END_USER_STATS_10_OTHER_MSDU_COUNT_LSB               0
#define RX_PPDU_END_USER_STATS_10_OTHER_MSDU_COUNT_MASK              0x0000ffff

/* Description		RX_PPDU_END_USER_STATS_10_TCP_ACK_MSDU_COUNT
			
			Field filled in by RX OLE
			
			Set to 0 by RXPCU
			
			
			
			The number of MSDUs that are part of MPDUs without FCS
			error, that contain TCP ack frames.
			
			<legal all>
*/
#define RX_PPDU_END_USER_STATS_10_TCP_ACK_MSDU_COUNT_OFFSET          0x00000028
#define RX_PPDU_END_USER_STATS_10_TCP_ACK_MSDU_COUNT_LSB             16
#define RX_PPDU_END_USER_STATS_10_TCP_ACK_MSDU_COUNT_MASK            0xffff0000

/* Description		RX_PPDU_END_USER_STATS_11_SW_RESPONSE_REFERENCE_PTR
			
			Pointer that SW uses to refer back to an expected
			response reception. Used for Rate adaptation purposes.
			
			When a reception occurs that is not tied to an expected
			response, this field is set to 0x0.
			
			
			
			Note: further on in this TLV there is also the field:
			Sw_response_reference_ptr_ext.
			
			<legal all>
*/
#define RX_PPDU_END_USER_STATS_11_SW_RESPONSE_REFERENCE_PTR_OFFSET   0x0000002c
#define RX_PPDU_END_USER_STATS_11_SW_RESPONSE_REFERENCE_PTR_LSB      0
#define RX_PPDU_END_USER_STATS_11_SW_RESPONSE_REFERENCE_PTR_MASK     0xffffffff

/* Description		RX_PPDU_END_USER_STATS_12_RECEIVED_QOS_DATA_TID_BITMAP
			
			Whenever a frame is received that contains a QoS control
			field (that includes QoS Data and/or QoS Null), the bit in
			this field that corresponds to the received TID shall be
			set.
			
			...Bitmap[0] = TID0
			
			...Bitmap[1] = TID1
			
			Etc.
			
			<legal all>
*/
#define RX_PPDU_END_USER_STATS_12_RECEIVED_QOS_DATA_TID_BITMAP_OFFSET 0x00000030
#define RX_PPDU_END_USER_STATS_12_RECEIVED_QOS_DATA_TID_BITMAP_LSB   0
#define RX_PPDU_END_USER_STATS_12_RECEIVED_QOS_DATA_TID_BITMAP_MASK  0x0000ffff

/* Description		RX_PPDU_END_USER_STATS_12_RECEIVED_QOS_DATA_TID_EOSP_BITMAP
			
			Field initialized to 0
			
			For every QoS Data frame that is correctly received, the
			EOSP bit of that frame is copied over into the corresponding
			TID related field.
			
			Note that this implies that the bits here represent the
			EOSP bit status for each TID of the last MPDU received for
			that TID.
			
			
			
			received TID shall be set.
			
			...eosp_bitmap[0] = eosp of TID0
			
			...eosp_bitmap[1] = eosp of TID1
			
			Etc.
			
			<legal all>
*/
#define RX_PPDU_END_USER_STATS_12_RECEIVED_QOS_DATA_TID_EOSP_BITMAP_OFFSET 0x00000030
#define RX_PPDU_END_USER_STATS_12_RECEIVED_QOS_DATA_TID_EOSP_BITMAP_LSB 16
#define RX_PPDU_END_USER_STATS_12_RECEIVED_QOS_DATA_TID_EOSP_BITMAP_MASK 0xffff0000

/* Description		RX_PPDU_END_USER_STATS_13_QOSCTRL_15_8_TID0
			
			Field only valid when Received_qos_data_tid_bitmap[0] is
			set
			
			
			
			QoS control field bits 15-8 of the last properly
			received MPDU with a QoS control field embedded, with  TID
			== 0
*/
#define RX_PPDU_END_USER_STATS_13_QOSCTRL_15_8_TID0_OFFSET           0x00000034
#define RX_PPDU_END_USER_STATS_13_QOSCTRL_15_8_TID0_LSB              0
#define RX_PPDU_END_USER_STATS_13_QOSCTRL_15_8_TID0_MASK             0x000000ff

/* Description		RX_PPDU_END_USER_STATS_13_QOSCTRL_15_8_TID1
			
			Field only valid when Received_qos_data_tid_bitmap[1] is
			set
			
			
			
			QoS control field bits 15-8 of the last properly
			received MPDU with a QoS control field embedded, with  TID
			== 1
*/
#define RX_PPDU_END_USER_STATS_13_QOSCTRL_15_8_TID1_OFFSET           0x00000034
#define RX_PPDU_END_USER_STATS_13_QOSCTRL_15_8_TID1_LSB              8
#define RX_PPDU_END_USER_STATS_13_QOSCTRL_15_8_TID1_MASK             0x0000ff00

/* Description		RX_PPDU_END_USER_STATS_13_QOSCTRL_15_8_TID2
			
			Field only valid when Received_qos_data_tid_bitmap[2] is
			set
			
			
			
			QoS control field bits 15-8 of the last properly
			received MPDU with a QoS control field embedded, with  TID
			== 2
*/
#define RX_PPDU_END_USER_STATS_13_QOSCTRL_15_8_TID2_OFFSET           0x00000034
#define RX_PPDU_END_USER_STATS_13_QOSCTRL_15_8_TID2_LSB              16
#define RX_PPDU_END_USER_STATS_13_QOSCTRL_15_8_TID2_MASK             0x00ff0000

/* Description		RX_PPDU_END_USER_STATS_13_QOSCTRL_15_8_TID3
			
			Field only valid when Received_qos_data_tid_bitmap[3] is
			set
			
			
			
			QoS control field bits 15-8 of the last properly
			received MPDU with a QoS control field embedded, with  TID
			== 3
*/
#define RX_PPDU_END_USER_STATS_13_QOSCTRL_15_8_TID3_OFFSET           0x00000034
#define RX_PPDU_END_USER_STATS_13_QOSCTRL_15_8_TID3_LSB              24
#define RX_PPDU_END_USER_STATS_13_QOSCTRL_15_8_TID3_MASK             0xff000000

/* Description		RX_PPDU_END_USER_STATS_14_QOSCTRL_15_8_TID4
			
			Field only valid when Received_qos_data_tid_bitmap[4] is
			set
			
			
			
			QoS control field bits 15-8 of the last properly
			received MPDU with a QoS control field embedded, with  TID
			== 4
*/
#define RX_PPDU_END_USER_STATS_14_QOSCTRL_15_8_TID4_OFFSET           0x00000038
#define RX_PPDU_END_USER_STATS_14_QOSCTRL_15_8_TID4_LSB              0
#define RX_PPDU_END_USER_STATS_14_QOSCTRL_15_8_TID4_MASK             0x000000ff

/* Description		RX_PPDU_END_USER_STATS_14_QOSCTRL_15_8_TID5
			
			Field only valid when Received_qos_data_tid_bitmap[5] is
			set
			
			
			
			QoS control field bits 15-8 of the last properly
			received MPDU with a QoS control field embedded, with  TID
			== 5
*/
#define RX_PPDU_END_USER_STATS_14_QOSCTRL_15_8_TID5_OFFSET           0x00000038
#define RX_PPDU_END_USER_STATS_14_QOSCTRL_15_8_TID5_LSB              8
#define RX_PPDU_END_USER_STATS_14_QOSCTRL_15_8_TID5_MASK             0x0000ff00

/* Description		RX_PPDU_END_USER_STATS_14_QOSCTRL_15_8_TID6
			
			Field only valid when Received_qos_data_tid_bitmap[6] is
			set
			
			
			
			QoS control field bits 15-8 of the last properly
			received MPDU with a QoS control field embedded, with  TID
			== 6
*/
#define RX_PPDU_END_USER_STATS_14_QOSCTRL_15_8_TID6_OFFSET           0x00000038
#define RX_PPDU_END_USER_STATS_14_QOSCTRL_15_8_TID6_LSB              16
#define RX_PPDU_END_USER_STATS_14_QOSCTRL_15_8_TID6_MASK             0x00ff0000

/* Description		RX_PPDU_END_USER_STATS_14_QOSCTRL_15_8_TID7
			
			Field only valid when Received_qos_data_tid_bitmap[7] is
			set
			
			
			
			QoS control field bits 15-8 of the last properly
			received MPDU with a QoS control field embedded, with  TID
			== 7
*/
#define RX_PPDU_END_USER_STATS_14_QOSCTRL_15_8_TID7_OFFSET           0x00000038
#define RX_PPDU_END_USER_STATS_14_QOSCTRL_15_8_TID7_LSB              24
#define RX_PPDU_END_USER_STATS_14_QOSCTRL_15_8_TID7_MASK             0xff000000

/* Description		RX_PPDU_END_USER_STATS_15_QOSCTRL_15_8_TID8
			
			Field only valid when Received_qos_data_tid_bitmap[8] is
			set
			
			
			
			QoS control field bits 15-8 of the last properly
			received MPDU with a QoS control field embedded, with  TID
			== 8
*/
#define RX_PPDU_END_USER_STATS_15_QOSCTRL_15_8_TID8_OFFSET           0x0000003c
#define RX_PPDU_END_USER_STATS_15_QOSCTRL_15_8_TID8_LSB              0
#define RX_PPDU_END_USER_STATS_15_QOSCTRL_15_8_TID8_MASK             0x000000ff

/* Description		RX_PPDU_END_USER_STATS_15_QOSCTRL_15_8_TID9
			
			Field only valid when Received_qos_data_tid_bitmap[9] is
			set
			
			
			
			QoS control field bits 15-8 of the last properly
			received MPDU with a QoS control field embedded, with  TID
			== 9
*/
#define RX_PPDU_END_USER_STATS_15_QOSCTRL_15_8_TID9_OFFSET           0x0000003c
#define RX_PPDU_END_USER_STATS_15_QOSCTRL_15_8_TID9_LSB              8
#define RX_PPDU_END_USER_STATS_15_QOSCTRL_15_8_TID9_MASK             0x0000ff00

/* Description		RX_PPDU_END_USER_STATS_15_QOSCTRL_15_8_TID10
			
			Field only valid when Received_qos_data_tid_bitmap[10]
			is set
			
			
			
			QoS control field bits 15-8 of the last properly
			received MPDU with a QoS control field embedded, with  TID
			== 10
*/
#define RX_PPDU_END_USER_STATS_15_QOSCTRL_15_8_TID10_OFFSET          0x0000003c
#define RX_PPDU_END_USER_STATS_15_QOSCTRL_15_8_TID10_LSB             16
#define RX_PPDU_END_USER_STATS_15_QOSCTRL_15_8_TID10_MASK            0x00ff0000

/* Description		RX_PPDU_END_USER_STATS_15_QOSCTRL_15_8_TID11
			
			Field only valid when Received_qos_data_tid_bitmap[11]
			is set
			
			
			
			QoS control field bits 15-8 of the last properly
			received MPDU with a QoS control field embedded, with  TID
			== 11
*/
#define RX_PPDU_END_USER_STATS_15_QOSCTRL_15_8_TID11_OFFSET          0x0000003c
#define RX_PPDU_END_USER_STATS_15_QOSCTRL_15_8_TID11_LSB             24
#define RX_PPDU_END_USER_STATS_15_QOSCTRL_15_8_TID11_MASK            0xff000000

/* Description		RX_PPDU_END_USER_STATS_16_QOSCTRL_15_8_TID12
			
			Field only valid when Received_qos_data_tid_bitmap[12]
			is set
			
			
			
			QoS control field bits 15-8 of the last properly
			received MPDU with a QoS control field embedded, with  TID
			== 12
*/
#define RX_PPDU_END_USER_STATS_16_QOSCTRL_15_8_TID12_OFFSET          0x00000040
#define RX_PPDU_END_USER_STATS_16_QOSCTRL_15_8_TID12_LSB             0
#define RX_PPDU_END_USER_STATS_16_QOSCTRL_15_8_TID12_MASK            0x000000ff

/* Description		RX_PPDU_END_USER_STATS_16_QOSCTRL_15_8_TID13
			
			Field only valid when Received_qos_data_tid_bitmap[13]
			is set
			
			
			
			QoS control field bits 15-8 of the last properly
			received MPDU with a QoS control field embedded, with  TID
			== 13
*/
#define RX_PPDU_END_USER_STATS_16_QOSCTRL_15_8_TID13_OFFSET          0x00000040
#define RX_PPDU_END_USER_STATS_16_QOSCTRL_15_8_TID13_LSB             8
#define RX_PPDU_END_USER_STATS_16_QOSCTRL_15_8_TID13_MASK            0x0000ff00

/* Description		RX_PPDU_END_USER_STATS_16_QOSCTRL_15_8_TID14
			
			Field only valid when Received_qos_data_tid_bitmap[14]
			is set
			
			
			
			QoS control field bits 15-8 of the last properly
			received MPDU with a QoS control field embedded, with  TID
			== 14
*/
#define RX_PPDU_END_USER_STATS_16_QOSCTRL_15_8_TID14_OFFSET          0x00000040
#define RX_PPDU_END_USER_STATS_16_QOSCTRL_15_8_TID14_LSB             16
#define RX_PPDU_END_USER_STATS_16_QOSCTRL_15_8_TID14_MASK            0x00ff0000

/* Description		RX_PPDU_END_USER_STATS_16_QOSCTRL_15_8_TID15
			
			Field only valid when Received_qos_data_tid_bitmap[15]
			is set
			
			
			
			QoS control field bits 15-8 of the last properly
			received MPDU with a QoS control field embedded, with  TID
			== 15
*/
#define RX_PPDU_END_USER_STATS_16_QOSCTRL_15_8_TID15_OFFSET          0x00000040
#define RX_PPDU_END_USER_STATS_16_QOSCTRL_15_8_TID15_LSB             24
#define RX_PPDU_END_USER_STATS_16_QOSCTRL_15_8_TID15_MASK            0xff000000

/* Description		RX_PPDU_END_USER_STATS_17_MPDU_OK_BYTE_COUNT
			
			The number of bytes received within an MPDU for this
			user with correct FCS. This includes the FCS field
			
			
			
			NOTE:
			
			The sum of the four fields.....
			
			Mpdu_ok_byte_count +
			
			mpdu_err_byte_count +
			
			
			.....is the total number of bytes that were received for
			this user from the PHY.
			
			
			
			<legal all>
*/
#define RX_PPDU_END_USER_STATS_17_MPDU_OK_BYTE_COUNT_OFFSET          0x00000044
#define RX_PPDU_END_USER_STATS_17_MPDU_OK_BYTE_COUNT_LSB             0
#define RX_PPDU_END_USER_STATS_17_MPDU_OK_BYTE_COUNT_MASK            0x01ffffff

/* Description		RX_PPDU_END_USER_STATS_17_AMPDU_DELIM_OK_COUNT_6_0
			
			Number of AMPDU delimiter received with correct
			structure
			
			LSB 7 bits from this counter
			
			
			
			Note that this is a delimiter count and not byte count.
			To get to the number of bytes occupied by these delimiters,
			multiply this number by 4
			
			
			
			<legal all>
*/
#define RX_PPDU_END_USER_STATS_17_AMPDU_DELIM_OK_COUNT_6_0_OFFSET    0x00000044
#define RX_PPDU_END_USER_STATS_17_AMPDU_DELIM_OK_COUNT_6_0_LSB       25
#define RX_PPDU_END_USER_STATS_17_AMPDU_DELIM_OK_COUNT_6_0_MASK      0xfe000000

/* Description		RX_PPDU_END_USER_STATS_18_AMPDU_DELIM_ERR_COUNT
			
			The number of MPDU delimiter errors counted for this
			user.
			
			
			
			Note that this is a delimiter count and not byte count.
			To get to the number of bytes occupied by these delimiters,
			multiply this number by 4
			
			<legal all>
*/
#define RX_PPDU_END_USER_STATS_18_AMPDU_DELIM_ERR_COUNT_OFFSET       0x00000048
#define RX_PPDU_END_USER_STATS_18_AMPDU_DELIM_ERR_COUNT_LSB          0
#define RX_PPDU_END_USER_STATS_18_AMPDU_DELIM_ERR_COUNT_MASK         0x01ffffff

/* Description		RX_PPDU_END_USER_STATS_18_AMPDU_DELIM_OK_COUNT_13_7
			
			Number of AMPDU delimiters received with correct
			structure
			
			Bits 13-7 from this counter
			
			
			
			Note that this is a delimiter count and not byte count.
			To get to the number of bytes occupied by these delimiters,
			multiply this number by 4
			
			<legal all>
*/
#define RX_PPDU_END_USER_STATS_18_AMPDU_DELIM_OK_COUNT_13_7_OFFSET   0x00000048
#define RX_PPDU_END_USER_STATS_18_AMPDU_DELIM_OK_COUNT_13_7_LSB      25
#define RX_PPDU_END_USER_STATS_18_AMPDU_DELIM_OK_COUNT_13_7_MASK     0xfe000000

/* Description		RX_PPDU_END_USER_STATS_19_MPDU_ERR_BYTE_COUNT
			
			The number of bytes belonging to MPDUs with an FCS
			error. This includes the FCS field.
			
			
			
			<legal all>
*/
#define RX_PPDU_END_USER_STATS_19_MPDU_ERR_BYTE_COUNT_OFFSET         0x0000004c
#define RX_PPDU_END_USER_STATS_19_MPDU_ERR_BYTE_COUNT_LSB            0
#define RX_PPDU_END_USER_STATS_19_MPDU_ERR_BYTE_COUNT_MASK           0x01ffffff

/* Description		RX_PPDU_END_USER_STATS_19_AMPDU_DELIM_OK_COUNT_20_14
			
			Number of AMPDU delimiters received with correct
			structure
			
			Bits 20-14 from this counter
			
			
			
			Note that this is a delimiter count and not byte count.
			To get to the number of bytes occupied by these delimiters,
			multiply this number by 4
			
			
			
			<legal all>
*/
#define RX_PPDU_END_USER_STATS_19_AMPDU_DELIM_OK_COUNT_20_14_OFFSET  0x0000004c
#define RX_PPDU_END_USER_STATS_19_AMPDU_DELIM_OK_COUNT_20_14_LSB     25
#define RX_PPDU_END_USER_STATS_19_AMPDU_DELIM_OK_COUNT_20_14_MASK    0xfe000000

/* Description		RX_PPDU_END_USER_STATS_20_NON_CONSECUTIVE_DELIMITER_ERR
			
			The number of times an MPDU delimiter error is detected
			that is not immediately preceded by another MPDU delimiter
			also with FCS error.
			
			
			
			The counter saturates at 0xFFFF
			
			
			
			<legal all>
*/
#define RX_PPDU_END_USER_STATS_20_NON_CONSECUTIVE_DELIMITER_ERR_OFFSET 0x00000050
#define RX_PPDU_END_USER_STATS_20_NON_CONSECUTIVE_DELIMITER_ERR_LSB  0
#define RX_PPDU_END_USER_STATS_20_NON_CONSECUTIVE_DELIMITER_ERR_MASK 0x0000ffff

/* Description		RX_PPDU_END_USER_STATS_20_RESERVED_20A
			
			<legal 0>
*/
#define RX_PPDU_END_USER_STATS_20_RESERVED_20A_OFFSET                0x00000050
#define RX_PPDU_END_USER_STATS_20_RESERVED_20A_LSB                   16
#define RX_PPDU_END_USER_STATS_20_RESERVED_20A_MASK                  0xffff0000

/* Description		RX_PPDU_END_USER_STATS_21_HT_CONTROL_NULL_FIELD
			
			
			
			
			Last successfully received
			HT_CONTROL/VHT_CONTROL/HE_CONTROL  field from QoS Null frame
			for this user. 
			
			<legal all>
*/
#define RX_PPDU_END_USER_STATS_21_HT_CONTROL_NULL_FIELD_OFFSET       0x00000054
#define RX_PPDU_END_USER_STATS_21_HT_CONTROL_NULL_FIELD_LSB          0
#define RX_PPDU_END_USER_STATS_21_HT_CONTROL_NULL_FIELD_MASK         0xffffffff

/* Description		RX_PPDU_END_USER_STATS_22_SW_RESPONSE_REFERENCE_PTR_EXT
			
			Extended Pointer info that SW uses to refer back to an
			expected response transmission. Used for Rate adaptation
			purposes.
			
			When a reception occurs that is not tied to an expected
			response, this field is set to 0x0.
			
			
			
			Note: earlier on in this TLV there is also the field:
			Sw_response_reference_ptr.
			
			<legal all>
*/
#define RX_PPDU_END_USER_STATS_22_SW_RESPONSE_REFERENCE_PTR_EXT_OFFSET 0x00000058
#define RX_PPDU_END_USER_STATS_22_SW_RESPONSE_REFERENCE_PTR_EXT_LSB  0
#define RX_PPDU_END_USER_STATS_22_SW_RESPONSE_REFERENCE_PTR_EXT_MASK 0xffffffff


#endif // _RX_PPDU_END_USER_STATS_H_
