xref: /wlan-driver/fw-api/hw/qcn9000/receive_user_info.h (revision 5113495b16420b49004c444715d2daae2066e7dc)
1 /*
2  * Copyright (c) 2019, The Linux Foundation. All rights reserved.
3  *
4  * Permission to use, copy, modify, and/or distribute this software for any
5  * purpose with or without fee is hereby granted, provided that the above
6  * copyright notice and this permission notice appear in all copies.
7  *
8  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
11  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
12  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
13  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
14  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15  */
16 
17 #ifndef _RECEIVE_USER_INFO_H_
18 #define _RECEIVE_USER_INFO_H_
19 #if !defined(__ASSEMBLER__)
20 #endif
21 
22 
23 // ################ START SUMMARY #################
24 //
25 //	Dword	Fields
26 //	0	phy_ppdu_id[15:0], user_rssi[23:16], pkt_type[27:24], stbc[28], reception_type[31:29]
27 //	1	rate_mcs[3:0], sgi[5:4], receive_bandwidth[7:6], mimo_ss_bitmap[15:8], ofdma_ru_allocation[23:16], ofdma_user_index[30:24], ofdma_content_channel[31]
28 //	2	ldpc[0], ru_width[7:1], reserved_2a[31:8]
29 //
30 // ################ END SUMMARY #################
31 
32 #define NUM_OF_DWORDS_RECEIVE_USER_INFO 3
33 
34 struct receive_user_info {
35              uint32_t phy_ppdu_id                     : 16, //[15:0]
36                       user_rssi                       :  8, //[23:16]
37                       pkt_type                        :  4, //[27:24]
38                       stbc                            :  1, //[28]
39                       reception_type                  :  3; //[31:29]
40              uint32_t rate_mcs                        :  4, //[3:0]
41                       sgi                             :  2, //[5:4]
42                       receive_bandwidth               :  2, //[7:6]
43                       mimo_ss_bitmap                  :  8, //[15:8]
44                       ofdma_ru_allocation             :  8, //[23:16]
45                       ofdma_user_index                :  7, //[30:24]
46                       ofdma_content_channel           :  1; //[31]
47              uint32_t ldpc                            :  1, //[0]
48                       ru_width                        :  7, //[7:1]
49                       reserved_2a                     : 24; //[31:8]
50 };
51 
52 /*
53 
54 phy_ppdu_id
55 
56 			A ppdu counter value that PHY increments for every PPDU
57 			received. The counter value wraps around
58 
59 			<legal all>
60 
61 user_rssi
62 
63 			RSSI for this user
64 
65 			Frequency domain RSSI measurement for this user. Based
66 			on the channel estimate.
67 
68 
69 
70 			<legal all>
71 
72 pkt_type
73 
74 			Packet type:
75 
76 
77 
78 			<enum 0 dot11a>802.11a PPDU type
79 
80 			<enum 1 dot11b>802.11b PPDU type
81 
82 			<enum 2 dot11n_mm>802.11n Mixed Mode PPDU type
83 
84 			<enum 3 dot11ac>802.11ac PPDU type
85 
86 			<enum 4 dot11ax>802.11ax PPDU type
87 
88 			<enum 5 dot11ba>802.11ba (WUR) PPDU type
89 
90 stbc
91 
92 			When set, use STBC transmission rates
93 
94 reception_type
95 
96 			Indicates what type of reception this is.
97 
98 			<enum 0     reception_type_SU > Basic SU reception (not
99 			part of OFDMA or MU-MIMO)
100 
101 			<enum 1     reception_type_MU_MIMO > This is related to
102 			DL type of reception
103 
104 			<enum 2     reception_type_MU_OFDMA >  This is related
105 			to DL type of reception
106 
107 			<enum 3     reception_type_MU_OFDMA_MIMO >  This is
108 			related to DL type of reception
109 
110 			<enum 4     reception_type_UL_MU_MIMO > This is related
111 			to UL type of reception
112 
113 			<enum 5     reception_type_UL_MU_OFDMA >  This is
114 			related to UL type of reception
115 
116 			<enum 6     reception_type_UL_MU_OFDMA_MIMO >  This is
117 			related to UL type of reception
118 
119 
120 
121 			<legal 0-6>
122 
123 rate_mcs
124 
125 			For details, refer to  MCS_TYPE description
126 
127 			<legal all>
128 
129 sgi
130 
131 			Field only valid when pkt type is HT, VHT or HE.
132 
133 
134 
135 			<enum 0     gi_0_8_us > Legacy normal GI.  Can also be
136 			used for HE
137 
138 			<enum 1     gi_0_4_us > Legacy short GI.  Can also be
139 			used for HE
140 
141 			<enum 2     gi_1_6_us > HE related GI
142 
143 			<enum 3     gi_3_2_us > HE related GI
144 
145 			<legal 0 - 3>
146 
147 receive_bandwidth
148 
149 			Full receive Bandwidth
150 
151 
152 
153 			<enum 0     full_rx_bw_20_mhz>
154 
155 			<enum 1      full_rx_bw_40_mhz>
156 
157 			<enum 2      full_rx_bw_80_mhz>
158 
159 			<enum 3      full_rx_bw_160_mhz>
160 
161 
162 
163 			<legal 0-3>
164 
165 mimo_ss_bitmap
166 
167 			Bitmap, with each bit indicating if the related spatial
168 			stream is used for this STA
169 
170 			LSB related to SS 0
171 
172 
173 
174 			0: spatial stream not used for this reception
175 
176 			1: spatial stream used for this reception
177 
178 
179 
180 			<legal all>
181 
182 ofdma_ru_allocation
183 
184 			Field only valid in case of OFDMA type receptions (DL
185 			and UL)
186 
187 
188 
189 			Indicates the RU number associated with this user.
190 
191 
192 
193 			In case of reception where the transmission was DL MU
194 			OFDMA, this field provides the RU pattern. Note that fields
195 			ofdma_user_index and ofdma_content_channel are needed to
196 			determine which RU (within a 40 MHz channel) was actually
197 			assigned to this user, but this does not give info on which
198 			40 MHz channel was assigned to this user. Please refer
199 			DL_ofdma_ru_* in PHYRX_PKT_END_INFO for complete RU info for
200 			this user.
201 
202 
203 
204 			In case of reception where the transmission was UL MU
205 			OFDMA, PHY is recommended to insert the RU start index in
206 			this field. Note that PHY may insert the RU width in
207 			Reserved_2a[6:0].
208 
209 			<legal all>
210 
211 ofdma_user_index
212 
213 			Field only valid in the of DL MU OFDMA reception
214 
215 
216 
217 			The user number within the RU_allocation.
218 
219 
220 
221 			This is needed for SW to determine the exact RU position
222 			within the reception.
223 
224 			<legal all>
225 
226 ofdma_content_channel
227 
228 			Field only valid in the of DL MU OFDMA/MIMO reception
229 
230 
231 
232 			In case of DL MU reception, this field indicates the
233 			content channel number where PHY found the RU information
234 			for this user
235 
236 
237 
238 			This is needed for SW to determine the exact RU position
239 			within the reception.
240 
241 
242 
243 			<enum 0      content_channel_1>
244 
245 			<enum 1      content_channel_2>
246 
247 
248 
249 			<legal all>
250 
251 ldpc
252 
253 			When set, use LDPC transmission rates were used.
254 
255 			<legal all>
256 
257 ru_width
258 
259 			In case of UL OFDMA reception, PHY is recommended to
260 			insert the RU width
261 
262 			In Hastings80: was using Reserved_2a[6:0].
263 
264 			<legal 1 - 74>
265 
266 reserved_2a
267 
268 			<legal 0>
269 */
270 
271 
272 /* Description		RECEIVE_USER_INFO_0_PHY_PPDU_ID
273 
274 			A ppdu counter value that PHY increments for every PPDU
275 			received. The counter value wraps around
276 
277 			<legal all>
278 */
279 #define RECEIVE_USER_INFO_0_PHY_PPDU_ID_OFFSET                       0x00000000
280 #define RECEIVE_USER_INFO_0_PHY_PPDU_ID_LSB                          0
281 #define RECEIVE_USER_INFO_0_PHY_PPDU_ID_MASK                         0x0000ffff
282 
283 /* Description		RECEIVE_USER_INFO_0_USER_RSSI
284 
285 			RSSI for this user
286 
287 			Frequency domain RSSI measurement for this user. Based
288 			on the channel estimate.
289 
290 
291 
292 			<legal all>
293 */
294 #define RECEIVE_USER_INFO_0_USER_RSSI_OFFSET                         0x00000000
295 #define RECEIVE_USER_INFO_0_USER_RSSI_LSB                            16
296 #define RECEIVE_USER_INFO_0_USER_RSSI_MASK                           0x00ff0000
297 
298 /* Description		RECEIVE_USER_INFO_0_PKT_TYPE
299 
300 			Packet type:
301 
302 
303 
304 			<enum 0 dot11a>802.11a PPDU type
305 
306 			<enum 1 dot11b>802.11b PPDU type
307 
308 			<enum 2 dot11n_mm>802.11n Mixed Mode PPDU type
309 
310 			<enum 3 dot11ac>802.11ac PPDU type
311 
312 			<enum 4 dot11ax>802.11ax PPDU type
313 
314 			<enum 5 dot11ba>802.11ba (WUR) PPDU type
315 */
316 #define RECEIVE_USER_INFO_0_PKT_TYPE_OFFSET                          0x00000000
317 #define RECEIVE_USER_INFO_0_PKT_TYPE_LSB                             24
318 #define RECEIVE_USER_INFO_0_PKT_TYPE_MASK                            0x0f000000
319 
320 /* Description		RECEIVE_USER_INFO_0_STBC
321 
322 			When set, use STBC transmission rates
323 */
324 #define RECEIVE_USER_INFO_0_STBC_OFFSET                              0x00000000
325 #define RECEIVE_USER_INFO_0_STBC_LSB                                 28
326 #define RECEIVE_USER_INFO_0_STBC_MASK                                0x10000000
327 
328 /* Description		RECEIVE_USER_INFO_0_RECEPTION_TYPE
329 
330 			Indicates what type of reception this is.
331 
332 			<enum 0     reception_type_SU > Basic SU reception (not
333 			part of OFDMA or MU-MIMO)
334 
335 			<enum 1     reception_type_MU_MIMO > This is related to
336 			DL type of reception
337 
338 			<enum 2     reception_type_MU_OFDMA >  This is related
339 			to DL type of reception
340 
341 			<enum 3     reception_type_MU_OFDMA_MIMO >  This is
342 			related to DL type of reception
343 
344 			<enum 4     reception_type_UL_MU_MIMO > This is related
345 			to UL type of reception
346 
347 			<enum 5     reception_type_UL_MU_OFDMA >  This is
348 			related to UL type of reception
349 
350 			<enum 6     reception_type_UL_MU_OFDMA_MIMO >  This is
351 			related to UL type of reception
352 
353 
354 
355 			<legal 0-6>
356 */
357 #define RECEIVE_USER_INFO_0_RECEPTION_TYPE_OFFSET                    0x00000000
358 #define RECEIVE_USER_INFO_0_RECEPTION_TYPE_LSB                       29
359 #define RECEIVE_USER_INFO_0_RECEPTION_TYPE_MASK                      0xe0000000
360 
361 /* Description		RECEIVE_USER_INFO_1_RATE_MCS
362 
363 			For details, refer to  MCS_TYPE description
364 
365 			<legal all>
366 */
367 #define RECEIVE_USER_INFO_1_RATE_MCS_OFFSET                          0x00000004
368 #define RECEIVE_USER_INFO_1_RATE_MCS_LSB                             0
369 #define RECEIVE_USER_INFO_1_RATE_MCS_MASK                            0x0000000f
370 
371 /* Description		RECEIVE_USER_INFO_1_SGI
372 
373 			Field only valid when pkt type is HT, VHT or HE.
374 
375 
376 
377 			<enum 0     gi_0_8_us > Legacy normal GI.  Can also be
378 			used for HE
379 
380 			<enum 1     gi_0_4_us > Legacy short GI.  Can also be
381 			used for HE
382 
383 			<enum 2     gi_1_6_us > HE related GI
384 
385 			<enum 3     gi_3_2_us > HE related GI
386 
387 			<legal 0 - 3>
388 */
389 #define RECEIVE_USER_INFO_1_SGI_OFFSET                               0x00000004
390 #define RECEIVE_USER_INFO_1_SGI_LSB                                  4
391 #define RECEIVE_USER_INFO_1_SGI_MASK                                 0x00000030
392 
393 /* Description		RECEIVE_USER_INFO_1_RECEIVE_BANDWIDTH
394 
395 			Full receive Bandwidth
396 
397 
398 
399 			<enum 0     full_rx_bw_20_mhz>
400 
401 			<enum 1      full_rx_bw_40_mhz>
402 
403 			<enum 2      full_rx_bw_80_mhz>
404 
405 			<enum 3      full_rx_bw_160_mhz>
406 
407 
408 
409 			<legal 0-3>
410 */
411 #define RECEIVE_USER_INFO_1_RECEIVE_BANDWIDTH_OFFSET                 0x00000004
412 #define RECEIVE_USER_INFO_1_RECEIVE_BANDWIDTH_LSB                    6
413 #define RECEIVE_USER_INFO_1_RECEIVE_BANDWIDTH_MASK                   0x000000c0
414 
415 /* Description		RECEIVE_USER_INFO_1_MIMO_SS_BITMAP
416 
417 			Bitmap, with each bit indicating if the related spatial
418 			stream is used for this STA
419 
420 			LSB related to SS 0
421 
422 
423 
424 			0: spatial stream not used for this reception
425 
426 			1: spatial stream used for this reception
427 
428 
429 
430 			<legal all>
431 */
432 #define RECEIVE_USER_INFO_1_MIMO_SS_BITMAP_OFFSET                    0x00000004
433 #define RECEIVE_USER_INFO_1_MIMO_SS_BITMAP_LSB                       8
434 #define RECEIVE_USER_INFO_1_MIMO_SS_BITMAP_MASK                      0x0000ff00
435 
436 /* Description		RECEIVE_USER_INFO_1_OFDMA_RU_ALLOCATION
437 
438 			Field only valid in case of OFDMA type receptions (DL
439 			and UL)
440 
441 
442 
443 			Indicates the RU number associated with this user.
444 
445 
446 
447 			In case of reception where the transmission was DL MU
448 			OFDMA, this field provides the RU pattern. Note that fields
449 			ofdma_user_index and ofdma_content_channel are needed to
450 			determine which RU (within a 40 MHz channel) was actually
451 			assigned to this user, but this does not give info on which
452 			40 MHz channel was assigned to this user. Please refer
453 			DL_ofdma_ru_* in PHYRX_PKT_END_INFO for complete RU info for
454 			this user.
455 
456 
457 
458 			In case of reception where the transmission was UL MU
459 			OFDMA, PHY is recommended to insert the RU start index in
460 			this field. Note that PHY may insert the RU width in
461 			Reserved_2a[6:0].
462 
463 			<legal all>
464 */
465 #define RECEIVE_USER_INFO_1_OFDMA_RU_ALLOCATION_OFFSET               0x00000004
466 #define RECEIVE_USER_INFO_1_OFDMA_RU_ALLOCATION_LSB                  16
467 #define RECEIVE_USER_INFO_1_OFDMA_RU_ALLOCATION_MASK                 0x00ff0000
468 
469 /* Description		RECEIVE_USER_INFO_1_OFDMA_USER_INDEX
470 
471 			Field only valid in the of DL MU OFDMA reception
472 
473 
474 
475 			The user number within the RU_allocation.
476 
477 
478 
479 			This is needed for SW to determine the exact RU position
480 			within the reception.
481 
482 			<legal all>
483 */
484 #define RECEIVE_USER_INFO_1_OFDMA_USER_INDEX_OFFSET                  0x00000004
485 #define RECEIVE_USER_INFO_1_OFDMA_USER_INDEX_LSB                     24
486 #define RECEIVE_USER_INFO_1_OFDMA_USER_INDEX_MASK                    0x7f000000
487 
488 /* Description		RECEIVE_USER_INFO_1_OFDMA_CONTENT_CHANNEL
489 
490 			Field only valid in the of DL MU OFDMA/MIMO reception
491 
492 
493 
494 			In case of DL MU reception, this field indicates the
495 			content channel number where PHY found the RU information
496 			for this user
497 
498 
499 
500 			This is needed for SW to determine the exact RU position
501 			within the reception.
502 
503 
504 
505 			<enum 0      content_channel_1>
506 
507 			<enum 1      content_channel_2>
508 
509 
510 
511 			<legal all>
512 */
513 #define RECEIVE_USER_INFO_1_OFDMA_CONTENT_CHANNEL_OFFSET             0x00000004
514 #define RECEIVE_USER_INFO_1_OFDMA_CONTENT_CHANNEL_LSB                31
515 #define RECEIVE_USER_INFO_1_OFDMA_CONTENT_CHANNEL_MASK               0x80000000
516 
517 /* Description		RECEIVE_USER_INFO_2_LDPC
518 
519 			When set, use LDPC transmission rates were used.
520 
521 			<legal all>
522 */
523 #define RECEIVE_USER_INFO_2_LDPC_OFFSET                              0x00000008
524 #define RECEIVE_USER_INFO_2_LDPC_LSB                                 0
525 #define RECEIVE_USER_INFO_2_LDPC_MASK                                0x00000001
526 
527 /* Description		RECEIVE_USER_INFO_2_RU_WIDTH
528 
529 			In case of UL OFDMA reception, PHY is recommended to
530 			insert the RU width
531 
532 			In Hastings80: was using Reserved_2a[6:0].
533 
534 			<legal 1 - 74>
535 */
536 #define RECEIVE_USER_INFO_2_RU_WIDTH_OFFSET                          0x00000008
537 #define RECEIVE_USER_INFO_2_RU_WIDTH_LSB                             1
538 #define RECEIVE_USER_INFO_2_RU_WIDTH_MASK                            0x000000fe
539 
540 /* Description		RECEIVE_USER_INFO_2_RESERVED_2A
541 
542 			<legal 0>
543 */
544 #define RECEIVE_USER_INFO_2_RESERVED_2A_OFFSET                       0x00000008
545 #define RECEIVE_USER_INFO_2_RESERVED_2A_LSB                          8
546 #define RECEIVE_USER_INFO_2_RESERVED_2A_MASK                         0xffffff00
547 
548 
549 #endif // _RECEIVE_USER_INFO_H_
550