xref: /wlan-driver/fw-api/hw/qca6490/v1/rx_ppdu_start_user_info.h (revision 5113495b16420b49004c444715d2daae2066e7dc)
1*5113495bSYour Name /*
2*5113495bSYour Name  * Copyright (c) 2019 The Linux Foundation. All rights reserved.
3*5113495bSYour Name  *
4*5113495bSYour Name  * Permission to use, copy, modify, and/or distribute this software for
5*5113495bSYour Name  * any purpose with or without fee is hereby granted, provided that the
6*5113495bSYour Name  * above copyright notice and this permission notice appear in all
7*5113495bSYour Name  * copies.
8*5113495bSYour Name  *
9*5113495bSYour Name  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
10*5113495bSYour Name  * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
11*5113495bSYour Name  * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
12*5113495bSYour Name  * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
13*5113495bSYour Name  * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
14*5113495bSYour Name  * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
15*5113495bSYour Name  * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
16*5113495bSYour Name  * PERFORMANCE OF THIS SOFTWARE.
17*5113495bSYour Name  */
18*5113495bSYour Name 
19*5113495bSYour Name //
20*5113495bSYour Name // DO NOT EDIT!  This file is automatically generated
21*5113495bSYour Name //               These definitions are tied to a particular hardware layout
22*5113495bSYour Name 
23*5113495bSYour Name 
24*5113495bSYour Name #ifndef _RX_PPDU_START_USER_INFO_H_
25*5113495bSYour Name #define _RX_PPDU_START_USER_INFO_H_
26*5113495bSYour Name #if !defined(__ASSEMBLER__)
27*5113495bSYour Name #endif
28*5113495bSYour Name 
29*5113495bSYour Name #include "receive_user_info.h"
30*5113495bSYour Name 
31*5113495bSYour Name // ################ START SUMMARY #################
32*5113495bSYour Name //
33*5113495bSYour Name //	Dword	Fields
34*5113495bSYour Name //	0-2	struct receive_user_info receive_user_info_details;
35*5113495bSYour Name //
36*5113495bSYour Name // ################ END SUMMARY #################
37*5113495bSYour Name 
38*5113495bSYour Name #define NUM_OF_DWORDS_RX_PPDU_START_USER_INFO 3
39*5113495bSYour Name 
40*5113495bSYour Name struct rx_ppdu_start_user_info {
41*5113495bSYour Name     struct            receive_user_info                       receive_user_info_details;
42*5113495bSYour Name };
43*5113495bSYour Name 
44*5113495bSYour Name /*
45*5113495bSYour Name 
46*5113495bSYour Name struct receive_user_info receive_user_info_details
47*5113495bSYour Name 
48*5113495bSYour Name 			Overview of receive parameters that the MAC needs to
49*5113495bSYour Name 			prepend to every received MSDU/MPDU.
50*5113495bSYour Name */
51*5113495bSYour Name 
52*5113495bSYour Name 
53*5113495bSYour Name  /* EXTERNAL REFERENCE : struct receive_user_info receive_user_info_details */
54*5113495bSYour Name 
55*5113495bSYour Name 
56*5113495bSYour Name /* Description		RX_PPDU_START_USER_INFO_0_RECEIVE_USER_INFO_DETAILS_PHY_PPDU_ID
57*5113495bSYour Name 
58*5113495bSYour Name 			A ppdu counter value that PHY increments for every PPDU
59*5113495bSYour Name 			received. The counter value wraps around
60*5113495bSYour Name 
61*5113495bSYour Name 			<legal all>
62*5113495bSYour Name */
63*5113495bSYour Name #define RX_PPDU_START_USER_INFO_0_RECEIVE_USER_INFO_DETAILS_PHY_PPDU_ID_OFFSET 0x00000000
64*5113495bSYour Name #define RX_PPDU_START_USER_INFO_0_RECEIVE_USER_INFO_DETAILS_PHY_PPDU_ID_LSB 0
65*5113495bSYour Name #define RX_PPDU_START_USER_INFO_0_RECEIVE_USER_INFO_DETAILS_PHY_PPDU_ID_MASK 0x0000ffff
66*5113495bSYour Name 
67*5113495bSYour Name /* Description		RX_PPDU_START_USER_INFO_0_RECEIVE_USER_INFO_DETAILS_USER_RSSI
68*5113495bSYour Name 
69*5113495bSYour Name 			RSSI for this user
70*5113495bSYour Name 
71*5113495bSYour Name 			Frequency domain RSSI measurement for this user. Based
72*5113495bSYour Name 			on the channel estimate.
73*5113495bSYour Name 
74*5113495bSYour Name 
75*5113495bSYour Name 
76*5113495bSYour Name 			<legal all>
77*5113495bSYour Name */
78*5113495bSYour Name #define RX_PPDU_START_USER_INFO_0_RECEIVE_USER_INFO_DETAILS_USER_RSSI_OFFSET 0x00000000
79*5113495bSYour Name #define RX_PPDU_START_USER_INFO_0_RECEIVE_USER_INFO_DETAILS_USER_RSSI_LSB 16
80*5113495bSYour Name #define RX_PPDU_START_USER_INFO_0_RECEIVE_USER_INFO_DETAILS_USER_RSSI_MASK 0x00ff0000
81*5113495bSYour Name 
82*5113495bSYour Name /* Description		RX_PPDU_START_USER_INFO_0_RECEIVE_USER_INFO_DETAILS_PKT_TYPE
83*5113495bSYour Name 
84*5113495bSYour Name 			Packet type:
85*5113495bSYour Name 
86*5113495bSYour Name 
87*5113495bSYour Name 
88*5113495bSYour Name 			<enum 0 dot11a>802.11a PPDU type
89*5113495bSYour Name 
90*5113495bSYour Name 			<enum 1 dot11b>802.11b PPDU type
91*5113495bSYour Name 
92*5113495bSYour Name 			<enum 2 dot11n_mm>802.11n Mixed Mode PPDU type
93*5113495bSYour Name 
94*5113495bSYour Name 			<enum 3 dot11ac>802.11ac PPDU type
95*5113495bSYour Name 
96*5113495bSYour Name 			<enum 4 dot11ax>802.11ax PPDU type
97*5113495bSYour Name 
98*5113495bSYour Name 			<enum 5 dot11ba>802.11ba (WUR) PPDU type
99*5113495bSYour Name */
100*5113495bSYour Name #define RX_PPDU_START_USER_INFO_0_RECEIVE_USER_INFO_DETAILS_PKT_TYPE_OFFSET 0x00000000
101*5113495bSYour Name #define RX_PPDU_START_USER_INFO_0_RECEIVE_USER_INFO_DETAILS_PKT_TYPE_LSB 24
102*5113495bSYour Name #define RX_PPDU_START_USER_INFO_0_RECEIVE_USER_INFO_DETAILS_PKT_TYPE_MASK 0x0f000000
103*5113495bSYour Name 
104*5113495bSYour Name /* Description		RX_PPDU_START_USER_INFO_0_RECEIVE_USER_INFO_DETAILS_STBC
105*5113495bSYour Name 
106*5113495bSYour Name 			When set, use STBC transmission rates
107*5113495bSYour Name */
108*5113495bSYour Name #define RX_PPDU_START_USER_INFO_0_RECEIVE_USER_INFO_DETAILS_STBC_OFFSET 0x00000000
109*5113495bSYour Name #define RX_PPDU_START_USER_INFO_0_RECEIVE_USER_INFO_DETAILS_STBC_LSB 28
110*5113495bSYour Name #define RX_PPDU_START_USER_INFO_0_RECEIVE_USER_INFO_DETAILS_STBC_MASK 0x10000000
111*5113495bSYour Name 
112*5113495bSYour Name /* Description		RX_PPDU_START_USER_INFO_0_RECEIVE_USER_INFO_DETAILS_RECEPTION_TYPE
113*5113495bSYour Name 
114*5113495bSYour Name 			Indicates what type of reception this is.
115*5113495bSYour Name 
116*5113495bSYour Name 			<enum 0     reception_type_SU > Basic SU reception (not
117*5113495bSYour Name 			part of OFDMA or MU-MIMO)
118*5113495bSYour Name 
119*5113495bSYour Name 			<enum 1     reception_type_MU_MIMO > This is related to
120*5113495bSYour Name 			DL type of reception
121*5113495bSYour Name 
122*5113495bSYour Name 			<enum 2     reception_type_MU_OFDMA >  This is related
123*5113495bSYour Name 			to DL type of reception
124*5113495bSYour Name 
125*5113495bSYour Name 			<enum 3     reception_type_MU_OFDMA_MIMO >  This is
126*5113495bSYour Name 			related to DL type of reception
127*5113495bSYour Name 
128*5113495bSYour Name 			<enum 4     reception_type_UL_MU_MIMO > This is related
129*5113495bSYour Name 			to UL type of reception
130*5113495bSYour Name 
131*5113495bSYour Name 			<enum 5     reception_type_UL_MU_OFDMA >  This is
132*5113495bSYour Name 			related to UL type of reception
133*5113495bSYour Name 
134*5113495bSYour Name 			<enum 6     reception_type_UL_MU_OFDMA_MIMO >  This is
135*5113495bSYour Name 			related to UL type of reception
136*5113495bSYour Name 
137*5113495bSYour Name 
138*5113495bSYour Name 
139*5113495bSYour Name 			<legal 0-6>
140*5113495bSYour Name */
141*5113495bSYour Name #define RX_PPDU_START_USER_INFO_0_RECEIVE_USER_INFO_DETAILS_RECEPTION_TYPE_OFFSET 0x00000000
142*5113495bSYour Name #define RX_PPDU_START_USER_INFO_0_RECEIVE_USER_INFO_DETAILS_RECEPTION_TYPE_LSB 29
143*5113495bSYour Name #define RX_PPDU_START_USER_INFO_0_RECEIVE_USER_INFO_DETAILS_RECEPTION_TYPE_MASK 0xe0000000
144*5113495bSYour Name 
145*5113495bSYour Name /* Description		RX_PPDU_START_USER_INFO_1_RECEIVE_USER_INFO_DETAILS_RATE_MCS
146*5113495bSYour Name 
147*5113495bSYour Name 			For details, refer to  MCS_TYPE description
148*5113495bSYour Name 
149*5113495bSYour Name 			<legal all>
150*5113495bSYour Name */
151*5113495bSYour Name #define RX_PPDU_START_USER_INFO_1_RECEIVE_USER_INFO_DETAILS_RATE_MCS_OFFSET 0x00000004
152*5113495bSYour Name #define RX_PPDU_START_USER_INFO_1_RECEIVE_USER_INFO_DETAILS_RATE_MCS_LSB 0
153*5113495bSYour Name #define RX_PPDU_START_USER_INFO_1_RECEIVE_USER_INFO_DETAILS_RATE_MCS_MASK 0x0000000f
154*5113495bSYour Name 
155*5113495bSYour Name /* Description		RX_PPDU_START_USER_INFO_1_RECEIVE_USER_INFO_DETAILS_SGI
156*5113495bSYour Name 
157*5113495bSYour Name 			Field only valid when pkt type is HT, VHT or HE.
158*5113495bSYour Name 
159*5113495bSYour Name 
160*5113495bSYour Name 
161*5113495bSYour Name 			<enum 0     gi_0_8_us > Legacy normal GI.  Can also be
162*5113495bSYour Name 			used for HE
163*5113495bSYour Name 
164*5113495bSYour Name 			<enum 1     gi_0_4_us > Legacy short GI.  Can also be
165*5113495bSYour Name 			used for HE
166*5113495bSYour Name 
167*5113495bSYour Name 			<enum 2     gi_1_6_us > HE related GI
168*5113495bSYour Name 
169*5113495bSYour Name 			<enum 3     gi_3_2_us > HE related GI
170*5113495bSYour Name 
171*5113495bSYour Name 			<legal 0 - 3>
172*5113495bSYour Name */
173*5113495bSYour Name #define RX_PPDU_START_USER_INFO_1_RECEIVE_USER_INFO_DETAILS_SGI_OFFSET 0x00000004
174*5113495bSYour Name #define RX_PPDU_START_USER_INFO_1_RECEIVE_USER_INFO_DETAILS_SGI_LSB  4
175*5113495bSYour Name #define RX_PPDU_START_USER_INFO_1_RECEIVE_USER_INFO_DETAILS_SGI_MASK 0x00000030
176*5113495bSYour Name 
177*5113495bSYour Name /* Description		RX_PPDU_START_USER_INFO_1_RECEIVE_USER_INFO_DETAILS_RECEIVE_BANDWIDTH
178*5113495bSYour Name 
179*5113495bSYour Name 			Full receive Bandwidth
180*5113495bSYour Name 
181*5113495bSYour Name 
182*5113495bSYour Name 
183*5113495bSYour Name 			<enum 0     full_rx_bw_20_mhz>
184*5113495bSYour Name 
185*5113495bSYour Name 			<enum 1      full_rx_bw_40_mhz>
186*5113495bSYour Name 
187*5113495bSYour Name 			<enum 2      full_rx_bw_80_mhz>
188*5113495bSYour Name 
189*5113495bSYour Name 			<enum 3      full_rx_bw_160_mhz>
190*5113495bSYour Name 
191*5113495bSYour Name 
192*5113495bSYour Name 
193*5113495bSYour Name 			<legal 0-3>
194*5113495bSYour Name */
195*5113495bSYour Name #define RX_PPDU_START_USER_INFO_1_RECEIVE_USER_INFO_DETAILS_RECEIVE_BANDWIDTH_OFFSET 0x00000004
196*5113495bSYour Name #define RX_PPDU_START_USER_INFO_1_RECEIVE_USER_INFO_DETAILS_RECEIVE_BANDWIDTH_LSB 6
197*5113495bSYour Name #define RX_PPDU_START_USER_INFO_1_RECEIVE_USER_INFO_DETAILS_RECEIVE_BANDWIDTH_MASK 0x000000c0
198*5113495bSYour Name 
199*5113495bSYour Name /* Description		RX_PPDU_START_USER_INFO_1_RECEIVE_USER_INFO_DETAILS_MIMO_SS_BITMAP
200*5113495bSYour Name 
201*5113495bSYour Name 			Bitmap, with each bit indicating if the related spatial
202*5113495bSYour Name 			stream is used for this STA
203*5113495bSYour Name 
204*5113495bSYour Name 			LSB related to SS 0
205*5113495bSYour Name 
206*5113495bSYour Name 
207*5113495bSYour Name 
208*5113495bSYour Name 			0: spatial stream not used for this reception
209*5113495bSYour Name 
210*5113495bSYour Name 			1: spatial stream used for this reception
211*5113495bSYour Name 
212*5113495bSYour Name 
213*5113495bSYour Name 
214*5113495bSYour Name 			<legal all>
215*5113495bSYour Name */
216*5113495bSYour Name #define RX_PPDU_START_USER_INFO_1_RECEIVE_USER_INFO_DETAILS_MIMO_SS_BITMAP_OFFSET 0x00000004
217*5113495bSYour Name #define RX_PPDU_START_USER_INFO_1_RECEIVE_USER_INFO_DETAILS_MIMO_SS_BITMAP_LSB 8
218*5113495bSYour Name #define RX_PPDU_START_USER_INFO_1_RECEIVE_USER_INFO_DETAILS_MIMO_SS_BITMAP_MASK 0x0000ff00
219*5113495bSYour Name 
220*5113495bSYour Name /* Description		RX_PPDU_START_USER_INFO_1_RECEIVE_USER_INFO_DETAILS_OFDMA_RU_ALLOCATION
221*5113495bSYour Name 
222*5113495bSYour Name 			Field only valid in case of OFDMA type receptions (DL
223*5113495bSYour Name 			and UL)
224*5113495bSYour Name 
225*5113495bSYour Name 
226*5113495bSYour Name 
227*5113495bSYour Name 			Indicates the RU number associated with this user.
228*5113495bSYour Name 
229*5113495bSYour Name 
230*5113495bSYour Name 
231*5113495bSYour Name 			In case of reception where the transmission was DL MU
232*5113495bSYour Name 			OFDMA, this field provides the RU pattern. Note that fields
233*5113495bSYour Name 			ofdma_user_index and ofdma_content_channel are needed to
234*5113495bSYour Name 			determine which RU (within a 40 MHz channel) was actually
235*5113495bSYour Name 			assigned to this user, but this does not give info on which
236*5113495bSYour Name 			40 MHz channel was assigned to this user. Please refer
237*5113495bSYour Name 			DL_ofdma_ru_* in PHYRX_PKT_END_INFO for complete RU info for
238*5113495bSYour Name 			this user.
239*5113495bSYour Name 
240*5113495bSYour Name 
241*5113495bSYour Name 
242*5113495bSYour Name 			In case of reception where the transmission was UL MU
243*5113495bSYour Name 			OFDMA, PHY is recommended to insert the RU start index in
244*5113495bSYour Name 			this field. Note that PHY may insert the RU width in
245*5113495bSYour Name 			Reserved_2a[6:0].
246*5113495bSYour Name 
247*5113495bSYour Name 			<legal all>
248*5113495bSYour Name */
249*5113495bSYour Name #define RX_PPDU_START_USER_INFO_1_RECEIVE_USER_INFO_DETAILS_OFDMA_RU_ALLOCATION_OFFSET 0x00000004
250*5113495bSYour Name #define RX_PPDU_START_USER_INFO_1_RECEIVE_USER_INFO_DETAILS_OFDMA_RU_ALLOCATION_LSB 16
251*5113495bSYour Name #define RX_PPDU_START_USER_INFO_1_RECEIVE_USER_INFO_DETAILS_OFDMA_RU_ALLOCATION_MASK 0x00ff0000
252*5113495bSYour Name 
253*5113495bSYour Name /* Description		RX_PPDU_START_USER_INFO_1_RECEIVE_USER_INFO_DETAILS_OFDMA_USER_INDEX
254*5113495bSYour Name 
255*5113495bSYour Name 			Field only valid in the of DL MU OFDMA reception
256*5113495bSYour Name 
257*5113495bSYour Name 
258*5113495bSYour Name 
259*5113495bSYour Name 			The user number within the RU_allocation.
260*5113495bSYour Name 
261*5113495bSYour Name 
262*5113495bSYour Name 
263*5113495bSYour Name 			This is needed for SW to determine the exact RU position
264*5113495bSYour Name 			within the reception.
265*5113495bSYour Name 
266*5113495bSYour Name 			<legal all>
267*5113495bSYour Name */
268*5113495bSYour Name #define RX_PPDU_START_USER_INFO_1_RECEIVE_USER_INFO_DETAILS_OFDMA_USER_INDEX_OFFSET 0x00000004
269*5113495bSYour Name #define RX_PPDU_START_USER_INFO_1_RECEIVE_USER_INFO_DETAILS_OFDMA_USER_INDEX_LSB 24
270*5113495bSYour Name #define RX_PPDU_START_USER_INFO_1_RECEIVE_USER_INFO_DETAILS_OFDMA_USER_INDEX_MASK 0x7f000000
271*5113495bSYour Name 
272*5113495bSYour Name /* Description		RX_PPDU_START_USER_INFO_1_RECEIVE_USER_INFO_DETAILS_OFDMA_CONTENT_CHANNEL
273*5113495bSYour Name 
274*5113495bSYour Name 			Field only valid in the of DL MU OFDMA/MIMO reception
275*5113495bSYour Name 
276*5113495bSYour Name 
277*5113495bSYour Name 
278*5113495bSYour Name 			In case of DL MU reception, this field indicates the
279*5113495bSYour Name 			content channel number where PHY found the RU information
280*5113495bSYour Name 			for this user
281*5113495bSYour Name 
282*5113495bSYour Name 
283*5113495bSYour Name 
284*5113495bSYour Name 			This is needed for SW to determine the exact RU position
285*5113495bSYour Name 			within the reception.
286*5113495bSYour Name 
287*5113495bSYour Name 
288*5113495bSYour Name 
289*5113495bSYour Name 			<enum 0      content_channel_1>
290*5113495bSYour Name 
291*5113495bSYour Name 			<enum 1      content_channel_2>
292*5113495bSYour Name 
293*5113495bSYour Name 
294*5113495bSYour Name 
295*5113495bSYour Name 			<legal all>
296*5113495bSYour Name */
297*5113495bSYour Name #define RX_PPDU_START_USER_INFO_1_RECEIVE_USER_INFO_DETAILS_OFDMA_CONTENT_CHANNEL_OFFSET 0x00000004
298*5113495bSYour Name #define RX_PPDU_START_USER_INFO_1_RECEIVE_USER_INFO_DETAILS_OFDMA_CONTENT_CHANNEL_LSB 31
299*5113495bSYour Name #define RX_PPDU_START_USER_INFO_1_RECEIVE_USER_INFO_DETAILS_OFDMA_CONTENT_CHANNEL_MASK 0x80000000
300*5113495bSYour Name 
301*5113495bSYour Name /* Description		RX_PPDU_START_USER_INFO_2_RECEIVE_USER_INFO_DETAILS_LDPC
302*5113495bSYour Name 
303*5113495bSYour Name 			When set, use LDPC transmission rates were used.
304*5113495bSYour Name 
305*5113495bSYour Name 			<legal all>
306*5113495bSYour Name */
307*5113495bSYour Name #define RX_PPDU_START_USER_INFO_2_RECEIVE_USER_INFO_DETAILS_LDPC_OFFSET 0x00000008
308*5113495bSYour Name #define RX_PPDU_START_USER_INFO_2_RECEIVE_USER_INFO_DETAILS_LDPC_LSB 0
309*5113495bSYour Name #define RX_PPDU_START_USER_INFO_2_RECEIVE_USER_INFO_DETAILS_LDPC_MASK 0x00000001
310*5113495bSYour Name 
311*5113495bSYour Name /* Description		RX_PPDU_START_USER_INFO_2_RECEIVE_USER_INFO_DETAILS_RU_WIDTH
312*5113495bSYour Name 
313*5113495bSYour Name 			In case of UL OFDMA reception, PHY is recommended to
314*5113495bSYour Name 			insert the RU width
315*5113495bSYour Name 
316*5113495bSYour Name 			In Hastings80: was using Reserved_2a[6:0].
317*5113495bSYour Name 
318*5113495bSYour Name 			<legal 1 - 74>
319*5113495bSYour Name */
320*5113495bSYour Name #define RX_PPDU_START_USER_INFO_2_RECEIVE_USER_INFO_DETAILS_RU_WIDTH_OFFSET 0x00000008
321*5113495bSYour Name #define RX_PPDU_START_USER_INFO_2_RECEIVE_USER_INFO_DETAILS_RU_WIDTH_LSB 1
322*5113495bSYour Name #define RX_PPDU_START_USER_INFO_2_RECEIVE_USER_INFO_DETAILS_RU_WIDTH_MASK 0x000000fe
323*5113495bSYour Name 
324*5113495bSYour Name /* Description		RX_PPDU_START_USER_INFO_2_RECEIVE_USER_INFO_DETAILS_RESERVED_2A
325*5113495bSYour Name 
326*5113495bSYour Name 			<legal 0>
327*5113495bSYour Name */
328*5113495bSYour Name #define RX_PPDU_START_USER_INFO_2_RECEIVE_USER_INFO_DETAILS_RESERVED_2A_OFFSET 0x00000008
329*5113495bSYour Name #define RX_PPDU_START_USER_INFO_2_RECEIVE_USER_INFO_DETAILS_RESERVED_2A_LSB 8
330*5113495bSYour Name #define RX_PPDU_START_USER_INFO_2_RECEIVE_USER_INFO_DETAILS_RESERVED_2A_MASK 0xffffff00
331*5113495bSYour Name 
332*5113495bSYour Name 
333*5113495bSYour Name #endif // _RX_PPDU_START_USER_INFO_H_
334