/*
 * 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.
 */

//
// DO NOT EDIT!  This file is automatically generated
//               These definitions are tied to a particular hardware layout


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

#include "rxpt_classify_info.h"

// ################ START SUMMARY #################
//
//	Dword	Fields
//	0	struct rxpt_classify_info rxpt_classify_info_details;
//	1	rx_reo_queue_desc_addr_31_0[31:0]
//	2	rx_reo_queue_desc_addr_39_32[7:0], receive_queue_number[23:8], pre_delim_err_warning[24], first_delim_err[25], reserved_11[31:26]
//	3	pn_31_0[31:0]
//	4	pn_63_32[31:0]
//	5	pn_95_64[31:0]
//	6	pn_127_96[31:0]
//	7	epd_en[0], all_frames_shall_be_encrypted[1], encrypt_type[5:2], wep_key_width_for_variable_key[7:6], mesh_sta[9:8], bssid_hit[10], bssid_number[14:11], tid[18:15], reserved_3a[31:19]
//	8	peer_meta_data[31:0]
//	9	rxpcu_mpdu_filter_in_category[1:0], sw_frame_group_id[8:2], ndp_frame[9], phy_err[10], phy_err_during_mpdu_header[11], protocol_version_err[12], ast_based_lookup_valid[13], reserved_0a[15:14], phy_ppdu_id[31:16]
//	10	ast_index[15:0], sw_peer_id[31:16]
//	11	mpdu_frame_control_valid[0], mpdu_duration_valid[1], mac_addr_ad1_valid[2], mac_addr_ad2_valid[3], mac_addr_ad3_valid[4], mac_addr_ad4_valid[5], mpdu_sequence_control_valid[6], mpdu_qos_control_valid[7], mpdu_ht_control_valid[8], frame_encryption_info_valid[9], mpdu_fragment_number[13:10], more_fragment_flag[14], reserved_2a[15], fr_ds[16], to_ds[17], encrypted[18], mpdu_retry[19], mpdu_sequence_number[31:20]
//	12	key_id_octet[7:0], new_peer_entry[8], decrypt_needed[9], decap_type[11:10], rx_insert_vlan_c_tag_padding[12], rx_insert_vlan_s_tag_padding[13], strip_vlan_c_tag_decap[14], strip_vlan_s_tag_decap[15], pre_delim_count[27:16], ampdu_flag[28], bar_frame[29], raw_mpdu[30], reserved_12[31]
//	13	mpdu_length[13:0], first_mpdu[14], mcast_bcast[15], ast_index_not_found[16], ast_index_timeout[17], power_mgmt[18], non_qos[19], null_data[20], mgmt_type[21], ctrl_type[22], more_data[23], eosp[24], fragment_flag[25], order[26], u_apsd_trigger[27], encrypt_required[28], directed[29], amsdu_present[30], reserved_13[31]
//	14	mpdu_frame_control_field[15:0], mpdu_duration_field[31:16]
//	15	mac_addr_ad1_31_0[31:0]
//	16	mac_addr_ad1_47_32[15:0], mac_addr_ad2_15_0[31:16]
//	17	mac_addr_ad2_47_16[31:0]
//	18	mac_addr_ad3_31_0[31:0]
//	19	mac_addr_ad3_47_32[15:0], mpdu_sequence_control_field[31:16]
//	20	mac_addr_ad4_31_0[31:0]
//	21	mac_addr_ad4_47_32[15:0], mpdu_qos_control_field[31:16]
//	22	mpdu_ht_control_field[31:0]
//
// ################ END SUMMARY #################

#define NUM_OF_DWORDS_RX_MPDU_INFO 23

struct rx_mpdu_info {
    struct            rxpt_classify_info                       rxpt_classify_info_details;
             uint32_t rx_reo_queue_desc_addr_31_0     : 32; //[31:0]
             uint32_t rx_reo_queue_desc_addr_39_32    :  8, //[7:0]
                      receive_queue_number            : 16, //[23:8]
                      pre_delim_err_warning           :  1, //[24]
                      first_delim_err                 :  1, //[25]
                      reserved_11                     :  6; //[31:26]
             uint32_t pn_31_0                         : 32; //[31:0]
             uint32_t pn_63_32                        : 32; //[31:0]
             uint32_t pn_95_64                        : 32; //[31:0]
             uint32_t pn_127_96                       : 32; //[31:0]
             uint32_t epd_en                          :  1, //[0]
                      all_frames_shall_be_encrypted   :  1, //[1]
                      encrypt_type                    :  4, //[5:2]
                      wep_key_width_for_variable_key  :  2, //[7:6]
                      mesh_sta                        :  2, //[9:8]
                      bssid_hit                       :  1, //[10]
                      bssid_number                    :  4, //[14:11]
                      tid                             :  4, //[18:15]
                      reserved_3a                     : 13; //[31:19]
             uint32_t peer_meta_data                  : 32; //[31:0]
             uint32_t rxpcu_mpdu_filter_in_category   :  2, //[1:0]
                      sw_frame_group_id               :  7, //[8:2]
                      ndp_frame                       :  1, //[9]
                      phy_err                         :  1, //[10]
                      phy_err_during_mpdu_header      :  1, //[11]
                      protocol_version_err            :  1, //[12]
                      ast_based_lookup_valid          :  1, //[13]
                      reserved_0a                     :  2, //[15:14]
                      phy_ppdu_id                     : 16; //[31:16]
             uint32_t ast_index                       : 16, //[15:0]
                      sw_peer_id                      : 16; //[31:16]
             uint32_t mpdu_frame_control_valid        :  1, //[0]
                      mpdu_duration_valid             :  1, //[1]
                      mac_addr_ad1_valid              :  1, //[2]
                      mac_addr_ad2_valid              :  1, //[3]
                      mac_addr_ad3_valid              :  1, //[4]
                      mac_addr_ad4_valid              :  1, //[5]
                      mpdu_sequence_control_valid     :  1, //[6]
                      mpdu_qos_control_valid          :  1, //[7]
                      mpdu_ht_control_valid           :  1, //[8]
                      frame_encryption_info_valid     :  1, //[9]
                      mpdu_fragment_number            :  4, //[13:10]
                      more_fragment_flag              :  1, //[14]
                      reserved_2a                     :  1, //[15]
                      fr_ds                           :  1, //[16]
                      to_ds                           :  1, //[17]
                      encrypted                       :  1, //[18]
                      mpdu_retry                      :  1, //[19]
                      mpdu_sequence_number            : 12; //[31:20]
             uint32_t key_id_octet                    :  8, //[7:0]
                      new_peer_entry                  :  1, //[8]
                      decrypt_needed                  :  1, //[9]
                      decap_type                      :  2, //[11:10]
                      rx_insert_vlan_c_tag_padding    :  1, //[12]
                      rx_insert_vlan_s_tag_padding    :  1, //[13]
                      strip_vlan_c_tag_decap          :  1, //[14]
                      strip_vlan_s_tag_decap          :  1, //[15]
                      pre_delim_count                 : 12, //[27:16]
                      ampdu_flag                      :  1, //[28]
                      bar_frame                       :  1, //[29]
                      raw_mpdu                        :  1, //[30]
                      reserved_12                     :  1; //[31]
             uint32_t mpdu_length                     : 14, //[13:0]
                      first_mpdu                      :  1, //[14]
                      mcast_bcast                     :  1, //[15]
                      ast_index_not_found             :  1, //[16]
                      ast_index_timeout               :  1, //[17]
                      power_mgmt                      :  1, //[18]
                      non_qos                         :  1, //[19]
                      null_data                       :  1, //[20]
                      mgmt_type                       :  1, //[21]
                      ctrl_type                       :  1, //[22]
                      more_data                       :  1, //[23]
                      eosp                            :  1, //[24]
                      fragment_flag                   :  1, //[25]
                      order                           :  1, //[26]
                      u_apsd_trigger                  :  1, //[27]
                      encrypt_required                :  1, //[28]
                      directed                        :  1, //[29]
                      amsdu_present                   :  1, //[30]
                      reserved_13                     :  1; //[31]
             uint32_t mpdu_frame_control_field        : 16, //[15:0]
                      mpdu_duration_field             : 16; //[31:16]
             uint32_t mac_addr_ad1_31_0               : 32; //[31:0]
             uint32_t mac_addr_ad1_47_32              : 16, //[15:0]
                      mac_addr_ad2_15_0               : 16; //[31:16]
             uint32_t mac_addr_ad2_47_16              : 32; //[31:0]
             uint32_t mac_addr_ad3_31_0               : 32; //[31:0]
             uint32_t mac_addr_ad3_47_32              : 16, //[15:0]
                      mpdu_sequence_control_field     : 16; //[31:16]
             uint32_t mac_addr_ad4_31_0               : 32; //[31:0]
             uint32_t mac_addr_ad4_47_32              : 16, //[15:0]
                      mpdu_qos_control_field          : 16; //[31:16]
             uint32_t mpdu_ht_control_field           : 32; //[31:0]
};

