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