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