/*

struct rxpt_classify_info rxpt_classify_info_details

			In case of ndp or phy_err or AST_based_lookup_valid ==
			0, this field will be set to 0



			RXOLE related classification info

			<legal all

rx_reo_queue_desc_addr_31_0

			In case of ndp or phy_err or AST_based_lookup_valid ==
			0, this field will be set to 0



			Address (lower 32 bits) of the REO queue descriptor.



			If no Peer entry lookup happened for this frame, the
			value wil be set to 0, and the frame shall never be pushed
			to REO entrance ring.

			<legal all>

rx_reo_queue_desc_addr_39_32

			In case of ndp or phy_err or AST_based_lookup_valid ==
			0, this field will be set to 0



			Address (upper 8 bits) of the REO queue descriptor.



			If no Peer entry lookup happened for this frame, the
			value wil be set to 0, and the frame shall never be pushed
			to REO entrance ring.

			<legal all>

receive_queue_number

			In case of ndp or phy_err or AST_based_lookup_valid ==
			0, this field will be set to 0



			Indicates the MPDU queue ID to which this MPDU link
			descriptor belongs

			Used for tracking and debugging

			<legal all>

pre_delim_err_warning

			Indicates that a delimiter FCS error was found in
			between the Previous MPDU and this MPDU.



			Note that this is just a warning, and does not mean that
			this MPDU is corrupted in any way. If it is, there will be
			other errors indicated such as FCS or decrypt errors



			In case of ndp or phy_err, this field will indicate at
			least one of delimiters located after the last MPDU in the
			previous PPDU has been corrupted.

first_delim_err

			Indicates that the first delimiter had a FCS failure.
			Only valid when first_mpdu and first_msdu are set.




reserved_11

			<legal 0>

pn_31_0





			WEP: IV = {key_id_octet, pn2, pn1, pn0}.  Only pn[23:0]
			is valid.

			TKIP: IV = {pn5, pn4, pn3, pn2, key_id_octet, pn0,
			WEPSeed[1], pn1}.  Only pn[47:0] is valid.

			AES-CCM: IV = {pn5, pn4, pn3, pn2, key_id_octet, 0x0,
			pn1, pn0}.  Only pn[47:0] is valid.

			WAPI: IV = {key_id_octet, 0x0, pn15, pn14, pn13, pn12,
			pn11, pn10, pn9, pn8, pn7, pn6, pn5, pn4, pn3, pn2, pn1,
			pn0}.  pn[127:0] are valid.




pn_63_32




			Bits [63:32] of the PN number.   See description for
			pn_31_0.




pn_95_64




			Bits [95:64] of the PN number.  See description for
			pn_31_0.




pn_127_96




			Bits [127:96] of the PN number.  See description for
			pn_31_0.




epd_en

			Field only valid when AST_based_lookup_valid == 1.





			In case of ndp or phy_err or AST_based_lookup_valid ==
			0, this field will be set to 0



			If set to one use EPD instead of LPD




			<legal all>

all_frames_shall_be_encrypted

			In case of ndp or phy_err or AST_based_lookup_valid ==
			0, this field will be set to 0



			When set, all frames (data only ?) shall be encrypted.
			If not, RX CRYPTO shall set an error flag.

			<legal all>

encrypt_type

			In case of ndp or phy_err or AST_based_lookup_valid ==
			0, this field will be set to 0



			Indicates type of decrypt cipher used (as defined in the
			peer entry)



			<enum 0 wep_40> WEP 40-bit

			<enum 1 wep_104> WEP 104-bit

			<enum 2 tkip_no_mic> TKIP without MIC

			<enum 3 wep_128> WEP 128-bit

			<enum 4 tkip_with_mic> TKIP with MIC

			<enum 5 wapi> WAPI

			<enum 6 aes_ccmp_128> AES CCMP 128

			<enum 7 no_cipher> No crypto

			<enum 8 aes_ccmp_256> AES CCMP 256

			<enum 9 aes_gcmp_128> AES CCMP 128

			<enum 10 aes_gcmp_256> AES CCMP 256

			<enum 11 wapi_gcm_sm4> WAPI GCM SM4



			<enum 12 wep_varied_width> WEP encryption. As for WEP
			per keyid the key bit width can vary, the key bit width for
			this MPDU will be indicated in field
			wep_key_width_for_variable key

			<legal 0-12>

wep_key_width_for_variable_key

			Field only valid when key_type is set to
			wep_varied_width.



			This field indicates the size of the wep key for this
			MPDU.



			<enum 0 wep_varied_width_40> WEP 40-bit

			<enum 1 wep_varied_width_104> WEP 104-bit

			<enum 2 wep_varied_width_128> WEP 128-bit



			<legal 0-2>

mesh_sta

			In case of ndp or phy_err or AST_based_lookup_valid ==
			0, this field will be set to 0



			When set, this is a Mesh (11s) STA.



			The interpretation of the A-MSDU 'Length' field in the
			MPDU (if any) is decided by the e-numerations below.



			<enum 0 MESH_DISABLE>

			<enum 1 MESH_Q2Q> A-MSDU 'Length' is big endian and
			includes the length of Mesh Control.

			<enum 2 MESH_11S_BE> A-MSDU 'Length' is big endian and
			excludes the length of Mesh Control.

			<enum 3 MESH_11S_LE> A-MSDU 'Length' is little endian
			and excludes the length of Mesh Control. This is
			802.11s-compliant.

			<legal all>

bssid_hit

			In case of ndp or phy_err or AST_based_lookup_valid ==
			0, this field will be set to 0



			When set, the BSSID of the incoming frame matched one of
			the 8 BSSID register values



			<legal all>

bssid_number

			Field only valid when bssid_hit is set.



			This number indicates which one out of the 8 BSSID
			register values matched the incoming frame

			<legal all>

tid

			Field only valid when mpdu_qos_control_valid is set



			The TID field in the QoS control field

			<legal all>

reserved_3a

			<legal 0>

peer_meta_data

			In case of ndp or phy_err or AST_based_lookup_valid ==
			0, this field will be set to 0



			Meta data that SW has programmed in the Peer table entry
			of the transmitting STA.

			<legal all>

rxpcu_mpdu_filter_in_category

			Field indicates what the reason was that this MPDU frame
			was allowed to come into the receive path by RXPCU

			<enum 0 rxpcu_filter_pass> This MPDU passed the normal
			frame filter programming of rxpcu

			<enum 1 rxpcu_monitor_client> This MPDU did NOT pass the
			regular frame filter and would have been dropped, were it
			not for the frame fitting into the 'monitor_client'
			category.

			<enum 2 rxpcu_monitor_other> This MPDU did NOT pass the
			regular frame filter and also did not pass the
			rxpcu_monitor_client filter. It would have been dropped
			accept that it did pass the 'monitor_other' category.



			Note: for ndp frame, if it was expected because the
			preceding NDPA was filter_pass, the setting
			rxpcu_filter_pass will be used. This setting will also be
			used for every ndp frame in case Promiscuous mode is
			enabled.



			In case promiscuous is not enabled, and an NDP is not
			preceded by a NPDA filter pass frame, the only other setting
			that could appear here for the NDP is rxpcu_monitor_other.

			(rxpcu has a configuration bit specifically for this
			scenario)



			Note: for

			<legal 0-2>

sw_frame_group_id

			SW processes frames based on certain classifications.
			This field indicates to what sw classification this MPDU is
			mapped.

			The classification is given in priority order



			<enum 0 sw_frame_group_NDP_frame> Note: The
			corresponding Rxpcu_Mpdu_filter_in_category can be
			rxpcu_filter_pass or rxpcu_monitor_other



			<enum 1 sw_frame_group_Multicast_data>

			<enum 2 sw_frame_group_Unicast_data>

			<enum 3 sw_frame_group_Null_data > This includes mpdus
			of type Data Null as well as QoS Data Null



			<enum 4 sw_frame_group_mgmt_0000 >

			<enum 5 sw_frame_group_mgmt_0001 >

			<enum 6 sw_frame_group_mgmt_0010 >

			<enum 7 sw_frame_group_mgmt_0011 >

			<enum 8 sw_frame_group_mgmt_0100 >

			<enum 9 sw_frame_group_mgmt_0101 >

			<enum 10 sw_frame_group_mgmt_0110 >

			<enum 11 sw_frame_group_mgmt_0111 >

			<enum 12 sw_frame_group_mgmt_1000 >

			<enum 13 sw_frame_group_mgmt_1001 >

			<enum 14 sw_frame_group_mgmt_1010 >

			<enum 15 sw_frame_group_mgmt_1011 >

			<enum 16 sw_frame_group_mgmt_1100 >

			<enum 17 sw_frame_group_mgmt_1101 >

			<enum 18 sw_frame_group_mgmt_1110 >

			<enum 19 sw_frame_group_mgmt_1111 >



			<enum 20 sw_frame_group_ctrl_0000 >

			<enum 21 sw_frame_group_ctrl_0001 >

			<enum 22 sw_frame_group_ctrl_0010 >

			<enum 23 sw_frame_group_ctrl_0011 >

			<enum 24 sw_frame_group_ctrl_0100 >

			<enum 25 sw_frame_group_ctrl_0101 >

			<enum 26 sw_frame_group_ctrl_0110 >

			<enum 27 sw_frame_group_ctrl_0111 >

			<enum 28 sw_frame_group_ctrl_1000 >

			<enum 29 sw_frame_group_ctrl_1001 >

			<enum 30 sw_frame_group_ctrl_1010 >

			<enum 31 sw_frame_group_ctrl_1011 >

			<enum 32 sw_frame_group_ctrl_1100 >

			<enum 33 sw_frame_group_ctrl_1101 >

			<enum 34 sw_frame_group_ctrl_1110 >

			<enum 35 sw_frame_group_ctrl_1111 >



			<enum 36 sw_frame_group_unsupported> This covers type 3
			and protocol version != 0

			Note: The corresponding Rxpcu_Mpdu_filter_in_category
			can only be rxpcu_monitor_other




			Note: The corresponding Rxpcu_Mpdu_filter_in_category
			can be rxpcu_filter_pass



			<legal 0-37>

ndp_frame

			When set, the received frame was an NDP frame, and thus
			there will be no MPDU data.

			<legal all>

phy_err

			When set, a PHY error was received before MAC received
			any data, and thus there will be no MPDU data.

			<legal all>

phy_err_during_mpdu_header

			When set, a PHY error was received before MAC received
			the complete MPDU header which was needed for proper
			decoding

			<legal all>

protocol_version_err

			Set when RXPCU detected a version error in the Frame
			control field

			<legal all>

ast_based_lookup_valid

			When set, AST based lookup for this frame has found a
			valid result.



			Note that for NDP frame this will never be set

			<legal all>

reserved_0a

			<legal 0>

phy_ppdu_id

			A ppdu counter value that PHY increments for every PPDU
			received. The counter value wraps around

			<legal all>

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



			In case of ndp or phy_err, this field will be set to
			0xFFFF

			<legal all>

sw_peer_id

			In case of ndp or phy_err or AST_based_lookup_valid ==
			0, this field will be set to 0



			This field indicates a unique peer identifier. It is set
			equal to field 'sw_peer_id' from the AST entry



			<legal all>

mpdu_frame_control_valid

			When set, the field Mpdu_Frame_control_field has valid
			information




			<legal all>

mpdu_duration_valid

			When set, the field Mpdu_duration_field has valid
			information




			<legal all>

mac_addr_ad1_valid

			When set, the fields mac_addr_ad1_..... have valid
			information




			<legal all>

mac_addr_ad2_valid

			When set, the fields mac_addr_ad2_..... have valid
			information







			<legal all>

mac_addr_ad3_valid

			When set, the fields mac_addr_ad3_..... have valid
			information







			<legal all>

mac_addr_ad4_valid

			When set, the fields mac_addr_ad4_..... have valid
			information







			<legal all>

mpdu_sequence_control_valid

			When set, the fields mpdu_sequence_control_field and
			mpdu_sequence_number have valid information as well as field



			For MPDUs without a sequence control field, this field
			will not be set.




			<legal all>

mpdu_qos_control_valid

			When set, the field mpdu_qos_control_field has valid
			information



			For MPDUs without a QoS control field, this field will
			not be set.




			<legal all>

mpdu_ht_control_valid

			When set, the field mpdu_HT_control_field has valid
			information



			For MPDUs without a HT control field, this field will
			not be set.




			<legal all>

frame_encryption_info_valid

			When set, the encryption related info fields, like IV
			and PN are valid



			For MPDUs that are not encrypted, this will not be set.




			<legal all>

mpdu_fragment_number

			Field only valid when Mpdu_sequence_control_valid is set
			AND Fragment_flag is set



			The fragment number from the 802.11 header



			<legal all>

more_fragment_flag

			The More Fragment bit setting from the MPDU header of
			the received frame



			<legal all>

reserved_2a

			<legal 0>

fr_ds

			Field only valid when Mpdu_frame_control_valid is set



			Set if the from DS bit is set in the frame control.

			<legal all>

to_ds

			Field only valid when Mpdu_frame_control_valid is set



			Set if the to DS bit is set in the frame control.

			<legal all>

encrypted

			Field only valid when Mpdu_frame_control_valid is set.



			Protected bit from the frame control.

			<legal all>

mpdu_retry

			Field only valid when Mpdu_frame_control_valid is set.



			Retry bit from the frame control.  Only valid when
			first_msdu is set.

			<legal all>

mpdu_sequence_number

			Field only valid when Mpdu_sequence_control_valid is
			set.



			The sequence number from the 802.11 header.

			<legal all>

key_id_octet




			The key ID octet from the IV.



			In case of ndp or phy_err or AST_based_lookup_valid ==
			0, this field will be set to 0

			<legal all>

new_peer_entry

			In case of ndp or phy_err or AST_based_lookup_valid ==
			0, this field will be set to 0



			Set if new RX_PEER_ENTRY TLV follows. If clear,
			RX_PEER_ENTRY doesn't follow so RX DECRYPTION module either
			uses old peer entry or not decrypt.

			<legal all>

decrypt_needed

			In case of ndp or phy_err or AST_based_lookup_valid ==
			0, this field will be set to 0



			Set if decryption is needed.



			Note:

			When RXPCU sets bit 'ast_index_not_found' and/or
			ast_index_timeout', RXPCU will also ensure that this bit is
			NOT set

			CRYPTO for that reason only needs to evaluate this bit
			and non of the other ones.

			<legal all>

decap_type

			In case of ndp or phy_err or AST_based_lookup_valid ==
			0, this field will be set to 0



			Used by the OLE during decapsulation.



			Indicates the decapsulation that HW will perform:



			<enum 0 RAW> No encapsulation

			<enum 1 Native_WiFi>

			<enum 2 Ethernet> Ethernet 2 (DIX)  or 802.3 (uses
			SNAP/LLC)

			<enum 3 802_3> Indicate Ethernet



			<legal all>

rx_insert_vlan_c_tag_padding

			In case of ndp or phy_err or AST_based_lookup_valid ==
			0, this field will be set to 0



			Insert 4 byte of all zeros as VLAN tag if the rx payload
			does not have VLAN. Used during decapsulation.

			<legal all>

rx_insert_vlan_s_tag_padding

			In case of ndp or phy_err or AST_based_lookup_valid ==
			0, this field will be set to 0



			Insert 4 byte of all zeros as double VLAN tag if the rx
			payload does not have VLAN. Used during

			<legal all>

strip_vlan_c_tag_decap

			In case of ndp or phy_err or AST_based_lookup_valid ==
			0, this field will be set to 0



			Strip the VLAN during decapsulation.  Used by the OLE.

			<legal all>

strip_vlan_s_tag_decap

			In case of ndp or phy_err or AST_based_lookup_valid ==
			0, this field will be set to 0



			Strip the double VLAN during decapsulation.  Used by
			the OLE.

			<legal all>

pre_delim_count

			The number of delimiters before this MPDU.



			Note that this number is cleared at PPDU start.



			If this MPDU is the first received MPDU in the PPDU and
			this MPDU gets filtered-in, this field will indicate the
			number of delimiters located after the last MPDU in the
			previous PPDU.



			If this MPDU is located after the first received MPDU in
			an PPDU, this field will indicate the number of delimiters
			located between the previous MPDU and this MPDU.



			In case of ndp or phy_err, this field will indicate the
			number of delimiters located after the last MPDU in the
			previous PPDU.

			<legal all>

ampdu_flag

			When set, received frame was part of an A-MPDU.




			<legal all>

bar_frame

			In case of ndp or phy_err or AST_based_lookup_valid ==
			0, this field will be set to 0



			When set, received frame is a BAR frame

			<legal all>

raw_mpdu

			Consumer: SW

			Producer: RXOLE



			RXPCU sets this field to 0 and RXOLE overwrites it.



			Set to 1 by RXOLE when it has not performed any 802.11
			to Ethernet/Natvie WiFi header conversion on this MPDU.

			<legal all>

reserved_12

			<legal 0>

mpdu_length

			In case of ndp or phy_err this field will be set to 0



			MPDU length before decapsulation.

			<legal all>

first_mpdu

			See definition in RX attention descriptor



			In case of ndp or phy_err, this field will be set. Note
			however that there will not actually be any data contents in
			the MPDU.

			<legal all>

mcast_bcast

			In case of ndp or phy_err or Phy_err_during_mpdu_header
			this field will be set to 0



			See definition in RX attention descriptor

			<legal all>

ast_index_not_found

			In case of ndp or phy_err or Phy_err_during_mpdu_header
			this field will be set to 0



			See definition in RX attention descriptor

			<legal all>

ast_index_timeout

			In case of ndp or phy_err or Phy_err_during_mpdu_header
			this field will be set to 0



			See definition in RX attention descriptor

			<legal all>

power_mgmt

			In case of ndp or phy_err or Phy_err_during_mpdu_header
			this field will be set to 0



			See definition in RX attention descriptor

			<legal all>

non_qos

			In case of ndp or phy_err or Phy_err_during_mpdu_header
			this field will be set to 1



			See definition in RX attention descriptor

			<legal all>

null_data

			In case of ndp or phy_err or Phy_err_during_mpdu_header
			this field will be set to 0



			See definition in RX attention descriptor

			<legal all>

mgmt_type

			In case of ndp or phy_err or Phy_err_during_mpdu_header
			this field will be set to 0



			See definition in RX attention descriptor

			<legal all>

ctrl_type

			In case of ndp or phy_err or Phy_err_during_mpdu_header
			this field will be set to 0



			See definition in RX attention descriptor

			<legal all>

more_data

			In case of ndp or phy_err or Phy_err_during_mpdu_header
			this field will be set to 0



			See definition in RX attention descriptor

			<legal all>

eosp

			In case of ndp or phy_err or Phy_err_during_mpdu_header
			this field will be set to 0



			See definition in RX attention descriptor

			<legal all>

fragment_flag

			In case of ndp or phy_err or Phy_err_during_mpdu_header
			this field will be set to 0



			See definition in RX attention descriptor

			<legal all>

order

			In case of ndp or phy_err or Phy_err_during_mpdu_header
			this field will be set to 0



			See definition in RX attention descriptor



			<legal all>

u_apsd_trigger

			In case of ndp or phy_err or Phy_err_during_mpdu_header
			this field will be set to 0



			See definition in RX attention descriptor

			<legal all>

encrypt_required

			In case of ndp or phy_err or Phy_err_during_mpdu_header
			this field will be set to 0



			See definition in RX attention descriptor

			<legal all>

directed

			In case of ndp or phy_err or Phy_err_during_mpdu_header
			this field will be set to 0



			See definition in RX attention descriptor

			<legal all>

amsdu_present

			Field only valid when Mpdu_qos_control_valid is set



			The 'amsdu_present' bit within the QoS control field of
			the MPDU

			<legal all>

reserved_13

			<legal 0>

mpdu_frame_control_field

			Field only valid when Mpdu_frame_control_valid is set



			The frame control field of this received MPDU.



			Field only valid when Ndp_frame and phy_err are NOT set



			Bytes 0 + 1 of the received MPDU

			<legal all>

mpdu_duration_field

			Field only valid when Mpdu_duration_valid is set



			The duration field of this received MPDU.

			<legal all>

mac_addr_ad1_31_0

			Field only valid when mac_addr_ad1_valid is set



			The Least Significant 4 bytes of the Received Frames MAC
			Address AD1

			<legal all>

mac_addr_ad1_47_32

			Field only valid when mac_addr_ad1_valid is set



			The 2 most significant bytes of the Received Frames MAC
			Address AD1

			<legal all>

mac_addr_ad2_15_0

			Field only valid when mac_addr_ad2_valid is set



			The Least Significant 2 bytes of the Received Frames MAC
			Address AD2

			<legal all>

mac_addr_ad2_47_16

			Field only valid when mac_addr_ad2_valid is set



			The 4 most significant bytes of the Received Frames MAC
			Address AD2

			<legal all>

mac_addr_ad3_31_0

			Field only valid when mac_addr_ad3_valid is set



			The Least Significant 4 bytes of the Received Frames MAC
			Address AD3

			<legal all>

mac_addr_ad3_47_32

			Field only valid when mac_addr_ad3_valid is set



			The 2 most significant bytes of the Received Frames MAC
			Address AD3

			<legal all>

mpdu_sequence_control_field




			The sequence control field of the MPDU

			<legal all>

mac_addr_ad4_31_0

			Field only valid when mac_addr_ad4_valid is set



			The Least Significant 4 bytes of the Received Frames MAC
			Address AD4

			<legal all>

mac_addr_ad4_47_32

			Field only valid when mac_addr_ad4_valid is set



			The 2 most significant bytes of the Received Frames MAC
			Address AD4

			<legal all>

mpdu_qos_control_field

			Field only valid when mpdu_qos_control_valid is set



			The sequence control field of the MPDU

			<legal all>

mpdu_ht_control_field

			Field only valid when mpdu_qos_control_valid is set



			The HT control field of the MPDU

			<legal all>
*/


 /* EXTERNAL REFERENCE : struct rxpt_classify_info rxpt_classify_info_details */


