xref: /wlan-driver/fw-api/hw/qca5332/phyrx_vht_sig_a.h (revision 5113495b16420b49004c444715d2daae2066e7dc)
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 _PHYRX_VHT_SIG_A_H_
27 #define _PHYRX_VHT_SIG_A_H_
28 #if !defined(__ASSEMBLER__)
29 #endif
30 
31 #include "vht_sig_a_info.h"
32 #define NUM_OF_DWORDS_PHYRX_VHT_SIG_A 2
33 
34 #define NUM_OF_QWORDS_PHYRX_VHT_SIG_A 1
35 
36 
37 struct phyrx_vht_sig_a {
38 #ifndef WIFI_BIT_ORDER_BIG_ENDIAN
39              struct   vht_sig_a_info                                            phyrx_vht_sig_a_info_details;
40 #else
41              struct   vht_sig_a_info                                            phyrx_vht_sig_a_info_details;
42 #endif
43 };
44 
45 
46 /* Description		PHYRX_VHT_SIG_A_INFO_DETAILS
47 
48 			See detailed description of the STRUCT
49 */
50 
51 
52 /* Description		BANDWIDTH
53 
54 			Packet bandwidth
55 
56 			<enum 0    20_MHZ_11AC>
57 			<enum 1    40_MHZ_11AC>
58 			<enum 2    80_MHZ_11AC>
59 			<enum 3    160_MHZ_11AC>
60 
61 			<legal 0-3>
62 */
63 
64 #define PHYRX_VHT_SIG_A_PHYRX_VHT_SIG_A_INFO_DETAILS_BANDWIDTH_OFFSET               0x0000000000000000
65 #define PHYRX_VHT_SIG_A_PHYRX_VHT_SIG_A_INFO_DETAILS_BANDWIDTH_LSB                  0
66 #define PHYRX_VHT_SIG_A_PHYRX_VHT_SIG_A_INFO_DETAILS_BANDWIDTH_MSB                  1
67 #define PHYRX_VHT_SIG_A_PHYRX_VHT_SIG_A_INFO_DETAILS_BANDWIDTH_MASK                 0x0000000000000003
68 
69 
70 /* Description		VHTA_RESERVED_0
71 
72 			Reserved.  Set to 1 by MAC, PHY should ignore
73 			<legal 1>
74 */
75 
76 #define PHYRX_VHT_SIG_A_PHYRX_VHT_SIG_A_INFO_DETAILS_VHTA_RESERVED_0_OFFSET         0x0000000000000000
77 #define PHYRX_VHT_SIG_A_PHYRX_VHT_SIG_A_INFO_DETAILS_VHTA_RESERVED_0_LSB            2
78 #define PHYRX_VHT_SIG_A_PHYRX_VHT_SIG_A_INFO_DETAILS_VHTA_RESERVED_0_MSB            2
79 #define PHYRX_VHT_SIG_A_PHYRX_VHT_SIG_A_INFO_DETAILS_VHTA_RESERVED_0_MASK           0x0000000000000004
80 
81 
82 /* Description		STBC
83 
84 			Space time block coding:
85 			<enum 0     stbc_disabled>  Indicates STBC is disabled
86 			<enum 1     stbc_enabled>  Indicates STBC is enabled on
87 			all streams
88 			<legal 0-1>
89 */
90 
91 #define PHYRX_VHT_SIG_A_PHYRX_VHT_SIG_A_INFO_DETAILS_STBC_OFFSET                    0x0000000000000000
92 #define PHYRX_VHT_SIG_A_PHYRX_VHT_SIG_A_INFO_DETAILS_STBC_LSB                       3
93 #define PHYRX_VHT_SIG_A_PHYRX_VHT_SIG_A_INFO_DETAILS_STBC_MSB                       3
94 #define PHYRX_VHT_SIG_A_PHYRX_VHT_SIG_A_INFO_DETAILS_STBC_MASK                      0x0000000000000008
95 
96 
97 /* Description		GROUP_ID
98 
99 			In a SU VHT PPDU, if the PPDU carries MPDU(s) addressed
100 			to an AP or to a mesh STA, the Group ID field is set to
101 			0, otherwise it is set to 63.  In an NDP PPDU the Group
102 			ID is set according to IEEE 802.11ac_D1.0 Section 9.30.6
103 			 (Transmission of a VHT NDP). For a MU-MIMO PPDU the Group
104 			 ID is set as in 802.11ac_D1.0 Section 22.3.11.3 (Group
105 			ID).  <legal all>
106 */
107 
108 #define PHYRX_VHT_SIG_A_PHYRX_VHT_SIG_A_INFO_DETAILS_GROUP_ID_OFFSET                0x0000000000000000
109 #define PHYRX_VHT_SIG_A_PHYRX_VHT_SIG_A_INFO_DETAILS_GROUP_ID_LSB                   4
110 #define PHYRX_VHT_SIG_A_PHYRX_VHT_SIG_A_INFO_DETAILS_GROUP_ID_MSB                   9
111 #define PHYRX_VHT_SIG_A_PHYRX_VHT_SIG_A_INFO_DETAILS_GROUP_ID_MASK                  0x00000000000003f0
112 
113 
114 /* Description		N_STS
115 
116 			For MU:
117 			3 bits/user with maximum of 4 users (user u uses
118 			vht_sig_a[0][10+3u] - vht_sig_a[0][12+3u]), u = 0, 1, 2,
119 			3)
120 			Set to 0 for 0 space time streams
121 			Set to 1 for 1 space time stream
122 			Set to 2 for 2 space time streams
123 			Set to 3 for 3 space time streams
124 			Set to 4 for 4 space time streams (not supported in Wifi
125 			 3.0)
126 			Values 5-7 are reserved
127 			In this field, references to user "u" should be interpreted
128 			 as MU user "u". As described in the previous chapter in
129 			 this document (see chapter on User number), the MU user
130 			 value for a given client is defined for each MU group that
131 			 the client participates in. The MU user number is not related
132 			 to the internal user number that is used within the BFer.
133 
134 
135 
136 			For SU:
137 			vht_sig_a[0][12:10]
138 			Set to 0 for 1 space time stream
139 			Set to 1 for 2 space time streams
140 			Set to 2 for 3 space time streams
141 			Set to 3 for 4 space time streams
142 			Set to 4 for 5 space time streams
143 			Set to 5 for 6 space time streams
144 			Set to 6 for 7 space time streams
145 			Set to 7 for 8 space time streams
146 
147 			vht_sig_a[0][21:13]
148 			Partial AID:
149 			Set to the value of the TXVECTOR parameter PARTIAL_AID.
150 			Partial AID provides an abbreviated indication of the intended
151 			 recipient(s) of the frame (see IEEE802.11ac_D1.0 Section
152 			 9.17a (Partial AID in VHT PPDUs)).
153 			<legal all>
154 */
155 
156 #define PHYRX_VHT_SIG_A_PHYRX_VHT_SIG_A_INFO_DETAILS_N_STS_OFFSET                   0x0000000000000000
157 #define PHYRX_VHT_SIG_A_PHYRX_VHT_SIG_A_INFO_DETAILS_N_STS_LSB                      10
158 #define PHYRX_VHT_SIG_A_PHYRX_VHT_SIG_A_INFO_DETAILS_N_STS_MSB                      21
159 #define PHYRX_VHT_SIG_A_PHYRX_VHT_SIG_A_INFO_DETAILS_N_STS_MASK                     0x00000000003ffc00
160 
161 
162 /* Description		TXOP_PS_NOT_ALLOWED
163 
164 			E_num 0     txop_ps_allowed  Not supported: If set to by
165 			 VHT AP if it allows non-AP VHT STAs in TXOP power save
166 			mode to enter Doze state during a TXOP
167 			<enum 1     no_txop_ps_allowed> Otherwise
168 			<legal 1>
169 */
170 
171 #define PHYRX_VHT_SIG_A_PHYRX_VHT_SIG_A_INFO_DETAILS_TXOP_PS_NOT_ALLOWED_OFFSET     0x0000000000000000
172 #define PHYRX_VHT_SIG_A_PHYRX_VHT_SIG_A_INFO_DETAILS_TXOP_PS_NOT_ALLOWED_LSB        22
173 #define PHYRX_VHT_SIG_A_PHYRX_VHT_SIG_A_INFO_DETAILS_TXOP_PS_NOT_ALLOWED_MSB        22
174 #define PHYRX_VHT_SIG_A_PHYRX_VHT_SIG_A_INFO_DETAILS_TXOP_PS_NOT_ALLOWED_MASK       0x0000000000400000
175 
176 
177 /* Description		VHTA_RESERVED_0B
178 
179 			Reserved: Should be set to 1 by the MAC and ignored by the
180 			 PHY  <legal 1>
181 */
182 
183 #define PHYRX_VHT_SIG_A_PHYRX_VHT_SIG_A_INFO_DETAILS_VHTA_RESERVED_0B_OFFSET        0x0000000000000000
184 #define PHYRX_VHT_SIG_A_PHYRX_VHT_SIG_A_INFO_DETAILS_VHTA_RESERVED_0B_LSB           23
185 #define PHYRX_VHT_SIG_A_PHYRX_VHT_SIG_A_INFO_DETAILS_VHTA_RESERVED_0B_MSB           23
186 #define PHYRX_VHT_SIG_A_PHYRX_VHT_SIG_A_INFO_DETAILS_VHTA_RESERVED_0B_MASK          0x0000000000800000
187 
188 
189 /* Description		RESERVED_0
190 
191 			This field is not part of HT-SIG:
192 			Reserved: Should be set to 0 by the MAC and ignored by the
193 			 PHY <legal 0>
194 */
195 
196 #define PHYRX_VHT_SIG_A_PHYRX_VHT_SIG_A_INFO_DETAILS_RESERVED_0_OFFSET              0x0000000000000000
197 #define PHYRX_VHT_SIG_A_PHYRX_VHT_SIG_A_INFO_DETAILS_RESERVED_0_LSB                 24
198 #define PHYRX_VHT_SIG_A_PHYRX_VHT_SIG_A_INFO_DETAILS_RESERVED_0_MSB                 31
199 #define PHYRX_VHT_SIG_A_PHYRX_VHT_SIG_A_INFO_DETAILS_RESERVED_0_MASK                0x00000000ff000000
200 
201 
202 /* Description		GI_SETTING
203 
204 			<enum 0     normal_gi>  Indicates short guard interval is
205 			 not used in the data field
206 			<enum 1     short_gi>  Indicates short guard interval is
207 			 used in the data field
208 			<enum 3     short_gi_ambiguity>  Indicates short guard interval
209 			 is used in the data field and NSYM mod 10 = 9
210 			NSYM is defined in IEEE802.11ac_D1.0 Section 22.4.3 (TXTIME
211 			 and PSDU_LENGTH calculation).
212 			<legal 0,1,3>
213 */
214 
215 #define PHYRX_VHT_SIG_A_PHYRX_VHT_SIG_A_INFO_DETAILS_GI_SETTING_OFFSET              0x0000000000000000
216 #define PHYRX_VHT_SIG_A_PHYRX_VHT_SIG_A_INFO_DETAILS_GI_SETTING_LSB                 32
217 #define PHYRX_VHT_SIG_A_PHYRX_VHT_SIG_A_INFO_DETAILS_GI_SETTING_MSB                 33
218 #define PHYRX_VHT_SIG_A_PHYRX_VHT_SIG_A_INFO_DETAILS_GI_SETTING_MASK                0x0000000300000000
219 
220 
221 /* Description		SU_MU_CODING
222 
223 			For an SU PPDU, B2 is set to 0 for BCC, 1 for LDPC For an
224 			 MU PPDU, if the MU[0] NSTS field is nonzero(#6773), then
225 			 B2 indicates the coding used for user 0; set to 0 for BCC
226 			 and 1 for LDPC. If the MU[0] NSTS field is 0, then this
227 			 field is reserved and set to 1
228 */
229 
230 #define PHYRX_VHT_SIG_A_PHYRX_VHT_SIG_A_INFO_DETAILS_SU_MU_CODING_OFFSET            0x0000000000000000
231 #define PHYRX_VHT_SIG_A_PHYRX_VHT_SIG_A_INFO_DETAILS_SU_MU_CODING_LSB               34
232 #define PHYRX_VHT_SIG_A_PHYRX_VHT_SIG_A_INFO_DETAILS_SU_MU_CODING_MSB               34
233 #define PHYRX_VHT_SIG_A_PHYRX_VHT_SIG_A_INFO_DETAILS_SU_MU_CODING_MASK              0x0000000400000000
234 
235 
236 /* Description		LDPC_EXTRA_SYMBOL
237 
238 			Set to 1 if the LDPC PPDU encoding process (if an SU PPDU),
239 			or at least one LDPC user's PPDU encoding process (if an
240 			 MU PPDU), results in an extra OFDM symbol (or symbols)
241 			as described in 22.3.10.5.4 (LDPC coding) and 22.3.10.5.5
242 			 (Encoding process for MU PPDUs). Set to 0 otherwise.
243 */
244 
245 #define PHYRX_VHT_SIG_A_PHYRX_VHT_SIG_A_INFO_DETAILS_LDPC_EXTRA_SYMBOL_OFFSET       0x0000000000000000
246 #define PHYRX_VHT_SIG_A_PHYRX_VHT_SIG_A_INFO_DETAILS_LDPC_EXTRA_SYMBOL_LSB          35
247 #define PHYRX_VHT_SIG_A_PHYRX_VHT_SIG_A_INFO_DETAILS_LDPC_EXTRA_SYMBOL_MSB          35
248 #define PHYRX_VHT_SIG_A_PHYRX_VHT_SIG_A_INFO_DETAILS_LDPC_EXTRA_SYMBOL_MASK         0x0000000800000000
249 
250 
251 /* Description		MCS
252 
253 			For SU:
254 			Set to 0 for BPSK 1/2
255 			Set to 1 for QPSK 1/2
256 			Set to 2 for QPSK 3/4
257 			Set to 3 for 16-QAM 1/2
258 			Set to 4 for 16-QAM 3/4
259 			Set to 5 for 64-QAM 2/3
260 			Set to 6 for 64-QAM 3/4
261 			Set to 7 for 64-QAM 5/6
262 			Set to 8 for 256-QAM 3/4
263 			Set to 9 for 256-QAM 5/6
264 			For MU:
265 			If NSTS for user 1 is non-zero, then vht_sig_a[1][4] indicates
266 			 coding for user 1: set to 0 for BCC, 1 for LDPC.
267 			If NSTS for user 1 is set to 0, then vht_sig_a[1][4] is
268 			reserved and set to 1.
269 			If NSTS for user 2 is non-zero, then vht_sig_a[1][5] indicates
270 			 coding for user 2: set to 0 for BCC, 1 for LDPC.
271 			If NSTS for user 2 is set to 0, then vht_sig_a[1][5] is
272 			reserved and set to 1.
273 			If NSTS for user 3 is non-zero, then vht_sig_a[1][6] indicates
274 			 coding for user 3: set to 0 for BCC, 1 for LDPC.
275 			If NSTS for user 3 is set to 0, then vht_sig_a[1][6] is
276 			reserved and set to 1.
277 			vht_sig_a[1][7] is reserved and set to 1
278 			<legal 0-15>
279 */
280 
281 #define PHYRX_VHT_SIG_A_PHYRX_VHT_SIG_A_INFO_DETAILS_MCS_OFFSET                     0x0000000000000000
282 #define PHYRX_VHT_SIG_A_PHYRX_VHT_SIG_A_INFO_DETAILS_MCS_LSB                        36
283 #define PHYRX_VHT_SIG_A_PHYRX_VHT_SIG_A_INFO_DETAILS_MCS_MSB                        39
284 #define PHYRX_VHT_SIG_A_PHYRX_VHT_SIG_A_INFO_DETAILS_MCS_MASK                       0x000000f000000000
285 
286 
287 /* Description		BEAMFORMED
288 
289 			For SU:
290 			Set to 1 if a Beamforming steering matrix is applied to
291 			the waveform in an SU transmission as described in IEEE802.11ac_D1.0
292 			 Section 19.3.11.11.2 (Spatial mapping), set to 0 otherwise.
293 
294 			For MU:
295 			Reserved and set to 1
296 			<legal 0-1>
297 */
298 
299 #define PHYRX_VHT_SIG_A_PHYRX_VHT_SIG_A_INFO_DETAILS_BEAMFORMED_OFFSET              0x0000000000000000
300 #define PHYRX_VHT_SIG_A_PHYRX_VHT_SIG_A_INFO_DETAILS_BEAMFORMED_LSB                 40
301 #define PHYRX_VHT_SIG_A_PHYRX_VHT_SIG_A_INFO_DETAILS_BEAMFORMED_MSB                 40
302 #define PHYRX_VHT_SIG_A_PHYRX_VHT_SIG_A_INFO_DETAILS_BEAMFORMED_MASK                0x0000010000000000
303 
304 
305 /* Description		VHTA_RESERVED_1
306 
307 			Reserved and set to 1.  <legal 1>
308 */
309 
310 #define PHYRX_VHT_SIG_A_PHYRX_VHT_SIG_A_INFO_DETAILS_VHTA_RESERVED_1_OFFSET         0x0000000000000000
311 #define PHYRX_VHT_SIG_A_PHYRX_VHT_SIG_A_INFO_DETAILS_VHTA_RESERVED_1_LSB            41
312 #define PHYRX_VHT_SIG_A_PHYRX_VHT_SIG_A_INFO_DETAILS_VHTA_RESERVED_1_MSB            41
313 #define PHYRX_VHT_SIG_A_PHYRX_VHT_SIG_A_INFO_DETAILS_VHTA_RESERVED_1_MASK           0x0000020000000000
314 
315 
316 /* Description		CRC
317 
318 			CRC calculated as in IEEE802.11ac_D1.0 Section 19.3.9.4.4
319 			 (CRC calculation for HTSIG) with C7 in vht_sig_a[1][10],
320 			etc.  <legal all>
321 */
322 
323 #define PHYRX_VHT_SIG_A_PHYRX_VHT_SIG_A_INFO_DETAILS_CRC_OFFSET                     0x0000000000000000
324 #define PHYRX_VHT_SIG_A_PHYRX_VHT_SIG_A_INFO_DETAILS_CRC_LSB                        42
325 #define PHYRX_VHT_SIG_A_PHYRX_VHT_SIG_A_INFO_DETAILS_CRC_MSB                        49
326 #define PHYRX_VHT_SIG_A_PHYRX_VHT_SIG_A_INFO_DETAILS_CRC_MASK                       0x0003fc0000000000
327 
328 
329 /* Description		TAIL
330 
331 			Used to terminate the trellis of the convolutional decoder.
332 			 Set to 0.  <legal 0>
333 */
334 
335 #define PHYRX_VHT_SIG_A_PHYRX_VHT_SIG_A_INFO_DETAILS_TAIL_OFFSET                    0x0000000000000000
336 #define PHYRX_VHT_SIG_A_PHYRX_VHT_SIG_A_INFO_DETAILS_TAIL_LSB                       50
337 #define PHYRX_VHT_SIG_A_PHYRX_VHT_SIG_A_INFO_DETAILS_TAIL_MSB                       55
338 #define PHYRX_VHT_SIG_A_PHYRX_VHT_SIG_A_INFO_DETAILS_TAIL_MASK                      0x00fc000000000000
339 
340 
341 /* Description		RESERVED_1
342 
343 			This field is not part of HT-SIG:
344 			Reserved: Should be set to 0 by the MAC and ignored by the
345 			 PHY <legal 0>
346 */
347 
348 #define PHYRX_VHT_SIG_A_PHYRX_VHT_SIG_A_INFO_DETAILS_RESERVED_1_OFFSET              0x0000000000000000
349 #define PHYRX_VHT_SIG_A_PHYRX_VHT_SIG_A_INFO_DETAILS_RESERVED_1_LSB                 56
350 #define PHYRX_VHT_SIG_A_PHYRX_VHT_SIG_A_INFO_DETAILS_RESERVED_1_MSB                 62
351 #define PHYRX_VHT_SIG_A_PHYRX_VHT_SIG_A_INFO_DETAILS_RESERVED_1_MASK                0x7f00000000000000
352 
353 
354 /* Description		RX_INTEGRITY_CHECK_PASSED
355 
356 			TX side: Set to 0
357 			RX side: Set to 1 if PHY determines the VHT-SIG-A CRC check
358 			 has passed, else set to 0
359 
360 			<legal all>
361 */
362 
363 #define PHYRX_VHT_SIG_A_PHYRX_VHT_SIG_A_INFO_DETAILS_RX_INTEGRITY_CHECK_PASSED_OFFSET 0x0000000000000000
364 #define PHYRX_VHT_SIG_A_PHYRX_VHT_SIG_A_INFO_DETAILS_RX_INTEGRITY_CHECK_PASSED_LSB  63
365 #define PHYRX_VHT_SIG_A_PHYRX_VHT_SIG_A_INFO_DETAILS_RX_INTEGRITY_CHECK_PASSED_MSB  63
366 #define PHYRX_VHT_SIG_A_PHYRX_VHT_SIG_A_INFO_DETAILS_RX_INTEGRITY_CHECK_PASSED_MASK 0x8000000000000000
367 
368 
369 
370 #endif   // PHYRX_VHT_SIG_A
371