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 _MACTX_U_SIG_EHT_SU_MU_H_
27  #define _MACTX_U_SIG_EHT_SU_MU_H_
28  #if !defined(__ASSEMBLER__)
29  #endif
30  
31  #include "u_sig_eht_su_mu_info.h"
32  #define NUM_OF_DWORDS_MACTX_U_SIG_EHT_SU_MU 2
33  
34  #define NUM_OF_QWORDS_MACTX_U_SIG_EHT_SU_MU 1
35  
36  
37  struct mactx_u_sig_eht_su_mu {
38  #ifndef WIFI_BIT_ORDER_BIG_ENDIAN
39               struct   u_sig_eht_su_mu_info                                      mactx_u_sig_eht_su_mu_info_details;
40  #else
41               struct   u_sig_eht_su_mu_info                                      mactx_u_sig_eht_su_mu_info_details;
42  #endif
43  };
44  
45  
46  /* Description		MACTX_U_SIG_EHT_SU_MU_INFO_DETAILS
47  
48  			See detailed description of the STRUCT
49  */
50  
51  
52  /* Description		PHY_VERSION
53  
54  			<enum 0 U_SIG_VERSION_EHT>
55  			Values 1 - 7 are reserved.
56  			<legal 0
57  */
58  
59  #define MACTX_U_SIG_EHT_SU_MU_MACTX_U_SIG_EHT_SU_MU_INFO_DETAILS_PHY_VERSION_OFFSET 0x0000000000000000
60  #define MACTX_U_SIG_EHT_SU_MU_MACTX_U_SIG_EHT_SU_MU_INFO_DETAILS_PHY_VERSION_LSB    0
61  #define MACTX_U_SIG_EHT_SU_MU_MACTX_U_SIG_EHT_SU_MU_INFO_DETAILS_PHY_VERSION_MSB    2
62  #define MACTX_U_SIG_EHT_SU_MU_MACTX_U_SIG_EHT_SU_MU_INFO_DETAILS_PHY_VERSION_MASK   0x0000000000000007
63  
64  
65  /* Description		TRANSMIT_BW
66  
67  			Bandwidth of the PPDU
68  
69  			<enum 0 U_SIG_BW20> 20 MHz
70  			<enum 1 U_SIG_BW40> 40 MHz
71  			<enum 2 U_SIG_BW80> 80 MHz
72  			<enum 3 U_SIG_BW160> 160 MHz
73  			<enum 4 U_SIG_BW320> 320 MHz
74  			<enum 5 U_SIG_BW320_2> DO NOT USE
75  
76  			Microcode remaps 'U_SIG_BW320' based on channelization.
77  
78  			On RX side, field used by MAC HW
79  			<legal all>
80  */
81  
82  #define MACTX_U_SIG_EHT_SU_MU_MACTX_U_SIG_EHT_SU_MU_INFO_DETAILS_TRANSMIT_BW_OFFSET 0x0000000000000000
83  #define MACTX_U_SIG_EHT_SU_MU_MACTX_U_SIG_EHT_SU_MU_INFO_DETAILS_TRANSMIT_BW_LSB    3
84  #define MACTX_U_SIG_EHT_SU_MU_MACTX_U_SIG_EHT_SU_MU_INFO_DETAILS_TRANSMIT_BW_MSB    5
85  #define MACTX_U_SIG_EHT_SU_MU_MACTX_U_SIG_EHT_SU_MU_INFO_DETAILS_TRANSMIT_BW_MASK   0x0000000000000038
86  
87  
88  /* Description		DL_UL_FLAG
89  
90  			Differentiates between DL and UL transmission
91  
92  			<enum 0 DL_UL_FLAG_IS_DL_OR_TDLS>
93  			<enum 1 DL_UL_FLAG_IS_UL>
94  			<legal all>
95  */
96  
97  #define MACTX_U_SIG_EHT_SU_MU_MACTX_U_SIG_EHT_SU_MU_INFO_DETAILS_DL_UL_FLAG_OFFSET  0x0000000000000000
98  #define MACTX_U_SIG_EHT_SU_MU_MACTX_U_SIG_EHT_SU_MU_INFO_DETAILS_DL_UL_FLAG_LSB     6
99  #define MACTX_U_SIG_EHT_SU_MU_MACTX_U_SIG_EHT_SU_MU_INFO_DETAILS_DL_UL_FLAG_MSB     6
100  #define MACTX_U_SIG_EHT_SU_MU_MACTX_U_SIG_EHT_SU_MU_INFO_DETAILS_DL_UL_FLAG_MASK    0x0000000000000040
101  
102  
103  /* Description		BSS_COLOR_ID
104  
105  			BSS color ID
106  
107  			Field used by MAC HW
108  			<legal all>
109  */
110  
111  #define MACTX_U_SIG_EHT_SU_MU_MACTX_U_SIG_EHT_SU_MU_INFO_DETAILS_BSS_COLOR_ID_OFFSET 0x0000000000000000
112  #define MACTX_U_SIG_EHT_SU_MU_MACTX_U_SIG_EHT_SU_MU_INFO_DETAILS_BSS_COLOR_ID_LSB   7
113  #define MACTX_U_SIG_EHT_SU_MU_MACTX_U_SIG_EHT_SU_MU_INFO_DETAILS_BSS_COLOR_ID_MSB   12
114  #define MACTX_U_SIG_EHT_SU_MU_MACTX_U_SIG_EHT_SU_MU_INFO_DETAILS_BSS_COLOR_ID_MASK  0x0000000000001f80
115  
116  
117  /* Description		TXOP_DURATION
118  
119  			Indicates the remaining time in the current TXOP
120  
121  			Field used by MAC HW
122  			 <legal all>
123  */
124  
125  #define MACTX_U_SIG_EHT_SU_MU_MACTX_U_SIG_EHT_SU_MU_INFO_DETAILS_TXOP_DURATION_OFFSET 0x0000000000000000
126  #define MACTX_U_SIG_EHT_SU_MU_MACTX_U_SIG_EHT_SU_MU_INFO_DETAILS_TXOP_DURATION_LSB  13
127  #define MACTX_U_SIG_EHT_SU_MU_MACTX_U_SIG_EHT_SU_MU_INFO_DETAILS_TXOP_DURATION_MSB  19
128  #define MACTX_U_SIG_EHT_SU_MU_MACTX_U_SIG_EHT_SU_MU_INFO_DETAILS_TXOP_DURATION_MASK 0x00000000000fe000
129  
130  
131  /* Description		DISREGARD_0A
132  
133  			Note: spec indicates this shall be set to 1s
134  			<legal 31>
135  */
136  
137  #define MACTX_U_SIG_EHT_SU_MU_MACTX_U_SIG_EHT_SU_MU_INFO_DETAILS_DISREGARD_0A_OFFSET 0x0000000000000000
138  #define MACTX_U_SIG_EHT_SU_MU_MACTX_U_SIG_EHT_SU_MU_INFO_DETAILS_DISREGARD_0A_LSB   20
139  #define MACTX_U_SIG_EHT_SU_MU_MACTX_U_SIG_EHT_SU_MU_INFO_DETAILS_DISREGARD_0A_MSB   24
140  #define MACTX_U_SIG_EHT_SU_MU_MACTX_U_SIG_EHT_SU_MU_INFO_DETAILS_DISREGARD_0A_MASK  0x0000000001f00000
141  
142  
143  /* Description		VALIDATE_0B
144  
145  			Note: spec indicates this shall be set to 1
146  			<legal 1>
147  */
148  
149  #define MACTX_U_SIG_EHT_SU_MU_MACTX_U_SIG_EHT_SU_MU_INFO_DETAILS_VALIDATE_0B_OFFSET 0x0000000000000000
150  #define MACTX_U_SIG_EHT_SU_MU_MACTX_U_SIG_EHT_SU_MU_INFO_DETAILS_VALIDATE_0B_LSB    25
151  #define MACTX_U_SIG_EHT_SU_MU_MACTX_U_SIG_EHT_SU_MU_INFO_DETAILS_VALIDATE_0B_MSB    25
152  #define MACTX_U_SIG_EHT_SU_MU_MACTX_U_SIG_EHT_SU_MU_INFO_DETAILS_VALIDATE_0B_MASK   0x0000000002000000
153  
154  
155  /* Description		RESERVED_0C
156  
157  			<legal 0>
158  */
159  
160  #define MACTX_U_SIG_EHT_SU_MU_MACTX_U_SIG_EHT_SU_MU_INFO_DETAILS_RESERVED_0C_OFFSET 0x0000000000000000
161  #define MACTX_U_SIG_EHT_SU_MU_MACTX_U_SIG_EHT_SU_MU_INFO_DETAILS_RESERVED_0C_LSB    26
162  #define MACTX_U_SIG_EHT_SU_MU_MACTX_U_SIG_EHT_SU_MU_INFO_DETAILS_RESERVED_0C_MSB    31
163  #define MACTX_U_SIG_EHT_SU_MU_MACTX_U_SIG_EHT_SU_MU_INFO_DETAILS_RESERVED_0C_MASK   0x00000000fc000000
164  
165  
166  /* Description		EHT_PPDU_SIG_CMN_TYPE
167  
168  			<enum 3 EHT_PPDU_SIG_rsvd> DO NOT USE
169  			<enum 0 EHT_PPDU_SIG_TB_or_DL_OFDMA> Need to look at both
170  			 EHT-SIG content channels for DL OFDMA (including OFDMA+MU-MIMO)
171  
172  			<enum 2 EHT_PPDU_SIG_DL_MU_MIMO> Need to look at both EHT-SIG
173  			 content channels
174  			<enum 1 EHT_PPDU_SIG_SU> Need to look at only one EHT-SIG
175  			 content channel
176  			<legal all>
177  */
178  
179  #define MACTX_U_SIG_EHT_SU_MU_MACTX_U_SIG_EHT_SU_MU_INFO_DETAILS_EHT_PPDU_SIG_CMN_TYPE_OFFSET 0x0000000000000000
180  #define MACTX_U_SIG_EHT_SU_MU_MACTX_U_SIG_EHT_SU_MU_INFO_DETAILS_EHT_PPDU_SIG_CMN_TYPE_LSB 32
181  #define MACTX_U_SIG_EHT_SU_MU_MACTX_U_SIG_EHT_SU_MU_INFO_DETAILS_EHT_PPDU_SIG_CMN_TYPE_MSB 33
182  #define MACTX_U_SIG_EHT_SU_MU_MACTX_U_SIG_EHT_SU_MU_INFO_DETAILS_EHT_PPDU_SIG_CMN_TYPE_MASK 0x0000000300000000
183  
184  
185  /* Description		VALIDATE_1A
186  
187  			Note: spec indicates this shall be set to 1
188  			<legal 1>
189  */
190  
191  #define MACTX_U_SIG_EHT_SU_MU_MACTX_U_SIG_EHT_SU_MU_INFO_DETAILS_VALIDATE_1A_OFFSET 0x0000000000000000
192  #define MACTX_U_SIG_EHT_SU_MU_MACTX_U_SIG_EHT_SU_MU_INFO_DETAILS_VALIDATE_1A_LSB    34
193  #define MACTX_U_SIG_EHT_SU_MU_MACTX_U_SIG_EHT_SU_MU_INFO_DETAILS_VALIDATE_1A_MSB    34
194  #define MACTX_U_SIG_EHT_SU_MU_MACTX_U_SIG_EHT_SU_MU_INFO_DETAILS_VALIDATE_1A_MASK   0x0000000400000000
195  
196  
197  /* Description		PUNCTURED_CHANNEL_INFORMATION
198  
199  			For OFDMA BW 20 MHz or 40 MHz:
200  			Set to all 1s, i.e. 31
201  
202  			For OFDMA of higher BW:
203  			Bit 3 = lowest 20 MHz in the current 80 MHz
204  			Bit 6 = highest 20 MHz in the current 80 MHz
205  			Bit 7 = 1
206  
207  			Each bit indicates whether the 20 MHz is modulated or punctured
208  
209  			0 = punctured
210  			1 = modulated
211  
212  			For non-OFDMA:
213  			Set to a 5-bit value encoding the puncture pattern, a.k.a. 'U_sig_puncture_pattern_encoding'
214  			elsewhere in the data structures
215  
216  			<legal all>
217  */
218  
219  #define MACTX_U_SIG_EHT_SU_MU_MACTX_U_SIG_EHT_SU_MU_INFO_DETAILS_PUNCTURED_CHANNEL_INFORMATION_OFFSET 0x0000000000000000
220  #define MACTX_U_SIG_EHT_SU_MU_MACTX_U_SIG_EHT_SU_MU_INFO_DETAILS_PUNCTURED_CHANNEL_INFORMATION_LSB 35
221  #define MACTX_U_SIG_EHT_SU_MU_MACTX_U_SIG_EHT_SU_MU_INFO_DETAILS_PUNCTURED_CHANNEL_INFORMATION_MSB 39
222  #define MACTX_U_SIG_EHT_SU_MU_MACTX_U_SIG_EHT_SU_MU_INFO_DETAILS_PUNCTURED_CHANNEL_INFORMATION_MASK 0x000000f800000000
223  
224  
225  /* Description		VALIDATE_1B
226  
227  			Note: spec indicates this shall be set to 1
228  			<legal 1>
229  */
230  
231  #define MACTX_U_SIG_EHT_SU_MU_MACTX_U_SIG_EHT_SU_MU_INFO_DETAILS_VALIDATE_1B_OFFSET 0x0000000000000000
232  #define MACTX_U_SIG_EHT_SU_MU_MACTX_U_SIG_EHT_SU_MU_INFO_DETAILS_VALIDATE_1B_LSB    40
233  #define MACTX_U_SIG_EHT_SU_MU_MACTX_U_SIG_EHT_SU_MU_INFO_DETAILS_VALIDATE_1B_MSB    40
234  #define MACTX_U_SIG_EHT_SU_MU_MACTX_U_SIG_EHT_SU_MU_INFO_DETAILS_VALIDATE_1B_MASK   0x0000010000000000
235  
236  
237  /* Description		MCS_OF_EHT_SIG
238  
239  			Indicates the MCS of EHT-SIG
240  			0 - 1: MCS 0 - 1
241  			2: MCS 3
242  			3: MCS 0 with DCM
243  			<legal all>
244  */
245  
246  #define MACTX_U_SIG_EHT_SU_MU_MACTX_U_SIG_EHT_SU_MU_INFO_DETAILS_MCS_OF_EHT_SIG_OFFSET 0x0000000000000000
247  #define MACTX_U_SIG_EHT_SU_MU_MACTX_U_SIG_EHT_SU_MU_INFO_DETAILS_MCS_OF_EHT_SIG_LSB 41
248  #define MACTX_U_SIG_EHT_SU_MU_MACTX_U_SIG_EHT_SU_MU_INFO_DETAILS_MCS_OF_EHT_SIG_MSB 42
249  #define MACTX_U_SIG_EHT_SU_MU_MACTX_U_SIG_EHT_SU_MU_INFO_DETAILS_MCS_OF_EHT_SIG_MASK 0x0000060000000000
250  
251  
252  /* Description		NUM_EHT_SIG_SYMBOLS
253  
254  			Number of symbols
255  
256  			The actual number of symbols is 1 larger than indicated
257  			in this field.
258  
259  			<legal all>
260  */
261  
262  #define MACTX_U_SIG_EHT_SU_MU_MACTX_U_SIG_EHT_SU_MU_INFO_DETAILS_NUM_EHT_SIG_SYMBOLS_OFFSET 0x0000000000000000
263  #define MACTX_U_SIG_EHT_SU_MU_MACTX_U_SIG_EHT_SU_MU_INFO_DETAILS_NUM_EHT_SIG_SYMBOLS_LSB 43
264  #define MACTX_U_SIG_EHT_SU_MU_MACTX_U_SIG_EHT_SU_MU_INFO_DETAILS_NUM_EHT_SIG_SYMBOLS_MSB 47
265  #define MACTX_U_SIG_EHT_SU_MU_MACTX_U_SIG_EHT_SU_MU_INFO_DETAILS_NUM_EHT_SIG_SYMBOLS_MASK 0x0000f80000000000
266  
267  
268  /* Description		CRC
269  
270  			CRC for U-SIG contents
271  			<legal all>
272  */
273  
274  #define MACTX_U_SIG_EHT_SU_MU_MACTX_U_SIG_EHT_SU_MU_INFO_DETAILS_CRC_OFFSET         0x0000000000000000
275  #define MACTX_U_SIG_EHT_SU_MU_MACTX_U_SIG_EHT_SU_MU_INFO_DETAILS_CRC_LSB            48
276  #define MACTX_U_SIG_EHT_SU_MU_MACTX_U_SIG_EHT_SU_MU_INFO_DETAILS_CRC_MSB            51
277  #define MACTX_U_SIG_EHT_SU_MU_MACTX_U_SIG_EHT_SU_MU_INFO_DETAILS_CRC_MASK           0x000f000000000000
278  
279  
280  /* Description		TAIL
281  
282  			<legal 0>
283  */
284  
285  #define MACTX_U_SIG_EHT_SU_MU_MACTX_U_SIG_EHT_SU_MU_INFO_DETAILS_TAIL_OFFSET        0x0000000000000000
286  #define MACTX_U_SIG_EHT_SU_MU_MACTX_U_SIG_EHT_SU_MU_INFO_DETAILS_TAIL_LSB           52
287  #define MACTX_U_SIG_EHT_SU_MU_MACTX_U_SIG_EHT_SU_MU_INFO_DETAILS_TAIL_MSB           57
288  #define MACTX_U_SIG_EHT_SU_MU_MACTX_U_SIG_EHT_SU_MU_INFO_DETAILS_TAIL_MASK          0x03f0000000000000
289  
290  
291  /* Description		DOT11AX_SU_EXTENDED
292  
293  			TX side:
294  			Set to 0
295  
296  			RX side: On RX side, evaluated by MAC HW
297  
298  			This is the only way for MAC RX to know that this was a
299  			U_SIG_EHT_SU received in extended range format.
300  
301  			When set, the 11be frame is of the extended range format.
302  
303  			<legal all>
304  */
305  
306  #define MACTX_U_SIG_EHT_SU_MU_MACTX_U_SIG_EHT_SU_MU_INFO_DETAILS_DOT11AX_SU_EXTENDED_OFFSET 0x0000000000000000
307  #define MACTX_U_SIG_EHT_SU_MU_MACTX_U_SIG_EHT_SU_MU_INFO_DETAILS_DOT11AX_SU_EXTENDED_LSB 58
308  #define MACTX_U_SIG_EHT_SU_MU_MACTX_U_SIG_EHT_SU_MU_INFO_DETAILS_DOT11AX_SU_EXTENDED_MSB 58
309  #define MACTX_U_SIG_EHT_SU_MU_MACTX_U_SIG_EHT_SU_MU_INFO_DETAILS_DOT11AX_SU_EXTENDED_MASK 0x0400000000000000
310  
311  
312  /* Description		RESERVED_1D
313  
314  			<legal 0>
315  */
316  
317  #define MACTX_U_SIG_EHT_SU_MU_MACTX_U_SIG_EHT_SU_MU_INFO_DETAILS_RESERVED_1D_OFFSET 0x0000000000000000
318  #define MACTX_U_SIG_EHT_SU_MU_MACTX_U_SIG_EHT_SU_MU_INFO_DETAILS_RESERVED_1D_LSB    59
319  #define MACTX_U_SIG_EHT_SU_MU_MACTX_U_SIG_EHT_SU_MU_INFO_DETAILS_RESERVED_1D_MSB    61
320  #define MACTX_U_SIG_EHT_SU_MU_MACTX_U_SIG_EHT_SU_MU_INFO_DETAILS_RESERVED_1D_MASK   0x3800000000000000
321  
322  
323  /* Description		RX_NDP
324  
325  			TX side:
326  			Set to 0
327  
328  			RX side: On RX side, looked at by MAC HW
329  
330  			When set, PHY has received an (expected) NDP frame
331  			<legal all>
332  */
333  
334  #define MACTX_U_SIG_EHT_SU_MU_MACTX_U_SIG_EHT_SU_MU_INFO_DETAILS_RX_NDP_OFFSET      0x0000000000000000
335  #define MACTX_U_SIG_EHT_SU_MU_MACTX_U_SIG_EHT_SU_MU_INFO_DETAILS_RX_NDP_LSB         62
336  #define MACTX_U_SIG_EHT_SU_MU_MACTX_U_SIG_EHT_SU_MU_INFO_DETAILS_RX_NDP_MSB         62
337  #define MACTX_U_SIG_EHT_SU_MU_MACTX_U_SIG_EHT_SU_MU_INFO_DETAILS_RX_NDP_MASK        0x4000000000000000
338  
339  
340  /* Description		RX_INTEGRITY_CHECK_PASSED
341  
342  			TX side: Set to 0
343  			RX side: Set to 1 if PHY determines the U-SIG CRC check
344  			has passed, else set to 0
345  
346  			<legal all>
347  */
348  
349  #define MACTX_U_SIG_EHT_SU_MU_MACTX_U_SIG_EHT_SU_MU_INFO_DETAILS_RX_INTEGRITY_CHECK_PASSED_OFFSET 0x0000000000000000
350  #define MACTX_U_SIG_EHT_SU_MU_MACTX_U_SIG_EHT_SU_MU_INFO_DETAILS_RX_INTEGRITY_CHECK_PASSED_LSB 63
351  #define MACTX_U_SIG_EHT_SU_MU_MACTX_U_SIG_EHT_SU_MU_INFO_DETAILS_RX_INTEGRITY_CHECK_PASSED_MSB 63
352  #define MACTX_U_SIG_EHT_SU_MU_MACTX_U_SIG_EHT_SU_MU_INFO_DETAILS_RX_INTEGRITY_CHECK_PASSED_MASK 0x8000000000000000
353  
354  
355  
356  #endif   // MACTX_U_SIG_EHT_SU_MU
357