/* Description		RX_MPDU_INFO_0_RXPT_CLASSIFY_INFO_DETAILS_REO_DESTINATION_INDICATION

			The ID of the REO exit ring where the MSDU frame shall
			push after (MPDU level) reordering has finished.



			<enum 0 reo_destination_tcl> Reo will push the frame
			into the REO2TCL ring

			<enum 1 reo_destination_sw1> Reo will push the frame
			into the REO2SW1 ring

			<enum 2 reo_destination_sw2> Reo will push the frame
			into the REO2SW2 ring

			<enum 3 reo_destination_sw3> Reo will push the frame
			into the REO2SW3 ring

			<enum 4 reo_destination_sw4> Reo will push the frame
			into the REO2SW4 ring

			<enum 5 reo_destination_release> Reo will push the frame
			into the REO_release ring

			<enum 6 reo_destination_fw> Reo will push the frame into
			the REO2FW ring

			<enum 7 reo_destination_sw5> Reo will push the frame
			into the REO2SW5 ring

			<enum 8 reo_destination_sw6> Reo will push the frame
			into the REO2SW6 ring

			<enum 9 reo_destination_9> REO remaps this <enum 10
			reo_destination_10> REO remaps this

			<enum 11 reo_destination_11> REO remaps this

			<enum 12 reo_destination_12> REO remaps this <enum 13
			reo_destination_13> REO remaps this

			<enum 14 reo_destination_14> REO remaps this

			<enum 15 reo_destination_15> REO remaps this

			<enum 16 reo_destination_16> REO remaps this

			<enum 17 reo_destination_17> REO remaps this

			<enum 18 reo_destination_18> REO remaps this

			<enum 19 reo_destination_19> REO remaps this

			<enum 20 reo_destination_20> REO remaps this

			<enum 21 reo_destination_21> REO remaps this

			<enum 22 reo_destination_22> REO remaps this

			<enum 23 reo_destination_23> REO remaps this

			<enum 24 reo_destination_24> REO remaps this

			<enum 25 reo_destination_25> REO remaps this

			<enum 26 reo_destination_26> REO remaps this

			<enum 27 reo_destination_27> REO remaps this

			<enum 28 reo_destination_28> REO remaps this

			<enum 29 reo_destination_29> REO remaps this

			<enum 30 reo_destination_30> REO remaps this

			<enum 31 reo_destination_31> REO remaps this



			<legal all>
*/
#define RX_MPDU_INFO_0_RXPT_CLASSIFY_INFO_DETAILS_REO_DESTINATION_INDICATION_OFFSET 0x00000000
#define RX_MPDU_INFO_0_RXPT_CLASSIFY_INFO_DETAILS_REO_DESTINATION_INDICATION_LSB 0
#define RX_MPDU_INFO_0_RXPT_CLASSIFY_INFO_DETAILS_REO_DESTINATION_INDICATION_MASK 0x0000001f

/* Description		RX_MPDU_INFO_0_RXPT_CLASSIFY_INFO_DETAILS_LMAC_PEER_ID_MSB

			If use_flow_id_toeplitz_clfy is set and lmac_peer_id_'sb
			is 2'b00, Rx OLE uses a REO desination indicati'n of {1'b1,
			hash[3:0]} using the chosen Toeplitz hash from Common Parser
			if flow search fails.

			If use_flow_id_toeplitz_clfy is set and lmac_peer_id_msb
			's not 2'b00, Rx OLE uses a REO desination indication of
			{lmac_peer_id_msb, hash[2:0]} using the chosen Toeplitz hash
			from Common Parser if flow search fails.

			This LMAC/peer-based routing is not supported in
			Hastings80 and HastingsPrime.

			<legal 0>
*/
#define RX_MPDU_INFO_0_RXPT_CLASSIFY_INFO_DETAILS_LMAC_PEER_ID_MSB_OFFSET 0x00000000
#define RX_MPDU_INFO_0_RXPT_CLASSIFY_INFO_DETAILS_LMAC_PEER_ID_MSB_LSB 5
#define RX_MPDU_INFO_0_RXPT_CLASSIFY_INFO_DETAILS_LMAC_PEER_ID_MSB_MASK 0x00000060

/* Description		RX_MPDU_INFO_0_RXPT_CLASSIFY_INFO_DETAILS_USE_FLOW_ID_TOEPLITZ_CLFY

			Indication to Rx OLE to enable REO destination routing
			based on the chosen Toeplitz hash from Common Parser, in
			case flow search fails

			<legal all>
*/
#define RX_MPDU_INFO_0_RXPT_CLASSIFY_INFO_DETAILS_USE_FLOW_ID_TOEPLITZ_CLFY_OFFSET 0x00000000
#define RX_MPDU_INFO_0_RXPT_CLASSIFY_INFO_DETAILS_USE_FLOW_ID_TOEPLITZ_CLFY_LSB 7
#define RX_MPDU_INFO_0_RXPT_CLASSIFY_INFO_DETAILS_USE_FLOW_ID_TOEPLITZ_CLFY_MASK 0x00000080

/* Description		RX_MPDU_INFO_0_RXPT_CLASSIFY_INFO_DETAILS_PKT_SELECTION_FP_UCAST_DATA

			Filter pass Unicast data frame (matching
			rxpcu_filter_pass and sw_frame_group_Unicast_data) routing
			selection



			1'b0: source and destination rings are selected from the
			RxOLE register settings for the packet type



			1'b1: source ring and destination ring is selected from
			the rxdma0_source_ring_selection and
			rxdma0_destination_ring_selection fields in this STRUCT

			<legal all>
*/
#define RX_MPDU_INFO_0_RXPT_CLASSIFY_INFO_DETAILS_PKT_SELECTION_FP_UCAST_DATA_OFFSET 0x00000000
#define RX_MPDU_INFO_0_RXPT_CLASSIFY_INFO_DETAILS_PKT_SELECTION_FP_UCAST_DATA_LSB 8
#define RX_MPDU_INFO_0_RXPT_CLASSIFY_INFO_DETAILS_PKT_SELECTION_FP_UCAST_DATA_MASK 0x00000100

