1 /*
2  * Copyright (c) 2023 Qualcomm Innovation Center, Inc. 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 #define NUM_OF_DWORDS_RECEIVE_USER_INFO 8
23 
24 
25 struct receive_user_info {
26 #ifndef WIFI_BIT_ORDER_BIG_ENDIAN
27              uint32_t phy_ppdu_id                                             : 16, // [15:0]
28                       user_rssi                                               :  8, // [23:16]
29                       pkt_type                                                :  4, // [27:24]
30                       stbc                                                    :  1, // [28:28]
31                       reception_type                                          :  3; // [31:29]
32              uint32_t rate_mcs                                                :  4, // [3:0]
33                       sgi                                                     :  2, // [5:4]
34                       he_ranging_ndp                                          :  1, // [6:6]
35                       reserved_1a                                             :  1, // [7:7]
36                       mimo_ss_bitmap                                          :  8, // [15:8]
37                       receive_bandwidth                                       :  3, // [18:16]
38                       reserved_1b                                             :  5, // [23:19]
39                       dl_ofdma_user_index                                     :  8; // [31:24]
40              uint32_t dl_ofdma_content_channel                                :  1, // [0:0]
41                       reserved_2a                                             :  7, // [7:1]
42                       nss                                                     :  3, // [10:8]
43                       stream_offset                                           :  3, // [13:11]
44                       sta_dcm                                                 :  1, // [14:14]
45                       ldpc                                                    :  1, // [15:15]
46                       ru_type_80_0                                            :  4, // [19:16]
47                       ru_type_80_1                                            :  4, // [23:20]
48                       ru_type_80_2                                            :  4, // [27:24]
49                       ru_type_80_3                                            :  4; // [31:28]
50              uint32_t ru_start_index_80_0                                     :  6, // [5:0]
51                       reserved_3a                                             :  2, // [7:6]
52                       ru_start_index_80_1                                     :  6, // [13:8]
53                       reserved_3b                                             :  2, // [15:14]
54                       ru_start_index_80_2                                     :  6, // [21:16]
55                       reserved_3c                                             :  2, // [23:22]
56                       ru_start_index_80_3                                     :  6, // [29:24]
57                       reserved_3d                                             :  2; // [31:30]
58              uint32_t user_fd_rssi_seg0                                       : 32; // [31:0]
59              uint32_t user_fd_rssi_seg1                                       : 32; // [31:0]
60              uint32_t user_fd_rssi_seg2                                       : 32; // [31:0]
61              uint32_t user_fd_rssi_seg3                                       : 32; // [31:0]
62 #else
63              uint32_t reception_type                                          :  3, // [31:29]
64                       stbc                                                    :  1, // [28:28]
65                       pkt_type                                                :  4, // [27:24]
66                       user_rssi                                               :  8, // [23:16]
67                       phy_ppdu_id                                             : 16; // [15:0]
68              uint32_t dl_ofdma_user_index                                     :  8, // [31:24]
69                       reserved_1b                                             :  5, // [23:19]
70                       receive_bandwidth                                       :  3, // [18:16]
71                       mimo_ss_bitmap                                          :  8, // [15:8]
72                       reserved_1a                                             :  1, // [7:7]
73                       he_ranging_ndp                                          :  1, // [6:6]
74                       sgi                                                     :  2, // [5:4]
75                       rate_mcs                                                :  4; // [3:0]
76              uint32_t ru_type_80_3                                            :  4, // [31:28]
77                       ru_type_80_2                                            :  4, // [27:24]
78                       ru_type_80_1                                            :  4, // [23:20]
79                       ru_type_80_0                                            :  4, // [19:16]
80                       ldpc                                                    :  1, // [15:15]
81                       sta_dcm                                                 :  1, // [14:14]
82                       stream_offset                                           :  3, // [13:11]
83                       nss                                                     :  3, // [10:8]
84                       reserved_2a                                             :  7, // [7:1]
85                       dl_ofdma_content_channel                                :  1; // [0:0]
86              uint32_t reserved_3d                                             :  2, // [31:30]
87                       ru_start_index_80_3                                     :  6, // [29:24]
88                       reserved_3c                                             :  2, // [23:22]
89                       ru_start_index_80_2                                     :  6, // [21:16]
90                       reserved_3b                                             :  2, // [15:14]
91                       ru_start_index_80_1                                     :  6, // [13:8]
92                       reserved_3a                                             :  2, // [7:6]
93                       ru_start_index_80_0                                     :  6; // [5:0]
94              uint32_t user_fd_rssi_seg0                                       : 32; // [31:0]
95              uint32_t user_fd_rssi_seg1                                       : 32; // [31:0]
96              uint32_t user_fd_rssi_seg2                                       : 32; // [31:0]
97              uint32_t user_fd_rssi_seg3                                       : 32; // [31:0]
98 #endif
99 };
100 
101 
102 /* Description		PHY_PPDU_ID
103 
104 			A ppdu counter value that PHY increments for every PPDU
105 			received. The counter value wraps around
106 			<legal all>
107 */
108 
109 #define RECEIVE_USER_INFO_PHY_PPDU_ID_OFFSET                                        0x00000000
110 #define RECEIVE_USER_INFO_PHY_PPDU_ID_LSB                                           0
111 #define RECEIVE_USER_INFO_PHY_PPDU_ID_MSB                                           15
112 #define RECEIVE_USER_INFO_PHY_PPDU_ID_MASK                                          0x0000ffff
113 
114 
115 /* Description		USER_RSSI
116 
117 			RSSI for this user
118 			Frequency domain RSSI measurement for this user. Based on
119 			 the channel estimate.
120 
121 			<legal all>
122 */
123 
124 #define RECEIVE_USER_INFO_USER_RSSI_OFFSET                                          0x00000000
125 #define RECEIVE_USER_INFO_USER_RSSI_LSB                                             16
126 #define RECEIVE_USER_INFO_USER_RSSI_MSB                                             23
127 #define RECEIVE_USER_INFO_USER_RSSI_MASK                                            0x00ff0000
128 
129 
130 /* Description		PKT_TYPE
131 
132 			Packet type:
133 
134 			<enum 0 dot11a>802.11a PPDU type
135 			<enum 1 dot11b>802.11b PPDU type
136 			<enum 2 dot11n_mm>802.11n Mixed Mode PPDU type
137 			<enum 3 dot11ac>802.11ac PPDU type
138 			<enum 4 dot11ax>802.11ax PPDU type
139 			<enum 5 dot11ba>802.11ba (WUR) PPDU type
140 			<enum 6 dot11be>802.11be PPDU type
141 			<enum 7 dot11az>802.11az (ranging) PPDU type
142 			<enum 8 dot11n_gf>802.11n Green Field PPDU type (unsupported
143 			 & aborted)
144 */
145 
146 #define RECEIVE_USER_INFO_PKT_TYPE_OFFSET                                           0x00000000
147 #define RECEIVE_USER_INFO_PKT_TYPE_LSB                                              24
148 #define RECEIVE_USER_INFO_PKT_TYPE_MSB                                              27
149 #define RECEIVE_USER_INFO_PKT_TYPE_MASK                                             0x0f000000
150 
151 
152 /* Description		STBC
153 
154 			When set, use STBC transmission rates
155 */
156 
157 #define RECEIVE_USER_INFO_STBC_OFFSET                                               0x00000000
158 #define RECEIVE_USER_INFO_STBC_LSB                                                  28
159 #define RECEIVE_USER_INFO_STBC_MSB                                                  28
160 #define RECEIVE_USER_INFO_STBC_MASK                                                 0x10000000
161 
162 
163 /* Description		RECEPTION_TYPE
164 
165 			Indicates what type of reception this is.
166 			<enum 0     reception_type_SU > Basic SU reception (not
167 			part of OFDMA or MU-MIMO)
168 			<enum 1     reception_type_MU_MIMO > This is related to
169 			DL type of reception
170 			<enum 2     reception_type_MU_OFDMA >  This is related to
171 			 DL type of reception
172 			<enum 3     reception_type_MU_OFDMA_MIMO >  This is related
173 			 to DL type of reception
174 			<enum 4     reception_type_UL_MU_MIMO > This is related
175 			to UL type of reception
176 			<enum 5     reception_type_UL_MU_OFDMA >  This is related
177 			 to UL type of reception
178 			<enum 6     reception_type_UL_MU_OFDMA_MIMO >  This is related
179 			 to UL type of reception
180 
181 			<legal 0-6>
182 */
183 
184 #define RECEIVE_USER_INFO_RECEPTION_TYPE_OFFSET                                     0x00000000
185 #define RECEIVE_USER_INFO_RECEPTION_TYPE_LSB                                        29
186 #define RECEIVE_USER_INFO_RECEPTION_TYPE_MSB                                        31
187 #define RECEIVE_USER_INFO_RECEPTION_TYPE_MASK                                       0xe0000000
188 
189 
190 /* Description		RATE_MCS
191 
192 			For details, refer to  MCS_TYPE description
193 			<legal all>
194 */
195 
196 #define RECEIVE_USER_INFO_RATE_MCS_OFFSET                                           0x00000004
197 #define RECEIVE_USER_INFO_RATE_MCS_LSB                                              0
198 #define RECEIVE_USER_INFO_RATE_MCS_MSB                                              3
199 #define RECEIVE_USER_INFO_RATE_MCS_MASK                                             0x0000000f
200 
201 
202 /* Description		SGI
203 
204 			Field only valid when pkt type is HT, VHT or HE.
205 
206 			<enum 0     gi_0_8_us > Legacy normal GI.  Can also be used
207 			 for HE
208 			<enum 1     gi_0_4_us > Legacy short GI.  Can also be used
209 			 for HE
210 			<enum 2     gi_1_6_us > HE related GI
211 			<enum 3     gi_3_2_us > HE related GI
212 			<legal 0 - 3>
213 */
214 
215 #define RECEIVE_USER_INFO_SGI_OFFSET                                                0x00000004
216 #define RECEIVE_USER_INFO_SGI_LSB                                                   4
217 #define RECEIVE_USER_INFO_SGI_MSB                                                   5
218 #define RECEIVE_USER_INFO_SGI_MASK                                                  0x00000030
219 
220 
221 /* Description		HE_RANGING_NDP
222 
223 			Set to 1 for expected HE TB ranging NDP Rx in response to
224 			 sounding/secure sounding ranging Trigger Tx
225 
226 			<legal all>
227 */
228 
229 #define RECEIVE_USER_INFO_HE_RANGING_NDP_OFFSET                                     0x00000004
230 #define RECEIVE_USER_INFO_HE_RANGING_NDP_LSB                                        6
231 #define RECEIVE_USER_INFO_HE_RANGING_NDP_MSB                                        6
232 #define RECEIVE_USER_INFO_HE_RANGING_NDP_MASK                                       0x00000040
233 
234 
235 /* Description		RESERVED_1A
236 
237 			<legal 0>
238 */
239 
240 #define RECEIVE_USER_INFO_RESERVED_1A_OFFSET                                        0x00000004
241 #define RECEIVE_USER_INFO_RESERVED_1A_LSB                                           7
242 #define RECEIVE_USER_INFO_RESERVED_1A_MSB                                           7
243 #define RECEIVE_USER_INFO_RESERVED_1A_MASK                                          0x00000080
244 
245 
246 /* Description		MIMO_SS_BITMAP
247 
248 			Bitmap, with each bit indicating if the related spatial
249 			stream is used for this STA
250 			LSB related to SS 0
251 
252 			0: spatial stream not used for this reception
253 			1: spatial stream used for this reception
254 
255 			<legal all>
256 */
257 
258 #define RECEIVE_USER_INFO_MIMO_SS_BITMAP_OFFSET                                     0x00000004
259 #define RECEIVE_USER_INFO_MIMO_SS_BITMAP_LSB                                        8
260 #define RECEIVE_USER_INFO_MIMO_SS_BITMAP_MSB                                        15
261 #define RECEIVE_USER_INFO_MIMO_SS_BITMAP_MASK                                       0x0000ff00
262 
263 
264 /* Description		RECEIVE_BANDWIDTH
265 
266 			Full receive Bandwidth
267 
268 			<enum 0 20_mhz>20 Mhz BW
269 			<enum 1 40_mhz>40 Mhz BW
270 			<enum 2 80_mhz>80 Mhz BW
271 			<enum 3 160_mhz>160 Mhz BW
272 			<enum 4 320_mhz>320 Mhz BW
273 			<enum 5 240_mhz>240 Mhz BW
274 */
275 
276 #define RECEIVE_USER_INFO_RECEIVE_BANDWIDTH_OFFSET                                  0x00000004
277 #define RECEIVE_USER_INFO_RECEIVE_BANDWIDTH_LSB                                     16
278 #define RECEIVE_USER_INFO_RECEIVE_BANDWIDTH_MSB                                     18
279 #define RECEIVE_USER_INFO_RECEIVE_BANDWIDTH_MASK                                    0x00070000
280 
281 
282 /* Description		RESERVED_1B
283 
284 			<legal 0>
285 */
286 
287 #define RECEIVE_USER_INFO_RESERVED_1B_OFFSET                                        0x00000004
288 #define RECEIVE_USER_INFO_RESERVED_1B_LSB                                           19
289 #define RECEIVE_USER_INFO_RESERVED_1B_MSB                                           23
290 #define RECEIVE_USER_INFO_RESERVED_1B_MASK                                          0x00f80000
291 
292 
293 /* Description		DL_OFDMA_USER_INDEX
294 
295 			Field only valid in the of DL MU OFDMA reception
296 
297 			The user number within the RU_allocation.
298 
299 			This is needed for SW to determine the exact RU position
300 			 within the reception.
301 			<legal all>
302 */
303 
304 #define RECEIVE_USER_INFO_DL_OFDMA_USER_INDEX_OFFSET                                0x00000004
305 #define RECEIVE_USER_INFO_DL_OFDMA_USER_INDEX_LSB                                   24
306 #define RECEIVE_USER_INFO_DL_OFDMA_USER_INDEX_MSB                                   31
307 #define RECEIVE_USER_INFO_DL_OFDMA_USER_INDEX_MASK                                  0xff000000
308 
309 
310 /* Description		DL_OFDMA_CONTENT_CHANNEL
311 
312 			Field only valid in the of DL MU OFDMA/MIMO reception
313 
314 			In case of DL MU reception, this field indicates the content
315 			 channel number where PHY found the RU information for this
316 			 user
317 
318 			This is needed for SW to determine the exact RU position
319 			 within the reception.
320 
321 			<enum 0      content_channel_1>
322 			<enum 1      content_channel_2>
323 
324 			<legal all>
325 */
326 
327 #define RECEIVE_USER_INFO_DL_OFDMA_CONTENT_CHANNEL_OFFSET                           0x00000008
328 #define RECEIVE_USER_INFO_DL_OFDMA_CONTENT_CHANNEL_LSB                              0
329 #define RECEIVE_USER_INFO_DL_OFDMA_CONTENT_CHANNEL_MSB                              0
330 #define RECEIVE_USER_INFO_DL_OFDMA_CONTENT_CHANNEL_MASK                             0x00000001
331 
332 
333 /* Description		RESERVED_2A
334 
335 			<legal 0>
336 */
337 
338 #define RECEIVE_USER_INFO_RESERVED_2A_OFFSET                                        0x00000008
339 #define RECEIVE_USER_INFO_RESERVED_2A_LSB                                           1
340 #define RECEIVE_USER_INFO_RESERVED_2A_MSB                                           7
341 #define RECEIVE_USER_INFO_RESERVED_2A_MASK                                          0x000000fe
342 
343 
344 /* Description		NSS
345 
346 			Field only valid in case of Uplink_receive_type == mimo_only
347 			 OR ofdma_mimo
348 
349 			Number of Spatial Streams occupied by the User
350 
351 			<enum 0 1_spatial_stream>Single spatial stream
352 			<enum 1 2_spatial_streams>2 spatial streams
353 			<enum 2 3_spatial_streams>3 spatial streams
354 			<enum 3 4_spatial_streams>4 spatial streams
355 			<enum 4 5_spatial_streams>5 spatial streams
356 			<enum 5 6_spatial_streams>6 spatial streams
357 			<enum 6 7_spatial_streams>7 spatial streams
358 			<enum 7 8_spatial_streams>8 spatial streams
359 */
360 
361 #define RECEIVE_USER_INFO_NSS_OFFSET                                                0x00000008
362 #define RECEIVE_USER_INFO_NSS_LSB                                                   8
363 #define RECEIVE_USER_INFO_NSS_MSB                                                   10
364 #define RECEIVE_USER_INFO_NSS_MASK                                                  0x00000700
365 
366 
367 /* Description		STREAM_OFFSET
368 
369 			Field only valid in case of Uplink_receive_type == mimo_only
370 			 OR ofdma_mimo
371 
372 			Stream Offset from which the User occupies the Streams
373 
374 			Note MAC:
375 			directly from pdg_fes_setup, based on BW
376 */
377 
378 #define RECEIVE_USER_INFO_STREAM_OFFSET_OFFSET                                      0x00000008
379 #define RECEIVE_USER_INFO_STREAM_OFFSET_LSB                                         11
380 #define RECEIVE_USER_INFO_STREAM_OFFSET_MSB                                         13
381 #define RECEIVE_USER_INFO_STREAM_OFFSET_MASK                                        0x00003800
382 
383 
384 /* Description		STA_DCM
385 
386 			Indicates whether dual sub-carrier modulation is applied
387 
388 			0: No DCM
389 			1:DCM
390 			<legal all>
391 */
392 
393 #define RECEIVE_USER_INFO_STA_DCM_OFFSET                                            0x00000008
394 #define RECEIVE_USER_INFO_STA_DCM_LSB                                               14
395 #define RECEIVE_USER_INFO_STA_DCM_MSB                                               14
396 #define RECEIVE_USER_INFO_STA_DCM_MASK                                              0x00004000
397 
398 
399 /* Description		LDPC
400 
401 			When set, use LDPC transmission rates were used.
402 			<legal all>
403 */
404 
405 #define RECEIVE_USER_INFO_LDPC_OFFSET                                               0x00000008
406 #define RECEIVE_USER_INFO_LDPC_LSB                                                  15
407 #define RECEIVE_USER_INFO_LDPC_MSB                                                  15
408 #define RECEIVE_USER_INFO_LDPC_MASK                                                 0x00008000
409 
410 
411 /* Description		RU_TYPE_80_0
412 
413 			Indicates the size of the RU in the first 80 MHz sub-band
414 
415 			<enum 0 RU_26_per80>
416 			<enum 1 RU_52_per80>
417 			<enum 2 RU_78_per80>
418 			<enum 3 RU_106_per80>
419 			<enum 4 RU_132_per80>
420 			<enum 5 RU_242_per80>
421 			<enum 6 RU_484_per80>
422 			<enum 7 RU_726_per80>
423 			<enum 8 RU_996_per80>
424 			<enum 9 RU_996x2>
425 			<enum 10 RU_996x3>
426 			<enum 11 RU_996x4>
427 			<enum 12 RU_rsvd0> DO NOT USE
428 			<enum 13 RU_rsvd1> DO NOT USE
429 			<enum 14 RU_rsvd2> DO NOT USE
430 			<enum 15 RU_NONE> No RUs in this 80 MHz
431 			<legal 0-15>
432 */
433 
434 #define RECEIVE_USER_INFO_RU_TYPE_80_0_OFFSET                                       0x00000008
435 #define RECEIVE_USER_INFO_RU_TYPE_80_0_LSB                                          16
436 #define RECEIVE_USER_INFO_RU_TYPE_80_0_MSB                                          19
437 #define RECEIVE_USER_INFO_RU_TYPE_80_0_MASK                                         0x000f0000
438 
439 
440 /* Description		RU_TYPE_80_1
441 
442 			Indicates the size of the RU in the second 80 MHz sub-band
443 
444 			<enum 0 RU_26_per80>
445 			<enum 1 RU_52_per80>
446 			<enum 2 RU_78_per80>
447 			<enum 3 RU_106_per80>
448 			<enum 4 RU_132_per80>
449 			<enum 5 RU_242_per80>
450 			<enum 6 RU_484_per80>
451 			<enum 7 RU_726_per80>
452 			<enum 8 RU_996_per80>
453 			<enum 9 RU_996x2>
454 			<enum 10 RU_996x3>
455 			<enum 11 RU_996x4>
456 			<enum 12 RU_rsvd0> DO NOT USE
457 			<enum 13 RU_rsvd1> DO NOT USE
458 			<enum 14 RU_rsvd2> DO NOT USE
459 			<enum 15 RU_NONE> No RUs in this 80 MHz
460 			<legal 0-15>
461 */
462 
463 #define RECEIVE_USER_INFO_RU_TYPE_80_1_OFFSET                                       0x00000008
464 #define RECEIVE_USER_INFO_RU_TYPE_80_1_LSB                                          20
465 #define RECEIVE_USER_INFO_RU_TYPE_80_1_MSB                                          23
466 #define RECEIVE_USER_INFO_RU_TYPE_80_1_MASK                                         0x00f00000
467 
468 
469 /* Description		RU_TYPE_80_2
470 
471 			Indicates the size of the RU in the third 80 MHz sub-band
472 
473 			<enum 0 RU_26_per80>
474 			<enum 1 RU_52_per80>
475 			<enum 2 RU_78_per80>
476 			<enum 3 RU_106_per80>
477 			<enum 4 RU_132_per80>
478 			<enum 5 RU_242_per80>
479 			<enum 6 RU_484_per80>
480 			<enum 7 RU_726_per80>
481 			<enum 8 RU_996_per80>
482 			<enum 9 RU_996x2>
483 			<enum 10 RU_996x3>
484 			<enum 11 RU_996x4>
485 			<enum 12 RU_rsvd0> DO NOT USE
486 			<enum 13 RU_rsvd1> DO NOT USE
487 			<enum 14 RU_rsvd2> DO NOT USE
488 			<enum 15 RU_NONE> No RUs in this 80 MHz
489 			<legal 0-15>
490 */
491 
492 #define RECEIVE_USER_INFO_RU_TYPE_80_2_OFFSET                                       0x00000008
493 #define RECEIVE_USER_INFO_RU_TYPE_80_2_LSB                                          24
494 #define RECEIVE_USER_INFO_RU_TYPE_80_2_MSB                                          27
495 #define RECEIVE_USER_INFO_RU_TYPE_80_2_MASK                                         0x0f000000
496 
497 
498 /* Description		RU_TYPE_80_3
499 
500 			Indicates the size of the RU in the fourth 80 MHz sub-band
501 
502 			<enum 0 RU_26_per80>
503 			<enum 1 RU_52_per80>
504 			<enum 2 RU_78_per80>
505 			<enum 3 RU_106_per80>
506 			<enum 4 RU_132_per80>
507 			<enum 5 RU_242_per80>
508 			<enum 6 RU_484_per80>
509 			<enum 7 RU_726_per80>
510 			<enum 8 RU_996_per80>
511 			<enum 9 RU_996x2>
512 			<enum 10 RU_996x3>
513 			<enum 11 RU_996x4>
514 			<enum 12 RU_rsvd0> DO NOT USE
515 			<enum 13 RU_rsvd1> DO NOT USE
516 			<enum 14 RU_rsvd2> DO NOT USE
517 			<enum 15 RU_NONE> No RUs in this 80 MHz
518 			<legal 0-15>
519 */
520 
521 #define RECEIVE_USER_INFO_RU_TYPE_80_3_OFFSET                                       0x00000008
522 #define RECEIVE_USER_INFO_RU_TYPE_80_3_LSB                                          28
523 #define RECEIVE_USER_INFO_RU_TYPE_80_3_MSB                                          31
524 #define RECEIVE_USER_INFO_RU_TYPE_80_3_MASK                                         0xf0000000
525 
526 
527 /* Description		RU_START_INDEX_80_0
528 
529 			RU index number to which User is assigned in the first 80
530 			 MHz
531 			RU numbering is over the entire BW, starting from 0 and
532 			in increasing frequency order and not primary-secondary
533 			order
534 			<legal 0-36>
535 */
536 
537 #define RECEIVE_USER_INFO_RU_START_INDEX_80_0_OFFSET                                0x0000000c
538 #define RECEIVE_USER_INFO_RU_START_INDEX_80_0_LSB                                   0
539 #define RECEIVE_USER_INFO_RU_START_INDEX_80_0_MSB                                   5
540 #define RECEIVE_USER_INFO_RU_START_INDEX_80_0_MASK                                  0x0000003f
541 
542 
543 /* Description		RESERVED_3A
544 
545 			<legal 0>
546 */
547 
548 #define RECEIVE_USER_INFO_RESERVED_3A_OFFSET                                        0x0000000c
549 #define RECEIVE_USER_INFO_RESERVED_3A_LSB                                           6
550 #define RECEIVE_USER_INFO_RESERVED_3A_MSB                                           7
551 #define RECEIVE_USER_INFO_RESERVED_3A_MASK                                          0x000000c0
552 
553 
554 /* Description		RU_START_INDEX_80_1
555 
556 			RU index number to which User is assigned in the second
557 			80 MHz
558 			RU numbering is over the entire BW, starting from 0 and
559 			in increasing frequency order and not primary-secondary
560 			order
561 			<legal 0-36>
562 */
563 
564 #define RECEIVE_USER_INFO_RU_START_INDEX_80_1_OFFSET                                0x0000000c
565 #define RECEIVE_USER_INFO_RU_START_INDEX_80_1_LSB                                   8
566 #define RECEIVE_USER_INFO_RU_START_INDEX_80_1_MSB                                   13
567 #define RECEIVE_USER_INFO_RU_START_INDEX_80_1_MASK                                  0x00003f00
568 
569 
570 /* Description		RESERVED_3B
571 
572 			<legal 0>
573 */
574 
575 #define RECEIVE_USER_INFO_RESERVED_3B_OFFSET                                        0x0000000c
576 #define RECEIVE_USER_INFO_RESERVED_3B_LSB                                           14
577 #define RECEIVE_USER_INFO_RESERVED_3B_MSB                                           15
578 #define RECEIVE_USER_INFO_RESERVED_3B_MASK                                          0x0000c000
579 
580 
581 /* Description		RU_START_INDEX_80_2
582 
583 			RU index number to which User is assigned in the third 80
584 			 MHz
585 			RU numbering is over the entire BW, starting from 0 and
586 			in increasing frequency order and not primary-secondary
587 			order
588 			<legal 0-36>
589 */
590 
591 #define RECEIVE_USER_INFO_RU_START_INDEX_80_2_OFFSET                                0x0000000c
592 #define RECEIVE_USER_INFO_RU_START_INDEX_80_2_LSB                                   16
593 #define RECEIVE_USER_INFO_RU_START_INDEX_80_2_MSB                                   21
594 #define RECEIVE_USER_INFO_RU_START_INDEX_80_2_MASK                                  0x003f0000
595 
596 
597 /* Description		RESERVED_3C
598 
599 			<legal 0>
600 */
601 
602 #define RECEIVE_USER_INFO_RESERVED_3C_OFFSET                                        0x0000000c
603 #define RECEIVE_USER_INFO_RESERVED_3C_LSB                                           22
604 #define RECEIVE_USER_INFO_RESERVED_3C_MSB                                           23
605 #define RECEIVE_USER_INFO_RESERVED_3C_MASK                                          0x00c00000
606 
607 
608 /* Description		RU_START_INDEX_80_3
609 
610 			RU index number to which User is assigned in the fourth
611 			80 MHz
612 			RU numbering is over the entire BW, starting from 0 and
613 			in increasing frequency order and not primary-secondary
614 			order
615 			<legal 0-36>
616 */
617 
618 #define RECEIVE_USER_INFO_RU_START_INDEX_80_3_OFFSET                                0x0000000c
619 #define RECEIVE_USER_INFO_RU_START_INDEX_80_3_LSB                                   24
620 #define RECEIVE_USER_INFO_RU_START_INDEX_80_3_MSB                                   29
621 #define RECEIVE_USER_INFO_RU_START_INDEX_80_3_MASK                                  0x3f000000
622 
623 
624 /* Description		RESERVED_3D
625 
626 			<legal 0>
627 */
628 
629 #define RECEIVE_USER_INFO_RESERVED_3D_OFFSET                                        0x0000000c
630 #define RECEIVE_USER_INFO_RESERVED_3D_LSB                                           30
631 #define RECEIVE_USER_INFO_RESERVED_3D_MSB                                           31
632 #define RECEIVE_USER_INFO_RESERVED_3D_MASK                                          0xc0000000
633 
634 
635 /* Description		USER_FD_RSSI_SEG0
636 
637 			Frequency domain RSSI measurement for the lowest 80 MHz
638 			subband of this user, per spatial stream
639 			[7:0]: first spatial stream
640 			...
641 			[31:24]: fourth spatial stream
642 
643 			<legal all>
644 */
645 
646 #define RECEIVE_USER_INFO_USER_FD_RSSI_SEG0_OFFSET                                  0x00000010
647 #define RECEIVE_USER_INFO_USER_FD_RSSI_SEG0_LSB                                     0
648 #define RECEIVE_USER_INFO_USER_FD_RSSI_SEG0_MSB                                     31
649 #define RECEIVE_USER_INFO_USER_FD_RSSI_SEG0_MASK                                    0xffffffff
650 
651 
652 /* Description		USER_FD_RSSI_SEG1
653 
654 			Frequency domain RSSI measurement for the second lowest
655 			80 MHz subband of this user, per spatial stream
656 			[7:0]: first spatial stream
657 			...
658 			[31:24]: fourth spatial stream
659 
660 			<legal all>
661 */
662 
663 #define RECEIVE_USER_INFO_USER_FD_RSSI_SEG1_OFFSET                                  0x00000014
664 #define RECEIVE_USER_INFO_USER_FD_RSSI_SEG1_LSB                                     0
665 #define RECEIVE_USER_INFO_USER_FD_RSSI_SEG1_MSB                                     31
666 #define RECEIVE_USER_INFO_USER_FD_RSSI_SEG1_MASK                                    0xffffffff
667 
668 
669 /* Description		USER_FD_RSSI_SEG2
670 
671 			Frequency domain RSSI measurement for the third lowest 80
672 			 MHz subband of this user, per spatial stream
673 			[7:0]: first spatial stream
674 			...
675 			[31:24]: fourth spatial stream
676 
677 			<legal all>
678 */
679 
680 #define RECEIVE_USER_INFO_USER_FD_RSSI_SEG2_OFFSET                                  0x00000018
681 #define RECEIVE_USER_INFO_USER_FD_RSSI_SEG2_LSB                                     0
682 #define RECEIVE_USER_INFO_USER_FD_RSSI_SEG2_MSB                                     31
683 #define RECEIVE_USER_INFO_USER_FD_RSSI_SEG2_MASK                                    0xffffffff
684 
685 
686 /* Description		USER_FD_RSSI_SEG3
687 
688 			Frequency domain RSSI measurement for the highest 80 MHz
689 			 subband of this user, per spatial stream
690 			[7:0]: first spatial stream
691 			...
692 			[31:24]: fourth spatial stream
693 
694 			<legal all>
695 */
696 
697 #define RECEIVE_USER_INFO_USER_FD_RSSI_SEG3_OFFSET                                  0x0000001c
698 #define RECEIVE_USER_INFO_USER_FD_RSSI_SEG3_LSB                                     0
699 #define RECEIVE_USER_INFO_USER_FD_RSSI_SEG3_MSB                                     31
700 #define RECEIVE_USER_INFO_USER_FD_RSSI_SEG3_MASK                                    0xffffffff
701 
702 
703 
704 #endif   // RECEIVE_USER_INFO
705