/* Copyright (c) 2022, Qualcomm Innovation Center, Inc. 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 _RXPCU_PPDU_END_INFO_H_
#define _RXPCU_PPDU_END_INFO_H_
#if !defined(__ASSEMBLER__)
#endif

#include "phyrx_abort_request_info.h"
#include "macrx_abort_request_info.h"
#include "rxpcu_ppdu_end_layout_info.h"
#define NUM_OF_DWORDS_RXPCU_PPDU_END_INFO 28

#define NUM_OF_QWORDS_RXPCU_PPDU_END_INFO 14


struct rxpcu_ppdu_end_info {
#ifndef WIFI_BIT_ORDER_BIG_ENDIAN
             uint32_t wb_timestamp_lower_32                                   : 32; // [31:0]
             uint32_t wb_timestamp_upper_32                                   : 32; // [31:0]
             uint32_t rx_antenna                                              : 24, // [23:0]
                      tx_ht_vht_ack                                           :  1, // [24:24]
                      unsupported_mu_nc                                       :  1, // [25:25]
                      otp_txbf_disable                                        :  1, // [26:26]
                      previous_tlv_corrupted                                  :  1, // [27:27]
                      phyrx_abort_request_info_valid                          :  1, // [28:28]
                      macrx_abort_request_info_valid                          :  1, // [29:29]
                      reserved                                                :  2; // [31:30]
             uint32_t coex_bt_tx_from_start_of_rx                             :  1, // [0:0]
                      coex_bt_tx_after_start_of_rx                            :  1, // [1:1]
                      coex_wan_tx_from_start_of_rx                            :  1, // [2:2]
                      coex_wan_tx_after_start_of_rx                           :  1, // [3:3]
                      coex_wlan_tx_from_start_of_rx                           :  1, // [4:4]
                      coex_wlan_tx_after_start_of_rx                          :  1, // [5:5]
                      mpdu_delimiter_errors_seen                              :  1, // [6:6]
                      ftm_tm                                                  :  2, // [8:7]
                      dialog_token                                            :  8, // [16:9]
                      follow_up_dialog_token                                  :  8, // [24:17]
                      bb_captured_channel                                     :  1, // [25:25]
                      bb_captured_reason                                      :  3, // [28:26]
                      bb_captured_timeout                                     :  1, // [29:29]
                      reserved_3                                              :  2; // [31:30]
             uint32_t before_mpdu_count_passing_fcs                           : 10, // [9:0]
                      before_mpdu_count_failing_fcs                           : 10, // [19:10]
                      after_mpdu_count_passing_fcs                            : 10, // [29:20]
                      reserved_4                                              :  2; // [31:30]
             uint32_t after_mpdu_count_failing_fcs                            : 10, // [9:0]
                      reserved_5                                              : 22; // [31:10]
             uint32_t phy_timestamp_tx_lower_32                               : 32; // [31:0]
             uint32_t phy_timestamp_tx_upper_32                               : 32; // [31:0]
             uint32_t bb_length                                               : 16, // [15:0]
                      bb_data                                                 :  1, // [16:16]
                      reserved_8                                              :  3, // [19:17]
                      first_bt_broadcast_status_details                       : 12; // [31:20]
             uint32_t rx_ppdu_duration                                        : 24, // [23:0]
                      reserved_9                                              :  8; // [31:24]
             uint32_t ast_index                                               : 16, // [15:0]
                      ast_index_valid                                         :  1, // [16:16]
                      reserved_10                                             :  3, // [19:17]
                      second_bt_broadcast_status_details                      : 12; // [31:20]
             struct   phyrx_abort_request_info                                  phyrx_abort_request_info_details;
             struct   macrx_abort_request_info                                  macrx_abort_request_info_details;
             uint16_t pre_bt_broadcast_status_details                         : 12, // [27:16]
                      reserved_12a                                            :  4; // [31:28]
             uint32_t non_qos_sn_info_valid                                   :  1, // [0:0]
                      reserved_13a                                            :  5, // [5:1]
                      non_qos_sn_highest                                      : 12, // [17:6]
                      non_qos_sn_highest_retry_setting                        :  1, // [18:18]
                      non_qos_sn_lowest                                       : 12, // [30:19]
                      non_qos_sn_lowest_retry_setting                         :  1; // [31:31]
             uint32_t qos_sn_1_info_valid                                     :  1, // [0:0]
                      reserved_14a                                            :  1, // [1:1]
                      qos_sn_1_tid                                            :  4, // [5:2]
                      qos_sn_1_highest                                        : 12, // [17:6]
                      qos_sn_1_highest_retry_setting                          :  1, // [18:18]
                      qos_sn_1_lowest                                         : 12, // [30:19]
                      qos_sn_1_lowest_retry_setting                           :  1; // [31:31]
             uint32_t qos_sn_2_info_valid                                     :  1, // [0:0]
                      reserved_15a                                            :  1, // [1:1]
                      qos_sn_2_tid                                            :  4, // [5:2]
                      qos_sn_2_highest                                        : 12, // [17:6]
                      qos_sn_2_highest_retry_setting                          :  1, // [18:18]
                      qos_sn_2_lowest                                         : 12, // [30:19]
                      qos_sn_2_lowest_retry_setting                           :  1; // [31:31]
             struct   rxpcu_ppdu_end_layout_info                                rxpcu_ppdu_end_layout_details;
             uint32_t corrupted_due_to_fifo_delay                             :  1, // [0:0]
                      qos_sn_1_more_frag_state                                :  1, // [1:1]
                      qos_sn_1_frag_num_state                                 :  4, // [5:2]
                      qos_sn_2_more_frag_state                                :  1, // [6:6]
                      qos_sn_2_frag_num_state                                 :  4, // [10:7]
                      reserved_26a                                            : 21; // [31:11]
             uint32_t rx_ppdu_end_marker                                      : 32; // [31:0]
#else
             uint32_t wb_timestamp_lower_32                                   : 32; // [31:0]
             uint32_t wb_timestamp_upper_32                                   : 32; // [31:0]
             uint32_t reserved                                                :  2, // [31:30]
                      macrx_abort_request_info_valid                          :  1, // [29:29]
                      phyrx_abort_request_info_valid                          :  1, // [28:28]
                      previous_tlv_corrupted                                  :  1, // [27:27]
                      otp_txbf_disable                                        :  1, // [26:26]
                      unsupported_mu_nc                                       :  1, // [25:25]
                      tx_ht_vht_ack                                           :  1, // [24:24]
                      rx_antenna                                              : 24; // [23:0]
             uint32_t reserved_3                                              :  2, // [31:30]
                      bb_captured_timeout                                     :  1, // [29:29]
                      bb_captured_reason                                      :  3, // [28:26]
                      bb_captured_channel                                     :  1, // [25:25]
                      follow_up_dialog_token                                  :  8, // [24:17]
                      dialog_token                                            :  8, // [16:9]
                      ftm_tm                                                  :  2, // [8:7]
                      mpdu_delimiter_errors_seen                              :  1, // [6:6]
                      coex_wlan_tx_after_start_of_rx                          :  1, // [5:5]
                      coex_wlan_tx_from_start_of_rx                           :  1, // [4:4]
                      coex_wan_tx_after_start_of_rx                           :  1, // [3:3]
                      coex_wan_tx_from_start_of_rx                            :  1, // [2:2]
                      coex_bt_tx_after_start_of_rx                            :  1, // [1:1]
                      coex_bt_tx_from_start_of_rx                             :  1; // [0:0]
             uint32_t reserved_4                                              :  2, // [31:30]
                      after_mpdu_count_passing_fcs                            : 10, // [29:20]
                      before_mpdu_count_failing_fcs                           : 10, // [19:10]
                      before_mpdu_count_passing_fcs                           : 10; // [9:0]
             uint32_t reserved_5                                              : 22, // [31:10]
                      after_mpdu_count_failing_fcs                            : 10; // [9:0]
             uint32_t phy_timestamp_tx_lower_32                               : 32; // [31:0]
             uint32_t phy_timestamp_tx_upper_32                               : 32; // [31:0]
             uint32_t first_bt_broadcast_status_details                       : 12, // [31:20]
                      reserved_8                                              :  3, // [19:17]
                      bb_data                                                 :  1, // [16:16]
                      bb_length                                               : 16; // [15:0]
             uint32_t reserved_9                                              :  8, // [31:24]
                      rx_ppdu_duration                                        : 24; // [23:0]
             uint32_t second_bt_broadcast_status_details                      : 12, // [31:20]
                      reserved_10                                             :  3, // [19:17]
                      ast_index_valid                                         :  1, // [16:16]
                      ast_index                                               : 16; // [15:0]
             struct   phyrx_abort_request_info                                  phyrx_abort_request_info_details;
             uint32_t reserved_12a                                            :  4, // [31:28]
                      pre_bt_broadcast_status_details                         : 12; // [27:16]
             struct   macrx_abort_request_info                                  macrx_abort_request_info_details;
             uint32_t non_qos_sn_lowest_retry_setting                         :  1, // [31:31]
                      non_qos_sn_lowest                                       : 12, // [30:19]
                      non_qos_sn_highest_retry_setting                        :  1, // [18:18]
                      non_qos_sn_highest                                      : 12, // [17:6]
                      reserved_13a                                            :  5, // [5:1]
                      non_qos_sn_info_valid                                   :  1; // [0:0]
             uint32_t qos_sn_1_lowest_retry_setting                           :  1, // [31:31]
                      qos_sn_1_lowest                                         : 12, // [30:19]
                      qos_sn_1_highest_retry_setting                          :  1, // [18:18]
                      qos_sn_1_highest                                        : 12, // [17:6]
                      qos_sn_1_tid                                            :  4, // [5:2]
                      reserved_14a                                            :  1, // [1:1]
                      qos_sn_1_info_valid                                     :  1; // [0:0]
             uint32_t qos_sn_2_lowest_retry_setting                           :  1, // [31:31]
                      qos_sn_2_lowest                                         : 12, // [30:19]
                      qos_sn_2_highest_retry_setting                          :  1, // [18:18]
                      qos_sn_2_highest                                        : 12, // [17:6]
                      qos_sn_2_tid                                            :  4, // [5:2]
                      reserved_15a                                            :  1, // [1:1]
                      qos_sn_2_info_valid                                     :  1; // [0:0]
             struct   rxpcu_ppdu_end_layout_info                                rxpcu_ppdu_end_layout_details;
             uint32_t reserved_26a                                            : 21, // [31:11]
                      qos_sn_2_frag_num_state                                 :  4, // [10:7]
                      qos_sn_2_more_frag_state                                :  1, // [6:6]
                      qos_sn_1_frag_num_state                                 :  4, // [5:2]
                      qos_sn_1_more_frag_state                                :  1, // [1:1]
                      corrupted_due_to_fifo_delay                             :  1; // [0:0]
             uint32_t rx_ppdu_end_marker                                      : 32; // [31:0]
#endif
};


/* Description		WB_TIMESTAMP_LOWER_32

			WLAN/BT timestamp is a 1 usec resolution timestamp which
			 does not get updated based on receive beacon like TSF. 
			 The same rules for capturing tsf_timestamp are used to 
			capture the wb_timestamp. This field represents the lower
			 32 bits of the 64-bit timestamp
*/

#define RXPCU_PPDU_END_INFO_WB_TIMESTAMP_LOWER_32_OFFSET                            0x0000000000000000
#define RXPCU_PPDU_END_INFO_WB_TIMESTAMP_LOWER_32_LSB                               0
#define RXPCU_PPDU_END_INFO_WB_TIMESTAMP_LOWER_32_MSB                               31
#define RXPCU_PPDU_END_INFO_WB_TIMESTAMP_LOWER_32_MASK                              0x00000000ffffffff


/* Description		WB_TIMESTAMP_UPPER_32

			WLAN/BT timestamp is a 1 usec resolution timestamp which
			 does not get updated based on receive beacon like TSF. 
			 The same rules for capturing tsf_timestamp are used to 
			capture the wb_timestamp. This field represents the upper
			 32 bits of the 64-bit timestamp
*/

