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

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


// ################ START SUMMARY #################
//
//	Dword	Fields
//	0	rxpcu_mpdu_filter_in_category[1:0], sw_frame_group_id[8:2], reserved_0[15:9], phy_ppdu_id[31:16]
//	1	reserved_1a[10:0], unsup_ktype_short_frame[11], rx_in_tx_decrypt_byp[12], overflow_err[13], mpdu_length_err[14], tkip_mic_err[15], decrypt_err[16], unencrypted_frame_err[17], pn_fields_contain_valid_info[18], fcs_err[19], msdu_length_err[20], rxdma0_destination_ring[22:21], rxdma1_destination_ring[24:23], decrypt_status_code[27:25], rx_bitmap_not_updated[28], reserved_1b[31:29]
//
// ################ END SUMMARY #################

#define NUM_OF_DWORDS_RX_MPDU_END 2

struct rx_mpdu_end {
             uint32_t rxpcu_mpdu_filter_in_category   :  2, //[1:0]
                      sw_frame_group_id               :  7, //[8:2]
                      reserved_0                      :  7, //[15:9]
                      phy_ppdu_id                     : 16; //[31:16]
             uint32_t reserved_1a                     : 11, //[10:0]
                      unsup_ktype_short_frame         :  1, //[11]
                      rx_in_tx_decrypt_byp            :  1, //[12]
                      overflow_err                    :  1, //[13]
                      mpdu_length_err                 :  1, //[14]
                      tkip_mic_err                    :  1, //[15]
                      decrypt_err                     :  1, //[16]
                      unencrypted_frame_err           :  1, //[17]
                      pn_fields_contain_valid_info    :  1, //[18]
                      fcs_err                         :  1, //[19]
                      msdu_length_err                 :  1, //[20]
                      rxdma0_destination_ring         :  2, //[22:21]
                      rxdma1_destination_ring         :  2, //[24:23]
                      decrypt_status_code             :  3, //[27:25]
                      rx_bitmap_not_updated           :  1, //[28]
                      reserved_1b                     :  3; //[31:29]
};

/*

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.
			
			<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> 
			
			
			
			<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
			
			
			
			
			
			
			<legal 0-37>

reserved_0
			
			<legal 0>

phy_ppdu_id
			
			A ppdu counter value that PHY increments for every PPDU
			received. The counter value wraps around  
			
			<legal all>

reserved_1a
			
			<legal 0>

unsup_ktype_short_frame
			
			This bit will be '1' when WEP or TKIP or WAPI key type
			is received for 11ah short frame.  Crypto will bypass the
			received packet without decryption to RxOLE after setting
			this bit.

rx_in_tx_decrypt_byp
			
			Indicates that RX packet is not decrypted as Crypto is
			busy with TX packet processing.

overflow_err
			
			RXPCU Receive FIFO ran out of space to receive the full
			MPDU. Therefor this MPDU is terminated early and is thus
			corrupted.  
			
			
			
			This MPDU will not be ACKed.
			
			RXPCU might still be able to correctly receive the
			following MPDUs in the PPDU if enough fifo space became
			available in time

mpdu_length_err
			
			Set by RXPCU if the expected MPDU length does not
			correspond with the actually received number of bytes in the
			MPDU.

tkip_mic_err
			
			Set by RX CRYPTO when CRYPTO detected a TKIP MIC error
			for this MPDU

decrypt_err
			
			Set by RX CRYPTO when CRYPTO detected a decrypt error
			for this MPDU or CRYPTO received an encrypted frame, but did
			not get a valid corresponding key id in the peer entry.

unencrypted_frame_err
			
			Set by RX CRYPTO when CRYPTO detected an unencrypted
			frame while in the peer entry field
			'All_frames_shall_be_encrypted' is set.

pn_fields_contain_valid_info
			
			Set by RX CRYPTO to indicate that there is a valid PN
			field present in this MPDU

fcs_err
			
			Set by RXPCU when there is an FCS error detected for
			this MPDU
			
			NOTE that when this field is set, all other (error)
			field settings should be ignored as modules could have made
			wrong decisions based on the corrupted data.

msdu_length_err
			
			Set by RXOLE when there is an msdu length error detected
			in at least 1 of the MSDUs embedded within the MPDU

rxdma0_destination_ring
			
			The ring to which RXDMA0 shall push the frame, assuming
			no MPDU level errors are detected. In case of MPDU level
			errors, RXDMA0 might change the RXDMA0 destination
			
			
			
			<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>

rxdma1_destination_ring
			
			The ring to which RXDMA1 shall push the frame, assuming
			no MPDU level errors are detected. In case of MPDU level
			errors, RXDMA1 might change the RXDMA destination
			
			
			
			<enum 0  rxdma_release_ring >  RXDMA1 shall push the
			frame to the Release ring. Effectively this means the frame
			needs to be dropped.
			
			
			
			<enum 1  rxdma2fw_ring >  RXDMA1 shall push the frame to
			the FW ring 
			
			
			
			<enum 2  rxdma2sw_ring >  RXDMA1 shall push the frame to
			the SW ring 
			
			
			
			<enum 3  rxdma2reo_ring >  RXDMA1 shall push the frame
			to the REO entrance ring 
			
			
			
			<legal all>

decrypt_status_code
			
			Field provides insight into the decryption performed
			
			
			
			<enum 0 decrypt_ok> Frame had protection enabled and
			decrypted properly 
			
			<enum 1 decrypt_unprotected_frame > Frame is unprotected
			and hence bypassed 
			
			<enum 2 decrypt_data_err > Frame has protection enabled
			and could not be properly decrypted due to MIC/ICV mismatch
			etc. 
			
			<enum 3 decrypt_key_invalid > Frame has protection
			enabled but the key that was required to decrypt this frame
			was not valid 
			
			<enum 4 decrypt_peer_entry_invalid > Frame has
			protection enabled but the key that was required to decrypt
			this frame was not valid
			
			<enum 5 decrypt_other > Reserved for other indications
			
			
			
			<legal 0 - 5>

rx_bitmap_not_updated
			
			Frame is received, but RXPCU could not update the
			receive bitmap due to (temporary) fifo contraints.
			
			<legal all>

reserved_1b
			
			<legal 0>
*/


