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