#define RXPCU_PPDU_END_INFO_WB_TIMESTAMP_UPPER_32_OFFSET                            0x0000000000000000
#define RXPCU_PPDU_END_INFO_WB_TIMESTAMP_UPPER_32_LSB                               32
#define RXPCU_PPDU_END_INFO_WB_TIMESTAMP_UPPER_32_MSB                               63
#define RXPCU_PPDU_END_INFO_WB_TIMESTAMP_UPPER_32_MASK                              0xffffffff00000000


/* Description		RX_ANTENNA

			Receive antenna value ???
*/

#define RXPCU_PPDU_END_INFO_RX_ANTENNA_OFFSET                                       0x0000000000000008
#define RXPCU_PPDU_END_INFO_RX_ANTENNA_LSB                                          0
#define RXPCU_PPDU_END_INFO_RX_ANTENNA_MSB                                          23
#define RXPCU_PPDU_END_INFO_RX_ANTENNA_MASK                                         0x0000000000ffffff


/* Description		TX_HT_VHT_ACK

			Indicates that a HT or VHT Ack/BA frame was transmitted 
			in response to this receive packet.
*/

#define RXPCU_PPDU_END_INFO_TX_HT_VHT_ACK_OFFSET                                    0x0000000000000008
#define RXPCU_PPDU_END_INFO_TX_HT_VHT_ACK_LSB                                       24
#define RXPCU_PPDU_END_INFO_TX_HT_VHT_ACK_MSB                                       24
#define RXPCU_PPDU_END_INFO_TX_HT_VHT_ACK_MASK                                      0x0000000001000000


/* Description		UNSUPPORTED_MU_NC

			Set if MU Nc > 2 in received NDPA.
			If this bit is set, even though AID and BSSID are matched, 
			MAC doesn't send tx_expect_ndp to PHY, because MU Nc > 2
			 is not supported in Helium. 
*/

#define RXPCU_PPDU_END_INFO_UNSUPPORTED_MU_NC_OFFSET                                0x0000000000000008
#define RXPCU_PPDU_END_INFO_UNSUPPORTED_MU_NC_LSB                                   25
#define RXPCU_PPDU_END_INFO_UNSUPPORTED_MU_NC_MSB                                   25
#define RXPCU_PPDU_END_INFO_UNSUPPORTED_MU_NC_MASK                                  0x0000000002000000


/* Description		OTP_TXBF_DISABLE

			Set if either OTP_SUBFEE_DISABLE or OTP_TXBF_DISABLE is 
			set and if RXPU receives directed NDPA frame. Then, RXPCU
			 should not send TX_EXPECT_NDP TLV to SW but set this bit
			 to inform SW. 
*/

#define RXPCU_PPDU_END_INFO_OTP_TXBF_DISABLE_OFFSET                                 0x0000000000000008
#define RXPCU_PPDU_END_INFO_OTP_TXBF_DISABLE_LSB                                    26
#define RXPCU_PPDU_END_INFO_OTP_TXBF_DISABLE_MSB                                    26
#define RXPCU_PPDU_END_INFO_OTP_TXBF_DISABLE_MASK                                   0x0000000004000000


/* Description		PREVIOUS_TLV_CORRUPTED

			When set, the TLV preceding this RXPCU_END_INFO TLV within
			 the RX_PPDU_END TLV, is corrupted. Not the entire TLV was
			 received.... Likely due to an abort scenario... If abort
			 is to blame, see the abort data datastructure for details.
			
			<legal all>
*/

#define RXPCU_PPDU_END_INFO_PREVIOUS_TLV_CORRUPTED_OFFSET                           0x0000000000000008
#define RXPCU_PPDU_END_INFO_PREVIOUS_TLV_CORRUPTED_LSB                              27
#define RXPCU_PPDU_END_INFO_PREVIOUS_TLV_CORRUPTED_MSB                              27
#define RXPCU_PPDU_END_INFO_PREVIOUS_TLV_CORRUPTED_MASK                             0x0000000008000000


/* Description		PHYRX_ABORT_REQUEST_INFO_VALID

			When set, the PHY sent an PHYRX_ABORT_REQUEST TLV to RXPCU. 
			The abort fields embedded in this TLV contain valid info.
			
			<legal all>
*/

#define RXPCU_PPDU_END_INFO_PHYRX_ABORT_REQUEST_INFO_VALID_OFFSET                   0x0000000000000008
#define RXPCU_PPDU_END_INFO_PHYRX_ABORT_REQUEST_INFO_VALID_LSB                      28
#define RXPCU_PPDU_END_INFO_PHYRX_ABORT_REQUEST_INFO_VALID_MSB                      28
#define RXPCU_PPDU_END_INFO_PHYRX_ABORT_REQUEST_INFO_VALID_MASK                     0x0000000010000000


/* Description		MACRX_ABORT_REQUEST_INFO_VALID

			When set, the MAC sent an MACRX_ABORT_REQUEST TLV to PHYRX. 
			The abort fields embedded in this TLV contain valid info.
			
			<legal all>
*/

#define RXPCU_PPDU_END_INFO_MACRX_ABORT_REQUEST_INFO_VALID_OFFSET                   0x0000000000000008
#define RXPCU_PPDU_END_INFO_MACRX_ABORT_REQUEST_INFO_VALID_LSB                      29
#define RXPCU_PPDU_END_INFO_MACRX_ABORT_REQUEST_INFO_VALID_MSB                      29
#define RXPCU_PPDU_END_INFO_MACRX_ABORT_REQUEST_INFO_VALID_MASK                     0x0000000020000000


/* Description		RESERVED

			<legal 0>
*/

#define RXPCU_PPDU_END_INFO_RESERVED_OFFSET                                         0x0000000000000008
#define RXPCU_PPDU_END_INFO_RESERVED_LSB                                            30
#define RXPCU_PPDU_END_INFO_RESERVED_MSB                                            31
#define RXPCU_PPDU_END_INFO_RESERVED_MASK                                           0x00000000c0000000


/* Description		COEX_BT_TX_FROM_START_OF_RX

			Set when BT TX was ongoing when WLAN RX started
*/

#define RXPCU_PPDU_END_INFO_COEX_BT_TX_FROM_START_OF_RX_OFFSET                      0x0000000000000008
#define RXPCU_PPDU_END_INFO_COEX_BT_TX_FROM_START_OF_RX_LSB                         32
#define RXPCU_PPDU_END_INFO_COEX_BT_TX_FROM_START_OF_RX_MSB                         32
#define RXPCU_PPDU_END_INFO_COEX_BT_TX_FROM_START_OF_RX_MASK                        0x0000000100000000


/* Description		COEX_BT_TX_AFTER_START_OF_RX

			Set when BT TX started while WLAN RX was already ongoing
			
*/

#define RXPCU_PPDU_END_INFO_COEX_BT_TX_AFTER_START_OF_RX_OFFSET                     0x0000000000000008
#define RXPCU_PPDU_END_INFO_COEX_BT_TX_AFTER_START_OF_RX_LSB                        33
#define RXPCU_PPDU_END_INFO_COEX_BT_TX_AFTER_START_OF_RX_MSB                        33
#define RXPCU_PPDU_END_INFO_COEX_BT_TX_AFTER_START_OF_RX_MASK                       0x0000000200000000


/* Description		COEX_WAN_TX_FROM_START_OF_RX

			Set when WAN TX was ongoing when WLAN RX started
*/

#define RXPCU_PPDU_END_INFO_COEX_WAN_TX_FROM_START_OF_RX_OFFSET                     0x0000000000000008
#define RXPCU_PPDU_END_INFO_COEX_WAN_TX_FROM_START_OF_RX_LSB                        34
#define RXPCU_PPDU_END_INFO_COEX_WAN_TX_FROM_START_OF_RX_MSB                        34
#define RXPCU_PPDU_END_INFO_COEX_WAN_TX_FROM_START_OF_RX_MASK                       0x0000000400000000


/* Description		COEX_WAN_TX_AFTER_START_OF_RX

			Set when WAN TX started while WLAN RX was already ongoing
			
*/

#define RXPCU_PPDU_END_INFO_COEX_WAN_TX_AFTER_START_OF_RX_OFFSET                    0x0000000000000008
#define RXPCU_PPDU_END_INFO_COEX_WAN_TX_AFTER_START_OF_RX_LSB                       35
#define RXPCU_PPDU_END_INFO_COEX_WAN_TX_AFTER_START_OF_RX_MSB                       35
#define RXPCU_PPDU_END_INFO_COEX_WAN_TX_AFTER_START_OF_RX_MASK                      0x0000000800000000


/* Description		COEX_WLAN_TX_FROM_START_OF_RX

			Set when other WLAN TX was ongoing when WLAN RX started
*/

#define RXPCU_PPDU_END_INFO_COEX_WLAN_TX_FROM_START_OF_RX_OFFSET                    0x0000000000000008
#define RXPCU_PPDU_END_INFO_COEX_WLAN_TX_FROM_START_OF_RX_LSB                       36
#define RXPCU_PPDU_END_INFO_COEX_WLAN_TX_FROM_START_OF_RX_MSB                       36
#define RXPCU_PPDU_END_INFO_COEX_WLAN_TX_FROM_START_OF_RX_MASK                      0x0000001000000000


/* Description		COEX_WLAN_TX_AFTER_START_OF_RX

			Set when other WLAN TX started while WLAN RX was already
			 ongoing
*/

#define RXPCU_PPDU_END_INFO_COEX_WLAN_TX_AFTER_START_OF_RX_OFFSET                   0x0000000000000008
#define RXPCU_PPDU_END_INFO_COEX_WLAN_TX_AFTER_START_OF_RX_LSB                      37
#define RXPCU_PPDU_END_INFO_COEX_WLAN_TX_AFTER_START_OF_RX_MSB                      37
#define RXPCU_PPDU_END_INFO_COEX_WLAN_TX_AFTER_START_OF_RX_MASK                     0x0000002000000000


/* Description		MPDU_DELIMITER_ERRORS_SEEN

			When set, MPDU delimiter errors have been detected during
			 this PPDU reception
*/

#define RXPCU_PPDU_END_INFO_MPDU_DELIMITER_ERRORS_SEEN_OFFSET                       0x0000000000000008
#define RXPCU_PPDU_END_INFO_MPDU_DELIMITER_ERRORS_SEEN_LSB                          38
#define RXPCU_PPDU_END_INFO_MPDU_DELIMITER_ERRORS_SEEN_MSB                          38
#define RXPCU_PPDU_END_INFO_MPDU_DELIMITER_ERRORS_SEEN_MASK                         0x0000004000000000


/* Description		FTM_TM

			Indicate the timestamp is for the FTM or TM frame 
			
			0: non TM or FTM frame
			1: FTM frame
			2: TM frame
			3: reserved
			<legal all>
*/

#define RXPCU_PPDU_END_INFO_FTM_TM_OFFSET                                           0x0000000000000008
#define RXPCU_PPDU_END_INFO_FTM_TM_LSB                                              39
#define RXPCU_PPDU_END_INFO_FTM_TM_MSB                                              40
#define RXPCU_PPDU_END_INFO_FTM_TM_MASK                                             0x0000018000000000


/* Description		DIALOG_TOKEN

			The dialog token in the FTM or TM frame. Only valid when
			 the FTM is set. Clear to 254 for a non-FTM frame
			<legal all>
*/

#define RXPCU_PPDU_END_INFO_DIALOG_TOKEN_OFFSET                                     0x0000000000000008
#define RXPCU_PPDU_END_INFO_DIALOG_TOKEN_LSB                                        41
#define RXPCU_PPDU_END_INFO_DIALOG_TOKEN_MSB                                        48
#define RXPCU_PPDU_END_INFO_DIALOG_TOKEN_MASK                                       0x0001fe0000000000


/* Description		FOLLOW_UP_DIALOG_TOKEN

			The follow up dialog token in the FTM or TM frame. Only 
			valid when the FTM is set. Clear to 0 for a non-FTM frame, 
			The follow up dialog token in the FTM frame. Only valid 
			when the FTM is set. Clear to 255 for a non-FTM frame<legal
			 all>
*/

#define RXPCU_PPDU_END_INFO_FOLLOW_UP_DIALOG_TOKEN_OFFSET                           0x0000000000000008
#define RXPCU_PPDU_END_INFO_FOLLOW_UP_DIALOG_TOKEN_LSB                              49
#define RXPCU_PPDU_END_INFO_FOLLOW_UP_DIALOG_TOKEN_MSB                              56
#define RXPCU_PPDU_END_INFO_FOLLOW_UP_DIALOG_TOKEN_MASK                             0x01fe000000000000


