/*
 * 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_DESC_INFO_H_
#define _RX_MPDU_DESC_INFO_H_
#if !defined(__ASSEMBLER__)
#endif


// ################ START SUMMARY #################
//
//	Dword	Fields
//	0	msdu_count[7:0], mpdu_sequence_number[19:8], fragment_flag[20], mpdu_retry_bit[21], ampdu_flag[22], bar_frame[23], pn_fields_contain_valid_info[24], sa_is_valid[25], sa_idx_timeout[26], da_is_valid[27], da_is_mcbc[28], da_idx_timeout[29], raw_mpdu[30], more_fragment_flag[31]
//	1	peer_meta_data[31:0]
//
// ################ END SUMMARY #################

#define NUM_OF_DWORDS_RX_MPDU_DESC_INFO 2

struct rx_mpdu_desc_info {
             uint32_t msdu_count                      :  8, //[7:0]
                      mpdu_sequence_number            : 12, //[19:8]
                      fragment_flag                   :  1, //[20]
                      mpdu_retry_bit                  :  1, //[21]
                      ampdu_flag                      :  1, //[22]
                      bar_frame                       :  1, //[23]
                      pn_fields_contain_valid_info    :  1, //[24]
                      sa_is_valid                     :  1, //[25]
                      sa_idx_timeout                  :  1, //[26]
                      da_is_valid                     :  1, //[27]
                      da_is_mcbc                      :  1, //[28]
                      da_idx_timeout                  :  1, //[29]
                      raw_mpdu                        :  1, //[30]
                      more_fragment_flag              :  1; //[31]
             uint32_t peer_meta_data                  : 32; //[31:0]
};

/*

msdu_count

			Consumer: REO/SW/FW

			Producer: RXDMA



			The number of MSDUs within the MPDU

			<legal all>

mpdu_sequence_number

			Consumer: REO/SW/FW

			Producer: RXDMA



			The field can have two different meanings based on the
			setting of field 'BAR_frame':



			'BAR_frame' is NOT set:

			The MPDU sequence number of the received frame.



			'BAR_frame' is set.

			The MPDU Start sequence number from the BAR frame

			<legal all>

fragment_flag

			Consumer: REO/SW/FW

			Producer: RXDMA



			When set, this MPDU is a fragment and REO should forward
			this fragment MPDU to the REO destination ring without any
			reorder checks, pn checks or bitmap update. This implies
			that REO is forwarding the pointer to the MSDU link
			descriptor. The destination ring is coming from a
			programmable register setting in REO



			<legal all>

mpdu_retry_bit

			Consumer: REO/SW/FW

			Producer: RXDMA



			The retry bit setting from the MPDU header of the
			received frame

			<legal all>

ampdu_flag

			Consumer: REO/SW/FW

			Producer: RXDMA



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

			<legal all>

bar_frame

			Consumer: REO/SW/FW

			Producer: RXDMA



			When set, the received frame is a BAR frame. After
			processing, this frame shall be pushed to SW or deleted.

			<legal all>

pn_fields_contain_valid_info

			Consumer: REO/SW/FW

			Producer: RXDMA



			Copied here by RXDMA from RX_MPDU_END

			When not set, REO will Not perform a PN sequence number
			check

sa_is_valid

			When set, OLE found a valid SA entry for all MSDUs in
			this MPDU

			<legal all>

sa_idx_timeout

			When set, at least 1 MSDU within the MPDU has an
			unsuccessful MAC source address search due to the expiration
			of the search timer.

			<legal all>

da_is_valid

			When set, OLE found a valid DA entry for all MSDUs in
			this MPDU

			<legal all>

da_is_mcbc

			Field Only valid if da_is_valid is set



			When set, at least one of the DA addresses is a
			Multicast or Broadcast address.

			<legal all>

da_idx_timeout

			When set, at least 1 MSDU within the MPDU has an
			unsuccessful MAC destination address search due to the
			expiration of the search timer.

			<legal all>

raw_mpdu

			Field only valid when first_msdu_in_mpdu_flag is set.



			When set, the contents in the MSDU buffer contains a
			'RAW' MPDU. This 'RAW' MPDU might be spread out over
			multiple MSDU buffers.

			<legal all>

more_fragment_flag

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



			<legal all>

peer_meta_data

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

			<legal all>
*/


