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