/* Description		BB_CAPTURED_CHANNEL

			Set by RXPCU when MACRX_FREEZE_CAPTURE_CHANNEL TLV is sent
			 to PHY, FW check it to correlate current PPDU TLVs with
			 uploaded channel information.
			
			<legal all>
*/

#define RXPCU_PPDU_END_INFO_BB_CAPTURED_CHANNEL_OFFSET                              0x0000000000000008
#define RXPCU_PPDU_END_INFO_BB_CAPTURED_CHANNEL_LSB                                 57
#define RXPCU_PPDU_END_INFO_BB_CAPTURED_CHANNEL_MSB                                 57
#define RXPCU_PPDU_END_INFO_BB_CAPTURED_CHANNEL_MASK                                0x0200000000000000


/* Description		BB_CAPTURED_REASON

			Copy "capture_reason" of MACRX_FREEZE_CAPTURE_CHANNEL TLV
			 to here for FW usage. Valid when bb_captured_channel or
			 bb_captured_timeout is set.
			
			This field indicates why the MAC asked to capture the channel
			
			<enum 0 freeze_reason_TM>
			<enum 1 freeze_reason_FTM>
			<enum 2 freeze_reason_ACK_resp_to_TM_FTM>
			<enum 3 freeze_reason_TA_RA_TYPE_FILTER>
			<enum 4 freeze_reason_NDPA_NDP>
			<enum 5 freeze_reason_ALL_PACKET>
			
			<legal 0-5>
*/

#define RXPCU_PPDU_END_INFO_BB_CAPTURED_REASON_OFFSET                               0x0000000000000008
#define RXPCU_PPDU_END_INFO_BB_CAPTURED_REASON_LSB                                  58
#define RXPCU_PPDU_END_INFO_BB_CAPTURED_REASON_MSB                                  60
#define RXPCU_PPDU_END_INFO_BB_CAPTURED_REASON_MASK                                 0x1c00000000000000


/* Description		BB_CAPTURED_TIMEOUT

			Set by RxPCU to indicate channel capture condition is meet, 
			but MACRX_FREEZE_CAPTURE_CHANNEL is not sent to PHY due 
			to AST long delay, which means the rx_frame_falling edge
			 to FREEZE TLV ready time exceed the threshold time defined
			 by RXPCU register FREEZE_TLV_DELAY_CNT_THRESH. 
			Bb_captured_reason is still valid in this case.
			
			<legal all>
*/

#define RXPCU_PPDU_END_INFO_BB_CAPTURED_TIMEOUT_OFFSET                              0x0000000000000008
#define RXPCU_PPDU_END_INFO_BB_CAPTURED_TIMEOUT_LSB                                 61
#define RXPCU_PPDU_END_INFO_BB_CAPTURED_TIMEOUT_MSB                                 61
#define RXPCU_PPDU_END_INFO_BB_CAPTURED_TIMEOUT_MASK                                0x2000000000000000


/* Description		RESERVED_3

			<legal 0>
*/

#define RXPCU_PPDU_END_INFO_RESERVED_3_OFFSET                                       0x0000000000000008
#define RXPCU_PPDU_END_INFO_RESERVED_3_LSB                                          62
#define RXPCU_PPDU_END_INFO_RESERVED_3_MSB                                          63
#define RXPCU_PPDU_END_INFO_RESERVED_3_MASK                                         0xc000000000000000


/* Description		BEFORE_MPDU_COUNT_PASSING_FCS

			Number of MPDUs received in this PPDU that passed the FCS
			 check before the Coex TX started
			
			The counter saturates at 0x3FF.
			<legal all>
*/

#define RXPCU_PPDU_END_INFO_BEFORE_MPDU_COUNT_PASSING_FCS_OFFSET                    0x0000000000000010
#define RXPCU_PPDU_END_INFO_BEFORE_MPDU_COUNT_PASSING_FCS_LSB                       0
#define RXPCU_PPDU_END_INFO_BEFORE_MPDU_COUNT_PASSING_FCS_MSB                       9
#define RXPCU_PPDU_END_INFO_BEFORE_MPDU_COUNT_PASSING_FCS_MASK                      0x00000000000003ff


/* Description		BEFORE_MPDU_COUNT_FAILING_FCS

			Number of MPDUs received in this PPDU that failed the FCS
			 check before the Coex TX started
			
			The counter saturates at 0x3FF.
			<legal all>
*/

#define RXPCU_PPDU_END_INFO_BEFORE_MPDU_COUNT_FAILING_FCS_OFFSET                    0x0000000000000010
#define RXPCU_PPDU_END_INFO_BEFORE_MPDU_COUNT_FAILING_FCS_LSB                       10
#define RXPCU_PPDU_END_INFO_BEFORE_MPDU_COUNT_FAILING_FCS_MSB                       19
#define RXPCU_PPDU_END_INFO_BEFORE_MPDU_COUNT_FAILING_FCS_MASK                      0x00000000000ffc00


/* Description		AFTER_MPDU_COUNT_PASSING_FCS

			Number of MPDUs received in this PPDU that passed the FCS
			 check after the moment the Coex TX started
			
			(Note: The partially received MPDU when the COEX tx start
			 event came in falls in the "after" category)
			
			The counter saturates at 0x3FF.
			<legal all>
*/

#define RXPCU_PPDU_END_INFO_AFTER_MPDU_COUNT_PASSING_FCS_OFFSET                     0x0000000000000010
#define RXPCU_PPDU_END_INFO_AFTER_MPDU_COUNT_PASSING_FCS_LSB                        20
#define RXPCU_PPDU_END_INFO_AFTER_MPDU_COUNT_PASSING_FCS_MSB                        29
#define RXPCU_PPDU_END_INFO_AFTER_MPDU_COUNT_PASSING_FCS_MASK                       0x000000003ff00000


/* Description		RESERVED_4

			<legal 0>
*/

#define RXPCU_PPDU_END_INFO_RESERVED_4_OFFSET                                       0x0000000000000010
#define RXPCU_PPDU_END_INFO_RESERVED_4_LSB                                          30
#define RXPCU_PPDU_END_INFO_RESERVED_4_MSB                                          31
#define RXPCU_PPDU_END_INFO_RESERVED_4_MASK                                         0x00000000c0000000


/* Description		AFTER_MPDU_COUNT_FAILING_FCS

			Number of MPDUs received in this PPDU that failed the FCS
			 check after the moment the Coex TX started
			
			(Note: The partially received MPDU when the COEX tx start
			 event came in falls in the "after" category)
			
			The counter saturates at 0x3FF.
			<legal all>
*/

#define RXPCU_PPDU_END_INFO_AFTER_MPDU_COUNT_FAILING_FCS_OFFSET                     0x0000000000000010
#define RXPCU_PPDU_END_INFO_AFTER_MPDU_COUNT_FAILING_FCS_LSB                        32
#define RXPCU_PPDU_END_INFO_AFTER_MPDU_COUNT_FAILING_FCS_MSB                        41
#define RXPCU_PPDU_END_INFO_AFTER_MPDU_COUNT_FAILING_FCS_MASK                       0x000003ff00000000


/* Description		RESERVED_5

			<legal 0>
*/

#define RXPCU_PPDU_END_INFO_RESERVED_5_OFFSET                                       0x0000000000000010
#define RXPCU_PPDU_END_INFO_RESERVED_5_LSB                                          42
#define RXPCU_PPDU_END_INFO_RESERVED_5_MSB                                          63
#define RXPCU_PPDU_END_INFO_RESERVED_5_MASK                                         0xfffffc0000000000


/* Description		PHY_TIMESTAMP_TX_LOWER_32

			The PHY timestamp in the AMPI of the most recent rising 
			edge (TODO: of what ???) after the TX_PHY_DESC.  This field
			 indicates the lower 32 bits of the timestamp
*/

#define RXPCU_PPDU_END_INFO_PHY_TIMESTAMP_TX_LOWER_32_OFFSET                        0x0000000000000018
#define RXPCU_PPDU_END_INFO_PHY_TIMESTAMP_TX_LOWER_32_LSB                           0
#define RXPCU_PPDU_END_INFO_PHY_TIMESTAMP_TX_LOWER_32_MSB                           31
#define RXPCU_PPDU_END_INFO_PHY_TIMESTAMP_TX_LOWER_32_MASK                          0x00000000ffffffff


/* Description		PHY_TIMESTAMP_TX_UPPER_32

			The PHY timestamp in the AMPI of the most recent rising 
			edge (TODO: of what ???) after the TX_PHY_DESC.  This field
			 indicates the upper 32 bits of the timestamp
*/

#define RXPCU_PPDU_END_INFO_PHY_TIMESTAMP_TX_UPPER_32_OFFSET                        0x0000000000000018
#define RXPCU_PPDU_END_INFO_PHY_TIMESTAMP_TX_UPPER_32_LSB                           32
#define RXPCU_PPDU_END_INFO_PHY_TIMESTAMP_TX_UPPER_32_MSB                           63
#define RXPCU_PPDU_END_INFO_PHY_TIMESTAMP_TX_UPPER_32_MASK                          0xffffffff00000000


/* Description		BB_LENGTH

			Indicates the number of bytes of baseband information for
			 PPDUs where the BB descriptor preamble type is 0x80 to 
			0xFF which indicates that this is not a normal PPDU but 
			rather contains baseband debug information.
			TODO: Is this still needed ??? 
*/

#define RXPCU_PPDU_END_INFO_BB_LENGTH_OFFSET                                        0x0000000000000020
#define RXPCU_PPDU_END_INFO_BB_LENGTH_LSB                                           0
#define RXPCU_PPDU_END_INFO_BB_LENGTH_MSB                                           15
#define RXPCU_PPDU_END_INFO_BB_LENGTH_MASK                                          0x000000000000ffff


/* Description		BB_DATA

			Indicates that BB data associated with this PPDU will exist
			 in the receive buffer.  The exact contents of this BB data
			 can be found by decoding the BB TLV in the buffer associated
			 with the BB data.  See vector_fragment in the Helium_mac_phy_interface.docx
			
*/

#define RXPCU_PPDU_END_INFO_BB_DATA_OFFSET                                          0x0000000000000020
#define RXPCU_PPDU_END_INFO_BB_DATA_LSB                                             16
#define RXPCU_PPDU_END_INFO_BB_DATA_MSB                                             16
#define RXPCU_PPDU_END_INFO_BB_DATA_MASK                                            0x0000000000010000


/* Description		RESERVED_8

			Reserved: HW should fill with 0, FW should ignore.
*/

#define RXPCU_PPDU_END_INFO_RESERVED_8_OFFSET                                       0x0000000000000020
#define RXPCU_PPDU_END_INFO_RESERVED_8_LSB                                          17
#define RXPCU_PPDU_END_INFO_RESERVED_8_MSB                                          19
#define RXPCU_PPDU_END_INFO_RESERVED_8_MASK                                         0x00000000000e0000


/* Description		FIRST_BT_BROADCAST_STATUS_DETAILS

			Same contents as field "bt_broadcast_status_details" for
			 the first received COEX_STATUS_BROADCAST tlv during this
			 PPDU reception.
			
			If no COEX_STATUS_BROADCAST tlv is received during this 
			PPDU reception, this field will be set to 0
			
			
			For detailed info see doc: TBD
			<legal all>
*/

#define RXPCU_PPDU_END_INFO_FIRST_BT_BROADCAST_STATUS_DETAILS_OFFSET                0x0000000000000020
#define RXPCU_PPDU_END_INFO_FIRST_BT_BROADCAST_STATUS_DETAILS_LSB                   20
#define RXPCU_PPDU_END_INFO_FIRST_BT_BROADCAST_STATUS_DETAILS_MSB                   31
#define RXPCU_PPDU_END_INFO_FIRST_BT_BROADCAST_STATUS_DETAILS_MASK                  0x00000000fff00000


/* Description		RX_PPDU_DURATION

			The length of this PPDU reception in us
*/

