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