xref: /wlan-driver/fw-api/hw/qcn6432/rx_mpdu_end.h (revision 5113495b16420b49004c444715d2daae2066e7dc)
1*5113495bSYour Name /*
2*5113495bSYour Name  * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
3*5113495bSYour Name  *
4*5113495bSYour Name  * Permission to use, copy, modify, and/or distribute this software for any
5*5113495bSYour Name  * purpose with or without fee is hereby granted, provided that the above
6*5113495bSYour Name  * copyright notice and this permission notice appear in all copies.
7*5113495bSYour Name  *
8*5113495bSYour Name  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9*5113495bSYour Name  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10*5113495bSYour Name  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
11*5113495bSYour Name  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
12*5113495bSYour Name  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
13*5113495bSYour Name  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
14*5113495bSYour Name  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15*5113495bSYour Name  */
16*5113495bSYour Name 
17*5113495bSYour Name #ifndef _RX_MPDU_END_H_
18*5113495bSYour Name #define _RX_MPDU_END_H_
19*5113495bSYour Name #if !defined(__ASSEMBLER__)
20*5113495bSYour Name #endif
21*5113495bSYour Name 
22*5113495bSYour Name #define NUM_OF_DWORDS_RX_MPDU_END 4
23*5113495bSYour Name 
24*5113495bSYour Name #define NUM_OF_QWORDS_RX_MPDU_END 2
25*5113495bSYour Name 
26*5113495bSYour Name 
27*5113495bSYour Name struct rx_mpdu_end {
28*5113495bSYour Name #ifndef WIFI_BIT_ORDER_BIG_ENDIAN
29*5113495bSYour Name              uint32_t rxpcu_mpdu_filter_in_category                           :  2, // [1:0]
30*5113495bSYour Name                       sw_frame_group_id                                       :  7, // [8:2]
31*5113495bSYour Name                       reserved_0                                              :  7, // [15:9]
32*5113495bSYour Name                       phy_ppdu_id                                             : 16; // [31:16]
33*5113495bSYour Name              uint32_t reserved_1a                                             : 11, // [10:0]
34*5113495bSYour Name                       unsup_ktype_short_frame                                 :  1, // [11:11]
35*5113495bSYour Name                       rx_in_tx_decrypt_byp                                    :  1, // [12:12]
36*5113495bSYour Name                       overflow_err                                            :  1, // [13:13]
37*5113495bSYour Name                       mpdu_length_err                                         :  1, // [14:14]
38*5113495bSYour Name                       tkip_mic_err                                            :  1, // [15:15]
39*5113495bSYour Name                       decrypt_err                                             :  1, // [16:16]
40*5113495bSYour Name                       unencrypted_frame_err                                   :  1, // [17:17]
41*5113495bSYour Name                       pn_fields_contain_valid_info                            :  1, // [18:18]
42*5113495bSYour Name                       fcs_err                                                 :  1, // [19:19]
43*5113495bSYour Name                       msdu_length_err                                         :  1, // [20:20]
44*5113495bSYour Name                       rxdma0_destination_ring                                 :  3, // [23:21]
45*5113495bSYour Name                       rxdma1_destination_ring                                 :  3, // [26:24]
46*5113495bSYour Name                       decrypt_status_code                                     :  3, // [29:27]
47*5113495bSYour Name                       rx_bitmap_not_updated                                   :  1, // [30:30]
48*5113495bSYour Name                       reserved_1b                                             :  1; // [31:31]
49*5113495bSYour Name              uint32_t reserved_2a                                             : 15, // [14:0]
50*5113495bSYour Name                       rxpcu_mgmt_sequence_nr_valid                            :  1, // [15:15]
51*5113495bSYour Name                       rxpcu_mgmt_sequence_nr                                  : 16; // [31:16]
52*5113495bSYour Name              uint32_t rxframe_assert_mlo_timestamp                            : 32; // [31:0]
53*5113495bSYour Name #else
54*5113495bSYour Name              uint32_t phy_ppdu_id                                             : 16, // [31:16]
55*5113495bSYour Name                       reserved_0                                              :  7, // [15:9]
56*5113495bSYour Name                       sw_frame_group_id                                       :  7, // [8:2]
57*5113495bSYour Name                       rxpcu_mpdu_filter_in_category                           :  2; // [1:0]
58*5113495bSYour Name              uint32_t reserved_1b                                             :  1, // [31:31]
59*5113495bSYour Name                       rx_bitmap_not_updated                                   :  1, // [30:30]
60*5113495bSYour Name                       decrypt_status_code                                     :  3, // [29:27]
61*5113495bSYour Name                       rxdma1_destination_ring                                 :  3, // [26:24]
62*5113495bSYour Name                       rxdma0_destination_ring                                 :  3, // [23:21]
63*5113495bSYour Name                       msdu_length_err                                         :  1, // [20:20]
64*5113495bSYour Name                       fcs_err                                                 :  1, // [19:19]
65*5113495bSYour Name                       pn_fields_contain_valid_info                            :  1, // [18:18]
66*5113495bSYour Name                       unencrypted_frame_err                                   :  1, // [17:17]
67*5113495bSYour Name                       decrypt_err                                             :  1, // [16:16]
68*5113495bSYour Name                       tkip_mic_err                                            :  1, // [15:15]
69*5113495bSYour Name                       mpdu_length_err                                         :  1, // [14:14]
70*5113495bSYour Name                       overflow_err                                            :  1, // [13:13]
71*5113495bSYour Name                       rx_in_tx_decrypt_byp                                    :  1, // [12:12]
72*5113495bSYour Name                       unsup_ktype_short_frame                                 :  1, // [11:11]
73*5113495bSYour Name                       reserved_1a                                             : 11; // [10:0]
74*5113495bSYour Name              uint32_t rxpcu_mgmt_sequence_nr                                  : 16, // [31:16]
75*5113495bSYour Name                       rxpcu_mgmt_sequence_nr_valid                            :  1, // [15:15]
76*5113495bSYour Name                       reserved_2a                                             : 15; // [14:0]
77*5113495bSYour Name              uint32_t rxframe_assert_mlo_timestamp                            : 32; // [31:0]
78*5113495bSYour Name #endif
79*5113495bSYour Name };
80*5113495bSYour Name 
81*5113495bSYour Name 
82*5113495bSYour Name /* Description		RXPCU_MPDU_FILTER_IN_CATEGORY
83*5113495bSYour Name 
84*5113495bSYour Name 			Field indicates what the reason was that this MPDU frame
85*5113495bSYour Name 			 was allowed to come into the receive path by RXPCU
86*5113495bSYour Name 			<enum 0 rxpcu_filter_pass> This MPDU passed the normal frame
87*5113495bSYour Name 			 filter programming of rxpcu
88*5113495bSYour Name 			<enum 1 rxpcu_monitor_client> This MPDU did NOT pass the
89*5113495bSYour Name 			 regular frame filter and would have been dropped, were
90*5113495bSYour Name 			it not for the frame fitting into the 'monitor_client' category.
91*5113495bSYour Name 
92*5113495bSYour Name 			<enum 2 rxpcu_monitor_other> This MPDU did NOT pass the
93*5113495bSYour Name 			regular frame filter and also did not pass the rxpcu_monitor_client
94*5113495bSYour Name 			 filter. It would have been dropped accept that it did pass
95*5113495bSYour Name 			 the 'monitor_other' category.
96*5113495bSYour Name 			<enum 3 rxpcu_filter_pass_monitor_ovrd> This MPDU passed
97*5113495bSYour Name 			 the normal frame filter programming of RXPCU but additionally
98*5113495bSYour Name 			 fit into the 'monitor_override_client' category.
99*5113495bSYour Name 			<legal 0-3>
100*5113495bSYour Name */
101*5113495bSYour Name 
102*5113495bSYour Name #define RX_MPDU_END_RXPCU_MPDU_FILTER_IN_CATEGORY_OFFSET                            0x0000000000000000
103*5113495bSYour Name #define RX_MPDU_END_RXPCU_MPDU_FILTER_IN_CATEGORY_LSB                               0
104*5113495bSYour Name #define RX_MPDU_END_RXPCU_MPDU_FILTER_IN_CATEGORY_MSB                               1
105*5113495bSYour Name #define RX_MPDU_END_RXPCU_MPDU_FILTER_IN_CATEGORY_MASK                              0x0000000000000003
106*5113495bSYour Name 
107*5113495bSYour Name 
108*5113495bSYour Name /* Description		SW_FRAME_GROUP_ID
109*5113495bSYour Name 
110*5113495bSYour Name 			SW processes frames based on certain classifications. This
111*5113495bSYour Name 			 field indicates to what sw classification this MPDU is
112*5113495bSYour Name 			mapped.
113*5113495bSYour Name 			The classification is given in priority order
114*5113495bSYour Name 
115*5113495bSYour Name 			<enum 0 sw_frame_group_NDP_frame>
116*5113495bSYour Name 
117*5113495bSYour Name 			<enum 1 sw_frame_group_Multicast_data>
118*5113495bSYour Name 			<enum 2 sw_frame_group_Unicast_data>
119*5113495bSYour Name 			<enum 3 sw_frame_group_Null_data > This includes mpdus of
120*5113495bSYour Name 			 type Data Null.
121*5113495bSYour Name 			<enum 38 sw_frame_group_QoS_Null_data> This includes QoS
122*5113495bSYour Name 			 Null frames except in UL MU or TB PPDUs.
123*5113495bSYour Name 			<enum 39 sw_frame_group_QoS_Null_data_TB> This includes
124*5113495bSYour Name 			QoS Null frames in UL MU or TB PPDUs.
125*5113495bSYour Name 
126*5113495bSYour Name 			<enum 4 sw_frame_group_mgmt_0000 >
127*5113495bSYour Name 			<enum 5 sw_frame_group_mgmt_0001 >
128*5113495bSYour Name 			<enum 6 sw_frame_group_mgmt_0010 >
129*5113495bSYour Name 			<enum 7 sw_frame_group_mgmt_0011 >
130*5113495bSYour Name 			<enum 8 sw_frame_group_mgmt_0100 >
131*5113495bSYour Name 			<enum 9 sw_frame_group_mgmt_0101 >
132*5113495bSYour Name 			<enum 10 sw_frame_group_mgmt_0110 >
133*5113495bSYour Name 			<enum 11 sw_frame_group_mgmt_0111 >
134*5113495bSYour Name 			<enum 12 sw_frame_group_mgmt_1000 >
135*5113495bSYour Name 			<enum 13 sw_frame_group_mgmt_1001 >
136*5113495bSYour Name 			<enum 14 sw_frame_group_mgmt_1010 >
137*5113495bSYour Name 			<enum 15 sw_frame_group_mgmt_1011 >
138*5113495bSYour Name 			<enum 16 sw_frame_group_mgmt_1100 >
139*5113495bSYour Name 			<enum 17 sw_frame_group_mgmt_1101 >
140*5113495bSYour Name 			<enum 18 sw_frame_group_mgmt_1110 >
141*5113495bSYour Name 			<enum 19 sw_frame_group_mgmt_1111 >
142*5113495bSYour Name 
143*5113495bSYour Name 			<enum 20 sw_frame_group_ctrl_0000 >
144*5113495bSYour Name 			<enum 21 sw_frame_group_ctrl_0001 >
145*5113495bSYour Name 			<enum 22 sw_frame_group_ctrl_0010 >
146*5113495bSYour Name 			<enum 23 sw_frame_group_ctrl_0011 >
147*5113495bSYour Name 			<enum 24 sw_frame_group_ctrl_0100 >
148*5113495bSYour Name 			<enum 25 sw_frame_group_ctrl_0101 >
149*5113495bSYour Name 			<enum 26 sw_frame_group_ctrl_0110 >
150*5113495bSYour Name 			<enum 27 sw_frame_group_ctrl_0111 >
151*5113495bSYour Name 			<enum 28 sw_frame_group_ctrl_1000 >
152*5113495bSYour Name 			<enum 29 sw_frame_group_ctrl_1001 >
153*5113495bSYour Name 			<enum 30 sw_frame_group_ctrl_1010 >
154*5113495bSYour Name 			<enum 31 sw_frame_group_ctrl_1011 >
155*5113495bSYour Name 			<enum 32 sw_frame_group_ctrl_1100 >
156*5113495bSYour Name 			<enum 33 sw_frame_group_ctrl_1101 >
157*5113495bSYour Name 			<enum 34 sw_frame_group_ctrl_1110 >
158*5113495bSYour Name 			<enum 35 sw_frame_group_ctrl_1111 >
159*5113495bSYour Name 
160*5113495bSYour Name 			<enum 36 sw_frame_group_unsupported> This covers type 3
161*5113495bSYour Name 			and protocol version != 0
162*5113495bSYour Name 
163*5113495bSYour Name 			<enum 37 sw_frame_group_phy_error> PHY reported an error
164*5113495bSYour Name 
165*5113495bSYour Name 
166*5113495bSYour Name 			<legal 0-39>
167*5113495bSYour Name */
168*5113495bSYour Name 
169*5113495bSYour Name #define RX_MPDU_END_SW_FRAME_GROUP_ID_OFFSET                                        0x0000000000000000
170*5113495bSYour Name #define RX_MPDU_END_SW_FRAME_GROUP_ID_LSB                                           2
171*5113495bSYour Name #define RX_MPDU_END_SW_FRAME_GROUP_ID_MSB                                           8
172*5113495bSYour Name #define RX_MPDU_END_SW_FRAME_GROUP_ID_MASK                                          0x00000000000001fc
173*5113495bSYour Name 
174*5113495bSYour Name 
175*5113495bSYour Name /* Description		RESERVED_0
176*5113495bSYour Name 
177*5113495bSYour Name 			<legal 0>
178*5113495bSYour Name */
179*5113495bSYour Name 
180*5113495bSYour Name #define RX_MPDU_END_RESERVED_0_OFFSET                                               0x0000000000000000
181*5113495bSYour Name #define RX_MPDU_END_RESERVED_0_LSB                                                  9
182*5113495bSYour Name #define RX_MPDU_END_RESERVED_0_MSB                                                  15
183*5113495bSYour Name #define RX_MPDU_END_RESERVED_0_MASK                                                 0x000000000000fe00
184*5113495bSYour Name 
185*5113495bSYour Name 
186*5113495bSYour Name /* Description		PHY_PPDU_ID
187*5113495bSYour Name 
188*5113495bSYour Name 			A ppdu counter value that PHY increments for every PPDU
189*5113495bSYour Name 			received. The counter value wraps around
190*5113495bSYour Name 			<legal all>
191*5113495bSYour Name */
192*5113495bSYour Name 
193*5113495bSYour Name #define RX_MPDU_END_PHY_PPDU_ID_OFFSET                                              0x0000000000000000
194*5113495bSYour Name #define RX_MPDU_END_PHY_PPDU_ID_LSB                                                 16
195*5113495bSYour Name #define RX_MPDU_END_PHY_PPDU_ID_MSB                                                 31
196*5113495bSYour Name #define RX_MPDU_END_PHY_PPDU_ID_MASK                                                0x00000000ffff0000
197*5113495bSYour Name 
198*5113495bSYour Name 
199*5113495bSYour Name /* Description		RESERVED_1A
200*5113495bSYour Name 
201*5113495bSYour Name 			<legal 0>
202*5113495bSYour Name */
203*5113495bSYour Name 
204*5113495bSYour Name #define RX_MPDU_END_RESERVED_1A_OFFSET                                              0x0000000000000000
205*5113495bSYour Name #define RX_MPDU_END_RESERVED_1A_LSB                                                 32
206*5113495bSYour Name #define RX_MPDU_END_RESERVED_1A_MSB                                                 42
207*5113495bSYour Name #define RX_MPDU_END_RESERVED_1A_MASK                                                0x000007ff00000000
208*5113495bSYour Name 
209*5113495bSYour Name 
210*5113495bSYour Name /* Description		UNSUP_KTYPE_SHORT_FRAME
211*5113495bSYour Name 
212*5113495bSYour Name 			This bit will be '1' when WEP or TKIP or WAPI key type is
213*5113495bSYour Name 			 received for 11ah short frame.  Crypto will bypass the
214*5113495bSYour Name 			received packet without decryption to RxOLE after setting
215*5113495bSYour Name 			 this bit.
216*5113495bSYour Name */
217*5113495bSYour Name 
218*5113495bSYour Name #define RX_MPDU_END_UNSUP_KTYPE_SHORT_FRAME_OFFSET                                  0x0000000000000000
219*5113495bSYour Name #define RX_MPDU_END_UNSUP_KTYPE_SHORT_FRAME_LSB                                     43
220*5113495bSYour Name #define RX_MPDU_END_UNSUP_KTYPE_SHORT_FRAME_MSB                                     43
221*5113495bSYour Name #define RX_MPDU_END_UNSUP_KTYPE_SHORT_FRAME_MASK                                    0x0000080000000000
222*5113495bSYour Name 
223*5113495bSYour Name 
224*5113495bSYour Name /* Description		RX_IN_TX_DECRYPT_BYP
225*5113495bSYour Name 
226*5113495bSYour Name 			Indicates that RX packet is not decrypted as Crypto is busy
227*5113495bSYour Name 			 with TX packet processing.
228*5113495bSYour Name */
229*5113495bSYour Name 
230*5113495bSYour Name #define RX_MPDU_END_RX_IN_TX_DECRYPT_BYP_OFFSET                                     0x0000000000000000
231*5113495bSYour Name #define RX_MPDU_END_RX_IN_TX_DECRYPT_BYP_LSB                                        44
232*5113495bSYour Name #define RX_MPDU_END_RX_IN_TX_DECRYPT_BYP_MSB                                        44
233*5113495bSYour Name #define RX_MPDU_END_RX_IN_TX_DECRYPT_BYP_MASK                                       0x0000100000000000
234*5113495bSYour Name 
235*5113495bSYour Name 
236*5113495bSYour Name /* Description		OVERFLOW_ERR
237*5113495bSYour Name 
238*5113495bSYour Name 			RXPCU Receive FIFO ran out of space to receive the full
239*5113495bSYour Name 			MPDU. Therefor this MPDU is terminated early and is thus
240*5113495bSYour Name 			 corrupted.
241*5113495bSYour Name 
242*5113495bSYour Name 			This MPDU will not be ACKed.
243*5113495bSYour Name 			RXPCU might still be able to correctly receive the following
244*5113495bSYour Name 			 MPDUs in the PPDU if enough fifo space became available
245*5113495bSYour Name 			 in time
246*5113495bSYour Name */
247*5113495bSYour Name 
248*5113495bSYour Name #define RX_MPDU_END_OVERFLOW_ERR_OFFSET                                             0x0000000000000000
249*5113495bSYour Name #define RX_MPDU_END_OVERFLOW_ERR_LSB                                                45
250*5113495bSYour Name #define RX_MPDU_END_OVERFLOW_ERR_MSB                                                45
251*5113495bSYour Name #define RX_MPDU_END_OVERFLOW_ERR_MASK                                               0x0000200000000000
252*5113495bSYour Name 
253*5113495bSYour Name 
254*5113495bSYour Name /* Description		MPDU_LENGTH_ERR
255*5113495bSYour Name 
256*5113495bSYour Name 			Set by RXPCU if the expected MPDU length does not correspond
257*5113495bSYour Name 			 with the actually received number of bytes in the MPDU.
258*5113495bSYour Name 
259*5113495bSYour Name */
260*5113495bSYour Name 
261*5113495bSYour Name #define RX_MPDU_END_MPDU_LENGTH_ERR_OFFSET                                          0x0000000000000000
262*5113495bSYour Name #define RX_MPDU_END_MPDU_LENGTH_ERR_LSB                                             46
263*5113495bSYour Name #define RX_MPDU_END_MPDU_LENGTH_ERR_MSB                                             46
264*5113495bSYour Name #define RX_MPDU_END_MPDU_LENGTH_ERR_MASK                                            0x0000400000000000
265*5113495bSYour Name 
266*5113495bSYour Name 
267*5113495bSYour Name /* Description		TKIP_MIC_ERR
268*5113495bSYour Name 
269*5113495bSYour Name 			Set by RX CRYPTO when CRYPTO detected a TKIP MIC error for
270*5113495bSYour Name 			 this MPDU
271*5113495bSYour Name */
272*5113495bSYour Name 
273*5113495bSYour Name #define RX_MPDU_END_TKIP_MIC_ERR_OFFSET                                             0x0000000000000000
274*5113495bSYour Name #define RX_MPDU_END_TKIP_MIC_ERR_LSB                                                47
275*5113495bSYour Name #define RX_MPDU_END_TKIP_MIC_ERR_MSB                                                47
276*5113495bSYour Name #define RX_MPDU_END_TKIP_MIC_ERR_MASK                                               0x0000800000000000
277*5113495bSYour Name 
278*5113495bSYour Name 
279*5113495bSYour Name /* Description		DECRYPT_ERR
280*5113495bSYour Name 
281*5113495bSYour Name 			Set by RX CRYPTO when CRYPTO detected a decrypt error for
282*5113495bSYour Name 			 this MPDU or CRYPTO received an encrypted frame, but did
283*5113495bSYour Name 			 not get a valid corresponding key id in the peer entry.
284*5113495bSYour Name 
285*5113495bSYour Name */
286*5113495bSYour Name 
287*5113495bSYour Name #define RX_MPDU_END_DECRYPT_ERR_OFFSET                                              0x0000000000000000
288*5113495bSYour Name #define RX_MPDU_END_DECRYPT_ERR_LSB                                                 48
289*5113495bSYour Name #define RX_MPDU_END_DECRYPT_ERR_MSB                                                 48
290*5113495bSYour Name #define RX_MPDU_END_DECRYPT_ERR_MASK                                                0x0001000000000000
291*5113495bSYour Name 
292*5113495bSYour Name 
293*5113495bSYour Name /* Description		UNENCRYPTED_FRAME_ERR
294*5113495bSYour Name 
295*5113495bSYour Name 			Set by RX CRYPTO when CRYPTO detected an unencrypted frame
296*5113495bSYour Name 			 while in the peer entry field 'All_frames_shall_be_encrypted'
297*5113495bSYour Name 			is set.
298*5113495bSYour Name */
299*5113495bSYour Name 
300*5113495bSYour Name #define RX_MPDU_END_UNENCRYPTED_FRAME_ERR_OFFSET                                    0x0000000000000000
301*5113495bSYour Name #define RX_MPDU_END_UNENCRYPTED_FRAME_ERR_LSB                                       49
302*5113495bSYour Name #define RX_MPDU_END_UNENCRYPTED_FRAME_ERR_MSB                                       49
303*5113495bSYour Name #define RX_MPDU_END_UNENCRYPTED_FRAME_ERR_MASK                                      0x0002000000000000
304*5113495bSYour Name 
305*5113495bSYour Name 
306*5113495bSYour Name /* Description		PN_FIELDS_CONTAIN_VALID_INFO
307*5113495bSYour Name 
308*5113495bSYour Name 			Set by RX CRYPTO to indicate that there is a valid PN field
309*5113495bSYour Name 			 present in this MPDU
310*5113495bSYour Name */
311*5113495bSYour Name 
312*5113495bSYour Name #define RX_MPDU_END_PN_FIELDS_CONTAIN_VALID_INFO_OFFSET                             0x0000000000000000
313*5113495bSYour Name #define RX_MPDU_END_PN_FIELDS_CONTAIN_VALID_INFO_LSB                                50
314*5113495bSYour Name #define RX_MPDU_END_PN_FIELDS_CONTAIN_VALID_INFO_MSB                                50
315*5113495bSYour Name #define RX_MPDU_END_PN_FIELDS_CONTAIN_VALID_INFO_MASK                               0x0004000000000000
316*5113495bSYour Name 
317*5113495bSYour Name 
318*5113495bSYour Name /* Description		FCS_ERR
319*5113495bSYour Name 
320*5113495bSYour Name 			Set by RXPCU when there is an FCS error detected for this
321*5113495bSYour Name 			 MPDU
322*5113495bSYour Name 			NOTE that when this field is set, all other (error) field
323*5113495bSYour Name 			 settings should be ignored as modules could have made wrong
324*5113495bSYour Name 			 decisions based on the corrupted data.
325*5113495bSYour Name */
326*5113495bSYour Name 
327*5113495bSYour Name #define RX_MPDU_END_FCS_ERR_OFFSET                                                  0x0000000000000000
328*5113495bSYour Name #define RX_MPDU_END_FCS_ERR_LSB                                                     51
329*5113495bSYour Name #define RX_MPDU_END_FCS_ERR_MSB                                                     51
330*5113495bSYour Name #define RX_MPDU_END_FCS_ERR_MASK                                                    0x0008000000000000
331*5113495bSYour Name 
332*5113495bSYour Name 
333*5113495bSYour Name /* Description		MSDU_LENGTH_ERR
334*5113495bSYour Name 
335*5113495bSYour Name 			Set by RXOLE when there is an msdu length error detected
336*5113495bSYour Name 			 in at least 1 of the MSDUs embedded within the MPDU
337*5113495bSYour Name */
338*5113495bSYour Name 
339*5113495bSYour Name #define RX_MPDU_END_MSDU_LENGTH_ERR_OFFSET                                          0x0000000000000000
340*5113495bSYour Name #define RX_MPDU_END_MSDU_LENGTH_ERR_LSB                                             52
341*5113495bSYour Name #define RX_MPDU_END_MSDU_LENGTH_ERR_MSB                                             52
342*5113495bSYour Name #define RX_MPDU_END_MSDU_LENGTH_ERR_MASK                                            0x0010000000000000
343*5113495bSYour Name 
344*5113495bSYour Name 
345*5113495bSYour Name /* Description		RXDMA0_DESTINATION_RING
346*5113495bSYour Name 
347*5113495bSYour Name 			The ring to which RXDMA0 shall push the frame, assuming
348*5113495bSYour Name 			no MPDU level errors are detected. In case of MPDU level
349*5113495bSYour Name 			 errors, RXDMA0 might change the RXDMA0 destination
350*5113495bSYour Name 
351*5113495bSYour Name 			<enum 0  rxdma_release_ring >  RXDMA0 shall push the frame
352*5113495bSYour Name 			 to the Release ring. Effectively this means the frame needs
353*5113495bSYour Name 			 to be dropped.
354*5113495bSYour Name 
355*5113495bSYour Name 			<enum 1  rxdma2fw_pmac0_ring >  RXDMA0 shall push the frame
356*5113495bSYour Name 			 to the FW ring for PMAC0.
357*5113495bSYour Name 
358*5113495bSYour Name 			<enum 2  rxdma2sw_ring >  RXDMA0 shall push the frame to
359*5113495bSYour Name 			 the SW ring
360*5113495bSYour Name 
361*5113495bSYour Name 			<enum 3  rxdma2reo_ring >  RXDMA0 shall push the frame to
362*5113495bSYour Name 			 the REO entrance ring
363*5113495bSYour Name 
364*5113495bSYour Name 			<enum 4  rxdma2fw_pmac1_ring> RXDMA0 shall push the frame
365*5113495bSYour Name 			 to the FW ring for PMAC1.
366*5113495bSYour Name 
367*5113495bSYour Name 			<enum 5 rxdma2reo_remote0_ring> RXDMA0 shall push the frame
368*5113495bSYour Name 			 to the first MLO REO entrance ring.
369*5113495bSYour Name 
370*5113495bSYour Name 			<enum 6 rxdma2reo_remote1_ring> RXDMA0 shall push the frame
371*5113495bSYour Name 			 to the second MLO REO entrance ring.
372*5113495bSYour Name 
373*5113495bSYour Name 			<legal 0 - 6>
374*5113495bSYour Name */
375*5113495bSYour Name 
376*5113495bSYour Name #define RX_MPDU_END_RXDMA0_DESTINATION_RING_OFFSET                                  0x0000000000000000
377*5113495bSYour Name #define RX_MPDU_END_RXDMA0_DESTINATION_RING_LSB                                     53
378*5113495bSYour Name #define RX_MPDU_END_RXDMA0_DESTINATION_RING_MSB                                     55
379*5113495bSYour Name #define RX_MPDU_END_RXDMA0_DESTINATION_RING_MASK                                    0x00e0000000000000
380*5113495bSYour Name 
381*5113495bSYour Name 
382*5113495bSYour Name /* Description		RXDMA1_DESTINATION_RING
383*5113495bSYour Name 
384*5113495bSYour Name 			The ring to which RXDMA1 shall push the frame, assuming
385*5113495bSYour Name 			no MPDU level errors are detected. In case of MPDU level
386*5113495bSYour Name 			 errors, RXDMA1 might change the RXDMA destination
387*5113495bSYour Name 
388*5113495bSYour Name 			<enum 0  rxdma_release_ring >  DO NOT USE.
389*5113495bSYour Name 
390*5113495bSYour Name 			<enum 1  rxdma2fw_pmac0_ring >  DO NOT USE.
391*5113495bSYour Name 
392*5113495bSYour Name 			<enum 2  rxdma2sw_ring >  RXDMA1 shall push the frame to
393*5113495bSYour Name 			 the SW ring
394*5113495bSYour Name 
395*5113495bSYour Name 			<enum 3  rxdma2reo_ring >  DO NOT USE.
396*5113495bSYour Name 
397*5113495bSYour Name 			<enum 4  rxdma2fw_pmac1_ring> DO NOT USE.
398*5113495bSYour Name 
399*5113495bSYour Name 			<enum 5 rxdma2reo_remote0_ring> DO NOT USE.
400*5113495bSYour Name 
401*5113495bSYour Name 			<enum 6 rxdma2reo_remote1_ring> DO NOT USE.
402*5113495bSYour Name 
403*5113495bSYour Name 			<legal 0 - 6>
404*5113495bSYour Name */
405*5113495bSYour Name 
406*5113495bSYour Name #define RX_MPDU_END_RXDMA1_DESTINATION_RING_OFFSET                                  0x0000000000000000
407*5113495bSYour Name #define RX_MPDU_END_RXDMA1_DESTINATION_RING_LSB                                     56
408*5113495bSYour Name #define RX_MPDU_END_RXDMA1_DESTINATION_RING_MSB                                     58
409*5113495bSYour Name #define RX_MPDU_END_RXDMA1_DESTINATION_RING_MASK                                    0x0700000000000000
410*5113495bSYour Name 
411*5113495bSYour Name 
412*5113495bSYour Name /* Description		DECRYPT_STATUS_CODE
413*5113495bSYour Name 
414*5113495bSYour Name 			Field provides insight into the decryption performed
415*5113495bSYour Name 
416*5113495bSYour Name 			<enum 0 decrypt_ok> Frame had protection enabled and decrypted
417*5113495bSYour Name 			 properly
418*5113495bSYour Name 			<enum 1 decrypt_unprotected_frame > Frame is unprotected
419*5113495bSYour Name 			 and hence bypassed
420*5113495bSYour Name 			<enum 2 decrypt_data_err > Frame has protection enabled
421*5113495bSYour Name 			and could not be properly decrypted due to MIC/ICV mismatch
422*5113495bSYour Name 			 etc.
423*5113495bSYour Name 			<enum 3 decrypt_key_invalid > Frame has protection enabled
424*5113495bSYour Name 			 but the key that was required to decrypt this frame was
425*5113495bSYour Name 			 not valid
426*5113495bSYour Name 			<enum 4 decrypt_peer_entry_invalid > Frame has protection
427*5113495bSYour Name 			 enabled but the key that was required to decrypt this frame
428*5113495bSYour Name 			 was not valid
429*5113495bSYour Name 			<enum 5 decrypt_other > Reserved for other indications
430*5113495bSYour Name 
431*5113495bSYour Name 			<legal 0 - 5>
432*5113495bSYour Name */
433*5113495bSYour Name 
434*5113495bSYour Name #define RX_MPDU_END_DECRYPT_STATUS_CODE_OFFSET                                      0x0000000000000000
435*5113495bSYour Name #define RX_MPDU_END_DECRYPT_STATUS_CODE_LSB                                         59
436*5113495bSYour Name #define RX_MPDU_END_DECRYPT_STATUS_CODE_MSB                                         61
437*5113495bSYour Name #define RX_MPDU_END_DECRYPT_STATUS_CODE_MASK                                        0x3800000000000000
438*5113495bSYour Name 
439*5113495bSYour Name 
440*5113495bSYour Name /* Description		RX_BITMAP_NOT_UPDATED
441*5113495bSYour Name 
442*5113495bSYour Name 			Frame is received, but RXPCU could not update the receive
443*5113495bSYour Name 			 bitmap due to (temporary) fifo contraints.
444*5113495bSYour Name 			<legal all>
445*5113495bSYour Name */
446*5113495bSYour Name 
447*5113495bSYour Name #define RX_MPDU_END_RX_BITMAP_NOT_UPDATED_OFFSET                                    0x0000000000000000
448*5113495bSYour Name #define RX_MPDU_END_RX_BITMAP_NOT_UPDATED_LSB                                       62
449*5113495bSYour Name #define RX_MPDU_END_RX_BITMAP_NOT_UPDATED_MSB                                       62
450*5113495bSYour Name #define RX_MPDU_END_RX_BITMAP_NOT_UPDATED_MASK                                      0x4000000000000000
451*5113495bSYour Name 
452*5113495bSYour Name 
453*5113495bSYour Name /* Description		RESERVED_1B
454*5113495bSYour Name 
455*5113495bSYour Name 			<legal 0>
456*5113495bSYour Name */
457*5113495bSYour Name 
458*5113495bSYour Name #define RX_MPDU_END_RESERVED_1B_OFFSET                                              0x0000000000000000
459*5113495bSYour Name #define RX_MPDU_END_RESERVED_1B_LSB                                                 63
460*5113495bSYour Name #define RX_MPDU_END_RESERVED_1B_MSB                                                 63
461*5113495bSYour Name #define RX_MPDU_END_RESERVED_1B_MASK                                                0x8000000000000000
462*5113495bSYour Name 
463*5113495bSYour Name 
464*5113495bSYour Name /* Description		RESERVED_2A
465*5113495bSYour Name 
466*5113495bSYour Name 			<legal 0>
467*5113495bSYour Name */
468*5113495bSYour Name 
469*5113495bSYour Name #define RX_MPDU_END_RESERVED_2A_OFFSET                                              0x0000000000000008
470*5113495bSYour Name #define RX_MPDU_END_RESERVED_2A_LSB                                                 0
471*5113495bSYour Name #define RX_MPDU_END_RESERVED_2A_MSB                                                 14
472*5113495bSYour Name #define RX_MPDU_END_RESERVED_2A_MASK                                                0x0000000000007fff
473*5113495bSYour Name 
474*5113495bSYour Name 
475*5113495bSYour Name /* Description		RXPCU_MGMT_SEQUENCE_NR_VALID
476*5113495bSYour Name 
477*5113495bSYour Name 			This field gets set by RXPCU when the received management
478*5113495bSYour Name 			 frame is destined to this device, passes FCS and is categorized
479*5113495bSYour Name 			 as one for which RXPCU should assign a rxpcu_mgmt_sequence_number.
480*5113495bSYour Name 			After assigning a number, the RXPCU will increment the sequence
481*5113495bSYour Name 			 number for the next management frame that meets these criteria.
482*5113495bSYour Name 
483*5113495bSYour Name 
484*5113495bSYour Name 			<legal all>
485*5113495bSYour Name */
486*5113495bSYour Name 
487*5113495bSYour Name #define RX_MPDU_END_RXPCU_MGMT_SEQUENCE_NR_VALID_OFFSET                             0x0000000000000008
488*5113495bSYour Name #define RX_MPDU_END_RXPCU_MGMT_SEQUENCE_NR_VALID_LSB                                15
489*5113495bSYour Name #define RX_MPDU_END_RXPCU_MGMT_SEQUENCE_NR_VALID_MSB                                15
490*5113495bSYour Name #define RX_MPDU_END_RXPCU_MGMT_SEQUENCE_NR_VALID_MASK                               0x0000000000008000
491*5113495bSYour Name 
492*5113495bSYour Name 
493*5113495bSYour Name /* Description		RXPCU_MGMT_SEQUENCE_NR
494*5113495bSYour Name 
495*5113495bSYour Name 			Field only valid when rxpcu_mgmt_sequence_nr_valid is set
496*5113495bSYour Name 
497*5113495bSYour Name 
498*5113495bSYour Name 			This RXPCU generated sequence number is assigned to this
499*5113495bSYour Name 			 management frame. It is used by FW and host SW for management
500*5113495bSYour Name 			 frame reordering across multiple bands/links.
501*5113495bSYour Name 
502*5113495bSYour Name 			<legal all>
503*5113495bSYour Name */
504*5113495bSYour Name 
505*5113495bSYour Name #define RX_MPDU_END_RXPCU_MGMT_SEQUENCE_NR_OFFSET                                   0x0000000000000008
506*5113495bSYour Name #define RX_MPDU_END_RXPCU_MGMT_SEQUENCE_NR_LSB                                      16
507*5113495bSYour Name #define RX_MPDU_END_RXPCU_MGMT_SEQUENCE_NR_MSB                                      31
508*5113495bSYour Name #define RX_MPDU_END_RXPCU_MGMT_SEQUENCE_NR_MASK                                     0x00000000ffff0000
509*5113495bSYour Name 
510*5113495bSYour Name 
511*5113495bSYour Name /* Description		RXFRAME_ASSERT_MLO_TIMESTAMP
512*5113495bSYour Name 
513*5113495bSYour Name 			'mlo_global_timestamp' that indicates when for the PPDU
514*5113495bSYour Name 			that contained this MPDU, the 'rx_frame' signal got asserted.
515*5113495bSYour Name 
516*5113495bSYour Name 
517*5113495bSYour Name 			This field is always valid, irrespective of the frame being
518*5113495bSYour Name 			 related to MLO reception or not. It is used by FW and host
519*5113495bSYour Name 			 SW for management frame reordering purposes.
520*5113495bSYour Name 
521*5113495bSYour Name 			<legal all>
522*5113495bSYour Name */
523*5113495bSYour Name 
524*5113495bSYour Name #define RX_MPDU_END_RXFRAME_ASSERT_MLO_TIMESTAMP_OFFSET                             0x0000000000000008
525*5113495bSYour Name #define RX_MPDU_END_RXFRAME_ASSERT_MLO_TIMESTAMP_LSB                                32
526*5113495bSYour Name #define RX_MPDU_END_RXFRAME_ASSERT_MLO_TIMESTAMP_MSB                                63
527*5113495bSYour Name #define RX_MPDU_END_RXFRAME_ASSERT_MLO_TIMESTAMP_MASK                               0xffffffff00000000
528*5113495bSYour Name 
529*5113495bSYour Name 
530*5113495bSYour Name 
531*5113495bSYour Name #endif   // RX_MPDU_END
532