xref: /wlan-driver/fw-api/hw/qca6290/11ax/v2/tx_rate_stats_info.h (revision 5113495b16420b49004c444715d2daae2066e7dc)
1 /*
2  * Copyright (c) 2016-2018 The Linux Foundation. All rights reserved.
3  *
4  * Permission to use, copy, modify, and/or distribute this software for
5  * any purpose with or without fee is hereby granted, provided that the
6  * above copyright notice and this permission notice appear in all
7  * copies.
8  *
9  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
10  * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
11  * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
12  * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
13  * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
14  * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
15  * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
16  * PERFORMANCE OF THIS SOFTWARE.
17  */
18 
19 #ifndef _TX_RATE_STATS_INFO_H_
20 #define _TX_RATE_STATS_INFO_H_
21 #if !defined(__ASSEMBLER__)
22 #endif
23 
24 
25 // ################ START SUMMARY #################
26 //
27 //	Dword	Fields
28 //	0	tx_rate_stats_info_valid[0], transmit_bw[2:1], transmit_pkt_type[6:3], transmit_stbc[7], transmit_ldpc[8], transmit_sgi[10:9], transmit_mcs[14:11], ofdma_transmission[15], tones_in_ru[27:16], reserved_0a[31:28]
29 //	1	tsf_directly_after_ppdu_transmission[31:0]
30 //
31 // ################ END SUMMARY #################
32 
33 #define NUM_OF_DWORDS_TX_RATE_STATS_INFO 2
34 
35 struct tx_rate_stats_info {
36              uint32_t tx_rate_stats_info_valid        :  1, //[0]
37                       transmit_bw                     :  2, //[2:1]
38                       transmit_pkt_type               :  4, //[6:3]
39                       transmit_stbc                   :  1, //[7]
40                       transmit_ldpc                   :  1, //[8]
41                       transmit_sgi                    :  2, //[10:9]
42                       transmit_mcs                    :  4, //[14:11]
43                       ofdma_transmission              :  1, //[15]
44                       tones_in_ru                     : 12, //[27:16]
45                       reserved_0a                     :  4; //[31:28]
46              uint32_t tsf_directly_after_ppdu_transmission: 32; //[31:0]
47 };
48 
49 /*
50 
51 tx_rate_stats_info_valid
52 
53 			When set all other fields in this STRUCT contain valid
54 			info.
55 
56 
57 
58 
59 			<legal all>
60 
61 transmit_bw
62 
63 			Field only valid when Tx_rate_stats_info_valid is set
64 
65 
66 
67 			Indicates the BW of the upcoming transmission that shall
68 			likely start in about 3 -4 us on the medium
69 
70 
71 
72 			<enum 0 transmit_bw_20_MHz>
73 
74 			<enum 1 transmit_bw_40_MHz>
75 
76 			<enum 2 transmit_bw_80_MHz>
77 
78 			<enum 3 transmit_bw_160_MHz>
79 
80 
81 
82 			<legal all>
83 
84 transmit_pkt_type
85 
86 			Field only valid when Tx_rate_stats_info_valid is set
87 
88 
89 
90 			Field filled in by PDG.
91 
92 			Not valid when in SW transmit mode
93 
94 
95 
96 			The packet type
97 
98 			<enum 0 dot11a>802.11a PPDU type
99 
100 			<enum 1 dot11b>802.11b PPDU type
101 
102 			<enum 2 dot11n_mm>802.11n Mixed Mode PPDU type
103 
104 			<enum 3 dot11ac>802.11ac PPDU type
105 
106 			<enum 4 dot11ax>802.11ax PPDU type
107 
108 transmit_stbc
109 
110 			Field only valid when Tx_rate_stats_info_valid is set
111 
112 
113 
114 			Field filled in by PDG.
115 
116 			Not valid when in SW transmit mode
117 
118 
119 
120 			When set, STBC transmission rate was used.
121 
122 transmit_ldpc
123 
124 			Field only valid when Tx_rate_stats_info_valid is set
125 
126 
127 
128 			Field filled in by PDG.
129 
130 			Not valid when in SW transmit mode
131 
132 
133 
134 			When set, use LDPC transmission rates
135 
136 transmit_sgi
137 
138 			Field only valid when Tx_rate_stats_info_valid is set
139 
140 
141 
142 			Field filled in by PDG.
143 
144 			Not valid when in SW transmit mode
145 
146 
147 
148 			<enum 0     0_8_us_sgi > Legacy normal GI. Can also be
149 			used for HE
150 
151 			<enum 1     0_4_us_sgi > Legacy short GI. Can also be
152 			used for HE
153 
154 			<enum 2     1_6_us_sgi > HE related GI
155 
156 			<enum 3     3_2_us_sgi > HE related GI
157 
158 			<legal 0 - 3>
159 
160 transmit_mcs
161 
162 			Field only valid when Tx_rate_stats_info_valid is set
163 
164 
165 
166 			Field filled in by PDG.
167 
168 			Not valid when in SW transmit mode
169 
170 
171 
172 			For details, refer to  MCS_TYPE description
173 
174 			<legal all>
175 
176 ofdma_transmission
177 
178 			Field only valid when Tx_rate_stats_info_valid is set
179 
180 
181 
182 			Field filled in by PDG.
183 
184 
185 
186 			Set when the transmission was an OFDMA transmission (DL
187 			or UL).
188 
189 			<legal all>
190 
191 tones_in_ru
192 
193 			Field only valid when Tx_rate_stats_info_valid is set
194 
195 
196 
197 			Field filled in by PDG.
198 
199 			Not valid when in SW transmit mode
200 
201 
202 
203 			The number of tones in the RU used.
204 
205 			<legal all>
206 
207 reserved_0a
208 
209 			<legal 0>
210 
211 tsf_directly_after_ppdu_transmission
212 
213 			Field only valid when Tx_rate_stats_info_valid is set
214 
215 
216 
217 			Lower 32 bits of the TSF, snapshot of this value when
218 			transmission of the PPDU containing the frame finished.
219 
220 			<legal all>
221 */
222 
223 
224 /* Description		TX_RATE_STATS_INFO_0_TX_RATE_STATS_INFO_VALID
225 
226 			When set all other fields in this STRUCT contain valid
227 			info.
228 
229 
230 
231 
232 			<legal all>
233 */
234 #define TX_RATE_STATS_INFO_0_TX_RATE_STATS_INFO_VALID_OFFSET         0x00000000
235 #define TX_RATE_STATS_INFO_0_TX_RATE_STATS_INFO_VALID_LSB            0
236 #define TX_RATE_STATS_INFO_0_TX_RATE_STATS_INFO_VALID_MASK           0x00000001
237 
238 /* Description		TX_RATE_STATS_INFO_0_TRANSMIT_BW
239 
240 			Field only valid when Tx_rate_stats_info_valid is set
241 
242 
243 
244 			Indicates the BW of the upcoming transmission that shall
245 			likely start in about 3 -4 us on the medium
246 
247 
248 
249 			<enum 0 transmit_bw_20_MHz>
250 
251 			<enum 1 transmit_bw_40_MHz>
252 
253 			<enum 2 transmit_bw_80_MHz>
254 
255 			<enum 3 transmit_bw_160_MHz>
256 
257 
258 
259 			<legal all>
260 */
261 #define TX_RATE_STATS_INFO_0_TRANSMIT_BW_OFFSET                      0x00000000
262 #define TX_RATE_STATS_INFO_0_TRANSMIT_BW_LSB                         1
263 #define TX_RATE_STATS_INFO_0_TRANSMIT_BW_MASK                        0x00000006
264 
265 /* Description		TX_RATE_STATS_INFO_0_TRANSMIT_PKT_TYPE
266 
267 			Field only valid when Tx_rate_stats_info_valid is set
268 
269 
270 
271 			Field filled in by PDG.
272 
273 			Not valid when in SW transmit mode
274 
275 
276 
277 			The packet type
278 
279 			<enum 0 dot11a>802.11a PPDU type
280 
281 			<enum 1 dot11b>802.11b PPDU type
282 
283 			<enum 2 dot11n_mm>802.11n Mixed Mode PPDU type
284 
285 			<enum 3 dot11ac>802.11ac PPDU type
286 
287 			<enum 4 dot11ax>802.11ax PPDU type
288 */
289 #define TX_RATE_STATS_INFO_0_TRANSMIT_PKT_TYPE_OFFSET                0x00000000
290 #define TX_RATE_STATS_INFO_0_TRANSMIT_PKT_TYPE_LSB                   3
291 #define TX_RATE_STATS_INFO_0_TRANSMIT_PKT_TYPE_MASK                  0x00000078
292 
293 /* Description		TX_RATE_STATS_INFO_0_TRANSMIT_STBC
294 
295 			Field only valid when Tx_rate_stats_info_valid is set
296 
297 
298 
299 			Field filled in by PDG.
300 
301 			Not valid when in SW transmit mode
302 
303 
304 
305 			When set, STBC transmission rate was used.
306 */
307 #define TX_RATE_STATS_INFO_0_TRANSMIT_STBC_OFFSET                    0x00000000
308 #define TX_RATE_STATS_INFO_0_TRANSMIT_STBC_LSB                       7
309 #define TX_RATE_STATS_INFO_0_TRANSMIT_STBC_MASK                      0x00000080
310 
311 /* Description		TX_RATE_STATS_INFO_0_TRANSMIT_LDPC
312 
313 			Field only valid when Tx_rate_stats_info_valid is set
314 
315 
316 
317 			Field filled in by PDG.
318 
319 			Not valid when in SW transmit mode
320 
321 
322 
323 			When set, use LDPC transmission rates
324 */
325 #define TX_RATE_STATS_INFO_0_TRANSMIT_LDPC_OFFSET                    0x00000000
326 #define TX_RATE_STATS_INFO_0_TRANSMIT_LDPC_LSB                       8
327 #define TX_RATE_STATS_INFO_0_TRANSMIT_LDPC_MASK                      0x00000100
328 
329 /* Description		TX_RATE_STATS_INFO_0_TRANSMIT_SGI
330 
331 			Field only valid when Tx_rate_stats_info_valid is set
332 
333 
334 
335 			Field filled in by PDG.
336 
337 			Not valid when in SW transmit mode
338 
339 
340 
341 			<enum 0     0_8_us_sgi > Legacy normal GI. Can also be
342 			used for HE
343 
344 			<enum 1     0_4_us_sgi > Legacy short GI. Can also be
345 			used for HE
346 
347 			<enum 2     1_6_us_sgi > HE related GI
348 
349 			<enum 3     3_2_us_sgi > HE related GI
350 
351 			<legal 0 - 3>
352 */
353 #define TX_RATE_STATS_INFO_0_TRANSMIT_SGI_OFFSET                     0x00000000
354 #define TX_RATE_STATS_INFO_0_TRANSMIT_SGI_LSB                        9
355 #define TX_RATE_STATS_INFO_0_TRANSMIT_SGI_MASK                       0x00000600
356 
357 /* Description		TX_RATE_STATS_INFO_0_TRANSMIT_MCS
358 
359 			Field only valid when Tx_rate_stats_info_valid is set
360 
361 
362 
363 			Field filled in by PDG.
364 
365 			Not valid when in SW transmit mode
366 
367 
368 
369 			For details, refer to  MCS_TYPE description
370 
371 			<legal all>
372 */
373 #define TX_RATE_STATS_INFO_0_TRANSMIT_MCS_OFFSET                     0x00000000
374 #define TX_RATE_STATS_INFO_0_TRANSMIT_MCS_LSB                        11
375 #define TX_RATE_STATS_INFO_0_TRANSMIT_MCS_MASK                       0x00007800
376 
377 /* Description		TX_RATE_STATS_INFO_0_OFDMA_TRANSMISSION
378 
379 			Field only valid when Tx_rate_stats_info_valid is set
380 
381 
382 
383 			Field filled in by PDG.
384 
385 
386 
387 			Set when the transmission was an OFDMA transmission (DL
388 			or UL).
389 
390 			<legal all>
391 */
392 #define TX_RATE_STATS_INFO_0_OFDMA_TRANSMISSION_OFFSET               0x00000000
393 #define TX_RATE_STATS_INFO_0_OFDMA_TRANSMISSION_LSB                  15
394 #define TX_RATE_STATS_INFO_0_OFDMA_TRANSMISSION_MASK                 0x00008000
395 
396 /* Description		TX_RATE_STATS_INFO_0_TONES_IN_RU
397 
398 			Field only valid when Tx_rate_stats_info_valid is set
399 
400 
401 
402 			Field filled in by PDG.
403 
404 			Not valid when in SW transmit mode
405 
406 
407 
408 			The number of tones in the RU used.
409 
410 			<legal all>
411 */
412 #define TX_RATE_STATS_INFO_0_TONES_IN_RU_OFFSET                      0x00000000
413 #define TX_RATE_STATS_INFO_0_TONES_IN_RU_LSB                         16
414 #define TX_RATE_STATS_INFO_0_TONES_IN_RU_MASK                        0x0fff0000
415 
416 /* Description		TX_RATE_STATS_INFO_0_RESERVED_0A
417 
418 			<legal 0>
419 */
420 #define TX_RATE_STATS_INFO_0_RESERVED_0A_OFFSET                      0x00000000
421 #define TX_RATE_STATS_INFO_0_RESERVED_0A_LSB                         28
422 #define TX_RATE_STATS_INFO_0_RESERVED_0A_MASK                        0xf0000000
423 
424 /* Description		TX_RATE_STATS_INFO_1_TSF_DIRECTLY_AFTER_PPDU_TRANSMISSION
425 
426 			Field only valid when Tx_rate_stats_info_valid is set
427 
428 
429 
430 			Lower 32 bits of the TSF, snapshot of this value when
431 			transmission of the PPDU containing the frame finished.
432 
433 			<legal all>
434 */
435 #define TX_RATE_STATS_INFO_1_TSF_DIRECTLY_AFTER_PPDU_TRANSMISSION_OFFSET 0x00000004
436 #define TX_RATE_STATS_INFO_1_TSF_DIRECTLY_AFTER_PPDU_TRANSMISSION_LSB 0
437 #define TX_RATE_STATS_INFO_1_TSF_DIRECTLY_AFTER_PPDU_TRANSMISSION_MASK 0xffffffff
438 
439 
440 #endif // _TX_RATE_STATS_INFO_H_
441