#define RXPCU_PPDU_END_INFO_RX_PPDU_DURATION_OFFSET                                 0x0000000000000020
#define RXPCU_PPDU_END_INFO_RX_PPDU_DURATION_LSB                                    32
#define RXPCU_PPDU_END_INFO_RX_PPDU_DURATION_MSB                                    55
#define RXPCU_PPDU_END_INFO_RX_PPDU_DURATION_MASK                                   0x00ffffff00000000


/* Description		RESERVED_9

			<legal 0>
*/

#define RXPCU_PPDU_END_INFO_RESERVED_9_OFFSET                                       0x0000000000000020
#define RXPCU_PPDU_END_INFO_RESERVED_9_LSB                                          56
#define RXPCU_PPDU_END_INFO_RESERVED_9_MSB                                          63
#define RXPCU_PPDU_END_INFO_RESERVED_9_MASK                                         0xff00000000000000


/* Description		AST_INDEX

			The AST index of the receive Ack/BA.  This information is
			 provided from the TXPCU to the RXPCU for receive Ack/BA
			 for implicit beamforming.
			<legal all>
*/

#define RXPCU_PPDU_END_INFO_AST_INDEX_OFFSET                                        0x0000000000000028
#define RXPCU_PPDU_END_INFO_AST_INDEX_LSB                                           0
#define RXPCU_PPDU_END_INFO_AST_INDEX_MSB                                           15
#define RXPCU_PPDU_END_INFO_AST_INDEX_MASK                                          0x000000000000ffff


/* Description		AST_INDEX_VALID

			Indicates that ast_index is valid.  Should only be set for
			 receive Ack/BA where single stream implicit sounding is
			 captured.
*/

#define RXPCU_PPDU_END_INFO_AST_INDEX_VALID_OFFSET                                  0x0000000000000028
#define RXPCU_PPDU_END_INFO_AST_INDEX_VALID_LSB                                     16
#define RXPCU_PPDU_END_INFO_AST_INDEX_VALID_MSB                                     16
#define RXPCU_PPDU_END_INFO_AST_INDEX_VALID_MASK                                    0x0000000000010000


/* Description		RESERVED_10

			<legal 0>
*/

#define RXPCU_PPDU_END_INFO_RESERVED_10_OFFSET                                      0x0000000000000028
#define RXPCU_PPDU_END_INFO_RESERVED_10_LSB                                         17
#define RXPCU_PPDU_END_INFO_RESERVED_10_MSB                                         19
#define RXPCU_PPDU_END_INFO_RESERVED_10_MASK                                        0x00000000000e0000


/* Description		SECOND_BT_BROADCAST_STATUS_DETAILS

			Same contents as field "bt_broadcast_status_details" for
			 the second received COEX_STATUS_BROADCAST tlv during this
			 PPDU reception.
			
			If no second COEX_STATUS_BROADCAST tlv is received during
			 this PPDU reception, this field will be set to 0
			
			
			For detailed info see doc: TBD
			<legal all>
*/

#define RXPCU_PPDU_END_INFO_SECOND_BT_BROADCAST_STATUS_DETAILS_OFFSET               0x0000000000000028
#define RXPCU_PPDU_END_INFO_SECOND_BT_BROADCAST_STATUS_DETAILS_LSB                  20
#define RXPCU_PPDU_END_INFO_SECOND_BT_BROADCAST_STATUS_DETAILS_MSB                  31
#define RXPCU_PPDU_END_INFO_SECOND_BT_BROADCAST_STATUS_DETAILS_MASK                 0x00000000fff00000


/* Description		PHYRX_ABORT_REQUEST_INFO_DETAILS

			Field only valid when Phyrx_abort_request_info_valid is 
			set
			The reason why PHY generated an abort request
*/


/* Description		PHYRX_ABORT_REASON

			<enum 0 phyrx_err_phy_off> Reception aborted due to receiving
			 a PHY_OFF TLV
			<enum 1 phyrx_err_synth_off> 
			<enum 2 phyrx_err_ofdma_timing> 
			<enum 3 phyrx_err_ofdma_signal_parity> 
			<enum 4 phyrx_err_ofdma_rate_illegal> 
			<enum 5 phyrx_err_ofdma_length_illegal> 
			<enum 6 phyrx_err_ofdma_restart> 
			<enum 7 phyrx_err_ofdma_service> 
			<enum 8 phyrx_err_ppdu_ofdma_power_drop> 
			
			<enum 9 phyrx_err_cck_blokker> 
			<enum 10 phyrx_err_cck_timing> 
			<enum 11 phyrx_err_cck_header_crc> 
			<enum 12 phyrx_err_cck_rate_illegal> 
			<enum 13 phyrx_err_cck_length_illegal> 
			<enum 14 phyrx_err_cck_restart> 
			<enum 15 phyrx_err_cck_service> 
			<enum 16 phyrx_err_cck_power_drop> 
			
			<enum 17 phyrx_err_ht_crc_err> 
			<enum 18 phyrx_err_ht_length_illegal> 
			<enum 19 phyrx_err_ht_rate_illegal> 
			<enum 20 phyrx_err_ht_zlf> 
			<enum 21 phyrx_err_false_radar_ext> 
			<enum 22 phyrx_err_green_field>
			<enum 60 phyrx_err_ht_nsym_lt_zero>
			
			<enum 23 phyrx_err_bw_gt_dyn_bw> 
			<enum 24 phyrx_err_leg_ht_mismatch> 
			<enum 25 phyrx_err_vht_crc_error> 
			<enum 26 phyrx_err_vht_siga_unsupported> 
			<enum 27 phyrx_err_vht_lsig_len_invalid> 
			<enum 28 phyrx_err_vht_ndp_or_zlf> 
			<enum 29 phyrx_err_vht_nsym_lt_zero> 
			<enum 30 phyrx_err_vht_rx_extra_symbol_mismatch> 
			<enum 31 phyrx_err_vht_rx_skip_group_id0> 
			<enum 32 phyrx_err_vht_rx_skip_group_id1to62> 
			<enum 33 phyrx_err_vht_rx_skip_group_id63> 
			<enum 34 phyrx_err_ofdm_ldpc_decoder_disabled> 
			<enum 35 phyrx_err_defer_nap>
			
			<enum 61 phyrx_err_vht_lsig_rate_mismatch>
			<enum 62 phyrx_err_vht_paid_gid_mismatch>
			<enum 63 phyrx_err_vht_unsupported_bw>
			<enum 64 phyrx_err_vht_gi_disam_mismatch>
			
			<enum 36 phyrx_err_fdomain_timeout> 
			<enum 37 phyrx_err_lsig_rel_check> 
			<enum 38 phyrx_err_bt_collision> 
			<enum 39 phyrx_err_unsupported_mu_feedback> 
			<enum 40 phyrx_err_ppdu_tx_interrupt_rx> 
			<enum 41 phyrx_err_unsupported_cbf> 
			
			<enum 42 phyrx_err_other>  Should not really be used. If
			 needed, ask for documentation update 
			
			<enum 43 phyrx_err_he_siga_unsupported > <enum 44 phyrx_err_he_crc_error
			 > <enum 45 phyrx_err_he_sigb_unsupported > <enum 46 phyrx_err_he_mu_mode_unsupported
			 > <enum 47 phyrx_err_he_ndp_or_zlf > <enum 48 phyrx_err_he_nsym_lt_zero
			 > <enum 49 phyrx_err_he_ru_params_unsupported > <enum 50
			 phyrx_err_he_num_users_unsupported ><enum 51 phyrx_err_he_sounding_params_unsupported
			 >
			<enum 54 phyrx_err_he_sigb_crc_error>
			<enum 55 phyrx_err_he_ext_su_unsupported>
			<enum 56 phyrx_err_he_trig_unsupported>
			<enum 57 phyrx_err_he_lsig_len_invalid>
			<enum 58 phyrx_err_he_lsig_rate_mismatch>
			<enum 59 phyrx_err_ofdma_signal_reliability>
			
			<enum 77 phyrx_err_wur_detection>
			
			<enum 72 phyrx_err_u_sig_crc_error>
			<enum 73 phyrx_err_u_sig_unsupported_mode>
			<enum 74 phyrx_err_u_sig_rsvd_err>
			<enum 75 phyrx_err_u_sig_mcs_error>
			<enum 76 phyrx_err_u_sig_bw_error>
			<enum 79 phyrx_err_u_sig_320_channel_mismatch>
			<enum 71 phyrx_err_eht_sig_crc_error>
			<enum 78 phyrx_err_eht_sig_unsupported_mode>
			
			<enum 80 phyrx_err_ehtplus_er_detection>
			
			<enum 52 phyrx_err_MU_UL_no_power_detected> 
			<enum 53 phyrx_err_MU_UL_not_for_me>
			
			<enum 65 phyrx_err_rx_wdg_timeout>
			<enum 66 phyrx_err_sizing_evt_unexpected>
			<enum 67 phyrx_err_spectralscan>
			<enum 68 phyrx_err_radar_misdetected_as_ofdm>
			<enum 69 phyrx_err_rx_stuck>
			<enum 70 phyrx_err_invalid_11b_state>
			
			<legal 0 - 80>
*/

#define RXPCU_PPDU_END_INFO_PHYRX_ABORT_REQUEST_INFO_DETAILS_PHYRX_ABORT_REASON_OFFSET 0x0000000000000028
#define RXPCU_PPDU_END_INFO_PHYRX_ABORT_REQUEST_INFO_DETAILS_PHYRX_ABORT_REASON_LSB 32
#define RXPCU_PPDU_END_INFO_PHYRX_ABORT_REQUEST_INFO_DETAILS_PHYRX_ABORT_REASON_MSB 39
#define RXPCU_PPDU_END_INFO_PHYRX_ABORT_REQUEST_INFO_DETAILS_PHYRX_ABORT_REASON_MASK 0x000000ff00000000


/* Description		PHY_ENTERS_NAP_STATE

			When set, PHY enters PHY NAP state after sending this abort
			
			
			Note that nap and defer state are mutually exclusive.
			
			Field put pro-actively in place....usage still to be agreed
			 upon.
			<legal all>
*/

#define RXPCU_PPDU_END_INFO_PHYRX_ABORT_REQUEST_INFO_DETAILS_PHY_ENTERS_NAP_STATE_OFFSET 0x0000000000000028
#define RXPCU_PPDU_END_INFO_PHYRX_ABORT_REQUEST_INFO_DETAILS_PHY_ENTERS_NAP_STATE_LSB 40
#define RXPCU_PPDU_END_INFO_PHYRX_ABORT_REQUEST_INFO_DETAILS_PHY_ENTERS_NAP_STATE_MSB 40
#define RXPCU_PPDU_END_INFO_PHYRX_ABORT_REQUEST_INFO_DETAILS_PHY_ENTERS_NAP_STATE_MASK 0x0000010000000000


/* Description		PHY_ENTERS_DEFER_STATE

			When set, PHY enters PHY defer state after sending this 
			abort
			
			Note that nap and defer state are mutually exclusive.
			
			Field put pro-actively in place....usage still to be agreed
			 upon.
			<legal all>
*/

#define RXPCU_PPDU_END_INFO_PHYRX_ABORT_REQUEST_INFO_DETAILS_PHY_ENTERS_DEFER_STATE_OFFSET 0x0000000000000028
#define RXPCU_PPDU_END_INFO_PHYRX_ABORT_REQUEST_INFO_DETAILS_PHY_ENTERS_DEFER_STATE_LSB 41
#define RXPCU_PPDU_END_INFO_PHYRX_ABORT_REQUEST_INFO_DETAILS_PHY_ENTERS_DEFER_STATE_MSB 41
#define RXPCU_PPDU_END_INFO_PHYRX_ABORT_REQUEST_INFO_DETAILS_PHY_ENTERS_DEFER_STATE_MASK 0x0000020000000000


/* Description		RESERVED_0

			<legal 0>
*/

#define RXPCU_PPDU_END_INFO_PHYRX_ABORT_REQUEST_INFO_DETAILS_RESERVED_0_OFFSET      0x0000000000000028
#define RXPCU_PPDU_END_INFO_PHYRX_ABORT_REQUEST_INFO_DETAILS_RESERVED_0_LSB         42
#define RXPCU_PPDU_END_INFO_PHYRX_ABORT_REQUEST_INFO_DETAILS_RESERVED_0_MSB         47
#define RXPCU_PPDU_END_INFO_PHYRX_ABORT_REQUEST_INFO_DETAILS_RESERVED_0_MASK        0x0000fc0000000000