/* Description		RX_MPDU_DESC_INFO_0_MSDU_COUNT

			Consumer: REO/SW/FW

			Producer: RXDMA



			The number of MSDUs within the MPDU

			<legal all>
*/
#define RX_MPDU_DESC_INFO_0_MSDU_COUNT_OFFSET                        0x00000000
#define RX_MPDU_DESC_INFO_0_MSDU_COUNT_LSB                           0
#define RX_MPDU_DESC_INFO_0_MSDU_COUNT_MASK                          0x000000ff

/* Description		RX_MPDU_DESC_INFO_0_MPDU_SEQUENCE_NUMBER

			Consumer: REO/SW/FW

			Producer: RXDMA



			The field can have two different meanings based on the
			setting of field 'BAR_frame':



			'BAR_frame' is NOT set:

			The MPDU sequence number of the received frame.



			'BAR_frame' is set.

			The MPDU Start sequence number from the BAR frame

			<legal all>
*/
#define RX_MPDU_DESC_INFO_0_MPDU_SEQUENCE_NUMBER_OFFSET              0x00000000
#define RX_MPDU_DESC_INFO_0_MPDU_SEQUENCE_NUMBER_LSB                 8
#define RX_MPDU_DESC_INFO_0_MPDU_SEQUENCE_NUMBER_MASK                0x000fff00

/* Description		RX_MPDU_DESC_INFO_0_FRAGMENT_FLAG

			Consumer: REO/SW/FW

			Producer: RXDMA



			When set, this MPDU is a fragment and REO should forward
			this fragment MPDU to the REO destination ring without any
			reorder checks, pn checks or bitmap update. This implies
			that REO is forwarding the pointer to the MSDU link
			descriptor. The destination ring is coming from a
			programmable register setting in REO



			<legal all>
*/
#define RX_MPDU_DESC_INFO_0_FRAGMENT_FLAG_OFFSET                     0x00000000
#define RX_MPDU_DESC_INFO_0_FRAGMENT_FLAG_LSB                        20
#define RX_MPDU_DESC_INFO_0_FRAGMENT_FLAG_MASK                       0x00100000

/* Description		RX_MPDU_DESC_INFO_0_MPDU_RETRY_BIT

			Consumer: REO/SW/FW

			Producer: RXDMA



			The retry bit setting from the MPDU header of the
			received frame

			<legal all>
*/
#define RX_MPDU_DESC_INFO_0_MPDU_RETRY_BIT_OFFSET                    0x00000000
#define RX_MPDU_DESC_INFO_0_MPDU_RETRY_BIT_LSB                       21
#define RX_MPDU_DESC_INFO_0_MPDU_RETRY_BIT_MASK                      0x00200000

/* Description		RX_MPDU_DESC_INFO_0_AMPDU_FLAG

			Consumer: REO/SW/FW

			Producer: RXDMA



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

			<legal all>
*/
#define RX_MPDU_DESC_INFO_0_AMPDU_FLAG_OFFSET                        0x00000000
#define RX_MPDU_DESC_INFO_0_AMPDU_FLAG_LSB                           22
#define RX_MPDU_DESC_INFO_0_AMPDU_FLAG_MASK                          0x00400000

/* Description		RX_MPDU_DESC_INFO_0_BAR_FRAME

			Consumer: REO/SW/FW

			Producer: RXDMA



			When set, the received frame is a BAR frame. After
			processing, this frame shall be pushed to SW or deleted.

			<legal all>
*/
#define RX_MPDU_DESC_INFO_0_BAR_FRAME_OFFSET                         0x00000000
#define RX_MPDU_DESC_INFO_0_BAR_FRAME_LSB                            23
#define RX_MPDU_DESC_INFO_0_BAR_FRAME_MASK                           0x00800000

/* Description		RX_MPDU_DESC_INFO_0_PN_FIELDS_CONTAIN_VALID_INFO

			Consumer: REO/SW/FW

			Producer: RXDMA



			Copied here by RXDMA from RX_MPDU_END

			When not set, REO will Not perform a PN sequence number
			check
*/
#define RX_MPDU_DESC_INFO_0_PN_FIELDS_CONTAIN_VALID_INFO_OFFSET      0x00000000
#define RX_MPDU_DESC_INFO_0_PN_FIELDS_CONTAIN_VALID_INFO_LSB         24
#define RX_MPDU_DESC_INFO_0_PN_FIELDS_CONTAIN_VALID_INFO_MASK        0x01000000