/* Description		RX_MPDU_INFO_0_RXPT_CLASSIFY_INFO_DETAILS_PKT_SELECTION_FP_MCAST_DATA

			Filter pass Multicast data frame (matching
			rxpcu_filter_pass and sw_frame_group_Multicast_data) routing
			selection



			1'b0: source and destination rings are selected from the
			RxOLE register settings for the packet type



			1'b1: source ring and destination ring is selected from
			the rxdma0_source_ring_selection and
			rxdma0_destination_ring_selection fields in this STRUCT

			<legal all>
*/
#define RX_MPDU_INFO_0_RXPT_CLASSIFY_INFO_DETAILS_PKT_SELECTION_FP_MCAST_DATA_OFFSET 0x00000000
#define RX_MPDU_INFO_0_RXPT_CLASSIFY_INFO_DETAILS_PKT_SELECTION_FP_MCAST_DATA_LSB 9
#define RX_MPDU_INFO_0_RXPT_CLASSIFY_INFO_DETAILS_PKT_SELECTION_FP_MCAST_DATA_MASK 0x00000200

/* Description		RX_MPDU_INFO_0_RXPT_CLASSIFY_INFO_DETAILS_PKT_SELECTION_FP_1000

			Filter pass BAR frame (matching rxpcu_filter_pass and
			sw_frame_group_ctrl_1000) routing selection



			1'b0: source and destination rings are selected from the
			RxOLE register settings for the packet type



			1'b1: source ring and destination ring is selected from
			the rxdma0_source_ring_selection and
			rxdma0_destination_ring_selection fields in this STRUCT

			<legal all>
*/
#define RX_MPDU_INFO_0_RXPT_CLASSIFY_INFO_DETAILS_PKT_SELECTION_FP_1000_OFFSET 0x00000000
#define RX_MPDU_INFO_0_RXPT_CLASSIFY_INFO_DETAILS_PKT_SELECTION_FP_1000_LSB 10
#define RX_MPDU_INFO_0_RXPT_CLASSIFY_INFO_DETAILS_PKT_SELECTION_FP_1000_MASK 0x00000400

/* Description		RX_MPDU_INFO_0_RXPT_CLASSIFY_INFO_DETAILS_RXDMA0_SOURCE_RING_SELECTION

			Field only valid when for the received frame type the
			corresponding pkt_selection_fp_... bit is set



			<enum 0 wbm2rxdma_buf_source_ring> The data buffer for

			<enum 1 fw2rxdma_buf_source_ring> The data buffer for
			this frame shall be sourced by fw2rxdma buffer source ring.

			<enum 2 sw2rxdma_buf_source_ring> The data buffer for
			this frame shall be sourced by sw2rxdma buffer source ring.

			<enum 3 no_buffer_ring> The frame shall not be written
			to any data buffer.



			<legal all>
*/
#define RX_MPDU_INFO_0_RXPT_CLASSIFY_INFO_DETAILS_RXDMA0_SOURCE_RING_SELECTION_OFFSET 0x00000000
#define RX_MPDU_INFO_0_RXPT_CLASSIFY_INFO_DETAILS_RXDMA0_SOURCE_RING_SELECTION_LSB 11
#define RX_MPDU_INFO_0_RXPT_CLASSIFY_INFO_DETAILS_RXDMA0_SOURCE_RING_SELECTION_MASK 0x00001800

/* Description		RX_MPDU_INFO_0_RXPT_CLASSIFY_INFO_DETAILS_RXDMA0_DESTINATION_RING_SELECTION

			Field only valid when for the received frame type the
			corresponding pkt_selection_fp_... bit is set



			<enum 0  rxdma_release_ring> RXDMA0 shall push the frame
			to the Release ring. Effectively this means the frame needs
			to be dropped.

			<enum 1  rxdma2fw_ring> RXDMA0 shall push the frame to
			the FW ring.

			<enum 2  rxdma2sw_ring> RXDMA0 shall push the frame to
			the SW ring.

			<enum 3  rxdma2reo_ring> RXDMA0 shall push the frame to
			the REO entrance ring.



			<legal all>
*/
#define RX_MPDU_INFO_0_RXPT_CLASSIFY_INFO_DETAILS_RXDMA0_DESTINATION_RING_SELECTION_OFFSET 0x00000000
#define RX_MPDU_INFO_0_RXPT_CLASSIFY_INFO_DETAILS_RXDMA0_DESTINATION_RING_SELECTION_LSB 13
#define RX_MPDU_INFO_0_RXPT_CLASSIFY_INFO_DETAILS_RXDMA0_DESTINATION_RING_SELECTION_MASK 0x00006000

/* Description		RX_MPDU_INFO_0_RXPT_CLASSIFY_INFO_DETAILS_RESERVED_0B

			<legal 0>
*/
#define RX_MPDU_INFO_0_RXPT_CLASSIFY_INFO_DETAILS_RESERVED_0B_OFFSET 0x00000000
#define RX_MPDU_INFO_0_RXPT_CLASSIFY_INFO_DETAILS_RESERVED_0B_LSB    15
#define RX_MPDU_INFO_0_RXPT_CLASSIFY_INFO_DETAILS_RESERVED_0B_MASK   0xffff8000

/* Description		RX_MPDU_INFO_1_RX_REO_QUEUE_DESC_ADDR_31_0

			In case of ndp or phy_err or AST_based_lookup_valid ==
			0, this field will be set to 0



			Address (lower 32 bits) of the REO queue descriptor.



			If no Peer entry lookup happened for this frame, the
			value wil be set to 0, and the frame shall never be pushed
			to REO entrance ring.

			<legal all>
*/
#define RX_MPDU_INFO_1_RX_REO_QUEUE_DESC_ADDR_31_0_OFFSET            0x00000004
#define RX_MPDU_INFO_1_RX_REO_QUEUE_DESC_ADDR_31_0_LSB               0
#define RX_MPDU_INFO_1_RX_REO_QUEUE_DESC_ADDR_31_0_MASK              0xffffffff

/* Description		RX_MPDU_INFO_2_RX_REO_QUEUE_DESC_ADDR_39_32

			In case of ndp or phy_err or AST_based_lookup_valid ==
			0, this field will be set to 0



			Address (upper 8 bits) of the REO queue descriptor.



			If no Peer entry lookup happened for this frame, the
			value wil be set to 0, and the frame shall never be pushed
			to REO entrance ring.

			<legal all>
*/
#define RX_MPDU_INFO_2_RX_REO_QUEUE_DESC_ADDR_39_32_OFFSET           0x00000008
#define RX_MPDU_INFO_2_RX_REO_QUEUE_DESC_ADDR_39_32_LSB              0
#define RX_MPDU_INFO_2_RX_REO_QUEUE_DESC_ADDR_39_32_MASK             0x000000ff

/* Description		RX_MPDU_INFO_2_RECEIVE_QUEUE_NUMBER

			In case of ndp or phy_err or AST_based_lookup_valid ==
			0, this field will be set to 0



			Indicates the MPDU queue ID to which this MPDU link
			descriptor belongs

			Used for tracking and debugging

			<legal all>
*/
#define RX_MPDU_INFO_2_RECEIVE_QUEUE_NUMBER_OFFSET                   0x00000008
#define RX_MPDU_INFO_2_RECEIVE_QUEUE_NUMBER_LSB                      8
#define RX_MPDU_INFO_2_RECEIVE_QUEUE_NUMBER_MASK                     0x00ffff00

/* Description		RX_MPDU_INFO_2_PRE_DELIM_ERR_WARNING

			Indicates that a delimiter FCS error was found in
			between the Previous MPDU and this MPDU.



			Note that this is just a warning, and does not mean that
			this MPDU is corrupted in any way. If it is, there will be
			other errors indicated such as FCS or decrypt errors



			In case of ndp or phy_err, this field will indicate at
			least one of delimiters located after the last MPDU in the
			previous PPDU has been corrupted.
*/
#define RX_MPDU_INFO_2_PRE_DELIM_ERR_WARNING_OFFSET                  0x00000008
#define RX_MPDU_INFO_2_PRE_DELIM_ERR_WARNING_LSB                     24
#define RX_MPDU_INFO_2_PRE_DELIM_ERR_WARNING_MASK                    0x01000000

/* Description		RX_MPDU_INFO_2_FIRST_DELIM_ERR

			Indicates that the first delimiter had a FCS failure.
			Only valid when first_mpdu and first_msdu are set.



*/
#define RX_MPDU_INFO_2_FIRST_DELIM_ERR_OFFSET                        0x00000008
#define RX_MPDU_INFO_2_FIRST_DELIM_ERR_LSB                           25
#define RX_MPDU_INFO_2_FIRST_DELIM_ERR_MASK                          0x02000000

/* Description		RX_MPDU_INFO_2_RESERVED_11

			<legal 0>
*/
#define RX_MPDU_INFO_2_RESERVED_11_OFFSET                            0x00000008
#define RX_MPDU_INFO_2_RESERVED_11_LSB                               26
#define RX_MPDU_INFO_2_RESERVED_11_MASK                              0xfc000000

/* Description		RX_MPDU_INFO_3_PN_31_0





			WEP: IV = {key_id_octet, pn2, pn1, pn0}.  Only pn[23:0]
			is valid.

			TKIP: IV = {pn5, pn4, pn3, pn2, key_id_octet, pn0,
			WEPSeed[1], pn1}.  Only pn[47:0] is valid.

			AES-CCM: IV = {pn5, pn4, pn3, pn2, key_id_octet, 0x0,
			pn1, pn0}.  Only pn[47:0] is valid.

			WAPI: IV = {key_id_octet, 0x0, pn15, pn14, pn13, pn12,
			pn11, pn10, pn9, pn8, pn7, pn6, pn5, pn4, pn3, pn2, pn1,
			pn0}.  pn[127:0] are valid.



*/
#define RX_MPDU_INFO_3_PN_31_0_OFFSET                                0x0000000c
#define RX_MPDU_INFO_3_PN_31_0_LSB                                   0
#define RX_MPDU_INFO_3_PN_31_0_MASK                                  0xffffffff

/* Description		RX_MPDU_INFO_4_PN_63_32




			Bits [63:32] of the PN number.   See description for
			pn_31_0.



*/
#define RX_MPDU_INFO_4_PN_63_32_OFFSET                               0x00000010
#define RX_MPDU_INFO_4_PN_63_32_LSB                                  0
#define RX_MPDU_INFO_4_PN_63_32_MASK                                 0xffffffff

/* Description		RX_MPDU_INFO_5_PN_95_64




			Bits [95:64] of the PN number.  See description for
			pn_31_0.



*/
#define RX_MPDU_INFO_5_PN_95_64_OFFSET                               0x00000014
#define RX_MPDU_INFO_5_PN_95_64_LSB                                  0
#define RX_MPDU_INFO_5_PN_95_64_MASK                                 0xffffffff

/* Description		RX_MPDU_INFO_6_PN_127_96




			Bits [127:96] of the PN number.  See description for
			pn_31_0.



*/
#define RX_MPDU_INFO_6_PN_127_96_OFFSET                              0x00000018
#define RX_MPDU_INFO_6_PN_127_96_LSB                                 0
#define RX_MPDU_INFO_6_PN_127_96_MASK                                0xffffffff

/* Description		RX_MPDU_INFO_7_EPD_EN

			Field only valid when AST_based_lookup_valid == 1.





			In case of ndp or phy_err or AST_based_lookup_valid ==
			0, this field will be set to 0



			If set to one use EPD instead of LPD




			<legal all>
*/
#define RX_MPDU_INFO_7_EPD_EN_OFFSET                                 0x0000001c
#define RX_MPDU_INFO_7_EPD_EN_LSB                                    0
#define RX_MPDU_INFO_7_EPD_EN_MASK                                   0x00000001

