xref: /wlan-driver/fw-api/hw/qcn6432/he_sig_a_mu_dl_info.h (revision 5113495b16420b49004c444715d2daae2066e7dc)
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 _HE_SIG_A_MU_DL_INFO_H_
18 #define _HE_SIG_A_MU_DL_INFO_H_
19 #if !defined(__ASSEMBLER__)
20 #endif
21 
22 #define NUM_OF_DWORDS_HE_SIG_A_MU_DL_INFO 2
23 
24 
25 struct he_sig_a_mu_dl_info {
26 #ifndef WIFI_BIT_ORDER_BIG_ENDIAN
27              uint32_t dl_ul_flag                                              :  1, // [0:0]
28                       mcs_of_sig_b                                            :  3, // [3:1]
29                       dcm_of_sig_b                                            :  1, // [4:4]
30                       bss_color_id                                            :  6, // [10:5]
31                       spatial_reuse                                           :  4, // [14:11]
32                       transmit_bw                                             :  3, // [17:15]
33                       num_sig_b_symbols                                       :  4, // [21:18]
34                       comp_mode_sig_b                                         :  1, // [22:22]
35                       cp_ltf_size                                             :  2, // [24:23]
36                       doppler_indication                                      :  1, // [25:25]
37                       reserved_0a                                             :  6; // [31:26]
38              uint32_t txop_duration                                           :  7, // [6:0]
39                       reserved_1a                                             :  1, // [7:7]
40                       num_ltf_symbols                                         :  3, // [10:8]
41                       ldpc_extra_symbol                                       :  1, // [11:11]
42                       stbc                                                    :  1, // [12:12]
43                       packet_extension_a_factor                               :  2, // [14:13]
44                       packet_extension_pe_disambiguity                        :  1, // [15:15]
45                       crc                                                     :  4, // [19:16]
46                       tail                                                    :  6, // [25:20]
47                       reserved_1b                                             :  5, // [30:26]
48                       rx_integrity_check_passed                               :  1; // [31:31]
49 #else
50              uint32_t reserved_0a                                             :  6, // [31:26]
51                       doppler_indication                                      :  1, // [25:25]
52                       cp_ltf_size                                             :  2, // [24:23]
53                       comp_mode_sig_b                                         :  1, // [22:22]
54                       num_sig_b_symbols                                       :  4, // [21:18]
55                       transmit_bw                                             :  3, // [17:15]
56                       spatial_reuse                                           :  4, // [14:11]
57                       bss_color_id                                            :  6, // [10:5]
58                       dcm_of_sig_b                                            :  1, // [4:4]
59                       mcs_of_sig_b                                            :  3, // [3:1]
60                       dl_ul_flag                                              :  1; // [0:0]
61              uint32_t rx_integrity_check_passed                               :  1, // [31:31]
62                       reserved_1b                                             :  5, // [30:26]
63                       tail                                                    :  6, // [25:20]
64                       crc                                                     :  4, // [19:16]
65                       packet_extension_pe_disambiguity                        :  1, // [15:15]
66                       packet_extension_a_factor                               :  2, // [14:13]
67                       stbc                                                    :  1, // [12:12]
68                       ldpc_extra_symbol                                       :  1, // [11:11]
69                       num_ltf_symbols                                         :  3, // [10:8]
70                       reserved_1a                                             :  1, // [7:7]
71                       txop_duration                                           :  7; // [6:0]
72 #endif
73 };
74 
75 
76 /* Description		DL_UL_FLAG
77 
78 			Differentiates between DL and UL transmission
79 
80 			<enum 0 DL_UL_FLAG_IS_DL_OR_TDLS>
81 			<enum 1 DL_UL_FLAG_IS_UL>
82 			NOTE: This is unsupported for "HE MU" format (including "MU_SU")
83 			<legal all>
84 */
85 
86 #define HE_SIG_A_MU_DL_INFO_DL_UL_FLAG_OFFSET                                       0x00000000
87 #define HE_SIG_A_MU_DL_INFO_DL_UL_FLAG_LSB                                          0
88 #define HE_SIG_A_MU_DL_INFO_DL_UL_FLAG_MSB                                          0
89 #define HE_SIG_A_MU_DL_INFO_DL_UL_FLAG_MASK                                         0x00000001
90 
91 
92 /* Description		MCS_OF_SIG_B
93 
94 			Indicates the MCS of HE-SIG-B
95 			<legal 0-5>
96 */
97 
98 #define HE_SIG_A_MU_DL_INFO_MCS_OF_SIG_B_OFFSET                                     0x00000000
99 #define HE_SIG_A_MU_DL_INFO_MCS_OF_SIG_B_LSB                                        1
100 #define HE_SIG_A_MU_DL_INFO_MCS_OF_SIG_B_MSB                                        3
101 #define HE_SIG_A_MU_DL_INFO_MCS_OF_SIG_B_MASK                                       0x0000000e
102 
103 
104 /* Description		DCM_OF_SIG_B
105 
106 			Indicates whether dual sub-carrier modulation is applied
107 			 to HE-SIG-B
108 
109 			0: No DCM for HE_SIG_B
110 			1: DCM for HE_SIG_B
111 			<legal all>
112 */
113 
114 #define HE_SIG_A_MU_DL_INFO_DCM_OF_SIG_B_OFFSET                                     0x00000000
115 #define HE_SIG_A_MU_DL_INFO_DCM_OF_SIG_B_LSB                                        4
116 #define HE_SIG_A_MU_DL_INFO_DCM_OF_SIG_B_MSB                                        4
117 #define HE_SIG_A_MU_DL_INFO_DCM_OF_SIG_B_MASK                                       0x00000010
118 
119 
120 /* Description		BSS_COLOR_ID
121 
122 			BSS color ID
123 
124 			Field Used by MAC HW
125 			<legal all>
126 */
127 
128 #define HE_SIG_A_MU_DL_INFO_BSS_COLOR_ID_OFFSET                                     0x00000000
129 #define HE_SIG_A_MU_DL_INFO_BSS_COLOR_ID_LSB                                        5
130 #define HE_SIG_A_MU_DL_INFO_BSS_COLOR_ID_MSB                                        10
131 #define HE_SIG_A_MU_DL_INFO_BSS_COLOR_ID_MASK                                       0x000007e0
132 
133 
134 /* Description		SPATIAL_REUSE
135 
136 			Spatial reuse
137 
138 			For 20MHz one SR field corresponding to entire 20MHz (other
139 			 3 fields indicate identical values)
140 			For 40MHz two SR fields for each 20MHz (other 2 fields indicate
141 			 identical values)
142 			For 80MHz four SR fields for each 20MHz
143 			For 160MHz four SR fields for each 40MHz
144 			<legal all>
145 */
146 
147 #define HE_SIG_A_MU_DL_INFO_SPATIAL_REUSE_OFFSET                                    0x00000000
148 #define HE_SIG_A_MU_DL_INFO_SPATIAL_REUSE_LSB                                       11
149 #define HE_SIG_A_MU_DL_INFO_SPATIAL_REUSE_MSB                                       14
150 #define HE_SIG_A_MU_DL_INFO_SPATIAL_REUSE_MASK                                      0x00007800
151 
152 
153 /* Description		TRANSMIT_BW
154 
155 			Bandwidth of the PPDU.
156 
157 			<enum 0 HE_SIG_A_MU_DL_BW20> 20 Mhz
158 			<enum 1 HE_SIG_A_MU_DL_BW40> 40 Mhz
159 			<enum 2 HE_SIG_A_MU_DL_BW80> 80 MHz non-preamble puncturing
160 			 mode
161 			<enum 3 HE_SIG_A_MU_DL_BW160> 160 MHz and 80+80 MHz non-preamble
162 			 puncturing mode
163 			<enum 4 HE_SIG_A_MU_DL_BW80_SEC_20_PUNC> for preamble puncturing
164 			 in 80 MHz, where in the preamble only the secondary 20
165 			MHz is punctured
166 			<enum 5 HE_SIG_A_MU_DL_BW80_20_PUNC_IN_SEC_40> for preamble
167 			 puncturing in 80 MHz, where in the preamble only one of
168 			 the two 20 MHz sub-channels in secondary 40 MHz is punctured.
169 
170 			<enum 6 HE_SIG_A_MU_DL_BW160_SEC_20_PUNC> for preamble puncturing
171 			 in 160 MHz or 80+80 MHz, where in the primary 80 MHz of
172 			 the preamble only the secondary 20 MHz is punctured.
173 			<enum 7 HE_SIG_A_MU_DL_BW160_SEC_40_80_PUNC> for preamble
174 			 puncturing in 160 MHz or 80+80 MHz, where in the primary
175 			 80 MHz of the preamble the primary 40 MHz is present.
176 
177 			On RX side, Field Used by MAC HW
178 			<legal 0-7>
179 */
180 
181 #define HE_SIG_A_MU_DL_INFO_TRANSMIT_BW_OFFSET                                      0x00000000
182 #define HE_SIG_A_MU_DL_INFO_TRANSMIT_BW_LSB                                         15
183 #define HE_SIG_A_MU_DL_INFO_TRANSMIT_BW_MSB                                         17
184 #define HE_SIG_A_MU_DL_INFO_TRANSMIT_BW_MASK                                        0x00038000
185 
186 
187 /* Description		NUM_SIG_B_SYMBOLS
188 
189 			Number of symbols
190 
191 			For OFDMA, the actual number of symbols is 1 larger then
192 			 indicated in this field.
193 
194 			For MU-MIMO this is equal to the number of users - 1: the
195 			 following encoding is used:
196 			1 => 2 users
197 			2 => 3 users
198 			Etc.
199 
200 			<legal all>
201 */
202 
203 #define HE_SIG_A_MU_DL_INFO_NUM_SIG_B_SYMBOLS_OFFSET                                0x00000000
204 #define HE_SIG_A_MU_DL_INFO_NUM_SIG_B_SYMBOLS_LSB                                   18
205 #define HE_SIG_A_MU_DL_INFO_NUM_SIG_B_SYMBOLS_MSB                                   21
206 #define HE_SIG_A_MU_DL_INFO_NUM_SIG_B_SYMBOLS_MASK                                  0x003c0000
207 
208 
209 /* Description		COMP_MODE_SIG_B
210 
211 			Indicates the compression mode of HE-SIG-B
212 
213 			0: Regular [uncomp mode]
214 			1: compressed mode (full-BW MU-MIMO only)
215 			<legal all>
216 */
217 
218 #define HE_SIG_A_MU_DL_INFO_COMP_MODE_SIG_B_OFFSET                                  0x00000000
219 #define HE_SIG_A_MU_DL_INFO_COMP_MODE_SIG_B_LSB                                     22
220 #define HE_SIG_A_MU_DL_INFO_COMP_MODE_SIG_B_MSB                                     22
221 #define HE_SIG_A_MU_DL_INFO_COMP_MODE_SIG_B_MASK                                    0x00400000
222 
223 
224 /* Description		CP_LTF_SIZE
225 
226 			Indicates the CP and HE-LTF type
227 
228 			<enum 0 MU_FourX_LTF_0_8CP> 4xLTF + 0.8 us CP
229 			<enum 1 MU_TwoX_LTF_0_8CP> 2x LTF + 0.8 µs CP
230 			<enum 2 MU_TwoX_LTF_1_6CP> 2x LTF + 1.6 µs CP
231 			<enum 3 MU_FourX_LTF_3_2CP> 4x LTF + 3.2 µs CP
232 
233 			<legal all>
234 */
235 
236 #define HE_SIG_A_MU_DL_INFO_CP_LTF_SIZE_OFFSET                                      0x00000000
237 #define HE_SIG_A_MU_DL_INFO_CP_LTF_SIZE_LSB                                         23
238 #define HE_SIG_A_MU_DL_INFO_CP_LTF_SIZE_MSB                                         24
239 #define HE_SIG_A_MU_DL_INFO_CP_LTF_SIZE_MASK                                        0x01800000
240 
241 
242 /* Description		DOPPLER_INDICATION
243 
244 			0: No Doppler support
245 			1: Doppler support
246 			<legal all>
247 */
248 
249 #define HE_SIG_A_MU_DL_INFO_DOPPLER_INDICATION_OFFSET                               0x00000000
250 #define HE_SIG_A_MU_DL_INFO_DOPPLER_INDICATION_LSB                                  25
251 #define HE_SIG_A_MU_DL_INFO_DOPPLER_INDICATION_MSB                                  25
252 #define HE_SIG_A_MU_DL_INFO_DOPPLER_INDICATION_MASK                                 0x02000000
253 
254 
255 /* Description		RESERVED_0A
256 
257 			<legal 0>
258 */
259 
260 #define HE_SIG_A_MU_DL_INFO_RESERVED_0A_OFFSET                                      0x00000000
261 #define HE_SIG_A_MU_DL_INFO_RESERVED_0A_LSB                                         26
262 #define HE_SIG_A_MU_DL_INFO_RESERVED_0A_MSB                                         31
263 #define HE_SIG_A_MU_DL_INFO_RESERVED_0A_MASK                                        0xfc000000
264 
265 
266 /* Description		TXOP_DURATION
267 
268 			Indicates the remaining time in the current TXOP
269 
270 			Field Used by MAC HW
271 			 <legal all>
272 */
273 
274 #define HE_SIG_A_MU_DL_INFO_TXOP_DURATION_OFFSET                                    0x00000004
275 #define HE_SIG_A_MU_DL_INFO_TXOP_DURATION_LSB                                       0
276 #define HE_SIG_A_MU_DL_INFO_TXOP_DURATION_MSB                                       6
277 #define HE_SIG_A_MU_DL_INFO_TXOP_DURATION_MASK                                      0x0000007f
278 
279 
280 
281 #define HE_SIG_A_MU_DL_INFO_RESERVED_1A_OFFSET                                      0x00000004
282 #define HE_SIG_A_MU_DL_INFO_RESERVED_1A_LSB                                         7
283 #define HE_SIG_A_MU_DL_INFO_RESERVED_1A_MSB                                         7
284 #define HE_SIG_A_MU_DL_INFO_RESERVED_1A_MASK                                        0x00000080
285 
286 
287 /* Description		NUM_LTF_SYMBOLS
288 
289 			Indicates the number of HE-LTF symbols
290 
291 			0: 1 LTF
292 			1: 2 LTFs
293 			2: 4 LTFs
294 			3: 6 LTFs
295 			4: 8 LTFs
296 
297 			<legal all>
298 */
299 
300 #define HE_SIG_A_MU_DL_INFO_NUM_LTF_SYMBOLS_OFFSET                                  0x00000004
301 #define HE_SIG_A_MU_DL_INFO_NUM_LTF_SYMBOLS_LSB                                     8
302 #define HE_SIG_A_MU_DL_INFO_NUM_LTF_SYMBOLS_MSB                                     10
303 #define HE_SIG_A_MU_DL_INFO_NUM_LTF_SYMBOLS_MASK                                    0x00000700
304 
305 
306 /* Description		LDPC_EXTRA_SYMBOL
307 
308 			If LDPC,
309 			  0: LDPC extra symbol not present
310 			  1: LDPC extra symbol present
311 			Else
312 			  Set to 1
313 			<legal all>
314 */
315 
316 #define HE_SIG_A_MU_DL_INFO_LDPC_EXTRA_SYMBOL_OFFSET                                0x00000004
317 #define HE_SIG_A_MU_DL_INFO_LDPC_EXTRA_SYMBOL_LSB                                   11
318 #define HE_SIG_A_MU_DL_INFO_LDPC_EXTRA_SYMBOL_MSB                                   11
319 #define HE_SIG_A_MU_DL_INFO_LDPC_EXTRA_SYMBOL_MASK                                  0x00000800
320 
321 
322 /* Description		STBC
323 
324 			Indicates whether STBC is applied
325 			0: No STBC
326 			1: STBC
327 			<legal all>
328 */
329 
330 #define HE_SIG_A_MU_DL_INFO_STBC_OFFSET                                             0x00000004
331 #define HE_SIG_A_MU_DL_INFO_STBC_LSB                                                12
332 #define HE_SIG_A_MU_DL_INFO_STBC_MSB                                                12
333 #define HE_SIG_A_MU_DL_INFO_STBC_MASK                                               0x00001000
334 
335 
336 /* Description		PACKET_EXTENSION_A_FACTOR
337 
338 			the packet extension duration of the trigger-based PPDU
339 			response with these two bits indicating the "a-factor"
340 
341 			<enum 0 a_factor_4>
342 			<enum 1 a_factor_1>
343 			<enum 2 a_factor_2>
344 			<enum 3 a_factor_3>
345 
346 			<legal all>
347 */
348 
349 #define HE_SIG_A_MU_DL_INFO_PACKET_EXTENSION_A_FACTOR_OFFSET                        0x00000004
350 #define HE_SIG_A_MU_DL_INFO_PACKET_EXTENSION_A_FACTOR_LSB                           13
351 #define HE_SIG_A_MU_DL_INFO_PACKET_EXTENSION_A_FACTOR_MSB                           14
352 #define HE_SIG_A_MU_DL_INFO_PACKET_EXTENSION_A_FACTOR_MASK                          0x00006000
353 
354 
355 /* Description		PACKET_EXTENSION_PE_DISAMBIGUITY
356 
357 			the packet extension duration of the trigger-based PPDU
358 			response with this bit indicating the PE-Disambiguity
359 			<legal all>
360 */
361 
362 #define HE_SIG_A_MU_DL_INFO_PACKET_EXTENSION_PE_DISAMBIGUITY_OFFSET                 0x00000004
363 #define HE_SIG_A_MU_DL_INFO_PACKET_EXTENSION_PE_DISAMBIGUITY_LSB                    15
364 #define HE_SIG_A_MU_DL_INFO_PACKET_EXTENSION_PE_DISAMBIGUITY_MSB                    15
365 #define HE_SIG_A_MU_DL_INFO_PACKET_EXTENSION_PE_DISAMBIGUITY_MASK                   0x00008000
366 
367 
368 /* Description		CRC
369 
370 			CRC for HE-SIG-A contents.
371 			<legal all>
372 */
373 
374 #define HE_SIG_A_MU_DL_INFO_CRC_OFFSET                                              0x00000004
375 #define HE_SIG_A_MU_DL_INFO_CRC_LSB                                                 16
376 #define HE_SIG_A_MU_DL_INFO_CRC_MSB                                                 19
377 #define HE_SIG_A_MU_DL_INFO_CRC_MASK                                                0x000f0000
378 
379 
380 /* Description		TAIL
381 
382 			<legal 0>
383 */
384 
385 #define HE_SIG_A_MU_DL_INFO_TAIL_OFFSET                                             0x00000004
386 #define HE_SIG_A_MU_DL_INFO_TAIL_LSB                                                20
387 #define HE_SIG_A_MU_DL_INFO_TAIL_MSB                                                25
388 #define HE_SIG_A_MU_DL_INFO_TAIL_MASK                                               0x03f00000
389 
390 
391 /* Description		RESERVED_1B
392 
393 			<legal 0>
394 */
395 
396 #define HE_SIG_A_MU_DL_INFO_RESERVED_1B_OFFSET                                      0x00000004
397 #define HE_SIG_A_MU_DL_INFO_RESERVED_1B_LSB                                         26
398 #define HE_SIG_A_MU_DL_INFO_RESERVED_1B_MSB                                         30
399 #define HE_SIG_A_MU_DL_INFO_RESERVED_1B_MASK                                        0x7c000000
400 
401 
402 /* Description		RX_INTEGRITY_CHECK_PASSED
403 
404 			TX side: Set to 0
405 			RX side: Set to 1 if PHY determines the HE-SIG-A CRC check
406 			 has passed, else set to 0
407 
408 			<legal all>
409 */
410 
411 #define HE_SIG_A_MU_DL_INFO_RX_INTEGRITY_CHECK_PASSED_OFFSET                        0x00000004
412 #define HE_SIG_A_MU_DL_INFO_RX_INTEGRITY_CHECK_PASSED_LSB                           31
413 #define HE_SIG_A_MU_DL_INFO_RX_INTEGRITY_CHECK_PASSED_MSB                           31
414 #define HE_SIG_A_MU_DL_INFO_RX_INTEGRITY_CHECK_PASSED_MASK                          0x80000000
415 
416 
417 
418 #endif   // HE_SIG_A_MU_DL_INFO
419