xref: /wlan-driver/fw-api/hw/qcn6432/tx_fes_status_user_ppdu.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 _TX_FES_STATUS_USER_PPDU_H_
18 #define _TX_FES_STATUS_USER_PPDU_H_
19 #if !defined(__ASSEMBLER__)
20 #endif
21 
22 #define NUM_OF_DWORDS_TX_FES_STATUS_USER_PPDU 6
23 
24 #define NUM_OF_QWORDS_TX_FES_STATUS_USER_PPDU 3
25 
26 
27 struct tx_fes_status_user_ppdu {
28 #ifndef WIFI_BIT_ORDER_BIG_ENDIAN
29              uint32_t underflow_mpdu_count                                    :  9, // [8:0]
30                       data_underflow_warning                                  :  2, // [10:9]
31                       bw_drop_underflow_warning                               :  1, // [11:11]
32                       qc_eosp_setting                                         :  1, // [12:12]
33                       fc_more_data_setting                                    :  1, // [13:13]
34                       fc_pwr_mgt_setting                                      :  1, // [14:14]
35                       mpdu_tx_count                                           :  9, // [23:15]
36                       user_blocked                                            :  1, // [24:24]
37                       pre_trig_response_delim_count                           :  7; // [31:25]
38              uint32_t underflow_byte_count                                    : 16, // [15:0]
39                       coex_abort_mpdu_count_valid                             :  1, // [16:16]
40                       coex_abort_mpdu_count                                   :  9, // [25:17]
41                       transmitted_tid                                         :  4, // [29:26]
42                       txdma_dropped_mpdu_warning                              :  1, // [30:30]
43                       reserved_1                                              :  1; // [31:31]
44              uint32_t duration                                                : 16, // [15:0]
45                       num_eof_delim_added                                     : 16; // [31:16]
46              uint32_t psdu_octet                                              : 24, // [23:0]
47                       qos_buf_state                                           :  8; // [31:24]
48              uint32_t num_null_delim_added                                    : 22, // [21:0]
49                       reserved_4a                                             :  2, // [23:22]
50                       cv_corr_user_valid_in_phy                               :  1, // [24:24]
51                       nss                                                     :  3, // [27:25]
52                       mcs                                                     :  4; // [31:28]
53              uint32_t ht_control                                              : 32; // [31:0]
54 #else
55              uint32_t pre_trig_response_delim_count                           :  7, // [31:25]
56                       user_blocked                                            :  1, // [24:24]
57                       mpdu_tx_count                                           :  9, // [23:15]
58                       fc_pwr_mgt_setting                                      :  1, // [14:14]
59                       fc_more_data_setting                                    :  1, // [13:13]
60                       qc_eosp_setting                                         :  1, // [12:12]
61                       bw_drop_underflow_warning                               :  1, // [11:11]
62                       data_underflow_warning                                  :  2, // [10:9]
63                       underflow_mpdu_count                                    :  9; // [8:0]
64              uint32_t reserved_1                                              :  1, // [31:31]
65                       txdma_dropped_mpdu_warning                              :  1, // [30:30]
66                       transmitted_tid                                         :  4, // [29:26]
67                       coex_abort_mpdu_count                                   :  9, // [25:17]
68                       coex_abort_mpdu_count_valid                             :  1, // [16:16]
69                       underflow_byte_count                                    : 16; // [15:0]
70              uint32_t num_eof_delim_added                                     : 16, // [31:16]
71                       duration                                                : 16; // [15:0]
72              uint32_t qos_buf_state                                           :  8, // [31:24]
73                       psdu_octet                                              : 24; // [23:0]
74              uint32_t mcs                                                     :  4, // [31:28]
75                       nss                                                     :  3, // [27:25]
76                       cv_corr_user_valid_in_phy                               :  1, // [24:24]
77                       reserved_4a                                             :  2, // [23:22]
78                       num_null_delim_added                                    : 22; // [21:0]
79              uint32_t ht_control                                              : 32; // [31:0]
80 #endif
81 };
82 
83 
84 /* Description		UNDERFLOW_MPDU_COUNT
85 
86 			The MPDU count correctly received from TX DMA when the first
87 			 underrun condition was detected
88 			<legal 0-256>
89 */
90 
91 #define TX_FES_STATUS_USER_PPDU_UNDERFLOW_MPDU_COUNT_OFFSET                         0x0000000000000000
92 #define TX_FES_STATUS_USER_PPDU_UNDERFLOW_MPDU_COUNT_LSB                            0
93 #define TX_FES_STATUS_USER_PPDU_UNDERFLOW_MPDU_COUNT_MSB                            8
94 #define TX_FES_STATUS_USER_PPDU_UNDERFLOW_MPDU_COUNT_MASK                           0x00000000000001ff
95 
96 
97 /* Description		DATA_UNDERFLOW_WARNING
98 
99 			Mac data underflow warning for this user
100 
101 			<enum 0 no_data_underrun> No data underflow
102 			<enum 1 data_underrun_between_mpdu> PCU experienced data
103 			 underflow in between MPDUs
104 			<enum 2 data_underrun_within_mpdu> PCU experienced data
105 			underflow within an MPDU
106 			<legal 0-2>
107 */
108 
109 #define TX_FES_STATUS_USER_PPDU_DATA_UNDERFLOW_WARNING_OFFSET                       0x0000000000000000
110 #define TX_FES_STATUS_USER_PPDU_DATA_UNDERFLOW_WARNING_LSB                          9
111 #define TX_FES_STATUS_USER_PPDU_DATA_UNDERFLOW_WARNING_MSB                          10
112 #define TX_FES_STATUS_USER_PPDU_DATA_UNDERFLOW_WARNING_MASK                         0x0000000000000600
113 
114 
115 /* Description		BW_DROP_UNDERFLOW_WARNING
116 
117 			When set, data underflow happened while TXPCU was busy with
118 			 dropping a frame that is only allowed to go out at certain
119 			 BW, which is not the BW of the current transmission
120 			<legal all>
121 */
122 
123 #define TX_FES_STATUS_USER_PPDU_BW_DROP_UNDERFLOW_WARNING_OFFSET                    0x0000000000000000
124 #define TX_FES_STATUS_USER_PPDU_BW_DROP_UNDERFLOW_WARNING_LSB                       11
125 #define TX_FES_STATUS_USER_PPDU_BW_DROP_UNDERFLOW_WARNING_MSB                       11
126 #define TX_FES_STATUS_USER_PPDU_BW_DROP_UNDERFLOW_WARNING_MASK                      0x0000000000000800
127 
128 
129 /* Description		QC_EOSP_SETTING
130 
131 			This field indicates if TX PCU set the eosp bit in the QoS
132 			 control field for this user (indicated in field User_Id.)
133 
134 			0: No action
135 			1: eosp bit is set in all the transmitted frames. This is
136 			 done upon request of the PDG.
137 			<legal all>
138 */
139 
140 #define TX_FES_STATUS_USER_PPDU_QC_EOSP_SETTING_OFFSET                              0x0000000000000000
141 #define TX_FES_STATUS_USER_PPDU_QC_EOSP_SETTING_LSB                                 12
142 #define TX_FES_STATUS_USER_PPDU_QC_EOSP_SETTING_MSB                                 12
143 #define TX_FES_STATUS_USER_PPDU_QC_EOSP_SETTING_MASK                                0x0000000000001000
144 
145 
146 /* Description		FC_MORE_DATA_SETTING
147 
148 			This field indicates what the setting was of the More data
149 			 bit in the Frame control field for this user (indicated
150 			 in field User_Id.)
151 
152 			Note that TXPCU, depending on programming, might overwrite
153 			 this bit in the Frame control field or just passes on what
154 			 SW and/or OLE has already programmed. Either way, TXPCU
155 			 just blindly copies the final setting of this "more Data"
156 			bit in the frame control field into this field in the TLV.
157 
158 
159 			0: more_data bit NOT set
160 			1: more_data bit is set
161 			<legal all>
162 */
163 
164 #define TX_FES_STATUS_USER_PPDU_FC_MORE_DATA_SETTING_OFFSET                         0x0000000000000000
165 #define TX_FES_STATUS_USER_PPDU_FC_MORE_DATA_SETTING_LSB                            13
166 #define TX_FES_STATUS_USER_PPDU_FC_MORE_DATA_SETTING_MSB                            13
167 #define TX_FES_STATUS_USER_PPDU_FC_MORE_DATA_SETTING_MASK                           0x0000000000002000
168 
169 
170 /* Description		FC_PWR_MGT_SETTING
171 
172 			This field indicates what the setting was of the pwr bit
173 			 in the Frame control field for this user (indicated in
174 			field User_Id.)
175 
176 			Note that TXPCU never manipulates the pwr bit in the FC
177 			field. Generating the correct setting is all managed by
178 			TX OLE.
179 			TXPCU just reports here what the pwr setting was of the (last)
180 			transmitted MPDU.
181 
182 			0: pwr_mgt bit NOT set
183 			1: pwr_mgt bit is set
184 			<legal all>
185 */
186 
187 #define TX_FES_STATUS_USER_PPDU_FC_PWR_MGT_SETTING_OFFSET                           0x0000000000000000
188 #define TX_FES_STATUS_USER_PPDU_FC_PWR_MGT_SETTING_LSB                              14
189 #define TX_FES_STATUS_USER_PPDU_FC_PWR_MGT_SETTING_MSB                              14
190 #define TX_FES_STATUS_USER_PPDU_FC_PWR_MGT_SETTING_MASK                             0x0000000000004000
191 
192 
193 /* Description		MPDU_TX_COUNT
194 
195 			Number of MPDU frames transmitted
196 
197 			Note: MPDUs that had an underrun during transmission will
198 			 still be listed here. The assumption is that underrun is
199 			 a very rare occasion, and any miscounting can therefor
200 			be accepted. If underrun happens too often, SW should change
201 			 the density settings.
202 			<legal 0-256>
203 */
204 
205 #define TX_FES_STATUS_USER_PPDU_MPDU_TX_COUNT_OFFSET                                0x0000000000000000
206 #define TX_FES_STATUS_USER_PPDU_MPDU_TX_COUNT_LSB                                   15
207 #define TX_FES_STATUS_USER_PPDU_MPDU_TX_COUNT_MSB                                   23
208 #define TX_FES_STATUS_USER_PPDU_MPDU_TX_COUNT_MASK                                  0x0000000000ff8000
209 
210 
211 /* Description		USER_BLOCKED
212 
213 			When set, TXPCU received the TX_PEER_ENTRY TLV with bit 'Block_this_user'
214 			set. As a result TXDMA did not push in any MPDUs for this
215 			 user and non were expected to be transmitted. TXPCU will
216 			 therefor NOT report any underrun conditions for this user
217 
218 			<legal all>
219 */
220 
221 #define TX_FES_STATUS_USER_PPDU_USER_BLOCKED_OFFSET                                 0x0000000000000000
222 #define TX_FES_STATUS_USER_PPDU_USER_BLOCKED_LSB                                    24
223 #define TX_FES_STATUS_USER_PPDU_USER_BLOCKED_MSB                                    24
224 #define TX_FES_STATUS_USER_PPDU_USER_BLOCKED_MASK                                   0x0000000001000000
225 
226 
227 /* Description		PRE_TRIG_RESPONSE_DELIM_COUNT
228 
229 			This field is only valid when this TX_FES_STATUS_USER_PPDU
230 			 is generated in the context of sending a response to a
231 			received trigger frame....(=> TX_FES_STATUS start indicated
232 			 for field Transmit_start_reason ==  Trigger_based_transmit_start)
233 
234 
235 			The number of NULL delimiters the TXPCU passed on to the
236 			 PHY before any real MPDU (response) data is given to the
237 			 PHY that originated from the SCHeduler command.
238 
239 			NOTE that this should not be flagged as an underrun condition.
240 
241 
242 			In units of 32 delimiters.
243 
244 			<legal all>
245 */
246 
247 #define TX_FES_STATUS_USER_PPDU_PRE_TRIG_RESPONSE_DELIM_COUNT_OFFSET                0x0000000000000000
248 #define TX_FES_STATUS_USER_PPDU_PRE_TRIG_RESPONSE_DELIM_COUNT_LSB                   25
249 #define TX_FES_STATUS_USER_PPDU_PRE_TRIG_RESPONSE_DELIM_COUNT_MSB                   31
250 #define TX_FES_STATUS_USER_PPDU_PRE_TRIG_RESPONSE_DELIM_COUNT_MASK                  0x00000000fe000000
251 
252 
253 /* Description		UNDERFLOW_BYTE_COUNT
254 
255 			The number of bytes correctly received for this MPDU when
256 			 the first underrun condition was detected
257 
258 			In case of self-gen + SCH related data, self-gen will not
259 			 be part of the underflow byte count. For example, in case
260 			 of BA/CBF, if underrun is hit immediately after BA/CBF
261 			is sent, the underflow byte count will be 0.the BA/CBF bytes
262 			 will not be part of the underflow byte count.
263 */
264 
265 #define TX_FES_STATUS_USER_PPDU_UNDERFLOW_BYTE_COUNT_OFFSET                         0x0000000000000000
266 #define TX_FES_STATUS_USER_PPDU_UNDERFLOW_BYTE_COUNT_LSB                            32
267 #define TX_FES_STATUS_USER_PPDU_UNDERFLOW_BYTE_COUNT_MSB                            47
268 #define TX_FES_STATUS_USER_PPDU_UNDERFLOW_BYTE_COUNT_MASK                           0x0000ffff00000000
269 
270 
271 /* Description		COEX_ABORT_MPDU_COUNT_VALID
272 
273 			When set to 1, the (A-MPDU) transmission was silently aborted
274 			 in the middle of transmission. The PHY faked the remaining
275 			 transmission on the medium, so that TX PCU is still waiting
276 			 for the BA frame to be received.
277 */
278 
279 #define TX_FES_STATUS_USER_PPDU_COEX_ABORT_MPDU_COUNT_VALID_OFFSET                  0x0000000000000000
280 #define TX_FES_STATUS_USER_PPDU_COEX_ABORT_MPDU_COUNT_VALID_LSB                     48
281 #define TX_FES_STATUS_USER_PPDU_COEX_ABORT_MPDU_COUNT_VALID_MSB                     48
282 #define TX_FES_STATUS_USER_PPDU_COEX_ABORT_MPDU_COUNT_VALID_MASK                    0x0001000000000000
283 
284 
285 /* Description		COEX_ABORT_MPDU_COUNT
286 
287 			Field only valid when 'Coex_abort_mpdu_count_valid' is set.
288 
289 			The number of MPDU frames that were properly sent bdoefore
290 			 the coex transmit abort request was received
291 			<legal 0-256>
292 */
293 
294 #define TX_FES_STATUS_USER_PPDU_COEX_ABORT_MPDU_COUNT_OFFSET                        0x0000000000000000
295 #define TX_FES_STATUS_USER_PPDU_COEX_ABORT_MPDU_COUNT_LSB                           49
296 #define TX_FES_STATUS_USER_PPDU_COEX_ABORT_MPDU_COUNT_MSB                           57
297 #define TX_FES_STATUS_USER_PPDU_COEX_ABORT_MPDU_COUNT_MASK                          0x03fe000000000000
298 
299 
300 /* Description		TRANSMITTED_TID
301 
302 			TID field blindy copied over from the TX_QUEUE_EXTENSION
303 			 TLV, field qos_ctrl[3:0]
304 			<legal all>
305 */
306 
307 #define TX_FES_STATUS_USER_PPDU_TRANSMITTED_TID_OFFSET                              0x0000000000000000
308 #define TX_FES_STATUS_USER_PPDU_TRANSMITTED_TID_LSB                                 58
309 #define TX_FES_STATUS_USER_PPDU_TRANSMITTED_TID_MSB                                 61
310 #define TX_FES_STATUS_USER_PPDU_TRANSMITTED_TID_MASK                                0x3c00000000000000
311 
312 
313 /* Description		TXDMA_DROPPED_MPDU_WARNING
314 
315 			Indication to FW a warning that Tx DMA has dropped MPDUs
316 			 due to SFM FIFO full condition
317 			TXPCU fills this from OR of all TXDMA_dropped_mpdu_warning
318 			 in 'TX_MPDU_STARTs' for this PPDU.
319 			<legal all>
320 */
321 
322 #define TX_FES_STATUS_USER_PPDU_TXDMA_DROPPED_MPDU_WARNING_OFFSET                   0x0000000000000000
323 #define TX_FES_STATUS_USER_PPDU_TXDMA_DROPPED_MPDU_WARNING_LSB                      62
324 #define TX_FES_STATUS_USER_PPDU_TXDMA_DROPPED_MPDU_WARNING_MSB                      62
325 #define TX_FES_STATUS_USER_PPDU_TXDMA_DROPPED_MPDU_WARNING_MASK                     0x4000000000000000
326 
327 
328 /* Description		RESERVED_1
329 
330 			Reserved and not used by HW
331 			<legal 0>
332 */
333 
334 #define TX_FES_STATUS_USER_PPDU_RESERVED_1_OFFSET                                   0x0000000000000000
335 #define TX_FES_STATUS_USER_PPDU_RESERVED_1_LSB                                      63
336 #define TX_FES_STATUS_USER_PPDU_RESERVED_1_MSB                                      63
337 #define TX_FES_STATUS_USER_PPDU_RESERVED_1_MASK                                     0x8000000000000000
338 
339 
340 /* Description		DURATION
341 
342 			The value of the duration field that TXPCU inserted in transmitted
343 			 frames, for Tx Monitor to report
344 
345 			For frames of encap type Ethernet or 802_3 TXPCU will always
346 			 insert this value
347 
348 
349 			For frames of encap type: RAW and Native WiFi, TXPCU will
350 			 check the 'Duration_field_mask' setting in TX_RAW_OR_NATIVE_FRAME_SETUP
351 			 TLV to find out if overwrite is enabled. (This is per user)
352 
353 
354 			In case of multi TID transmission of Multi STA transmission,
355 			TXPCU will look at the 'TX_RAW_OR_NATIVE_FRAME_SETUP' of
356 			 the 'first user'
357 			<legal all>
358 */
359 
360 #define TX_FES_STATUS_USER_PPDU_DURATION_OFFSET                                     0x0000000000000008
361 #define TX_FES_STATUS_USER_PPDU_DURATION_LSB                                        0
362 #define TX_FES_STATUS_USER_PPDU_DURATION_MSB                                        15
363 #define TX_FES_STATUS_USER_PPDU_DURATION_MASK                                       0x000000000000ffff
364 
365 
366 /* Description		NUM_EOF_DELIM_ADDED
367 
368 			The total number of EOF pad delimiters added by TXPCU to
369 			 the current PPDU for the MD/multi-TID group this user belongs
370 			 to
371 
372 			Set to 0xFFFF if the number exceeds the field width
373 			<legal all>
374 */
375 
376 #define TX_FES_STATUS_USER_PPDU_NUM_EOF_DELIM_ADDED_OFFSET                          0x0000000000000008
377 #define TX_FES_STATUS_USER_PPDU_NUM_EOF_DELIM_ADDED_LSB                             16
378 #define TX_FES_STATUS_USER_PPDU_NUM_EOF_DELIM_ADDED_MSB                             31
379 #define TX_FES_STATUS_USER_PPDU_NUM_EOF_DELIM_ADDED_MASK                            0x00000000ffff0000
380 
381 
382 /* Description		PSDU_OCTET
383 
384 			Field only valid in case in 'TX_FES_STATUS_START' the field
385 			 Transmit_start_reason != Trigger_based_transmit_start
386 
387 			PSDU length in octets which includes all useful data in
388 			a packet which includes EOF padding and final padding (including
389 			 the last 0 - 3 bytes).
390 
391 			This is copied by TXPCU from 'PCU_PPDU_SETUP_USER.'
392 
393 			<legal all>
394 */
395 
396 #define TX_FES_STATUS_USER_PPDU_PSDU_OCTET_OFFSET                                   0x0000000000000008
397 #define TX_FES_STATUS_USER_PPDU_PSDU_OCTET_LSB                                      32
398 #define TX_FES_STATUS_USER_PPDU_PSDU_OCTET_MSB                                      55
399 #define TX_FES_STATUS_USER_PPDU_PSDU_OCTET_MASK                                     0x00ffffff00000000
400 
401 
402 /* Description		QOS_BUF_STATE
403 
404 			The value of the buffer state field in the QoS control that
405 			 TXPCU inserted in transmitted frames, for Tx Monitor to
406 			 report
407 
408 			TXPCU checks the '*Buf_state*' settings in 'TX_QUEUE_EXTENSION'
409 			TLV to determine the value to insert.
410 
411 			If TXPCU did not overwrite the buffer state field, this
412 			shall be set to 0x0.
413 			<legal all>
414 */
415 
416 #define TX_FES_STATUS_USER_PPDU_QOS_BUF_STATE_OFFSET                                0x0000000000000008
417 #define TX_FES_STATUS_USER_PPDU_QOS_BUF_STATE_LSB                                   56
418 #define TX_FES_STATUS_USER_PPDU_QOS_BUF_STATE_MSB                                   63
419 #define TX_FES_STATUS_USER_PPDU_QOS_BUF_STATE_MASK                                  0xff00000000000000
420 
421 
422 /* Description		NUM_NULL_DELIM_ADDED
423 
424 			The total number of non-EOF pad/null delimiters added by
425 			 TXPCU to the current PPDU for this user
426 
427 			<legal all>
428 */
429 
430 #define TX_FES_STATUS_USER_PPDU_NUM_NULL_DELIM_ADDED_OFFSET                         0x0000000000000010
431 #define TX_FES_STATUS_USER_PPDU_NUM_NULL_DELIM_ADDED_LSB                            0
432 #define TX_FES_STATUS_USER_PPDU_NUM_NULL_DELIM_ADDED_MSB                            21
433 #define TX_FES_STATUS_USER_PPDU_NUM_NULL_DELIM_ADDED_MASK                           0x00000000003fffff
434 
435 
436 /* Description		RESERVED_4A
437 
438 			<legal 0>
439 */
440 
441 #define TX_FES_STATUS_USER_PPDU_RESERVED_4A_OFFSET                                  0x0000000000000010
442 #define TX_FES_STATUS_USER_PPDU_RESERVED_4A_LSB                                     22
443 #define TX_FES_STATUS_USER_PPDU_RESERVED_4A_MSB                                     23
444 #define TX_FES_STATUS_USER_PPDU_RESERVED_4A_MASK                                    0x0000000000c00000
445 
446 
447 /* Description		CV_CORR_USER_VALID_IN_PHY
448 
449 			PDG sets this as 1 for up to 8 users enabled in 'PHYTX_CV_CORR_STATUS'
450 			after CV correlation, to be copied from 'PCU_PPDU_SETUP_USER.'
451 
452 
453 			<legal all>
454 */
455 
456 #define TX_FES_STATUS_USER_PPDU_CV_CORR_USER_VALID_IN_PHY_OFFSET                    0x0000000000000010
457 #define TX_FES_STATUS_USER_PPDU_CV_CORR_USER_VALID_IN_PHY_LSB                       24
458 #define TX_FES_STATUS_USER_PPDU_CV_CORR_USER_VALID_IN_PHY_MSB                       24
459 #define TX_FES_STATUS_USER_PPDU_CV_CORR_USER_VALID_IN_PHY_MASK                      0x0000000001000000
460 
461 
462 /* Description		NSS
463 
464 			Number of Spatial Streams occupied by the User, to be copied
465 			 from 'PCU_PPDU_SETUP_USER' by TXPCU
466 
467 			<enum 0 1_spatial_stream>Single spatial stream
468 			<enum 1 2_spatial_streams>2 spatial streams
469 			<enum 2 3_spatial_streams>3 spatial streams
470 			<enum 3 4_spatial_streams>4 spatial streams
471 			<enum 4 5_spatial_streams>5 spatial streams
472 			<enum 5 6_spatial_streams>6 spatial streams
473 			<enum 6 7_spatial_streams>7 spatial streams
474 			<enum 7 8_spatial_streams>8 spatial streams
475 */
476 
477 #define TX_FES_STATUS_USER_PPDU_NSS_OFFSET                                          0x0000000000000010
478 #define TX_FES_STATUS_USER_PPDU_NSS_LSB                                             25
479 #define TX_FES_STATUS_USER_PPDU_NSS_MSB                                             27
480 #define TX_FES_STATUS_USER_PPDU_NSS_MASK                                            0x000000000e000000
481 
482 
483 /* Description		MCS
484 
485 			Modulation Coding Scheme for the User, to be copied from
486 			 'PCU_PPDU_SETUP_USER' by TXPCU
487 
488 			<legal all>
489 */
490 
491 #define TX_FES_STATUS_USER_PPDU_MCS_OFFSET                                          0x0000000000000010
492 #define TX_FES_STATUS_USER_PPDU_MCS_LSB                                             28
493 #define TX_FES_STATUS_USER_PPDU_MCS_MSB                                             31
494 #define TX_FES_STATUS_USER_PPDU_MCS_MASK                                            0x00000000f0000000
495 
496 
497 /* Description		HT_CONTROL
498 
499 			The value of the HT control field that TXPCU inserted in
500 			 transmitted frames, for Tx Monitor to report
501 
502 			TXPCU checks the various HT-control-related settings in 'TX_QUEUE_EXTENSION'
503 			TLV to determine the value to insert.
504 
505 			If TXPCU did not overwrite the HT control field, this shall
506 			 be set to 0x0.
507 			<legal all>
508 */
509 
510 #define TX_FES_STATUS_USER_PPDU_HT_CONTROL_OFFSET                                   0x0000000000000010
511 #define TX_FES_STATUS_USER_PPDU_HT_CONTROL_LSB                                      32
512 #define TX_FES_STATUS_USER_PPDU_HT_CONTROL_MSB                                      63
513 #define TX_FES_STATUS_USER_PPDU_HT_CONTROL_MASK                                     0xffffffff00000000
514 
515 
516 
517 #endif   // TX_FES_STATUS_USER_PPDU
518