/* Description		RX_MPDU_INFO_7_ALL_FRAMES_SHALL_BE_ENCRYPTED

			In case of ndp or phy_err or AST_based_lookup_valid ==
			0, this field will be set to 0



			When set, all frames (data only ?) shall be encrypted.
			If not, RX CRYPTO shall set an error flag.

			<legal all>
*/
#define RX_MPDU_INFO_7_ALL_FRAMES_SHALL_BE_ENCRYPTED_OFFSET          0x0000001c
#define RX_MPDU_INFO_7_ALL_FRAMES_SHALL_BE_ENCRYPTED_LSB             1
#define RX_MPDU_INFO_7_ALL_FRAMES_SHALL_BE_ENCRYPTED_MASK            0x00000002

/* Description		RX_MPDU_INFO_7_ENCRYPT_TYPE

			In case of ndp or phy_err or AST_based_lookup_valid ==
			0, this field will be set to 0



			Indicates type of decrypt cipher used (as defined in the
			peer entry)



			<enum 0 wep_40> WEP 40-bit

			<enum 1 wep_104> WEP 104-bit

			<enum 2 tkip_no_mic> TKIP without MIC

			<enum 3 wep_128> WEP 128-bit

			<enum 4 tkip_with_mic> TKIP with MIC

			<enum 5 wapi> WAPI

			<enum 6 aes_ccmp_128> AES CCMP 128

			<enum 7 no_cipher> No crypto

			<enum 8 aes_ccmp_256> AES CCMP 256

			<enum 9 aes_gcmp_128> AES CCMP 128

			<enum 10 aes_gcmp_256> AES CCMP 256

			<enum 11 wapi_gcm_sm4> WAPI GCM SM4



			<enum 12 wep_varied_width> WEP encryption. As for WEP
			per keyid the key bit width can vary, the key bit width for
			this MPDU will be indicated in field
			wep_key_width_for_variable key

			<legal 0-12>
*/
#define RX_MPDU_INFO_7_ENCRYPT_TYPE_OFFSET                           0x0000001c
#define RX_MPDU_INFO_7_ENCRYPT_TYPE_LSB                              2
#define RX_MPDU_INFO_7_ENCRYPT_TYPE_MASK                             0x0000003c

/* Description		RX_MPDU_INFO_7_WEP_KEY_WIDTH_FOR_VARIABLE_KEY

			Field only valid when key_type is set to
			wep_varied_width.



			This field indicates the size of the wep key for this
			MPDU.



			<enum 0 wep_varied_width_40> WEP 40-bit

			<enum 1 wep_varied_width_104> WEP 104-bit

			<enum 2 wep_varied_width_128> WEP 128-bit



			<legal 0-2>
*/
#define RX_MPDU_INFO_7_WEP_KEY_WIDTH_FOR_VARIABLE_KEY_OFFSET         0x0000001c
#define RX_MPDU_INFO_7_WEP_KEY_WIDTH_FOR_VARIABLE_KEY_LSB            6
#define RX_MPDU_INFO_7_WEP_KEY_WIDTH_FOR_VARIABLE_KEY_MASK           0x000000c0

/* Description		RX_MPDU_INFO_7_MESH_STA

			In case of ndp or phy_err or AST_based_lookup_valid ==
			0, this field will be set to 0



			When set, this is a Mesh (11s) STA.



			The interpretation of the A-MSDU 'Length' field in the
			MPDU (if any) is decided by the e-numerations below.



			<enum 0 MESH_DISABLE>

			<enum 1 MESH_Q2Q> A-MSDU 'Length' is big endian and
			includes the length of Mesh Control.

			<enum 2 MESH_11S_BE> A-MSDU 'Length' is big endian and
			excludes the length of Mesh Control.

			<enum 3 MESH_11S_LE> A-MSDU 'Length' is little endian
			and excludes the length of Mesh Control. This is
			802.11s-compliant.

			<legal all>
*/
#define RX_MPDU_INFO_7_MESH_STA_OFFSET                               0x0000001c
#define RX_MPDU_INFO_7_MESH_STA_LSB                                  8
#define RX_MPDU_INFO_7_MESH_STA_MASK                                 0x00000300

/* Description		RX_MPDU_INFO_7_BSSID_HIT

			In case of ndp or phy_err or AST_based_lookup_valid ==
			0, this field will be set to 0



			When set, the BSSID of the incoming frame matched one of
			the 8 BSSID register values



			<legal all>
*/
#define RX_MPDU_INFO_7_BSSID_HIT_OFFSET                              0x0000001c
#define RX_MPDU_INFO_7_BSSID_HIT_LSB                                 10
#define RX_MPDU_INFO_7_BSSID_HIT_MASK                                0x00000400

/* Description		RX_MPDU_INFO_7_BSSID_NUMBER

			Field only valid when bssid_hit is set.



			This number indicates which one out of the 8 BSSID
			register values matched the incoming frame

			<legal all>
*/
#define RX_MPDU_INFO_7_BSSID_NUMBER_OFFSET                           0x0000001c
#define RX_MPDU_INFO_7_BSSID_NUMBER_LSB                              11
#define RX_MPDU_INFO_7_BSSID_NUMBER_MASK                             0x00007800

/* Description		RX_MPDU_INFO_7_TID

			Field only valid when mpdu_qos_control_valid is set



			The TID field in the QoS control field

			<legal all>
*/
#define RX_MPDU_INFO_7_TID_OFFSET                                    0x0000001c
#define RX_MPDU_INFO_7_TID_LSB                                       15
#define RX_MPDU_INFO_7_TID_MASK                                      0x00078000

/* Description		RX_MPDU_INFO_7_RESERVED_3A

			<legal 0>
*/
#define RX_MPDU_INFO_7_RESERVED_3A_OFFSET                            0x0000001c
#define RX_MPDU_INFO_7_RESERVED_3A_LSB                               19
#define RX_MPDU_INFO_7_RESERVED_3A_MASK                              0xfff80000

/* Description		RX_MPDU_INFO_8_PEER_META_DATA

			In case of ndp or phy_err or AST_based_lookup_valid ==
			0, this field will be set to 0



			Meta data that SW has programmed in the Peer table entry
			of the transmitting STA.

			<legal all>
*/
#define RX_MPDU_INFO_8_PEER_META_DATA_OFFSET                         0x00000020
#define RX_MPDU_INFO_8_PEER_META_DATA_LSB                            0
#define RX_MPDU_INFO_8_PEER_META_DATA_MASK                           0xffffffff

/* Description		RX_MPDU_INFO_9_RXPCU_MPDU_FILTER_IN_CATEGORY

			Field indicates what the reason was that this MPDU frame
			was allowed to come into the receive path by RXPCU

			<enum 0 rxpcu_filter_pass> This MPDU passed the normal
			frame filter programming of rxpcu

			<enum 1 rxpcu_monitor_client> This MPDU did NOT pass the
			regular frame filter and would have been dropped, were it
			not for the frame fitting into the 'monitor_client'
			category.

			<enum 2 rxpcu_monitor_other> This MPDU did NOT pass the
			regular frame filter and also did not pass the
			rxpcu_monitor_client filter. It would have been dropped
			accept that it did pass the 'monitor_other' category.



			Note: for ndp frame, if it was expected because the
			preceding NDPA was filter_pass, the setting
			rxpcu_filter_pass will be used. This setting will also be
			used for every ndp frame in case Promiscuous mode is
			enabled.



			In case promiscuous is not enabled, and an NDP is not
			preceded by a NPDA filter pass frame, the only other setting
			that could appear here for the NDP is rxpcu_monitor_other.

			(rxpcu has a configuration bit specifically for this
			scenario)



			Note: for

			<legal 0-2>
*/
#define RX_MPDU_INFO_9_RXPCU_MPDU_FILTER_IN_CATEGORY_OFFSET          0x00000024
#define RX_MPDU_INFO_9_RXPCU_MPDU_FILTER_IN_CATEGORY_LSB             0
#define RX_MPDU_INFO_9_RXPCU_MPDU_FILTER_IN_CATEGORY_MASK            0x00000003

/* Description		RX_MPDU_INFO_9_SW_FRAME_GROUP_ID

			SW processes frames based on certain classifications.
			This field indicates to what sw classification this MPDU is
			mapped.

			The classification is given in priority order



			<enum 0 sw_frame_group_NDP_frame> Note: The
			corresponding Rxpcu_Mpdu_filter_in_category can be
			rxpcu_filter_pass or rxpcu_monitor_other



			<enum 1 sw_frame_group_Multicast_data>

			<enum 2 sw_frame_group_Unicast_data>

			<enum 3 sw_frame_group_Null_data > This includes mpdus
			of type Data Null as well as QoS Data Null



			<enum 4 sw_frame_group_mgmt_0000 >

			<enum 5 sw_frame_group_mgmt_0001 >

			<enum 6 sw_frame_group_mgmt_0010 >

			<enum 7 sw_frame_group_mgmt_0011 >

			<enum 8 sw_frame_group_mgmt_0100 >

			<enum 9 sw_frame_group_mgmt_0101 >

			<enum 10 sw_frame_group_mgmt_0110 >

			<enum 11 sw_frame_group_mgmt_0111 >

			<enum 12 sw_frame_group_mgmt_1000 >

			<enum 13 sw_frame_group_mgmt_1001 >

			<enum 14 sw_frame_group_mgmt_1010 >

			<enum 15 sw_frame_group_mgmt_1011 >

			<enum 16 sw_frame_group_mgmt_1100 >

			<enum 17 sw_frame_group_mgmt_1101 >

			<enum 18 sw_frame_group_mgmt_1110 >

			<enum 19 sw_frame_group_mgmt_1111 >



			<enum 20 sw_frame_group_ctrl_0000 >

			<enum 21 sw_frame_group_ctrl_0001 >

			<enum 22 sw_frame_group_ctrl_0010 >

			<enum 23 sw_frame_group_ctrl_0011 >

			<enum 24 sw_frame_group_ctrl_0100 >

			<enum 25 sw_frame_group_ctrl_0101 >

			<enum 26 sw_frame_group_ctrl_0110 >

			<enum 27 sw_frame_group_ctrl_0111 >

			<enum 28 sw_frame_group_ctrl_1000 >

			<enum 29 sw_frame_group_ctrl_1001 >

			<enum 30 sw_frame_group_ctrl_1010 >

			<enum 31 sw_frame_group_ctrl_1011 >

			<enum 32 sw_frame_group_ctrl_1100 >

			<enum 33 sw_frame_group_ctrl_1101 >

			<enum 34 sw_frame_group_ctrl_1110 >

			<enum 35 sw_frame_group_ctrl_1111 >



			<enum 36 sw_frame_group_unsupported> This covers type 3
			and protocol version != 0

			Note: The corresponding Rxpcu_Mpdu_filter_in_category
			can only be rxpcu_monitor_other




			Note: The corresponding Rxpcu_Mpdu_filter_in_category
			can be rxpcu_filter_pass



			<legal 0-37>
*/
#define RX_MPDU_INFO_9_SW_FRAME_GROUP_ID_OFFSET                      0x00000024
#define RX_MPDU_INFO_9_SW_FRAME_GROUP_ID_LSB                         2
#define RX_MPDU_INFO_9_SW_FRAME_GROUP_ID_MASK                        0x000001fc

/* Description		RX_MPDU_INFO_9_NDP_FRAME

			When set, the received frame was an NDP frame, and thus
			there will be no MPDU data.

			<legal all>
*/
#define RX_MPDU_INFO_9_NDP_FRAME_OFFSET                              0x00000024
#define RX_MPDU_INFO_9_NDP_FRAME_LSB                                 9
#define RX_MPDU_INFO_9_NDP_FRAME_MASK                                0x00000200

/* Description		RX_MPDU_INFO_9_PHY_ERR

			When set, a PHY error was received before MAC received
			any data, and thus there will be no MPDU data.

			<legal all>
*/
#define RX_MPDU_INFO_9_PHY_ERR_OFFSET                                0x00000024
#define RX_MPDU_INFO_9_PHY_ERR_LSB                                   10
#define RX_MPDU_INFO_9_PHY_ERR_MASK                                  0x00000400

/* Description		RX_MPDU_INFO_9_PHY_ERR_DURING_MPDU_HEADER

			When set, a PHY error was received before MAC received
			the complete MPDU header which was needed for proper
			decoding

			<legal all>
*/
#define RX_MPDU_INFO_9_PHY_ERR_DURING_MPDU_HEADER_OFFSET             0x00000024
#define RX_MPDU_INFO_9_PHY_ERR_DURING_MPDU_HEADER_LSB                11
#define RX_MPDU_INFO_9_PHY_ERR_DURING_MPDU_HEADER_MASK               0x00000800