/* Description		RX_MPDU_END_0_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.
			
			<legal 0-2>
*/
#define RX_MPDU_END_0_RXPCU_MPDU_FILTER_IN_CATEGORY_OFFSET           0x00000000
#define RX_MPDU_END_0_RXPCU_MPDU_FILTER_IN_CATEGORY_LSB              0
#define RX_MPDU_END_0_RXPCU_MPDU_FILTER_IN_CATEGORY_MASK             0x00000003

/* Description		RX_MPDU_END_0_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> 
			
			
			
			<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
			
			
			
			
			
			
			<legal 0-37>
*/
#define RX_MPDU_END_0_SW_FRAME_GROUP_ID_OFFSET                       0x00000000
#define RX_MPDU_END_0_SW_FRAME_GROUP_ID_LSB                          2
#define RX_MPDU_END_0_SW_FRAME_GROUP_ID_MASK                         0x000001fc

/* Description		RX_MPDU_END_0_RESERVED_0
			
			<legal 0>
*/
#define RX_MPDU_END_0_RESERVED_0_OFFSET                              0x00000000
#define RX_MPDU_END_0_RESERVED_0_LSB                                 9
#define RX_MPDU_END_0_RESERVED_0_MASK                                0x0000fe00

/* Description		RX_MPDU_END_0_PHY_PPDU_ID
			
			A ppdu counter value that PHY increments for every PPDU
			received. The counter value wraps around  
			
			<legal all>
*/
#define RX_MPDU_END_0_PHY_PPDU_ID_OFFSET                             0x00000000
#define RX_MPDU_END_0_PHY_PPDU_ID_LSB                                16
#define RX_MPDU_END_0_PHY_PPDU_ID_MASK                               0xffff0000

/* Description		RX_MPDU_END_1_RESERVED_1A
			
			<legal 0>
*/
#define RX_MPDU_END_1_RESERVED_1A_OFFSET                             0x00000004
#define RX_MPDU_END_1_RESERVED_1A_LSB                                0
#define RX_MPDU_END_1_RESERVED_1A_MASK                               0x000007ff

/* Description		RX_MPDU_END_1_UNSUP_KTYPE_SHORT_FRAME
			
			This bit will be '1' when WEP or TKIP or WAPI key type
			is received for 11ah short frame.  Crypto will bypass the
			received packet without decryption to RxOLE after setting
			this bit.
*/
#define RX_MPDU_END_1_UNSUP_KTYPE_SHORT_FRAME_OFFSET                 0x00000004
#define RX_MPDU_END_1_UNSUP_KTYPE_SHORT_FRAME_LSB                    11
#define RX_MPDU_END_1_UNSUP_KTYPE_SHORT_FRAME_MASK                   0x00000800