/* Description		RECEIVE_DURATION

			The remaining receive duration of this PPDU in the medium
			 (in us). When PHY does not know this duration when this
			 TLV is generated, the field will be set to 0.
			The timing reference point is the reception by the MAC of
			 this TLV. The value shall be accurate to within 2us.
			
			In case Phy_enters_nap_state and/or Phy_enters_defer_state
			 is set, there is a possibility that MAC PMM can also decide
			 to go into a low(er) power state. 
			<legal all>
*/

#define RXPCU_PPDU_END_INFO_PHYRX_ABORT_REQUEST_INFO_DETAILS_RECEIVE_DURATION_OFFSET 0x0000000000000028
#define RXPCU_PPDU_END_INFO_PHYRX_ABORT_REQUEST_INFO_DETAILS_RECEIVE_DURATION_LSB   48
#define RXPCU_PPDU_END_INFO_PHYRX_ABORT_REQUEST_INFO_DETAILS_RECEIVE_DURATION_MSB   63
#define RXPCU_PPDU_END_INFO_PHYRX_ABORT_REQUEST_INFO_DETAILS_RECEIVE_DURATION_MASK  0xffff000000000000


/* Description		MACRX_ABORT_REQUEST_INFO_DETAILS

			Field only valid when macrx_abort_request_info_valid is 
			set
			The reason why MACRX generated an abort request
*/


/* Description		MACRX_ABORT_REASON

			<enum 0 macrx_abort_sw_initiated>
			<enum 1 macrx_abort_obss_reception> Upon receiving this 
			abort reason, PHY should stop reception of the current frame
			 and go back into a search mode
			<enum 2 macrx_abort_other>
			<enum 3 macrx_abort_sw_initiated_channel_switch> MAC FW 
			issued an abort for channel switch reasons
			<enum 4 macrx_abort_sw_initiated_power_save> MAC FW issued
			 an abort power save reasons
			<enum 5 macrx_abort_too_much_bad_data> RXPCU is terminating
			 the current ongoing reception, as the data that MAC is 
			receiving seems to be all garbage... The PER is too high, 
			or in case of MU UL, Likely the trigger frame never got 
			properly received by any of the targeted MU UL devices. 
			After the abort, PHYRX can resume a normal search mode.
			<enum 6 macrx_abort_ul_mu_early_abort> RXPCU is terminating
			 the current ongoing UL MU reception, because at the end
			 of the "early_termination_window," the required number 
			of users with at least one valid MPDU delimiter was not 
			reached. Likely the trigger frame never got properly received
			 by the required number of targeted devices. After the abort, 
			PHYRX can resume a normal search mode.
			
			<legal 0-6>
*/

#define RXPCU_PPDU_END_INFO_MACRX_ABORT_REQUEST_INFO_DETAILS_MACRX_ABORT_REASON_OFFSET 0x0000000000000030
#define RXPCU_PPDU_END_INFO_MACRX_ABORT_REQUEST_INFO_DETAILS_MACRX_ABORT_REASON_LSB 0
#define RXPCU_PPDU_END_INFO_MACRX_ABORT_REQUEST_INFO_DETAILS_MACRX_ABORT_REASON_MSB 7
#define RXPCU_PPDU_END_INFO_MACRX_ABORT_REQUEST_INFO_DETAILS_MACRX_ABORT_REASON_MASK 0x00000000000000ff


/* Description		RESERVED_0

			<legal 0>
*/

#define RXPCU_PPDU_END_INFO_MACRX_ABORT_REQUEST_INFO_DETAILS_RESERVED_0_OFFSET      0x0000000000000030
#define RXPCU_PPDU_END_INFO_MACRX_ABORT_REQUEST_INFO_DETAILS_RESERVED_0_LSB         8
#define RXPCU_PPDU_END_INFO_MACRX_ABORT_REQUEST_INFO_DETAILS_RESERVED_0_MSB         15
#define RXPCU_PPDU_END_INFO_MACRX_ABORT_REQUEST_INFO_DETAILS_RESERVED_0_MASK        0x000000000000ff00


/* Description		PRE_BT_BROADCAST_STATUS_DETAILS

			Same contents as field "bt_broadcast_status_details" of 
			the last received COEX_STATUS_BROADCAST tlv before this 
			PPDU reception.
			After power up, this field is all initialized to 0
			
			For detailed info see doc: TBD
			<legal all>
*/

#define RXPCU_PPDU_END_INFO_PRE_BT_BROADCAST_STATUS_DETAILS_OFFSET                  0x0000000000000030
#define RXPCU_PPDU_END_INFO_PRE_BT_BROADCAST_STATUS_DETAILS_LSB                     16
#define RXPCU_PPDU_END_INFO_PRE_BT_BROADCAST_STATUS_DETAILS_MSB                     27
#define RXPCU_PPDU_END_INFO_PRE_BT_BROADCAST_STATUS_DETAILS_MASK                    0x000000000fff0000


/* Description		RESERVED_12A

			Bits: [27:16] 
			Same contents as field "bt_broadcast_status_details" of 
			the last received COEX_STATUS_BROADCAST tlv before this 
			PPDU reception.
			After power up, this field is all initialized to 0
			
			Bits: [31:28]: always 0
			
			
			For detailed info see doc: TBD
			<legal all>
*/

#define RXPCU_PPDU_END_INFO_RESERVED_12A_OFFSET                                     0x0000000000000030
#define RXPCU_PPDU_END_INFO_RESERVED_12A_LSB                                        28
#define RXPCU_PPDU_END_INFO_RESERVED_12A_MSB                                        31
#define RXPCU_PPDU_END_INFO_RESERVED_12A_MASK                                       0x00000000f0000000


/* Description		NON_QOS_SN_INFO_VALID

			When set, the non_QoS_SN_... fields contain valid info.
			
			This field will ONLY be set upon the very first reception
			 of a non QoS frame.
			
			<legal all>
*/

#define RXPCU_PPDU_END_INFO_NON_QOS_SN_INFO_VALID_OFFSET                            0x0000000000000030
#define RXPCU_PPDU_END_INFO_NON_QOS_SN_INFO_VALID_LSB                               32
#define RXPCU_PPDU_END_INFO_NON_QOS_SN_INFO_VALID_MSB                               32
#define RXPCU_PPDU_END_INFO_NON_QOS_SN_INFO_VALID_MASK                              0x0000000100000000


/* Description		RESERVED_13A

			<legal 0>
*/

#define RXPCU_PPDU_END_INFO_RESERVED_13A_OFFSET                                     0x0000000000000030
#define RXPCU_PPDU_END_INFO_RESERVED_13A_LSB                                        33
#define RXPCU_PPDU_END_INFO_RESERVED_13A_MSB                                        37
#define RXPCU_PPDU_END_INFO_RESERVED_13A_MASK                                       0x0000003e00000000


/* Description		NON_QOS_SN_HIGHEST

			Field only valid when non_QoS_SN_info_valid is set
			
			Lowest and highest are defined based on a 2K window.
			When only 1 non-QoS frame is received, the 'highest' and
			 'lowest' fields will have the same values.
			
			The highest MPDU sequence number for a non-QoS frame received
			 in this PPDU
			<legal all>
*/

#define RXPCU_PPDU_END_INFO_NON_QOS_SN_HIGHEST_OFFSET                               0x0000000000000030
#define RXPCU_PPDU_END_INFO_NON_QOS_SN_HIGHEST_LSB                                  38
#define RXPCU_PPDU_END_INFO_NON_QOS_SN_HIGHEST_MSB                                  49
#define RXPCU_PPDU_END_INFO_NON_QOS_SN_HIGHEST_MASK                                 0x0003ffc000000000


/* Description		NON_QOS_SN_HIGHEST_RETRY_SETTING

			Field only valid when non_QoS_SN_info_valid is set
			
			The 'retry' bit setting of the highest MPDU sequence number
			 non-QOS frame received in this PPDU
			<legal all>
*/

#define RXPCU_PPDU_END_INFO_NON_QOS_SN_HIGHEST_RETRY_SETTING_OFFSET                 0x0000000000000030
#define RXPCU_PPDU_END_INFO_NON_QOS_SN_HIGHEST_RETRY_SETTING_LSB                    50
#define RXPCU_PPDU_END_INFO_NON_QOS_SN_HIGHEST_RETRY_SETTING_MSB                    50
#define RXPCU_PPDU_END_INFO_NON_QOS_SN_HIGHEST_RETRY_SETTING_MASK                   0x0004000000000000


/* Description		NON_QOS_SN_LOWEST

			Field only valid when non_QoS_SN_info_valid is set
			
			Lowest and highest are defined based on a 2K window.
			When only 1 non-QoS frame is received, the 'highest' and
			 'lowest' fields will have the same values.
			
			The lowest MPDU sequence number for a non-QoS frame received
			 in this PPDU
			<legal all>
*/

#define RXPCU_PPDU_END_INFO_NON_QOS_SN_LOWEST_OFFSET                                0x0000000000000030
#define RXPCU_PPDU_END_INFO_NON_QOS_SN_LOWEST_LSB                                   51
#define RXPCU_PPDU_END_INFO_NON_QOS_SN_LOWEST_MSB                                   62
#define RXPCU_PPDU_END_INFO_NON_QOS_SN_LOWEST_MASK                                  0x7ff8000000000000


/* Description		NON_QOS_SN_LOWEST_RETRY_SETTING

			Field only valid when non_QoS_SN_info_valid is set
			
			The 'retry' bit setting of the lowest MPDU sequence number
			 non-QoS frame received in this PPDU
			<legal all>
*/

#define RXPCU_PPDU_END_INFO_NON_QOS_SN_LOWEST_RETRY_SETTING_OFFSET                  0x0000000000000030
#define RXPCU_PPDU_END_INFO_NON_QOS_SN_LOWEST_RETRY_SETTING_LSB                     63
#define RXPCU_PPDU_END_INFO_NON_QOS_SN_LOWEST_RETRY_SETTING_MSB                     63
#define RXPCU_PPDU_END_INFO_NON_QOS_SN_LOWEST_RETRY_SETTING_MASK                    0x8000000000000000


/* Description		QOS_SN_1_INFO_VALID

			When set, the QoS_SN_1_... fields contain valid info.
			
			This field will ONLY be set upon the very first reception
			 of a QoS frame.
			
			<legal all>
*/

#define RXPCU_PPDU_END_INFO_QOS_SN_1_INFO_VALID_OFFSET                              0x0000000000000038
#define RXPCU_PPDU_END_INFO_QOS_SN_1_INFO_VALID_LSB                                 0
#define RXPCU_PPDU_END_INFO_QOS_SN_1_INFO_VALID_MSB                                 0
#define RXPCU_PPDU_END_INFO_QOS_SN_1_INFO_VALID_MASK                                0x0000000000000001


/* Description		RESERVED_14A

			<legal 0>
*/

#define RXPCU_PPDU_END_INFO_RESERVED_14A_OFFSET                                     0x0000000000000038
#define RXPCU_PPDU_END_INFO_RESERVED_14A_LSB                                        1
#define RXPCU_PPDU_END_INFO_RESERVED_14A_MSB                                        1
#define RXPCU_PPDU_END_INFO_RESERVED_14A_MASK                                       0x0000000000000002


/* Description		QOS_SN_1_TID

			Field only valid when QoS_SN_1_info_valid is set.
			
			The TID of the frames related to the QoS_SN_1_... fields
			
			<legal all>
*/

#define RXPCU_PPDU_END_INFO_QOS_SN_1_TID_OFFSET                                     0x0000000000000038
#define RXPCU_PPDU_END_INFO_QOS_SN_1_TID_LSB                                        2
#define RXPCU_PPDU_END_INFO_QOS_SN_1_TID_MSB                                        5
#define RXPCU_PPDU_END_INFO_QOS_SN_1_TID_MASK                                       0x000000000000003c