/* Description		RX_MPDU_INFO_9_PROTOCOL_VERSION_ERR

			Set when RXPCU detected a version error in the Frame
			control field

			<legal all>
*/
#define RX_MPDU_INFO_9_PROTOCOL_VERSION_ERR_OFFSET                   0x00000024
#define RX_MPDU_INFO_9_PROTOCOL_VERSION_ERR_LSB                      12
#define RX_MPDU_INFO_9_PROTOCOL_VERSION_ERR_MASK                     0x00001000

/* Description		RX_MPDU_INFO_9_AST_BASED_LOOKUP_VALID

			When set, AST based lookup for this frame has found a
			valid result.



			Note that for NDP frame this will never be set

			<legal all>
*/
#define RX_MPDU_INFO_9_AST_BASED_LOOKUP_VALID_OFFSET                 0x00000024
#define RX_MPDU_INFO_9_AST_BASED_LOOKUP_VALID_LSB                    13
#define RX_MPDU_INFO_9_AST_BASED_LOOKUP_VALID_MASK                   0x00002000

/* Description		RX_MPDU_INFO_9_RESERVED_0A

			<legal 0>
*/
#define RX_MPDU_INFO_9_RESERVED_0A_OFFSET                            0x00000024
#define RX_MPDU_INFO_9_RESERVED_0A_LSB                               14
#define RX_MPDU_INFO_9_RESERVED_0A_MASK                              0x0000c000

/* Description		RX_MPDU_INFO_9_PHY_PPDU_ID

			A ppdu counter value that PHY increments for every PPDU
			received. The counter value wraps around

			<legal all>
*/
#define RX_MPDU_INFO_9_PHY_PPDU_ID_OFFSET                            0x00000024
#define RX_MPDU_INFO_9_PHY_PPDU_ID_LSB                               16
#define RX_MPDU_INFO_9_PHY_PPDU_ID_MASK                              0xffff0000

/* Description		RX_MPDU_INFO_10_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



			In case of ndp or phy_err, this field will be set to
			0xFFFF

			<legal all>
*/
#define RX_MPDU_INFO_10_AST_INDEX_OFFSET                             0x00000028
#define RX_MPDU_INFO_10_AST_INDEX_LSB                                0
#define RX_MPDU_INFO_10_AST_INDEX_MASK                               0x0000ffff

/* Description		RX_MPDU_INFO_10_SW_PEER_ID

			In case of ndp or phy_err or AST_based_lookup_valid ==
			0, this field will be set to 0



			This field indicates a unique peer identifier. It is set
			equal to field 'sw_peer_id' from the AST entry



			<legal all>
*/
#define RX_MPDU_INFO_10_SW_PEER_ID_OFFSET                            0x00000028
#define RX_MPDU_INFO_10_SW_PEER_ID_LSB                               16
#define RX_MPDU_INFO_10_SW_PEER_ID_MASK                              0xffff0000

/* Description		RX_MPDU_INFO_11_MPDU_FRAME_CONTROL_VALID

			When set, the field Mpdu_Frame_control_field has valid
			information




			<legal all>
*/
#define RX_MPDU_INFO_11_MPDU_FRAME_CONTROL_VALID_OFFSET              0x0000002c
#define RX_MPDU_INFO_11_MPDU_FRAME_CONTROL_VALID_LSB                 0
#define RX_MPDU_INFO_11_MPDU_FRAME_CONTROL_VALID_MASK                0x00000001

/* Description		RX_MPDU_INFO_11_MPDU_DURATION_VALID

			When set, the field Mpdu_duration_field has valid
			information




			<legal all>
*/
#define RX_MPDU_INFO_11_MPDU_DURATION_VALID_OFFSET                   0x0000002c
#define RX_MPDU_INFO_11_MPDU_DURATION_VALID_LSB                      1
#define RX_MPDU_INFO_11_MPDU_DURATION_VALID_MASK                     0x00000002

/* Description		RX_MPDU_INFO_11_MAC_ADDR_AD1_VALID

			When set, the fields mac_addr_ad1_..... have valid
			information




			<legal all>
*/
#define RX_MPDU_INFO_11_MAC_ADDR_AD1_VALID_OFFSET                    0x0000002c
#define RX_MPDU_INFO_11_MAC_ADDR_AD1_VALID_LSB                       2
#define RX_MPDU_INFO_11_MAC_ADDR_AD1_VALID_MASK                      0x00000004

/* Description		RX_MPDU_INFO_11_MAC_ADDR_AD2_VALID

			When set, the fields mac_addr_ad2_..... have valid
			information







			<legal all>
*/
#define RX_MPDU_INFO_11_MAC_ADDR_AD2_VALID_OFFSET                    0x0000002c
#define RX_MPDU_INFO_11_MAC_ADDR_AD2_VALID_LSB                       3
#define RX_MPDU_INFO_11_MAC_ADDR_AD2_VALID_MASK                      0x00000008

/* Description		RX_MPDU_INFO_11_MAC_ADDR_AD3_VALID

			When set, the fields mac_addr_ad3_..... have valid
			information







			<legal all>
*/
#define RX_MPDU_INFO_11_MAC_ADDR_AD3_VALID_OFFSET                    0x0000002c
#define RX_MPDU_INFO_11_MAC_ADDR_AD3_VALID_LSB                       4
#define RX_MPDU_INFO_11_MAC_ADDR_AD3_VALID_MASK                      0x00000010

/* Description		RX_MPDU_INFO_11_MAC_ADDR_AD4_VALID

			When set, the fields mac_addr_ad4_..... have valid
			information







			<legal all>
*/
#define RX_MPDU_INFO_11_MAC_ADDR_AD4_VALID_OFFSET                    0x0000002c
#define RX_MPDU_INFO_11_MAC_ADDR_AD4_VALID_LSB                       5
#define RX_MPDU_INFO_11_MAC_ADDR_AD4_VALID_MASK                      0x00000020

/* Description		RX_MPDU_INFO_11_MPDU_SEQUENCE_CONTROL_VALID

			When set, the fields mpdu_sequence_control_field and
			mpdu_sequence_number have valid information as well as field



			For MPDUs without a sequence control field, this field
			will not be set.




			<legal all>
*/
#define RX_MPDU_INFO_11_MPDU_SEQUENCE_CONTROL_VALID_OFFSET           0x0000002c
#define RX_MPDU_INFO_11_MPDU_SEQUENCE_CONTROL_VALID_LSB              6
#define RX_MPDU_INFO_11_MPDU_SEQUENCE_CONTROL_VALID_MASK             0x00000040

/* Description		RX_MPDU_INFO_11_MPDU_QOS_CONTROL_VALID

			When set, the field mpdu_qos_control_field has valid
			information



			For MPDUs without a QoS control field, this field will
			not be set.




			<legal all>
*/
#define RX_MPDU_INFO_11_MPDU_QOS_CONTROL_VALID_OFFSET                0x0000002c
#define RX_MPDU_INFO_11_MPDU_QOS_CONTROL_VALID_LSB                   7
#define RX_MPDU_INFO_11_MPDU_QOS_CONTROL_VALID_MASK                  0x00000080

/* Description		RX_MPDU_INFO_11_MPDU_HT_CONTROL_VALID

			When set, the field mpdu_HT_control_field has valid
			information



			For MPDUs without a HT control field, this field will
			not be set.




			<legal all>
*/
#define RX_MPDU_INFO_11_MPDU_HT_CONTROL_VALID_OFFSET                 0x0000002c
#define RX_MPDU_INFO_11_MPDU_HT_CONTROL_VALID_LSB                    8
#define RX_MPDU_INFO_11_MPDU_HT_CONTROL_VALID_MASK                   0x00000100

/* Description		RX_MPDU_INFO_11_FRAME_ENCRYPTION_INFO_VALID

			When set, the encryption related info fields, like IV
			and PN are valid



			For MPDUs that are not encrypted, this will not be set.




			<legal all>
*/
#define RX_MPDU_INFO_11_FRAME_ENCRYPTION_INFO_VALID_OFFSET           0x0000002c
#define RX_MPDU_INFO_11_FRAME_ENCRYPTION_INFO_VALID_LSB              9
#define RX_MPDU_INFO_11_FRAME_ENCRYPTION_INFO_VALID_MASK             0x00000200

/* Description		RX_MPDU_INFO_11_MPDU_FRAGMENT_NUMBER

			Field only valid when Mpdu_sequence_control_valid is set
			AND Fragment_flag is set



			The fragment number from the 802.11 header



			<legal all>
*/
#define RX_MPDU_INFO_11_MPDU_FRAGMENT_NUMBER_OFFSET                  0x0000002c
#define RX_MPDU_INFO_11_MPDU_FRAGMENT_NUMBER_LSB                     10
#define RX_MPDU_INFO_11_MPDU_FRAGMENT_NUMBER_MASK                    0x00003c00

/* Description		RX_MPDU_INFO_11_MORE_FRAGMENT_FLAG

			The More Fragment bit setting from the MPDU header of
			the received frame



			<legal all>
*/
#define RX_MPDU_INFO_11_MORE_FRAGMENT_FLAG_OFFSET                    0x0000002c
#define RX_MPDU_INFO_11_MORE_FRAGMENT_FLAG_LSB                       14
#define RX_MPDU_INFO_11_MORE_FRAGMENT_FLAG_MASK                      0x00004000

/* Description		RX_MPDU_INFO_11_RESERVED_2A

			<legal 0>
*/
#define RX_MPDU_INFO_11_RESERVED_2A_OFFSET                           0x0000002c
#define RX_MPDU_INFO_11_RESERVED_2A_LSB                              15
#define RX_MPDU_INFO_11_RESERVED_2A_MASK                             0x00008000

/* Description		RX_MPDU_INFO_11_FR_DS

			Field only valid when Mpdu_frame_control_valid is set



			Set if the from DS bit is set in the frame control.

			<legal all>
*/
#define RX_MPDU_INFO_11_FR_DS_OFFSET                                 0x0000002c
#define RX_MPDU_INFO_11_FR_DS_LSB                                    16
#define RX_MPDU_INFO_11_FR_DS_MASK                                   0x00010000

/* Description		RX_MPDU_INFO_11_TO_DS

			Field only valid when Mpdu_frame_control_valid is set



			Set if the to DS bit is set in the frame control.

			<legal all>
*/
#define RX_MPDU_INFO_11_TO_DS_OFFSET                                 0x0000002c
#define RX_MPDU_INFO_11_TO_DS_LSB                                    17
#define RX_MPDU_INFO_11_TO_DS_MASK                                   0x00020000

/* Description		RX_MPDU_INFO_11_ENCRYPTED

			Field only valid when Mpdu_frame_control_valid is set.



			Protected bit from the frame control.

			<legal all>
*/
#define RX_MPDU_INFO_11_ENCRYPTED_OFFSET                             0x0000002c
#define RX_MPDU_INFO_11_ENCRYPTED_LSB                                18
#define RX_MPDU_INFO_11_ENCRYPTED_MASK                               0x00040000

/* Description		RX_MPDU_INFO_11_MPDU_RETRY

			Field only valid when Mpdu_frame_control_valid is set.



			Retry bit from the frame control.  Only valid when
			first_msdu is set.

			<legal all>
*/
#define RX_MPDU_INFO_11_MPDU_RETRY_OFFSET                            0x0000002c
#define RX_MPDU_INFO_11_MPDU_RETRY_LSB                               19
#define RX_MPDU_INFO_11_MPDU_RETRY_MASK                              0x00080000

/* Description		RX_MPDU_INFO_11_MPDU_SEQUENCE_NUMBER

			Field only valid when Mpdu_sequence_control_valid is
			set.



			The sequence number from the 802.11 header.

			<legal all>
*/
#define RX_MPDU_INFO_11_MPDU_SEQUENCE_NUMBER_OFFSET                  0x0000002c
#define RX_MPDU_INFO_11_MPDU_SEQUENCE_NUMBER_LSB                     20
#define RX_MPDU_INFO_11_MPDU_SEQUENCE_NUMBER_MASK                    0xfff00000