/* Description		RX_MPDU_END_1_RX_IN_TX_DECRYPT_BYP
			
			Indicates that RX packet is not decrypted as Crypto is
			busy with TX packet processing.
*/
#define RX_MPDU_END_1_RX_IN_TX_DECRYPT_BYP_OFFSET                    0x00000004
#define RX_MPDU_END_1_RX_IN_TX_DECRYPT_BYP_LSB                       12
#define RX_MPDU_END_1_RX_IN_TX_DECRYPT_BYP_MASK                      0x00001000

/* Description		RX_MPDU_END_1_OVERFLOW_ERR
			
			RXPCU Receive FIFO ran out of space to receive the full
			MPDU. Therefor this MPDU is terminated early and is thus
			corrupted.  
			
			
			
			This MPDU will not be ACKed.
			
			RXPCU might still be able to correctly receive the
			following MPDUs in the PPDU if enough fifo space became
			available in time
*/
#define RX_MPDU_END_1_OVERFLOW_ERR_OFFSET                            0x00000004
#define RX_MPDU_END_1_OVERFLOW_ERR_LSB                               13
#define RX_MPDU_END_1_OVERFLOW_ERR_MASK                              0x00002000

/* Description		RX_MPDU_END_1_MPDU_LENGTH_ERR
			
			Set by RXPCU if the expected MPDU length does not
			correspond with the actually received number of bytes in the
			MPDU.
*/
#define RX_MPDU_END_1_MPDU_LENGTH_ERR_OFFSET                         0x00000004
#define RX_MPDU_END_1_MPDU_LENGTH_ERR_LSB                            14
#define RX_MPDU_END_1_MPDU_LENGTH_ERR_MASK                           0x00004000

/* Description		RX_MPDU_END_1_TKIP_MIC_ERR
			
			Set by RX CRYPTO when CRYPTO detected a TKIP MIC error
			for this MPDU
*/
#define RX_MPDU_END_1_TKIP_MIC_ERR_OFFSET                            0x00000004
#define RX_MPDU_END_1_TKIP_MIC_ERR_LSB                               15
#define RX_MPDU_END_1_TKIP_MIC_ERR_MASK                              0x00008000

/* Description		RX_MPDU_END_1_DECRYPT_ERR
			
			Set by RX CRYPTO when CRYPTO detected a decrypt error
			for this MPDU or CRYPTO received an encrypted frame, but did
			not get a valid corresponding key id in the peer entry.
*/
#define RX_MPDU_END_1_DECRYPT_ERR_OFFSET                             0x00000004
#define RX_MPDU_END_1_DECRYPT_ERR_LSB                                16
#define RX_MPDU_END_1_DECRYPT_ERR_MASK                               0x00010000

/* Description		RX_MPDU_END_1_UNENCRYPTED_FRAME_ERR
			
			Set by RX CRYPTO when CRYPTO detected an unencrypted
			frame while in the peer entry field
			'All_frames_shall_be_encrypted' is set.
*/
#define RX_MPDU_END_1_UNENCRYPTED_FRAME_ERR_OFFSET                   0x00000004
#define RX_MPDU_END_1_UNENCRYPTED_FRAME_ERR_LSB                      17
#define RX_MPDU_END_1_UNENCRYPTED_FRAME_ERR_MASK                     0x00020000

/* Description		RX_MPDU_END_1_PN_FIELDS_CONTAIN_VALID_INFO
			
			Set by RX CRYPTO to indicate that there is a valid PN
			field present in this MPDU
*/
#define RX_MPDU_END_1_PN_FIELDS_CONTAIN_VALID_INFO_OFFSET            0x00000004
#define RX_MPDU_END_1_PN_FIELDS_CONTAIN_VALID_INFO_LSB               18
#define RX_MPDU_END_1_PN_FIELDS_CONTAIN_VALID_INFO_MASK              0x00040000

/* Description		RX_MPDU_END_1_FCS_ERR
			
			Set by RXPCU when there is an FCS error detected for
			this MPDU
			
			NOTE that when this field is set, all other (error)
			field settings should be ignored as modules could have made
			wrong decisions based on the corrupted data.
*/
#define RX_MPDU_END_1_FCS_ERR_OFFSET                                 0x00000004
#define RX_MPDU_END_1_FCS_ERR_LSB                                    19
#define RX_MPDU_END_1_FCS_ERR_MASK                                   0x00080000

