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