/* Description		QOS_SN_1_HIGHEST

			Field only valid when QoS_SN_1_info_valid is set.
			
			Lowest and highest are defined based on a 2K window.
			When only 1 QoS frame of the relevant TID is received, the
			 'highest' and 'lowest' fields will have the same values.
			
			
			The highest MPDU sequence number for a QoS frame with TID
			 QoS_SN_1_TID received in this PPDU
			<legal all>
*/

#define RXPCU_PPDU_END_INFO_QOS_SN_1_HIGHEST_OFFSET                                 0x0000000000000038
#define RXPCU_PPDU_END_INFO_QOS_SN_1_HIGHEST_LSB                                    6
#define RXPCU_PPDU_END_INFO_QOS_SN_1_HIGHEST_MSB                                    17
#define RXPCU_PPDU_END_INFO_QOS_SN_1_HIGHEST_MASK                                   0x000000000003ffc0


/* Description		QOS_SN_1_HIGHEST_RETRY_SETTING

			Field only valid when QoS_SN_1_info_valid is set.
			
			The 'retry' bit setting of the highest MPDU sequence number
			 QoS frame with TID QoS_SN_1_TID received in this PPDU
			<legal all>
*/

#define RXPCU_PPDU_END_INFO_QOS_SN_1_HIGHEST_RETRY_SETTING_OFFSET                   0x0000000000000038
#define RXPCU_PPDU_END_INFO_QOS_SN_1_HIGHEST_RETRY_SETTING_LSB                      18
#define RXPCU_PPDU_END_INFO_QOS_SN_1_HIGHEST_RETRY_SETTING_MSB                      18
#define RXPCU_PPDU_END_INFO_QOS_SN_1_HIGHEST_RETRY_SETTING_MASK                     0x0000000000040000


/* Description		QOS_SN_1_LOWEST

			Field only valid when QoS_SN_1_info_valid is set.
			
			Lowest and highest are defined based on a 2K window.
			When only 1 QoS frame of the relevant TID is received, the
			 'highest' and 'lowest' fields will have the same values.
			
			
			The lowest MPDU sequence number for a QoS frame with TID
			 QoS_SN_1_TID received in this PPDU
			<legal all>
*/

#define RXPCU_PPDU_END_INFO_QOS_SN_1_LOWEST_OFFSET                                  0x0000000000000038
#define RXPCU_PPDU_END_INFO_QOS_SN_1_LOWEST_LSB                                     19
#define RXPCU_PPDU_END_INFO_QOS_SN_1_LOWEST_MSB                                     30
#define RXPCU_PPDU_END_INFO_QOS_SN_1_LOWEST_MASK                                    0x000000007ff80000


/* Description		QOS_SN_1_LOWEST_RETRY_SETTING

			Field only valid when QoS_SN_1_info_valid is set.
			
			The 'retry' bit setting of the lowest MPDU sequence number
			 QoS frame with TID QoS_SN_1_TID received in this PPDU
			<legal all>
*/

#define RXPCU_PPDU_END_INFO_QOS_SN_1_LOWEST_RETRY_SETTING_OFFSET                    0x0000000000000038
#define RXPCU_PPDU_END_INFO_QOS_SN_1_LOWEST_RETRY_SETTING_LSB                       31
#define RXPCU_PPDU_END_INFO_QOS_SN_1_LOWEST_RETRY_SETTING_MSB                       31
#define RXPCU_PPDU_END_INFO_QOS_SN_1_LOWEST_RETRY_SETTING_MASK                      0x0000000080000000


/* Description		QOS_SN_2_INFO_VALID

			When set, the QoS_SN_2_... fields contain valid info.
			
			This field can ONLY be set in case of a multi-TID PPDU reception. 
			This field is set upon the very first reception of a QoS
			 frame belonging to the second TID in the PPDU.
			
			<legal all>
*/

#define RXPCU_PPDU_END_INFO_QOS_SN_2_INFO_VALID_OFFSET                              0x0000000000000038
#define RXPCU_PPDU_END_INFO_QOS_SN_2_INFO_VALID_LSB                                 32
#define RXPCU_PPDU_END_INFO_QOS_SN_2_INFO_VALID_MSB                                 32
#define RXPCU_PPDU_END_INFO_QOS_SN_2_INFO_VALID_MASK                                0x0000000100000000


/* Description		RESERVED_15A

			<legal 0>
*/

#define RXPCU_PPDU_END_INFO_RESERVED_15A_OFFSET                                     0x0000000000000038
#define RXPCU_PPDU_END_INFO_RESERVED_15A_LSB                                        33
#define RXPCU_PPDU_END_INFO_RESERVED_15A_MSB                                        33
#define RXPCU_PPDU_END_INFO_RESERVED_15A_MASK                                       0x0000000200000000


/* Description		QOS_SN_2_TID

			Field only valid when QoS_SN_2_info_valid is set.
			
			The TID of the frames related to the QoS_SN_2_... fields
			
			<legal all>
*/

#define RXPCU_PPDU_END_INFO_QOS_SN_2_TID_OFFSET                                     0x0000000000000038
#define RXPCU_PPDU_END_INFO_QOS_SN_2_TID_LSB                                        34
#define RXPCU_PPDU_END_INFO_QOS_SN_2_TID_MSB                                        37
#define RXPCU_PPDU_END_INFO_QOS_SN_2_TID_MASK                                       0x0000003c00000000


/* Description		QOS_SN_2_HIGHEST

			Field only valid when QoS_SN_2_info_valid is set.
			
			Lowest and highest are defined based on a 2K window.
			When only 1 QoS frame of the relevant TID is received, the
			 highest and lowest fields will have the same values.
			
			The highest MPDU sequence number for a QoS frame with TID
			 QoS_SN_2_TID received in this PPDU
			<legal all>
*/

#define RXPCU_PPDU_END_INFO_QOS_SN_2_HIGHEST_OFFSET                                 0x0000000000000038
#define RXPCU_PPDU_END_INFO_QOS_SN_2_HIGHEST_LSB                                    38
#define RXPCU_PPDU_END_INFO_QOS_SN_2_HIGHEST_MSB                                    49
#define RXPCU_PPDU_END_INFO_QOS_SN_2_HIGHEST_MASK                                   0x0003ffc000000000


/* Description		QOS_SN_2_HIGHEST_RETRY_SETTING

			Field only valid when QoS_SN_2_info_valid is set.
			
			The 'retry' bit setting of the highest MPDU sequence number
			 QoS frame with TID QoS_SN_2_TID received in this PPDU
			<legal all>
*/

#define RXPCU_PPDU_END_INFO_QOS_SN_2_HIGHEST_RETRY_SETTING_OFFSET                   0x0000000000000038
#define RXPCU_PPDU_END_INFO_QOS_SN_2_HIGHEST_RETRY_SETTING_LSB                      50
#define RXPCU_PPDU_END_INFO_QOS_SN_2_HIGHEST_RETRY_SETTING_MSB                      50
#define RXPCU_PPDU_END_INFO_QOS_SN_2_HIGHEST_RETRY_SETTING_MASK                     0x0004000000000000


/* Description		QOS_SN_2_LOWEST

			Field only valid when QoS_SN_2_info_valid is set.
			
			Lowest and highest are defined based on a 2K window.
			When only 1 QoS frame of the relevant TID is received, the
			 highest and lowest fields will have the same values.
			
			The lowest MPDU sequence number for a QoS frame with TID
			 QoS_SN_2_TID received in this PPDU
			<legal all>
*/

#define RXPCU_PPDU_END_INFO_QOS_SN_2_LOWEST_OFFSET                                  0x0000000000000038
#define RXPCU_PPDU_END_INFO_QOS_SN_2_LOWEST_LSB                                     51
#define RXPCU_PPDU_END_INFO_QOS_SN_2_LOWEST_MSB                                     62
#define RXPCU_PPDU_END_INFO_QOS_SN_2_LOWEST_MASK                                    0x7ff8000000000000


/* Description		QOS_SN_2_LOWEST_RETRY_SETTING

			Field only valid when QoS_SN_2_info_valid is set.
			
			The 'retry' bit setting of the lowest MPDU sequence number
			 QoS frame with TID QoS_SN_2_TID received in this PPDU
			<legal all>
*/

#define RXPCU_PPDU_END_INFO_QOS_SN_2_LOWEST_RETRY_SETTING_OFFSET                    0x0000000000000038
#define RXPCU_PPDU_END_INFO_QOS_SN_2_LOWEST_RETRY_SETTING_LSB                       63
#define RXPCU_PPDU_END_INFO_QOS_SN_2_LOWEST_RETRY_SETTING_MSB                       63
#define RXPCU_PPDU_END_INFO_QOS_SN_2_LOWEST_RETRY_SETTING_MASK                      0x8000000000000000


/* Description		RXPCU_PPDU_END_LAYOUT_DETAILS

			Structure containing the relative offsets of preamble TLVs
			 within 'RX_PPDU_END' documenting the layout within 'RX_PPDU_END'
			
*/


/* Description		RSSI_LEGACY_OFFSET

			Offset in units of 4 bytes of 'PHYRX_RSSI_LEGACY' within
			 'RX_PPDU_END'<legal 1, 2>
*/

#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_RSSI_LEGACY_OFFSET_OFFSET 0x0000000000000040
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_RSSI_LEGACY_OFFSET_LSB    0
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_RSSI_LEGACY_OFFSET_MSB    1
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_RSSI_LEGACY_OFFSET_MASK   0x0000000000000003


/* Description		L_SIG_A_OFFSET

			Offset in units of 4 bytes of 'PHYRX_L_SIG_A' within 'RX_PPDU_END' 
			Set to zero if the TLV is not included<legal 0, 44, 46>
*/

#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_L_SIG_A_OFFSET_OFFSET     0x0000000000000040
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_L_SIG_A_OFFSET_LSB        2
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_L_SIG_A_OFFSET_MSB        7
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_L_SIG_A_OFFSET_MASK       0x00000000000000fc


/* Description		L_SIG_B_OFFSET

			Offset in units of 4 bytes of 'PHYRX_L_SIG_A' within 'RX_PPDU_END' 
			Set to zero if the TLV is not included<legal 0, 44, 46>
*/

#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_L_SIG_B_OFFSET_OFFSET     0x0000000000000040
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_L_SIG_B_OFFSET_LSB        8
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_L_SIG_B_OFFSET_MSB        13
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_L_SIG_B_OFFSET_MASK       0x0000000000003f00


/* Description		HT_SIG_OFFSET

			Offset of 'PHYRX_HT_SIG' within 'RX_PPDU_END' Set to zero
			 if the TLV is not included<legal 0, 46, 50>
*/

#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_HT_SIG_OFFSET_OFFSET      0x0000000000000040
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_HT_SIG_OFFSET_LSB         14
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_HT_SIG_OFFSET_MSB         19
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_HT_SIG_OFFSET_MASK        0x00000000000fc000


/* Description		VHT_SIG_A_OFFSET

			Offset in units of 4 bytes of 'PHYRX_VHT_SIG_A' within 'RX_PPDU_END' 
			Set to zero if the TLV is not included<legal 0, 46, 50>
*/

#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_VHT_SIG_A_OFFSET_OFFSET   0x0000000000000040
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_VHT_SIG_A_OFFSET_LSB      20
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_VHT_SIG_A_OFFSET_MSB      25
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_VHT_SIG_A_OFFSET_MASK     0x0000000003f00000


/* Description		REPEAT_L_SIG_A_OFFSET

			Offset in units of 4 bytes of the repeat 'PHYRX_L_SIG_A' (in
			 HE and EHT cases) within 'RX_PPDU_END'
			 
			Set to zero if the TLV is not included
			<legal 0, 46, 50>
*/

#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_REPEAT_L_SIG_A_OFFSET_OFFSET 0x0000000000000040
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_REPEAT_L_SIG_A_OFFSET_LSB 26
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_REPEAT_L_SIG_A_OFFSET_MSB 31
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_REPEAT_L_SIG_A_OFFSET_MASK 0x00000000fc000000


/* Description		HE_SIG_A_SU_OFFSET

			Offset in units of 4 bytes of 'PHYRX_HE_SIG_A_SU' within
			 'RX_PPDU_END' Set to zero if the TLV is not included<legal
			 0, 48, 54>
*/

#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_HE_SIG_A_SU_OFFSET_OFFSET 0x0000000000000040
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_HE_SIG_A_SU_OFFSET_LSB    32
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_HE_SIG_A_SU_OFFSET_MSB    37
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_HE_SIG_A_SU_OFFSET_MASK   0x0000003f00000000