/* Description		RX_MPDU_DESC_INFO_0_SA_IS_VALID

			When set, OLE found a valid SA entry for all MSDUs in
			this MPDU

			<legal all>
*/
#define RX_MPDU_DESC_INFO_0_SA_IS_VALID_OFFSET                       0x00000000
#define RX_MPDU_DESC_INFO_0_SA_IS_VALID_LSB                          25
#define RX_MPDU_DESC_INFO_0_SA_IS_VALID_MASK                         0x02000000

/* Description		RX_MPDU_DESC_INFO_0_SA_IDX_TIMEOUT

			When set, at least 1 MSDU within the MPDU has an
			unsuccessful MAC source address search due to the expiration
			of the search timer.

			<legal all>
*/
#define RX_MPDU_DESC_INFO_0_SA_IDX_TIMEOUT_OFFSET                    0x00000000
#define RX_MPDU_DESC_INFO_0_SA_IDX_TIMEOUT_LSB                       26
#define RX_MPDU_DESC_INFO_0_SA_IDX_TIMEOUT_MASK                      0x04000000

/* Description		RX_MPDU_DESC_INFO_0_DA_IS_VALID

			When set, OLE found a valid DA entry for all MSDUs in
			this MPDU

			<legal all>
*/
#define RX_MPDU_DESC_INFO_0_DA_IS_VALID_OFFSET                       0x00000000
#define RX_MPDU_DESC_INFO_0_DA_IS_VALID_LSB                          27
#define RX_MPDU_DESC_INFO_0_DA_IS_VALID_MASK                         0x08000000

/* Description		RX_MPDU_DESC_INFO_0_DA_IS_MCBC

			Field Only valid if da_is_valid is set



			When set, at least one of the DA addresses is a
			Multicast or Broadcast address.

			<legal all>
*/
#define RX_MPDU_DESC_INFO_0_DA_IS_MCBC_OFFSET                        0x00000000
#define RX_MPDU_DESC_INFO_0_DA_IS_MCBC_LSB                           28
#define RX_MPDU_DESC_INFO_0_DA_IS_MCBC_MASK                          0x10000000

/* Description		RX_MPDU_DESC_INFO_0_DA_IDX_TIMEOUT

			When set, at least 1 MSDU within the MPDU has an
			unsuccessful MAC destination address search due to the
			expiration of the search timer.

			<legal all>
*/
#define RX_MPDU_DESC_INFO_0_DA_IDX_TIMEOUT_OFFSET                    0x00000000
#define RX_MPDU_DESC_INFO_0_DA_IDX_TIMEOUT_LSB                       29
#define RX_MPDU_DESC_INFO_0_DA_IDX_TIMEOUT_MASK                      0x20000000

/* Description		RX_MPDU_DESC_INFO_0_RAW_MPDU

			Field only valid when first_msdu_in_mpdu_flag is set.



			When set, the contents in the MSDU buffer contains a
			'RAW' MPDU. This 'RAW' MPDU might be spread out over
			multiple MSDU buffers.

			<legal all>
*/
#define RX_MPDU_DESC_INFO_0_RAW_MPDU_OFFSET                          0x00000000
#define RX_MPDU_DESC_INFO_0_RAW_MPDU_LSB                             30
#define RX_MPDU_DESC_INFO_0_RAW_MPDU_MASK                            0x40000000

/* Description		RX_MPDU_DESC_INFO_0_MORE_FRAGMENT_FLAG

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



			<legal all>
*/
#define RX_MPDU_DESC_INFO_0_MORE_FRAGMENT_FLAG_OFFSET                0x00000000
#define RX_MPDU_DESC_INFO_0_MORE_FRAGMENT_FLAG_LSB                   31
#define RX_MPDU_DESC_INFO_0_MORE_FRAGMENT_FLAG_MASK                  0x80000000

/* Description		RX_MPDU_DESC_INFO_1_PEER_META_DATA

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

			<legal all>
*/
#define RX_MPDU_DESC_INFO_1_PEER_META_DATA_OFFSET                    0x00000004
#define RX_MPDU_DESC_INFO_1_PEER_META_DATA_LSB                       0
#define RX_MPDU_DESC_INFO_1_PEER_META_DATA_MASK                      0xffffffff


#endif // _RX_MPDU_DESC_INFO_H_