/* Description		RX_MPDU_END_1_MSDU_LENGTH_ERR
			
			Set by RXOLE when there is an msdu length error detected
			in at least 1 of the MSDUs embedded within the MPDU
*/
#define RX_MPDU_END_1_MSDU_LENGTH_ERR_OFFSET                         0x00000004
#define RX_MPDU_END_1_MSDU_LENGTH_ERR_LSB                            20
#define RX_MPDU_END_1_MSDU_LENGTH_ERR_MASK                           0x00100000

/* Description		RX_MPDU_END_1_RXDMA0_DESTINATION_RING
			
			The ring to which RXDMA0 shall push the frame, assuming
			no MPDU level errors are detected. In case of MPDU level
			errors, RXDMA0 might change the RXDMA0 destination
			
			
			
			<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_END_1_RXDMA0_DESTINATION_RING_OFFSET                 0x00000004
#define RX_MPDU_END_1_RXDMA0_DESTINATION_RING_LSB                    21
#define RX_MPDU_END_1_RXDMA0_DESTINATION_RING_MASK                   0x00600000

/* Description		RX_MPDU_END_1_RXDMA1_DESTINATION_RING
			
			The ring to which RXDMA1 shall push the frame, assuming
			no MPDU level errors are detected. In case of MPDU level
			errors, RXDMA1 might change the RXDMA destination
			
			
			
			<enum 0  rxdma_release_ring >  RXDMA1 shall push the
			frame to the Release ring. Effectively this means the frame
			needs to be dropped.
			
			
			
			<enum 1  rxdma2fw_ring >  RXDMA1 shall push the frame to
			the FW ring 
			
			
			
			<enum 2  rxdma2sw_ring >  RXDMA1 shall push the frame to
			the SW ring 
			
			
			
			<enum 3  rxdma2reo_ring >  RXDMA1 shall push the frame
			to the REO entrance ring 
			
			
			
			<legal all>
*/
#define RX_MPDU_END_1_RXDMA1_DESTINATION_RING_OFFSET                 0x00000004
#define RX_MPDU_END_1_RXDMA1_DESTINATION_RING_LSB                    23
#define RX_MPDU_END_1_RXDMA1_DESTINATION_RING_MASK                   0x01800000

/* Description		RX_MPDU_END_1_DECRYPT_STATUS_CODE
			
			Field provides insight into the decryption performed
			
			
			
			<enum 0 decrypt_ok> Frame had protection enabled and
			decrypted properly 
			
			<enum 1 decrypt_unprotected_frame > Frame is unprotected
			and hence bypassed 
			
			<enum 2 decrypt_data_err > Frame has protection enabled
			and could not be properly decrypted due to MIC/ICV mismatch
			etc. 
			
			<enum 3 decrypt_key_invalid > Frame has protection
			enabled but the key that was required to decrypt this frame
			was not valid 
			
			<enum 4 decrypt_peer_entry_invalid > Frame has
			protection enabled but the key that was required to decrypt
			this frame was not valid
			
			<enum 5 decrypt_other > Reserved for other indications
			
			
			
			<legal 0 - 5>
*/
#define RX_MPDU_END_1_DECRYPT_STATUS_CODE_OFFSET                     0x00000004
#define RX_MPDU_END_1_DECRYPT_STATUS_CODE_LSB                        25
#define RX_MPDU_END_1_DECRYPT_STATUS_CODE_MASK                       0x0e000000

/* Description		RX_MPDU_END_1_RX_BITMAP_NOT_UPDATED
			
			Frame is received, but RXPCU could not update the
			receive bitmap due to (temporary) fifo contraints.
			
			<legal all>
*/
#define RX_MPDU_END_1_RX_BITMAP_NOT_UPDATED_OFFSET                   0x00000004
#define RX_MPDU_END_1_RX_BITMAP_NOT_UPDATED_LSB                      28
#define RX_MPDU_END_1_RX_BITMAP_NOT_UPDATED_MASK                     0x10000000

/* Description		RX_MPDU_END_1_RESERVED_1B
			
			<legal 0>
*/
#define RX_MPDU_END_1_RESERVED_1B_OFFSET                             0x00000004
#define RX_MPDU_END_1_RESERVED_1B_LSB                                29
#define RX_MPDU_END_1_RESERVED_1B_MASK                               0xe0000000


#endif // _RX_MPDU_END_H_