/* Description		HE_SIG_A_MU_DL_OFFSET

			Offset in units of 4 bytes of 'PHYRX_HE_SIG_A_MU_DL' within
			 'RX_PPDU_END' Set to zero if the TLV is not included<legal
			 0, 48, 54>
*/

#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_HE_SIG_A_MU_DL_OFFSET_OFFSET 0x0000000000000040
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_HE_SIG_A_MU_DL_OFFSET_LSB 38
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_HE_SIG_A_MU_DL_OFFSET_MSB 43
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_HE_SIG_A_MU_DL_OFFSET_MASK 0x00000fc000000000


/* Description		HE_SIG_A_MU_UL_OFFSET

			Offset in units of 4 bytes of 'PHYRX_HE_SIG_A_MU_UL' within
			 'RX_PPDU_END' Set to zero if the TLV is not included<legal
			 0, 48, 54>
*/

#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_HE_SIG_A_MU_UL_OFFSET_OFFSET 0x0000000000000040
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_HE_SIG_A_MU_UL_OFFSET_LSB 44
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_HE_SIG_A_MU_UL_OFFSET_MSB 49
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_HE_SIG_A_MU_UL_OFFSET_MASK 0x0003f00000000000


/* Description		GENERIC_U_SIG_OFFSET

			Offset in units of 4 bytes of 'PHYRX_GENERIC_U_SIG' within
			 'RX_PPDU_END' Set to zero if the TLV is not included<legal
			 0, 48, 54>
*/

#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_GENERIC_U_SIG_OFFSET_OFFSET 0x0000000000000040
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_GENERIC_U_SIG_OFFSET_LSB  50
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_GENERIC_U_SIG_OFFSET_MSB  55
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_GENERIC_U_SIG_OFFSET_MASK 0x00fc000000000000


/* Description		RSSI_HT_OFFSET

			Offset in units of 4 bytes of 'PHYRX_RSSI_HT' within 'RX_PPDU_END' 
			Set to zero if the TLV is not included<legal 0, 49-127>
*/

#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_RSSI_HT_OFFSET_OFFSET     0x0000000000000040
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_RSSI_HT_OFFSET_LSB        56
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_RSSI_HT_OFFSET_MSB        62
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_RSSI_HT_OFFSET_MASK       0x7f00000000000000


/* Description		RESERVED_1A

			<legal 0>
*/

#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_RESERVED_1A_OFFSET        0x0000000000000040
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_RESERVED_1A_LSB           63
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_RESERVED_1A_MSB           63
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_RESERVED_1A_MASK          0x8000000000000000


/* Description		VHT_SIG_B_SU20_OFFSET

			Offset in units of 4 bytes of 'PHYRX_VHT_SIG_B_SU20' within
			 'RX_PPDU_END' Set to zero if the TLV is not included<legal
			 0, 67, 74>
*/

#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_VHT_SIG_B_SU20_OFFSET_OFFSET 0x0000000000000048
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_VHT_SIG_B_SU20_OFFSET_LSB 0
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_VHT_SIG_B_SU20_OFFSET_MSB 6
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_VHT_SIG_B_SU20_OFFSET_MASK 0x000000000000007f


/* Description		VHT_SIG_B_SU40_OFFSET

			Offset in units of 4 bytes of 'PHYRX_VHT_SIG_B_SU40' within
			 'RX_PPDU_END' Set to zero if the TLV is not included<legal
			 0, 67, 74>
*/

#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_VHT_SIG_B_SU40_OFFSET_OFFSET 0x0000000000000048
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_VHT_SIG_B_SU40_OFFSET_LSB 7
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_VHT_SIG_B_SU40_OFFSET_MSB 13
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_VHT_SIG_B_SU40_OFFSET_MASK 0x0000000000003f80


/* Description		VHT_SIG_B_SU80_OFFSET

			Offset in units of 4 bytes of 'PHYRX_VHT_SIG_B_SU80' within
			 'RX_PPDU_END' Set to zero if the TLV is not included<legal
			 0, 67, 74>
*/

#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_VHT_SIG_B_SU80_OFFSET_OFFSET 0x0000000000000048
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_VHT_SIG_B_SU80_OFFSET_LSB 14
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_VHT_SIG_B_SU80_OFFSET_MSB 20
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_VHT_SIG_B_SU80_OFFSET_MASK 0x00000000001fc000


/* Description		VHT_SIG_B_SU160_OFFSET

			Offset in units of 4 bytes of 'PHYRX_VHT_SIG_B_SU160' within
			 'RX_PPDU_END' Set to zero if the TLV is not included<legal
			 0, 67, 74>
*/

#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_VHT_SIG_B_SU160_OFFSET_OFFSET 0x0000000000000048
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_VHT_SIG_B_SU160_OFFSET_LSB 21
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_VHT_SIG_B_SU160_OFFSET_MSB 27
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_VHT_SIG_B_SU160_OFFSET_MASK 0x000000000fe00000


/* Description		RESERVED_2A

			<legal 0>
*/

#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_RESERVED_2A_OFFSET        0x0000000000000048
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_RESERVED_2A_LSB           28
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_RESERVED_2A_MSB           31
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_RESERVED_2A_MASK          0x00000000f0000000


/* Description		VHT_SIG_B_MU20_OFFSET

			Offset in units of 4 bytes of 'PHYRX_VHT_SIG_B_MU20' within
			 'RX_PPDU_END' Set to zero if the TLV is not included<legal
			 0, 67, 74>
*/

#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_VHT_SIG_B_MU20_OFFSET_OFFSET 0x0000000000000048
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_VHT_SIG_B_MU20_OFFSET_LSB 32
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_VHT_SIG_B_MU20_OFFSET_MSB 38
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_VHT_SIG_B_MU20_OFFSET_MASK 0x0000007f00000000


/* Description		VHT_SIG_B_MU40_OFFSET

			Offset in units of 4 bytes of 'PHYRX_VHT_SIG_B_MU40' within
			 'RX_PPDU_END' Set to zero if the TLV is not included<legal
			 0, 67, 74>
*/

#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_VHT_SIG_B_MU40_OFFSET_OFFSET 0x0000000000000048
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_VHT_SIG_B_MU40_OFFSET_LSB 39
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_VHT_SIG_B_MU40_OFFSET_MSB 45
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_VHT_SIG_B_MU40_OFFSET_MASK 0x00003f8000000000


/* Description		VHT_SIG_B_MU80_OFFSET

			Offset in units of 4 bytes of 'PHYRX_VHT_SIG_B_MU80' within
			 'RX_PPDU_END' Set to zero if the TLV is not included<legal
			 0, 67, 74>
*/

#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_VHT_SIG_B_MU80_OFFSET_OFFSET 0x0000000000000048
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_VHT_SIG_B_MU80_OFFSET_LSB 46
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_VHT_SIG_B_MU80_OFFSET_MSB 52
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_VHT_SIG_B_MU80_OFFSET_MASK 0x001fc00000000000


/* Description		VHT_SIG_B_MU160_OFFSET

			Offset in units of 4 bytes of 'PHYRX_VHT_SIG_B_MU160' within
			 'RX_PPDU_END' Set to zero if the TLV is not included<legal
			 0, 67, 74>
*/

#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_VHT_SIG_B_MU160_OFFSET_OFFSET 0x0000000000000048
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_VHT_SIG_B_MU160_OFFSET_LSB 53
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_VHT_SIG_B_MU160_OFFSET_MSB 59
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_VHT_SIG_B_MU160_OFFSET_MASK 0x0fe0000000000000


/* Description		RESERVED_3A

			<legal 0>
*/

#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_RESERVED_3A_OFFSET        0x0000000000000048
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_RESERVED_3A_LSB           60
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_RESERVED_3A_MSB           63
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_RESERVED_3A_MASK          0xf000000000000000


/* Description		HE_SIG_B1_MU_OFFSET

			Offset in units of 4 bytes of 'PHYRX_HE_SIG_B1_MU' within
			 'RX_PPDU_END' Set to zero if the TLV is not included<legal
			 0, 51, 58>
*/

#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_HE_SIG_B1_MU_OFFSET_OFFSET 0x0000000000000050
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_HE_SIG_B1_MU_OFFSET_LSB   0
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_HE_SIG_B1_MU_OFFSET_MSB   6
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_HE_SIG_B1_MU_OFFSET_MASK  0x000000000000007f


/* Description		HE_SIG_B2_MU_OFFSET

			Offset in units of 4 bytes of 'PHYRX_HE_SIG_B2_MU' within
			 'RX_PPDU_END' Set to zero if the TLV is not included<legal
			 0, 51, 58>
*/

#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_HE_SIG_B2_MU_OFFSET_OFFSET 0x0000000000000050
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_HE_SIG_B2_MU_OFFSET_LSB   7
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_HE_SIG_B2_MU_OFFSET_MSB   13
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_HE_SIG_B2_MU_OFFSET_MASK  0x0000000000003f80


/* Description		HE_SIG_B2_OFDMA_OFFSET

			Offset in units of 4 bytes of 'PHYRX_HE_SIG_B2_OFDMA' within
			 'RX_PPDU_END' Set to zero if the TLV is not included<legal
			 0, 53, 62>
*/

#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_HE_SIG_B2_OFDMA_OFFSET_OFFSET 0x0000000000000050
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_HE_SIG_B2_OFDMA_OFFSET_LSB 14
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_HE_SIG_B2_OFDMA_OFFSET_MSB 20
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_HE_SIG_B2_OFDMA_OFFSET_MASK 0x00000000001fc000


/* Description		FIRST_GENERIC_EHT_SIG_OFFSET

			Offset in units of 4 bytes of the first 'PHYRX_GENERIC_EHT_SIG' 
			within 'RX_PPDU_END' Set to zero if the TLV is not included<legal
			 0, 51, 58>
*/

#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_FIRST_GENERIC_EHT_SIG_OFFSET_OFFSET 0x0000000000000050
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_FIRST_GENERIC_EHT_SIG_OFFSET_LSB 21
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_FIRST_GENERIC_EHT_SIG_OFFSET_MSB 27
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_FIRST_GENERIC_EHT_SIG_OFFSET_MASK 0x000000000fe00000


/* Description		MULTIPLE_GENERIC_EHT_SIG_INCLUDED

			Set to one if more than one 'PHYRX_GENERIC_EHT_SIG' TLVs
			 are included in 'RX_PPDU_END,' set to zero otherwise
			<legal all>
*/

#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_MULTIPLE_GENERIC_EHT_SIG_INCLUDED_OFFSET 0x0000000000000050
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_MULTIPLE_GENERIC_EHT_SIG_INCLUDED_LSB 28
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_MULTIPLE_GENERIC_EHT_SIG_INCLUDED_MSB 28
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_MULTIPLE_GENERIC_EHT_SIG_INCLUDED_MASK 0x0000000010000000


/* Description		RESERVED_4A

			<legal 0>
*/

#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_RESERVED_4A_OFFSET        0x0000000000000050
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_RESERVED_4A_LSB           29
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_RESERVED_4A_MSB           31
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_RESERVED_4A_MASK          0x00000000e0000000


/* Description		COMMON_USER_INFO_OFFSET

			Offset in units of 4 bytes of 'PHYRX_COMMON_USER_INFO' within
			 'RX_PPDU_END' Set to zero if the TLV is not included<legal
			 0, 46, 50, 67, 70-127>
*/

#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_COMMON_USER_INFO_OFFSET_OFFSET 0x0000000000000050
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_COMMON_USER_INFO_OFFSET_LSB 32
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_COMMON_USER_INFO_OFFSET_MSB 38
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_COMMON_USER_INFO_OFFSET_MASK 0x0000007f00000000


/* Description		FIRST_DEBUG_INFO_OFFSET

			Offset in units of 4 bytes of the first 'PHYRX_DEBUG_INFO' 
			within 'RX_PPDU_END' Set to zero if the TLV is not included<legal
			 all>
*/

#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_FIRST_DEBUG_INFO_OFFSET_OFFSET 0x0000000000000050
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_FIRST_DEBUG_INFO_OFFSET_LSB 39
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_FIRST_DEBUG_INFO_OFFSET_MSB 46
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_FIRST_DEBUG_INFO_OFFSET_MASK 0x00007f8000000000


