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_HT_SIG_H_
27 #define _MACTX_HT_SIG_H_
28 #if !defined(__ASSEMBLER__)
29 #endif
30 
31 #include "ht_sig_info.h"
32 #define NUM_OF_DWORDS_MACTX_HT_SIG 2
33 
34 #define NUM_OF_QWORDS_MACTX_HT_SIG 1
35 
36 
37 struct mactx_ht_sig {
38 #ifndef WIFI_BIT_ORDER_BIG_ENDIAN
39              struct   ht_sig_info                                               mactx_ht_sig_info_details;
40 #else
41              struct   ht_sig_info                                               mactx_ht_sig_info_details;
42 #endif
43 };
44 
45 
46 /* Description		MACTX_HT_SIG_INFO_DETAILS
47 
48 			See detailed description of the STRUCT
49 */
50 
51 
52 /* Description		MCS
53 
54 			Modulation Coding Scheme:
55 			0-7 are used for single stream
56 			8-15 are used for 2 streams
57 			16-23 are used for 3 streams
58 			24-31 are used for 4 streams
59 			32 is used for duplicate HT20 (unsupported)
60 			33-76 is used for unequal modulation (unsupported)
61 			77-127 is reserved.
62 			<legal 0-31>
63 */
64 
65 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_MCS_OFFSET                           0x0000000000000000
66 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_MCS_LSB                              0
67 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_MCS_MSB                              6
68 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_MCS_MASK                             0x000000000000007f
69 
70 
71 /* Description		CBW
72 
73 			Packet bandwidth:
74 			<enum 0     ht_20_mhz>
75 			<enum 1     ht_40_mhz>
76 			<legal 0-1>
77 */
78 
79 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_CBW_OFFSET                           0x0000000000000000
80 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_CBW_LSB                              7
81 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_CBW_MSB                              7
82 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_CBW_MASK                             0x0000000000000080
83 
84 
85 /* Description		LENGTH
86 
87 			This is the MPDU or A-MPDU length in octets of the PPDU
88 			<legal all>
89 */
90 
91 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_LENGTH_OFFSET                        0x0000000000000000
92 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_LENGTH_LSB                           8
93 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_LENGTH_MSB                           23
94 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_LENGTH_MASK                          0x0000000000ffff00
95 
96 
97 /* Description		RESERVED_0
98 
99 			This field is not part of HT-SIG
100 			Reserved: Should be set to 0 by the MAC and ignored by the
101 			 PHY <legal 0>
102 */
103 
104 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_RESERVED_0_OFFSET                    0x0000000000000000
105 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_RESERVED_0_LSB                       24
106 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_RESERVED_0_MSB                       31
107 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_RESERVED_0_MASK                      0x00000000ff000000
108 
109 
110 /* Description		SMOOTHING
111 
112 			Field indicates if smoothing is needed
113 			E_num 0     do_smoothing Unsupported setting: indicates
114 			smoothing is often used for beamforming
115 			<enum 1     no_smoothing> Indicates no smoothing is used
116 
117 			<legal 1>
118 */
119 
120 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_SMOOTHING_OFFSET                     0x0000000000000000
121 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_SMOOTHING_LSB                        32
122 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_SMOOTHING_MSB                        32
123 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_SMOOTHING_MASK                       0x0000000100000000
124 
125 
126 /* Description		NOT_SOUNDING
127 
128 			E_num 0     sounding Unsupported setting: indicates sounding
129 			 is used
130 			<enum 1     no_sounding>  Indicates no sounding is used
131 			<legal 1>
132 */
133 
134 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_NOT_SOUNDING_OFFSET                  0x0000000000000000
135 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_NOT_SOUNDING_LSB                     33
136 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_NOT_SOUNDING_MSB                     33
137 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_NOT_SOUNDING_MASK                    0x0000000200000000
138 
139 
140 /* Description		HT_RESERVED
141 
142 			Reserved: Should be set to 1 by the MAC and ignored by the
143 			 PHY
144 			<legal 1>
145 */
146 
147 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_HT_RESERVED_OFFSET                   0x0000000000000000
148 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_HT_RESERVED_LSB                      34
149 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_HT_RESERVED_MSB                      34
150 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_HT_RESERVED_MASK                     0x0000000400000000
151 
152 
153 /* Description		AGGREGATION
154 
155 			<enum 0     mpdu> Indicates MPDU format
156 			<enum 1     a_mpdu> Indicates A-MPDU format
157 			<legal 0-1>
158 */
159 
160 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_AGGREGATION_OFFSET                   0x0000000000000000
161 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_AGGREGATION_LSB                      35
162 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_AGGREGATION_MSB                      35
163 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_AGGREGATION_MASK                     0x0000000800000000
164 
165 
166 /* Description		STBC
167 
168 			<enum 0     no_stbc> Indicates no STBC
169 			<enum 1     1_str_stbc> Indicates 1 stream STBC
170 			E_num 2     2_str_stbc Indicates 2 stream STBC (Unsupported)
171 
172 			<legal 0-1>
173 */
174 
175 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_STBC_OFFSET                          0x0000000000000000
176 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_STBC_LSB                             36
177 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_STBC_MSB                             37
178 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_STBC_MASK                            0x0000003000000000
179 
180 
181 /* Description		FEC_CODING
182 
183 			<enum 0     ht_bcc>  Indicates BCC coding
184 			<enum 1     ht_ldpc>  Indicates LDPC coding
185 			<legal 0-1>
186 */
187 
188 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_FEC_CODING_OFFSET                    0x0000000000000000
189 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_FEC_CODING_LSB                       38
190 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_FEC_CODING_MSB                       38
191 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_FEC_CODING_MASK                      0x0000004000000000
192 
193 
194 /* Description		SHORT_GI
195 
196 			<enum 0     ht_normal_gi>  Indicates normal guard interval
197 
198 			<enum 1     ht_short_gi>  Indicates short guard interval
199 
200 			<legal 0-1>
201 */
202 
203 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_SHORT_GI_OFFSET                      0x0000000000000000
204 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_SHORT_GI_LSB                         39
205 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_SHORT_GI_MSB                         39
206 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_SHORT_GI_MASK                        0x0000008000000000
207 
208 
209 /* Description		NUM_EXT_SP_STR
210 
211 			Number of extension spatial streams: (Used for TxBF)
212 			<enum 0     0_ext_sp_str>  No extension spatial streams
213 			E_num 1     1_ext_sp_str  Not supported: 1 extension spatial
214 			 streams
215 			E_num 2     2_ext_sp_str  Not supported:  2 extension spatial
216 			 streams
217 			<legal 0>
218 */
219 
220 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_NUM_EXT_SP_STR_OFFSET                0x0000000000000000
221 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_NUM_EXT_SP_STR_LSB                   40
222 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_NUM_EXT_SP_STR_MSB                   41
223 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_NUM_EXT_SP_STR_MASK                  0x0000030000000000
224 
225 
226 /* Description		CRC
227 
228 			The CRC protects the HT-SIG (HT-SIG[0][23:0] and HT-SIG[1][9:0].
229 			The generator polynomial is G(D) = D8 + D2 + D + 1.  <legal
230 			 all>
231 */
232 
233 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_CRC_OFFSET                           0x0000000000000000
234 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_CRC_LSB                              42
235 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_CRC_MSB                              49
236 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_CRC_MASK                             0x0003fc0000000000
237 
238 
239 /* Description		SIGNAL_TAIL
240 
241 			The 6 bits of tail is always set to 0 is used to flush the
242 			 BCC encoder and decoder.  <legal 0>
243 */
244 
245 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_SIGNAL_TAIL_OFFSET                   0x0000000000000000
246 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_SIGNAL_TAIL_LSB                      50
247 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_SIGNAL_TAIL_MSB                      55
248 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_SIGNAL_TAIL_MASK                     0x00fc000000000000
249 
250 
251 /* Description		RESERVED_1
252 
253 			This field is not part of HT-SIG:
254 			Reserved: Should be set to 0 by the MAC and ignored by the
255 			 PHY.  <legal 0>
256 */
257 
258 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_RESERVED_1_OFFSET                    0x0000000000000000
259 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_RESERVED_1_LSB                       56
260 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_RESERVED_1_MSB                       62
261 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_RESERVED_1_MASK                      0x7f00000000000000
262 
263 
264 /* Description		RX_INTEGRITY_CHECK_PASSED
265 
266 			TX side: Set to 0
267 			RX side: Set to 1 if PHY determines the HT-SIG CRC check
268 			 has passed, else set to 0
269 
270 			<legal all>
271 */
272 
273 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_RX_INTEGRITY_CHECK_PASSED_OFFSET     0x0000000000000000
274 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_RX_INTEGRITY_CHECK_PASSED_LSB        63
275 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_RX_INTEGRITY_CHECK_PASSED_MSB        63
276 #define MACTX_HT_SIG_MACTX_HT_SIG_INFO_DETAILS_RX_INTEGRITY_CHECK_PASSED_MASK       0x8000000000000000
277 
278 
279 
280 #endif   // MACTX_HT_SIG
281