/* Description		RX_MPDU_INFO_12_KEY_ID_OCTET




			The key ID octet from the IV.



			In case of ndp or phy_err or AST_based_lookup_valid ==
			0, this field will be set to 0

			<legal all>
*/
#define RX_MPDU_INFO_12_KEY_ID_OCTET_OFFSET                          0x00000030
#define RX_MPDU_INFO_12_KEY_ID_OCTET_LSB                             0
#define RX_MPDU_INFO_12_KEY_ID_OCTET_MASK                            0x000000ff

/* Description		RX_MPDU_INFO_12_NEW_PEER_ENTRY

			In case of ndp or phy_err or AST_based_lookup_valid ==
			0, this field will be set to 0



			Set if new RX_PEER_ENTRY TLV follows. If clear,
			RX_PEER_ENTRY doesn't follow so RX DECRYPTION module either
			uses old peer entry or not decrypt.

			<legal all>
*/
#define RX_MPDU_INFO_12_NEW_PEER_ENTRY_OFFSET                        0x00000030
#define RX_MPDU_INFO_12_NEW_PEER_ENTRY_LSB                           8
#define RX_MPDU_INFO_12_NEW_PEER_ENTRY_MASK                          0x00000100

/* Description		RX_MPDU_INFO_12_DECRYPT_NEEDED

			In case of ndp or phy_err or AST_based_lookup_valid ==
			0, this field will be set to 0



			Set if decryption is needed.



			Note:

			When RXPCU sets bit 'ast_index_not_found' and/or
			ast_index_timeout', RXPCU will also ensure that this bit is
			NOT set

			CRYPTO for that reason only needs to evaluate this bit
			and non of the other ones.

			<legal all>
*/
#define RX_MPDU_INFO_12_DECRYPT_NEEDED_OFFSET                        0x00000030
#define RX_MPDU_INFO_12_DECRYPT_NEEDED_LSB                           9
#define RX_MPDU_INFO_12_DECRYPT_NEEDED_MASK                          0x00000200

/* Description		RX_MPDU_INFO_12_DECAP_TYPE

			In case of ndp or phy_err or AST_based_lookup_valid ==
			0, this field will be set to 0



			Used by the OLE during decapsulation.



			Indicates the decapsulation that HW will perform:



			<enum 0 RAW> No encapsulation

			<enum 1 Native_WiFi>

			<enum 2 Ethernet> Ethernet 2 (DIX)  or 802.3 (uses
			SNAP/LLC)

			<enum 3 802_3> Indicate Ethernet



			<legal all>
*/
#define RX_MPDU_INFO_12_DECAP_TYPE_OFFSET                            0x00000030
#define RX_MPDU_INFO_12_DECAP_TYPE_LSB                               10
#define RX_MPDU_INFO_12_DECAP_TYPE_MASK                              0x00000c00

/* Description		RX_MPDU_INFO_12_RX_INSERT_VLAN_C_TAG_PADDING

			In case of ndp or phy_err or AST_based_lookup_valid ==
			0, this field will be set to 0



			Insert 4 byte of all zeros as VLAN tag if the rx payload
			does not have VLAN. Used during decapsulation.

			<legal all>
*/
#define RX_MPDU_INFO_12_RX_INSERT_VLAN_C_TAG_PADDING_OFFSET          0x00000030
#define RX_MPDU_INFO_12_RX_INSERT_VLAN_C_TAG_PADDING_LSB             12
#define RX_MPDU_INFO_12_RX_INSERT_VLAN_C_TAG_PADDING_MASK            0x00001000

/* Description		RX_MPDU_INFO_12_RX_INSERT_VLAN_S_TAG_PADDING

			In case of ndp or phy_err or AST_based_lookup_valid ==
			0, this field will be set to 0



			Insert 4 byte of all zeros as double VLAN tag if the rx
			payload does not have VLAN. Used during

			<legal all>
*/
#define RX_MPDU_INFO_12_RX_INSERT_VLAN_S_TAG_PADDING_OFFSET          0x00000030
#define RX_MPDU_INFO_12_RX_INSERT_VLAN_S_TAG_PADDING_LSB             13
#define RX_MPDU_INFO_12_RX_INSERT_VLAN_S_TAG_PADDING_MASK            0x00002000

/* Description		RX_MPDU_INFO_12_STRIP_VLAN_C_TAG_DECAP

			In case of ndp or phy_err or AST_based_lookup_valid ==
			0, this field will be set to 0



			Strip the VLAN during decapsulation.  Used by the OLE.

			<legal all>
*/
#define RX_MPDU_INFO_12_STRIP_VLAN_C_TAG_DECAP_OFFSET                0x00000030
#define RX_MPDU_INFO_12_STRIP_VLAN_C_TAG_DECAP_LSB                   14
#define RX_MPDU_INFO_12_STRIP_VLAN_C_TAG_DECAP_MASK                  0x00004000

/* Description		RX_MPDU_INFO_12_STRIP_VLAN_S_TAG_DECAP

			In case of ndp or phy_err or AST_based_lookup_valid ==
			0, this field will be set to 0



			Strip the double VLAN during decapsulation.  Used by
			the OLE.

			<legal all>
*/
#define RX_MPDU_INFO_12_STRIP_VLAN_S_TAG_DECAP_OFFSET                0x00000030
#define RX_MPDU_INFO_12_STRIP_VLAN_S_TAG_DECAP_LSB                   15
#define RX_MPDU_INFO_12_STRIP_VLAN_S_TAG_DECAP_MASK                  0x00008000

/* Description		RX_MPDU_INFO_12_PRE_DELIM_COUNT

			The number of delimiters before this MPDU.



			Note that this number is cleared at PPDU start.



			If this MPDU is the first received MPDU in the PPDU and
			this MPDU gets filtered-in, this field will indicate the
			number of delimiters located after the last MPDU in the
			previous PPDU.



			If this MPDU is located after the first received MPDU in
			an PPDU, this field will indicate the number of delimiters
			located between the previous MPDU and this MPDU.



			In case of ndp or phy_err, this field will indicate the
			number of delimiters located after the last MPDU in the
			previous PPDU.

			<legal all>
*/
#define RX_MPDU_INFO_12_PRE_DELIM_COUNT_OFFSET                       0x00000030
#define RX_MPDU_INFO_12_PRE_DELIM_COUNT_LSB                          16
#define RX_MPDU_INFO_12_PRE_DELIM_COUNT_MASK                         0x0fff0000

/* Description		RX_MPDU_INFO_12_AMPDU_FLAG

			When set, received frame was part of an A-MPDU.




			<legal all>
*/
#define RX_MPDU_INFO_12_AMPDU_FLAG_OFFSET                            0x00000030
#define RX_MPDU_INFO_12_AMPDU_FLAG_LSB                               28
#define RX_MPDU_INFO_12_AMPDU_FLAG_MASK                              0x10000000

/* Description		RX_MPDU_INFO_12_BAR_FRAME

			In case of ndp or phy_err or AST_based_lookup_valid ==
			0, this field will be set to 0



			When set, received frame is a BAR frame

			<legal all>
*/
#define RX_MPDU_INFO_12_BAR_FRAME_OFFSET                             0x00000030
#define RX_MPDU_INFO_12_BAR_FRAME_LSB                                29
#define RX_MPDU_INFO_12_BAR_FRAME_MASK                               0x20000000

/* Description		RX_MPDU_INFO_12_RAW_MPDU

			Consumer: SW

			Producer: RXOLE



			RXPCU sets this field to 0 and RXOLE overwrites it.



			Set to 1 by RXOLE when it has not performed any 802.11
			to Ethernet/Natvie WiFi header conversion on this MPDU.

			<legal all>
*/
#define RX_MPDU_INFO_12_RAW_MPDU_OFFSET                              0x00000030
#define RX_MPDU_INFO_12_RAW_MPDU_LSB                                 30
#define RX_MPDU_INFO_12_RAW_MPDU_MASK                                0x40000000

/* Description		RX_MPDU_INFO_12_RESERVED_12

			<legal 0>
*/
#define RX_MPDU_INFO_12_RESERVED_12_OFFSET                           0x00000030
#define RX_MPDU_INFO_12_RESERVED_12_LSB                              31
#define RX_MPDU_INFO_12_RESERVED_12_MASK                             0x80000000

/* Description		RX_MPDU_INFO_13_MPDU_LENGTH

			In case of ndp or phy_err this field will be set to 0



			MPDU length before decapsulation.

			<legal all>
*/
#define RX_MPDU_INFO_13_MPDU_LENGTH_OFFSET                           0x00000034
#define RX_MPDU_INFO_13_MPDU_LENGTH_LSB                              0
#define RX_MPDU_INFO_13_MPDU_LENGTH_MASK                             0x00003fff

/* Description		RX_MPDU_INFO_13_FIRST_MPDU

			See definition in RX attention descriptor



			In case of ndp or phy_err, this field will be set. Note
			however that there will not actually be any data contents in
			the MPDU.

			<legal all>
*/
#define RX_MPDU_INFO_13_FIRST_MPDU_OFFSET                            0x00000034
#define RX_MPDU_INFO_13_FIRST_MPDU_LSB                               14
#define RX_MPDU_INFO_13_FIRST_MPDU_MASK                              0x00004000

/* Description		RX_MPDU_INFO_13_MCAST_BCAST

			In case of ndp or phy_err or Phy_err_during_mpdu_header
			this field will be set to 0



			See definition in RX attention descriptor

			<legal all>
*/
#define RX_MPDU_INFO_13_MCAST_BCAST_OFFSET                           0x00000034
#define RX_MPDU_INFO_13_MCAST_BCAST_LSB                              15
#define RX_MPDU_INFO_13_MCAST_BCAST_MASK                             0x00008000

/* Description		RX_MPDU_INFO_13_AST_INDEX_NOT_FOUND

			In case of ndp or phy_err or Phy_err_during_mpdu_header
			this field will be set to 0



			See definition in RX attention descriptor

			<legal all>
*/
#define RX_MPDU_INFO_13_AST_INDEX_NOT_FOUND_OFFSET                   0x00000034
#define RX_MPDU_INFO_13_AST_INDEX_NOT_FOUND_LSB                      16
#define RX_MPDU_INFO_13_AST_INDEX_NOT_FOUND_MASK                     0x00010000

/* Description		RX_MPDU_INFO_13_AST_INDEX_TIMEOUT

			In case of ndp or phy_err or Phy_err_during_mpdu_header
			this field will be set to 0



			See definition in RX attention descriptor

			<legal all>
*/
#define RX_MPDU_INFO_13_AST_INDEX_TIMEOUT_OFFSET                     0x00000034
#define RX_MPDU_INFO_13_AST_INDEX_TIMEOUT_LSB                        17
#define RX_MPDU_INFO_13_AST_INDEX_TIMEOUT_MASK                       0x00020000

/* Description		RX_MPDU_INFO_13_POWER_MGMT

			In case of ndp or phy_err or Phy_err_during_mpdu_header
			this field will be set to 0



			See definition in RX attention descriptor

			<legal all>
*/
#define RX_MPDU_INFO_13_POWER_MGMT_OFFSET                            0x00000034
#define RX_MPDU_INFO_13_POWER_MGMT_LSB                               18
#define RX_MPDU_INFO_13_POWER_MGMT_MASK                              0x00040000

/* Description		RX_MPDU_INFO_13_NON_QOS

			In case of ndp or phy_err or Phy_err_during_mpdu_header
			this field will be set to 1



			See definition in RX attention descriptor

			<legal all>
*/
#define RX_MPDU_INFO_13_NON_QOS_OFFSET                               0x00000034
#define RX_MPDU_INFO_13_NON_QOS_LSB                                  19
#define RX_MPDU_INFO_13_NON_QOS_MASK                                 0x00080000

/* Description		RX_MPDU_INFO_13_NULL_DATA

			In case of ndp or phy_err or Phy_err_during_mpdu_header
			this field will be set to 0



			See definition in RX attention descriptor

			<legal all>
*/
#define RX_MPDU_INFO_13_NULL_DATA_OFFSET                             0x00000034
#define RX_MPDU_INFO_13_NULL_DATA_LSB                                20
#define RX_MPDU_INFO_13_NULL_DATA_MASK                               0x00100000

/* Description		RX_MPDU_INFO_13_MGMT_TYPE

			In case of ndp or phy_err or Phy_err_during_mpdu_header
			this field will be set to 0



			See definition in RX attention descriptor

			<legal all>
*/
#define RX_MPDU_INFO_13_MGMT_TYPE_OFFSET                             0x00000034
#define RX_MPDU_INFO_13_MGMT_TYPE_LSB                                21
#define RX_MPDU_INFO_13_MGMT_TYPE_MASK                               0x00200000