/* Description		MULTIPLE_DEBUG_INFO_INCLUDED

			Set to one if more than one 'PHYRX_DEBUG_INFO' TLVs are 
			included in 'RX_PPDU_END,' set to zero otherwise<legal all>
			
*/

#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_MULTIPLE_DEBUG_INFO_INCLUDED_OFFSET 0x0000000000000050
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_MULTIPLE_DEBUG_INFO_INCLUDED_LSB 47
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_MULTIPLE_DEBUG_INFO_INCLUDED_MSB 47
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_MULTIPLE_DEBUG_INFO_INCLUDED_MASK 0x0000800000000000


/* Description		FIRST_OTHER_RECEIVE_INFO_OFFSET

			Offset in units of 4 bytes of the first 'PHYRX_OTHER_RECEIVE_INFO' 
			within 'RX_PPDU_END' Set to zero if the TLV is not included<legal
			 all>
*/

#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_FIRST_OTHER_RECEIVE_INFO_OFFSET_OFFSET 0x0000000000000050
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_FIRST_OTHER_RECEIVE_INFO_OFFSET_LSB 48
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_FIRST_OTHER_RECEIVE_INFO_OFFSET_MSB 55
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_FIRST_OTHER_RECEIVE_INFO_OFFSET_MASK 0x00ff000000000000


/* Description		MULTIPLE_OTHER_RECEIVE_INFO_INCLUDED

			Set to one if more than one 'PHYRX_OTHER_RECEIVE_INFO' TLVs
			 are included in 'RX_PPDU_END,' set to zero otherwise<legal
			 all>
*/

#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_MULTIPLE_OTHER_RECEIVE_INFO_INCLUDED_OFFSET 0x0000000000000050
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_MULTIPLE_OTHER_RECEIVE_INFO_INCLUDED_LSB 56
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_MULTIPLE_OTHER_RECEIVE_INFO_INCLUDED_MSB 56
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_MULTIPLE_OTHER_RECEIVE_INFO_INCLUDED_MASK 0x0100000000000000


/* Description		RESERVED_5A

			<legal 0>
*/

#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_RESERVED_5A_OFFSET        0x0000000000000050
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_RESERVED_5A_LSB           57
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_RESERVED_5A_MSB           63
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_RESERVED_5A_MASK          0xfe00000000000000


/* Description		DATA_DONE_OFFSET

			Offset in units of 4 bytes of 'PHYRX_DATA_DONE' within 'RX_PPDU_END' 
			Set to zero if the TLV is not included<legal all>
*/

#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_DATA_DONE_OFFSET_OFFSET   0x0000000000000058
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_DATA_DONE_OFFSET_LSB      0
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_DATA_DONE_OFFSET_MSB      7
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_DATA_DONE_OFFSET_MASK     0x00000000000000ff


/* Description		GENERATED_CBF_DETAILS_OFFSET

			Offset in units of 4 bytes of 'PHYRX_GENERATED_CBF_DETAILS' 
			within 'RX_PPDU_END'Set to zero if the TLV is not included<legal
			 0, 70-127>
*/

#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_GENERATED_CBF_DETAILS_OFFSET_OFFSET 0x0000000000000058
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_GENERATED_CBF_DETAILS_OFFSET_LSB 8
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_GENERATED_CBF_DETAILS_OFFSET_MSB 15
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_GENERATED_CBF_DETAILS_OFFSET_MASK 0x000000000000ff00


/* Description		PKT_END_PART1_OFFSET

			Offset in units of 4 bytes of 'PHYRX_PKT_END_PART1' within
			 'RX_PPDU_END' Set to zero if the TLV is not included<legal
			 all>
*/

#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_PKT_END_PART1_OFFSET_OFFSET 0x0000000000000058
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_PKT_END_PART1_OFFSET_LSB  16
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_PKT_END_PART1_OFFSET_MSB  23
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_PKT_END_PART1_OFFSET_MASK 0x0000000000ff0000


/* Description		LOCATION_OFFSET

			Offset in units of 4 bytes of 'PHYRX_LOCATION' within 'RX_PPDU_END' 
			Set to zero if the TLV is not included<legal all>
*/

#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_LOCATION_OFFSET_OFFSET    0x0000000000000058
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_LOCATION_OFFSET_LSB       24
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_LOCATION_OFFSET_MSB       31
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_LOCATION_OFFSET_MASK      0x00000000ff000000


/* Description		AZ_INTEGRITY_DATA_OFFSET

			Offset in units of 4 bytes of 'PHYRX_11AZ_INTEGRITY_DATA' 
			within 'RX_PPDU_END'
			 
			Set to zero if the TLV is not included
			<legal all>
*/

#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_AZ_INTEGRITY_DATA_OFFSET_OFFSET 0x0000000000000058
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_AZ_INTEGRITY_DATA_OFFSET_LSB 32
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_AZ_INTEGRITY_DATA_OFFSET_MSB 39
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_AZ_INTEGRITY_DATA_OFFSET_MASK 0x000000ff00000000


/* Description		PKT_END_OFFSET

			Offset in units of 4 bytes of 'PHYRX_PKT_END' within 'RX_PPDU_END' 
			Set to zero if the TLV is not included<legal all>
*/

#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_PKT_END_OFFSET_OFFSET     0x0000000000000058
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_PKT_END_OFFSET_LSB        40
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_PKT_END_OFFSET_MSB        47
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_PKT_END_OFFSET_MASK       0x0000ff0000000000


/* Description		ABORT_REQUEST_ACK_OFFSET

			Offset in units of 4 bytes of either 'PHYRX_ABORT_REQUEST' 
			or 'PHYRX_ABORT_ACK' within 'RX_PPDU_END'
			
			Set to zero if the TLV is not included
			<legal all>
*/

#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_ABORT_REQUEST_ACK_OFFSET_OFFSET 0x0000000000000058
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_ABORT_REQUEST_ACK_OFFSET_LSB 48
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_ABORT_REQUEST_ACK_OFFSET_MSB 55
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_ABORT_REQUEST_ACK_OFFSET_MASK 0x00ff000000000000


/* Description		RESERVED_7A

			Spare space in case the widths of the above offsets grow<legal
			 all>
*/

#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_RESERVED_7A_OFFSET        0x0000000000000058
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_RESERVED_7A_LSB           56
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_RESERVED_7A_MSB           63
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_RESERVED_7A_MASK          0xff00000000000000


/* Description		RESERVED_8A

			Spare space in case the widths of the above offsets grow
			
			<legal all>
*/

#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_RESERVED_8A_OFFSET        0x0000000000000060
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_RESERVED_8A_LSB           0
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_RESERVED_8A_MSB           31
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_RESERVED_8A_MASK          0x00000000ffffffff


/* Description		RESERVED_9A

			Spare space in case the widths of the above offsets grow
			
			<legal all>
*/

#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_RESERVED_9A_OFFSET        0x0000000000000060
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_RESERVED_9A_LSB           32
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_RESERVED_9A_MSB           63
#define RXPCU_PPDU_END_INFO_RXPCU_PPDU_END_LAYOUT_DETAILS_RESERVED_9A_MASK          0xffffffff00000000


/* Description		CORRUPTED_DUE_TO_FIFO_DELAY

			Set if Rx PCU avoided a hang due to SFM delays by writing
			 a corrupted 'RX_PPDU_END_USER_STATS' and/or 'RX_PPDU_END.'
			
*/

#define RXPCU_PPDU_END_INFO_CORRUPTED_DUE_TO_FIFO_DELAY_OFFSET                      0x0000000000000068
#define RXPCU_PPDU_END_INFO_CORRUPTED_DUE_TO_FIFO_DELAY_LSB                         0
#define RXPCU_PPDU_END_INFO_CORRUPTED_DUE_TO_FIFO_DELAY_MSB                         0
#define RXPCU_PPDU_END_INFO_CORRUPTED_DUE_TO_FIFO_DELAY_MASK                        0x0000000000000001


/* Description		QOS_SN_1_MORE_FRAG_STATE

			Field only valid when QoS_SN_1_info_valid is set.
			
			The 'more fragments' state of the QoS frames with TID QoS_SN_1_TID
			 at the end of this PPDU
			<legal all>
*/

#define RXPCU_PPDU_END_INFO_QOS_SN_1_MORE_FRAG_STATE_OFFSET                         0x0000000000000068
#define RXPCU_PPDU_END_INFO_QOS_SN_1_MORE_FRAG_STATE_LSB                            1
#define RXPCU_PPDU_END_INFO_QOS_SN_1_MORE_FRAG_STATE_MSB                            1
#define RXPCU_PPDU_END_INFO_QOS_SN_1_MORE_FRAG_STATE_MASK                           0x0000000000000002


/* Description		QOS_SN_1_FRAG_NUM_STATE

			Field only valid when QoS_SN_1_info_valid is set.
			
			The 'fragment number' state of the QoS frames with TID QoS_SN_1_TID
			 at the end of this PPDU
			<legal all>
*/

#define RXPCU_PPDU_END_INFO_QOS_SN_1_FRAG_NUM_STATE_OFFSET                          0x0000000000000068
#define RXPCU_PPDU_END_INFO_QOS_SN_1_FRAG_NUM_STATE_LSB                             2
#define RXPCU_PPDU_END_INFO_QOS_SN_1_FRAG_NUM_STATE_MSB                             5
#define RXPCU_PPDU_END_INFO_QOS_SN_1_FRAG_NUM_STATE_MASK                            0x000000000000003c


/* Description		QOS_SN_2_MORE_FRAG_STATE

			Field only valid when QoS_SN_2_info_valid is set.
			
			The 'more fragments' state of the QoS frames with TID QoS_SN_2_TID
			 at the end of this PPDU
			<legal all>
*/

#define RXPCU_PPDU_END_INFO_QOS_SN_2_MORE_FRAG_STATE_OFFSET                         0x0000000000000068
#define RXPCU_PPDU_END_INFO_QOS_SN_2_MORE_FRAG_STATE_LSB                            6
#define RXPCU_PPDU_END_INFO_QOS_SN_2_MORE_FRAG_STATE_MSB                            6
#define RXPCU_PPDU_END_INFO_QOS_SN_2_MORE_FRAG_STATE_MASK                           0x0000000000000040


/* Description		QOS_SN_2_FRAG_NUM_STATE

			Field only valid when QoS_SN_2_info_valid is set.
			
			The 'fragment number' state of the QoS frames with TID QoS_SN_2_TID
			 at the end of this PPDU
			<legal all>
*/

#define RXPCU_PPDU_END_INFO_QOS_SN_2_FRAG_NUM_STATE_OFFSET                          0x0000000000000068
#define RXPCU_PPDU_END_INFO_QOS_SN_2_FRAG_NUM_STATE_LSB                             7
#define RXPCU_PPDU_END_INFO_QOS_SN_2_FRAG_NUM_STATE_MSB                             10
#define RXPCU_PPDU_END_INFO_QOS_SN_2_FRAG_NUM_STATE_MASK                            0x0000000000000780


/* Description		RESERVED_26A

			<legal 0>
*/

#define RXPCU_PPDU_END_INFO_RESERVED_26A_OFFSET                                     0x0000000000000068
#define RXPCU_PPDU_END_INFO_RESERVED_26A_LSB                                        11
#define RXPCU_PPDU_END_INFO_RESERVED_26A_MSB                                        31
#define RXPCU_PPDU_END_INFO_RESERVED_26A_MASK                                       0x00000000fffff800


/* Description		RX_PPDU_END_MARKER

			Field used by SW to double check that their structure alignment
			 is in sync with what HW has done.
			<legal 0xAABBCCDD>
*/

#define RXPCU_PPDU_END_INFO_RX_PPDU_END_MARKER_OFFSET                               0x0000000000000068
#define RXPCU_PPDU_END_INFO_RX_PPDU_END_MARKER_LSB                                  32
#define RXPCU_PPDU_END_INFO_RX_PPDU_END_MARKER_MSB                                  63
#define RXPCU_PPDU_END_INFO_RX_PPDU_END_MARKER_MASK                                 0xffffffff00000000



#endif   // RXPCU_PPDU_END_INFO