/* Description		RX_MPDU_INFO_13_CTRL_TYPE

			In case of ndp or phy_err or Phy_err_during_mpdu_header
			this field will be set to 0



			See definition in RX attention descriptor

			<legal all>
*/
#define RX_MPDU_INFO_13_CTRL_TYPE_OFFSET                             0x00000034
#define RX_MPDU_INFO_13_CTRL_TYPE_LSB                                22
#define RX_MPDU_INFO_13_CTRL_TYPE_MASK                               0x00400000

/* Description		RX_MPDU_INFO_13_MORE_DATA

			In case of ndp or phy_err or Phy_err_during_mpdu_header
			this field will be set to 0



			See definition in RX attention descriptor

			<legal all>
*/
#define RX_MPDU_INFO_13_MORE_DATA_OFFSET                             0x00000034
#define RX_MPDU_INFO_13_MORE_DATA_LSB                                23
#define RX_MPDU_INFO_13_MORE_DATA_MASK                               0x00800000

/* Description		RX_MPDU_INFO_13_EOSP

			In case of ndp or phy_err or Phy_err_during_mpdu_header
			this field will be set to 0



			See definition in RX attention descriptor

			<legal all>
*/
#define RX_MPDU_INFO_13_EOSP_OFFSET                                  0x00000034
#define RX_MPDU_INFO_13_EOSP_LSB                                     24
#define RX_MPDU_INFO_13_EOSP_MASK                                    0x01000000

/* Description		RX_MPDU_INFO_13_FRAGMENT_FLAG

			In case of ndp or phy_err or Phy_err_during_mpdu_header
			this field will be set to 0



			See definition in RX attention descriptor

			<legal all>
*/
#define RX_MPDU_INFO_13_FRAGMENT_FLAG_OFFSET                         0x00000034
#define RX_MPDU_INFO_13_FRAGMENT_FLAG_LSB                            25
#define RX_MPDU_INFO_13_FRAGMENT_FLAG_MASK                           0x02000000

/* Description		RX_MPDU_INFO_13_ORDER

			In case of ndp or phy_err or Phy_err_during_mpdu_header
			this field will be set to 0



			See definition in RX attention descriptor



			<legal all>
*/
#define RX_MPDU_INFO_13_ORDER_OFFSET                                 0x00000034
#define RX_MPDU_INFO_13_ORDER_LSB                                    26
#define RX_MPDU_INFO_13_ORDER_MASK                                   0x04000000

/* Description		RX_MPDU_INFO_13_U_APSD_TRIGGER

			In case of ndp or phy_err or Phy_err_during_mpdu_header
			this field will be set to 0



			See definition in RX attention descriptor

			<legal all>
*/
#define RX_MPDU_INFO_13_U_APSD_TRIGGER_OFFSET                        0x00000034
#define RX_MPDU_INFO_13_U_APSD_TRIGGER_LSB                           27
#define RX_MPDU_INFO_13_U_APSD_TRIGGER_MASK                          0x08000000

/* Description		RX_MPDU_INFO_13_ENCRYPT_REQUIRED

			In case of ndp or phy_err or Phy_err_during_mpdu_header
			this field will be set to 0



			See definition in RX attention descriptor

			<legal all>
*/
#define RX_MPDU_INFO_13_ENCRYPT_REQUIRED_OFFSET                      0x00000034
#define RX_MPDU_INFO_13_ENCRYPT_REQUIRED_LSB                         28
#define RX_MPDU_INFO_13_ENCRYPT_REQUIRED_MASK                        0x10000000

/* Description		RX_MPDU_INFO_13_DIRECTED

			In case of ndp or phy_err or Phy_err_during_mpdu_header
			this field will be set to 0



			See definition in RX attention descriptor

			<legal all>
*/
#define RX_MPDU_INFO_13_DIRECTED_OFFSET                              0x00000034
#define RX_MPDU_INFO_13_DIRECTED_LSB                                 29
#define RX_MPDU_INFO_13_DIRECTED_MASK                                0x20000000

/* Description		RX_MPDU_INFO_13_AMSDU_PRESENT

			Field only valid when Mpdu_qos_control_valid is set



			The 'amsdu_present' bit within the QoS control field of
			the MPDU

			<legal all>
*/
#define RX_MPDU_INFO_13_AMSDU_PRESENT_OFFSET                         0x00000034
#define RX_MPDU_INFO_13_AMSDU_PRESENT_LSB                            30
#define RX_MPDU_INFO_13_AMSDU_PRESENT_MASK                           0x40000000

/* Description		RX_MPDU_INFO_13_RESERVED_13

			<legal 0>
*/
#define RX_MPDU_INFO_13_RESERVED_13_OFFSET                           0x00000034
#define RX_MPDU_INFO_13_RESERVED_13_LSB                              31
#define RX_MPDU_INFO_13_RESERVED_13_MASK                             0x80000000

/* Description		RX_MPDU_INFO_14_MPDU_FRAME_CONTROL_FIELD

			Field only valid when Mpdu_frame_control_valid is set



			The frame control field of this received MPDU.



			Field only valid when Ndp_frame and phy_err are NOT set



			Bytes 0 + 1 of the received MPDU

			<legal all>
*/
#define RX_MPDU_INFO_14_MPDU_FRAME_CONTROL_FIELD_OFFSET              0x00000038
#define RX_MPDU_INFO_14_MPDU_FRAME_CONTROL_FIELD_LSB                 0
#define RX_MPDU_INFO_14_MPDU_FRAME_CONTROL_FIELD_MASK                0x0000ffff

/* Description		RX_MPDU_INFO_14_MPDU_DURATION_FIELD

			Field only valid when Mpdu_duration_valid is set



			The duration field of this received MPDU.

			<legal all>
*/
#define RX_MPDU_INFO_14_MPDU_DURATION_FIELD_OFFSET                   0x00000038
#define RX_MPDU_INFO_14_MPDU_DURATION_FIELD_LSB                      16
#define RX_MPDU_INFO_14_MPDU_DURATION_FIELD_MASK                     0xffff0000

/* Description		RX_MPDU_INFO_15_MAC_ADDR_AD1_31_0

			Field only valid when mac_addr_ad1_valid is set



			The Least Significant 4 bytes of the Received Frames MAC
			Address AD1

			<legal all>
*/
#define RX_MPDU_INFO_15_MAC_ADDR_AD1_31_0_OFFSET                     0x0000003c
#define RX_MPDU_INFO_15_MAC_ADDR_AD1_31_0_LSB                        0
#define RX_MPDU_INFO_15_MAC_ADDR_AD1_31_0_MASK                       0xffffffff

/* Description		RX_MPDU_INFO_16_MAC_ADDR_AD1_47_32

			Field only valid when mac_addr_ad1_valid is set



			The 2 most significant bytes of the Received Frames MAC
			Address AD1

			<legal all>
*/
#define RX_MPDU_INFO_16_MAC_ADDR_AD1_47_32_OFFSET                    0x00000040
#define RX_MPDU_INFO_16_MAC_ADDR_AD1_47_32_LSB                       0
#define RX_MPDU_INFO_16_MAC_ADDR_AD1_47_32_MASK                      0x0000ffff

/* Description		RX_MPDU_INFO_16_MAC_ADDR_AD2_15_0

			Field only valid when mac_addr_ad2_valid is set



			The Least Significant 2 bytes of the Received Frames MAC
			Address AD2

			<legal all>
*/
#define RX_MPDU_INFO_16_MAC_ADDR_AD2_15_0_OFFSET                     0x00000040
#define RX_MPDU_INFO_16_MAC_ADDR_AD2_15_0_LSB                        16
#define RX_MPDU_INFO_16_MAC_ADDR_AD2_15_0_MASK                       0xffff0000

/* Description		RX_MPDU_INFO_17_MAC_ADDR_AD2_47_16

			Field only valid when mac_addr_ad2_valid is set



			The 4 most significant bytes of the Received Frames MAC
			Address AD2

			<legal all>
*/
#define RX_MPDU_INFO_17_MAC_ADDR_AD2_47_16_OFFSET                    0x00000044
#define RX_MPDU_INFO_17_MAC_ADDR_AD2_47_16_LSB                       0
#define RX_MPDU_INFO_17_MAC_ADDR_AD2_47_16_MASK                      0xffffffff

/* Description		RX_MPDU_INFO_18_MAC_ADDR_AD3_31_0

			Field only valid when mac_addr_ad3_valid is set



			The Least Significant 4 bytes of the Received Frames MAC
			Address AD3

			<legal all>
*/
#define RX_MPDU_INFO_18_MAC_ADDR_AD3_31_0_OFFSET                     0x00000048
#define RX_MPDU_INFO_18_MAC_ADDR_AD3_31_0_LSB                        0
#define RX_MPDU_INFO_18_MAC_ADDR_AD3_31_0_MASK                       0xffffffff

/* Description		RX_MPDU_INFO_19_MAC_ADDR_AD3_47_32

			Field only valid when mac_addr_ad3_valid is set



			The 2 most significant bytes of the Received Frames MAC
			Address AD3

			<legal all>
*/
#define RX_MPDU_INFO_19_MAC_ADDR_AD3_47_32_OFFSET                    0x0000004c
#define RX_MPDU_INFO_19_MAC_ADDR_AD3_47_32_LSB                       0
#define RX_MPDU_INFO_19_MAC_ADDR_AD3_47_32_MASK                      0x0000ffff

/* Description		RX_MPDU_INFO_19_MPDU_SEQUENCE_CONTROL_FIELD




			The sequence control field of the MPDU

			<legal all>
*/
#define RX_MPDU_INFO_19_MPDU_SEQUENCE_CONTROL_FIELD_OFFSET           0x0000004c
#define RX_MPDU_INFO_19_MPDU_SEQUENCE_CONTROL_FIELD_LSB              16
#define RX_MPDU_INFO_19_MPDU_SEQUENCE_CONTROL_FIELD_MASK             0xffff0000

/* Description		RX_MPDU_INFO_20_MAC_ADDR_AD4_31_0

			Field only valid when mac_addr_ad4_valid is set



			The Least Significant 4 bytes of the Received Frames MAC
			Address AD4

			<legal all>
*/
#define RX_MPDU_INFO_20_MAC_ADDR_AD4_31_0_OFFSET                     0x00000050
#define RX_MPDU_INFO_20_MAC_ADDR_AD4_31_0_LSB                        0
#define RX_MPDU_INFO_20_MAC_ADDR_AD4_31_0_MASK                       0xffffffff

/* Description		RX_MPDU_INFO_21_MAC_ADDR_AD4_47_32

			Field only valid when mac_addr_ad4_valid is set



			The 2 most significant bytes of the Received Frames MAC
			Address AD4

			<legal all>
*/
#define RX_MPDU_INFO_21_MAC_ADDR_AD4_47_32_OFFSET                    0x00000054
#define RX_MPDU_INFO_21_MAC_ADDR_AD4_47_32_LSB                       0
#define RX_MPDU_INFO_21_MAC_ADDR_AD4_47_32_MASK                      0x0000ffff

/* Description		RX_MPDU_INFO_21_MPDU_QOS_CONTROL_FIELD

			Field only valid when mpdu_qos_control_valid is set



			The sequence control field of the MPDU

			<legal all>
*/
#define RX_MPDU_INFO_21_MPDU_QOS_CONTROL_FIELD_OFFSET                0x00000054
#define RX_MPDU_INFO_21_MPDU_QOS_CONTROL_FIELD_LSB                   16
#define RX_MPDU_INFO_21_MPDU_QOS_CONTROL_FIELD_MASK                  0xffff0000

/* Description		RX_MPDU_INFO_22_MPDU_HT_CONTROL_FIELD

			Field only valid when mpdu_qos_control_valid is set



			The HT control field of the MPDU

			<legal all>
*/
#define RX_MPDU_INFO_22_MPDU_HT_CONTROL_FIELD_OFFSET                 0x00000058
#define RX_MPDU_INFO_22_MPDU_HT_CONTROL_FIELD_LSB                    0
#define RX_MPDU_INFO_22_MPDU_HT_CONTROL_FIELD_MASK                   0xffffffff


#endif // _RX_MPDU_INFO_H_
