xref: /wlan-driver/fw-api/hw/qca5332/tx_fes_status_start.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_START_H_
27*5113495bSYour Name #define _TX_FES_STATUS_START_H_
28*5113495bSYour Name #if !defined(__ASSEMBLER__)
29*5113495bSYour Name #endif
30*5113495bSYour Name 
31*5113495bSYour Name #define NUM_OF_DWORDS_TX_FES_STATUS_START 4
32*5113495bSYour Name 
33*5113495bSYour Name #define NUM_OF_QWORDS_TX_FES_STATUS_START 2
34*5113495bSYour Name 
35*5113495bSYour Name 
36*5113495bSYour Name struct tx_fes_status_start {
37*5113495bSYour Name #ifndef WIFI_BIT_ORDER_BIG_ENDIAN
38*5113495bSYour Name              uint32_t schedule_id                                             : 32; // [31:0]
39*5113495bSYour Name              uint32_t reserved_1a                                             :  8, // [7:0]
40*5113495bSYour Name                       transmit_start_reason                                   :  3, // [10:8]
41*5113495bSYour Name                       disabled_user_bitmap_36_32                              :  5, // [15:11]
42*5113495bSYour Name                       schedule_cmd_ring_id                                    :  5, // [20:16]
43*5113495bSYour Name                       fes_control_mode                                        :  2, // [22:21]
44*5113495bSYour Name                       schedule_try                                            :  4, // [26:23]
45*5113495bSYour Name                       medium_prot_type                                        :  3, // [29:27]
46*5113495bSYour Name                       reserved_1b                                             :  2; // [31:30]
47*5113495bSYour Name              uint32_t optimal_bw_try_count                                    :  4, // [3:0]
48*5113495bSYour Name                       number_of_users                                         :  7, // [10:4]
49*5113495bSYour Name                       coex_nack_count                                         :  5, // [15:11]
50*5113495bSYour Name                       cca_ed0                                                 : 16; // [31:16]
51*5113495bSYour Name              uint32_t disabled_user_bitmap_31_0                               : 32; // [31:0]
52*5113495bSYour Name #else
53*5113495bSYour Name              uint32_t schedule_id                                             : 32; // [31:0]
54*5113495bSYour Name              uint32_t reserved_1b                                             :  2, // [31:30]
55*5113495bSYour Name                       medium_prot_type                                        :  3, // [29:27]
56*5113495bSYour Name                       schedule_try                                            :  4, // [26:23]
57*5113495bSYour Name                       fes_control_mode                                        :  2, // [22:21]
58*5113495bSYour Name                       schedule_cmd_ring_id                                    :  5, // [20:16]
59*5113495bSYour Name                       disabled_user_bitmap_36_32                              :  5, // [15:11]
60*5113495bSYour Name                       transmit_start_reason                                   :  3, // [10:8]
61*5113495bSYour Name                       reserved_1a                                             :  8; // [7:0]
62*5113495bSYour Name              uint32_t cca_ed0                                                 : 16, // [31:16]
63*5113495bSYour Name                       coex_nack_count                                         :  5, // [15:11]
64*5113495bSYour Name                       number_of_users                                         :  7, // [10:4]
65*5113495bSYour Name                       optimal_bw_try_count                                    :  4; // [3:0]
66*5113495bSYour Name              uint32_t disabled_user_bitmap_31_0                               : 32; // [31:0]
67*5113495bSYour Name #endif
68*5113495bSYour Name };
69*5113495bSYour Name 
70*5113495bSYour Name 
71*5113495bSYour Name /* Description		SCHEDULE_ID
72*5113495bSYour Name 
73*5113495bSYour Name 			A field that SW can use to link this FES status to the schedule
74*5113495bSYour Name 			 command that originated this transmission.
75*5113495bSYour Name */
76*5113495bSYour Name 
77*5113495bSYour Name #define TX_FES_STATUS_START_SCHEDULE_ID_OFFSET                                      0x0000000000000000
78*5113495bSYour Name #define TX_FES_STATUS_START_SCHEDULE_ID_LSB                                         0
79*5113495bSYour Name #define TX_FES_STATUS_START_SCHEDULE_ID_MSB                                         31
80*5113495bSYour Name #define TX_FES_STATUS_START_SCHEDULE_ID_MASK                                        0x00000000ffffffff
81*5113495bSYour Name 
82*5113495bSYour Name 
83*5113495bSYour Name /* Description		RESERVED_1A
84*5113495bSYour Name 
85*5113495bSYour Name 			Hamilton v1 used this to report 'cca_ed0' but it was expanded
86*5113495bSYour Name 			 and moved to word 2.
87*5113495bSYour Name 			<legal 0>
88*5113495bSYour Name */
89*5113495bSYour Name 
90*5113495bSYour Name #define TX_FES_STATUS_START_RESERVED_1A_OFFSET                                      0x0000000000000000
91*5113495bSYour Name #define TX_FES_STATUS_START_RESERVED_1A_LSB                                         32
92*5113495bSYour Name #define TX_FES_STATUS_START_RESERVED_1A_MSB                                         39
93*5113495bSYour Name #define TX_FES_STATUS_START_RESERVED_1A_MASK                                        0x000000ff00000000
94*5113495bSYour Name 
95*5113495bSYour Name 
96*5113495bSYour Name /* Description		TRANSMIT_START_REASON
97*5113495bSYour Name 
98*5113495bSYour Name 			Indicates what the SCH start reason reason was for initiating
99*5113495bSYour Name 			 this transmission.
100*5113495bSYour Name 
101*5113495bSYour Name 			<enum 0 BO_based_transmit_start> The transmission of this
102*5113495bSYour Name 			 PPDU got initiated by the scheduler due to Backoff expiration
103*5113495bSYour Name 
104*5113495bSYour Name 			<enum 1 Trigger_based_transmit_start> The transmission of
105*5113495bSYour Name 			 this PPDU got initiated by the scheduler due to reception
106*5113495bSYour Name 			 (by the SCH) of the TLV RECEIVED_TRIGGER_INFO that RXPCU
107*5113495bSYour Name 			 generated. Note that this can be an OFDMA trigger frame
108*5113495bSYour Name 			 based transmission as well as some legacy trigger (PS-POLL,
109*5113495bSYour Name 			Qboost, U-APSD, etc.)  based transmission
110*5113495bSYour Name 			<enum 2 Sifs_continuation_in_ongoing_burst> This transmission
111*5113495bSYour Name 			 of this PPDU got initiated as part of SIFS continuation.
112*5113495bSYour Name 			An earlier PPDU was transmitted due to RBO expiration. Next
113*5113495bSYour Name 			 command is also expected to be transmitted in SIFS burst.
114*5113495bSYour Name 
115*5113495bSYour Name 			<enum 3 Sifs_continuation_last_command> This transmission
116*5113495bSYour Name 			 of this PPDU got initiated as part of SIFS continuation
117*5113495bSYour Name 			 and this is the last command in the burst. An earlier PPDU
118*5113495bSYour Name 			 was transmitted due to RBO expiration.
119*5113495bSYour Name 			<enum 4 NTBR_response_start> DO NOT USE
120*5113495bSYour Name 			<legal 0-4>
121*5113495bSYour Name */
122*5113495bSYour Name 
123*5113495bSYour Name #define TX_FES_STATUS_START_TRANSMIT_START_REASON_OFFSET                            0x0000000000000000
124*5113495bSYour Name #define TX_FES_STATUS_START_TRANSMIT_START_REASON_LSB                               40
125*5113495bSYour Name #define TX_FES_STATUS_START_TRANSMIT_START_REASON_MSB                               42
126*5113495bSYour Name #define TX_FES_STATUS_START_TRANSMIT_START_REASON_MASK                              0x0000070000000000
127*5113495bSYour Name 
128*5113495bSYour Name 
129*5113495bSYour Name /* Description		DISABLED_USER_BITMAP_36_32
130*5113495bSYour Name 
131*5113495bSYour Name 			Bitmap of users that are disabled for this transmission,
132*5113495bSYour Name 			MSB 5 bits
133*5113495bSYour Name 
134*5113495bSYour Name 			TXPCU converts disabled_group_bitmap_* in 'PCU_PPDU_SETUP_START'
135*5113495bSYour Name 			from groups to users.
136*5113495bSYour Name 			<legal all>
137*5113495bSYour Name */
138*5113495bSYour Name 
139*5113495bSYour Name #define TX_FES_STATUS_START_DISABLED_USER_BITMAP_36_32_OFFSET                       0x0000000000000000
140*5113495bSYour Name #define TX_FES_STATUS_START_DISABLED_USER_BITMAP_36_32_LSB                          43
141*5113495bSYour Name #define TX_FES_STATUS_START_DISABLED_USER_BITMAP_36_32_MSB                          47
142*5113495bSYour Name #define TX_FES_STATUS_START_DISABLED_USER_BITMAP_36_32_MASK                         0x0000f80000000000
143*5113495bSYour Name 
144*5113495bSYour Name 
145*5113495bSYour Name /* Description		SCHEDULE_CMD_RING_ID
146*5113495bSYour Name 
147*5113495bSYour Name 			The schedule command ring  that originated this transmission
148*5113495bSYour Name 
149*5113495bSYour Name 			<enum 0 sch_cmd_ring_number0>
150*5113495bSYour Name 			<enum 1 sch_cmd_ring_number1>
151*5113495bSYour Name 			<enum 2 sch_cmd_ring_number2>
152*5113495bSYour Name 			<enum 3 sch_cmd_ring_number3>
153*5113495bSYour Name 			<enum 4 sch_cmd_ring_number4>
154*5113495bSYour Name 			<enum 5 sch_cmd_ring_number5>
155*5113495bSYour Name 			<enum 6 sch_cmd_ring_number6>
156*5113495bSYour Name 			<enum 7 sch_cmd_ring_number7>
157*5113495bSYour Name 			<enum 8 sch_cmd_ring_number8>
158*5113495bSYour Name 			<enum 9 sch_cmd_ring_number9>
159*5113495bSYour Name 			<enum 10 sch_cmd_ring_number10>
160*5113495bSYour Name 			<enum 11 sch_cmd_ring_number11>
161*5113495bSYour Name 			<enum 12 sch_cmd_ring_number12>
162*5113495bSYour Name 			<enum 13 sch_cmd_ring_number13>
163*5113495bSYour Name 			<enum 14 sch_cmd_ring_number14>
164*5113495bSYour Name 			<enum 15 sch_cmd_ring_number15>
165*5113495bSYour Name 			<enum 16 sch_cmd_ring_number16>
166*5113495bSYour Name 			<enum 17 sch_cmd_ring_number17>
167*5113495bSYour Name 			<enum 18 sch_cmd_ring_number18>
168*5113495bSYour Name 			<enum 19 sch_cmd_ring_number19>
169*5113495bSYour Name 			<enum 20 sch_cmd_ring_number20>
170*5113495bSYour Name 
171*5113495bSYour Name 			 <legal 0-20>
172*5113495bSYour Name */
173*5113495bSYour Name 
174*5113495bSYour Name #define TX_FES_STATUS_START_SCHEDULE_CMD_RING_ID_OFFSET                             0x0000000000000000
175*5113495bSYour Name #define TX_FES_STATUS_START_SCHEDULE_CMD_RING_ID_LSB                                48
176*5113495bSYour Name #define TX_FES_STATUS_START_SCHEDULE_CMD_RING_ID_MSB                                52
177*5113495bSYour Name #define TX_FES_STATUS_START_SCHEDULE_CMD_RING_ID_MASK                               0x001f000000000000
178*5113495bSYour Name 
179*5113495bSYour Name 
180*5113495bSYour Name /* Description		FES_CONTROL_MODE
181*5113495bSYour Name 
182*5113495bSYour Name 			<enum 0  SW_transmit_mode>  No HW generated TLVs
183*5113495bSYour Name 			<enum 1 PDG_transmit_mode> PDG  is activated to generate
184*5113495bSYour Name 			 TLVs
185*5113495bSYour Name 
186*5113495bSYour Name 
187*5113495bSYour Name 			Note: Final Bandwidth selection is always performed by TX
188*5113495bSYour Name 			 PCU.
189*5113495bSYour Name 
190*5113495bSYour Name 			<legal 0-1>
191*5113495bSYour Name */
192*5113495bSYour Name 
193*5113495bSYour Name #define TX_FES_STATUS_START_FES_CONTROL_MODE_OFFSET                                 0x0000000000000000
194*5113495bSYour Name #define TX_FES_STATUS_START_FES_CONTROL_MODE_LSB                                    53
195*5113495bSYour Name #define TX_FES_STATUS_START_FES_CONTROL_MODE_MSB                                    54
196*5113495bSYour Name #define TX_FES_STATUS_START_FES_CONTROL_MODE_MASK                                   0x0060000000000000
197*5113495bSYour Name 
198*5113495bSYour Name 
199*5113495bSYour Name /* Description		SCHEDULE_TRY
200*5113495bSYour Name 
201*5113495bSYour Name 			The number of times this scheduler command has been tried
202*5113495bSYour Name 
203*5113495bSYour Name 			<legal all>
204*5113495bSYour Name */
205*5113495bSYour Name 
206*5113495bSYour Name #define TX_FES_STATUS_START_SCHEDULE_TRY_OFFSET                                     0x0000000000000000
207*5113495bSYour Name #define TX_FES_STATUS_START_SCHEDULE_TRY_LSB                                        55
208*5113495bSYour Name #define TX_FES_STATUS_START_SCHEDULE_TRY_MSB                                        58
209*5113495bSYour Name #define TX_FES_STATUS_START_SCHEDULE_TRY_MASK                                       0x0780000000000000
210*5113495bSYour Name 
211*5113495bSYour Name 
212*5113495bSYour Name /* Description		MEDIUM_PROT_TYPE
213*5113495bSYour Name 
214*5113495bSYour Name 			Self Gen Medium Prot type used
215*5113495bSYour Name 			<enum 0 No_protection>
216*5113495bSYour Name 			<enum 1 RTS_legacy>
217*5113495bSYour Name 			<enum 2 RTS_11ac_static_bw>
218*5113495bSYour Name 			<enum 3 RTS_11ac_dynamic_bw>
219*5113495bSYour Name 			<enum 4 CTS2Self>
220*5113495bSYour Name 			<enum 5 QoS_Null_no_ack_3addr>
221*5113495bSYour Name 			<enum 6 QoS_Null_no_ack_4addr>
222*5113495bSYour Name 
223*5113495bSYour Name 			<legal 0-6>
224*5113495bSYour Name 			Field only valid for user0 FES status.
225*5113495bSYour Name */
226*5113495bSYour Name 
227*5113495bSYour Name #define TX_FES_STATUS_START_MEDIUM_PROT_TYPE_OFFSET                                 0x0000000000000000
228*5113495bSYour Name #define TX_FES_STATUS_START_MEDIUM_PROT_TYPE_LSB                                    59
229*5113495bSYour Name #define TX_FES_STATUS_START_MEDIUM_PROT_TYPE_MSB                                    61
230*5113495bSYour Name #define TX_FES_STATUS_START_MEDIUM_PROT_TYPE_MASK                                   0x3800000000000000
231*5113495bSYour Name 
232*5113495bSYour Name 
233*5113495bSYour Name /* Description		RESERVED_1B
234*5113495bSYour Name 
235*5113495bSYour Name 			<legal 0>
236*5113495bSYour Name */
237*5113495bSYour Name 
238*5113495bSYour Name #define TX_FES_STATUS_START_RESERVED_1B_OFFSET                                      0x0000000000000000
239*5113495bSYour Name #define TX_FES_STATUS_START_RESERVED_1B_LSB                                         62
240*5113495bSYour Name #define TX_FES_STATUS_START_RESERVED_1B_MSB                                         63
241*5113495bSYour Name #define TX_FES_STATUS_START_RESERVED_1B_MASK                                        0xc000000000000000
242*5113495bSYour Name 
243*5113495bSYour Name 
244*5113495bSYour Name /* Description		OPTIMAL_BW_TRY_COUNT
245*5113495bSYour Name 
246*5113495bSYour Name 			This field indicates how many times this scheduling command
247*5113495bSYour Name 			 has been flushed by TXPCU  as a result of most desired
248*5113495bSYour Name 			BW not being available.
249*5113495bSYour Name 			<legal all>
250*5113495bSYour Name */
251*5113495bSYour Name 
252*5113495bSYour Name #define TX_FES_STATUS_START_OPTIMAL_BW_TRY_COUNT_OFFSET                             0x0000000000000008
253*5113495bSYour Name #define TX_FES_STATUS_START_OPTIMAL_BW_TRY_COUNT_LSB                                0
254*5113495bSYour Name #define TX_FES_STATUS_START_OPTIMAL_BW_TRY_COUNT_MSB                                3
255*5113495bSYour Name #define TX_FES_STATUS_START_OPTIMAL_BW_TRY_COUNT_MASK                               0x000000000000000f
256*5113495bSYour Name 
257*5113495bSYour Name 
258*5113495bSYour Name /* Description		NUMBER_OF_USERS
259*5113495bSYour Name 
260*5113495bSYour Name 			The number of users in this transmission.
261*5113495bSYour Name */
262*5113495bSYour Name 
263*5113495bSYour Name #define TX_FES_STATUS_START_NUMBER_OF_USERS_OFFSET                                  0x0000000000000008
264*5113495bSYour Name #define TX_FES_STATUS_START_NUMBER_OF_USERS_LSB                                     4
265*5113495bSYour Name #define TX_FES_STATUS_START_NUMBER_OF_USERS_MSB                                     10
266*5113495bSYour Name #define TX_FES_STATUS_START_NUMBER_OF_USERS_MASK                                    0x00000000000007f0
267*5113495bSYour Name 
268*5113495bSYour Name 
269*5113495bSYour Name /* Description		COEX_NACK_COUNT
270*5113495bSYour Name 
271*5113495bSYour Name 			Consumer: SCH
272*5113495bSYour Name 			Producer: TXPCU
273*5113495bSYour Name 
274*5113495bSYour Name 			The number of times PDG informed the SCHeduler module that
275*5113495bSYour Name 			 for this scheduling command, the WLAN transmission can
276*5113495bSYour Name 			not be initialized due to getting a NACK response from the
277*5113495bSYour Name 			 Coex engine, or PDG not being able to fit a transmission
278*5113495bSYour Name 			 within the timing constraints given by Coex.
279*5113495bSYour Name 
280*5113495bSYour Name 			Note that SCH will (re)set this count to 0 at the start
281*5113495bSYour Name 			of reading a new SCH command.
282*5113495bSYour Name 			This count is maintained on a per ring basis by the SCHeduler
283*5113495bSYour Name 
284*5113495bSYour Name 
285*5113495bSYour Name 
286*5113495bSYour Name 			<legal all>
287*5113495bSYour Name */
288*5113495bSYour Name 
289*5113495bSYour Name #define TX_FES_STATUS_START_COEX_NACK_COUNT_OFFSET                                  0x0000000000000008
290*5113495bSYour Name #define TX_FES_STATUS_START_COEX_NACK_COUNT_LSB                                     11
291*5113495bSYour Name #define TX_FES_STATUS_START_COEX_NACK_COUNT_MSB                                     15
292*5113495bSYour Name #define TX_FES_STATUS_START_COEX_NACK_COUNT_MASK                                    0x000000000000f800
293*5113495bSYour Name 
294*5113495bSYour Name 
295*5113495bSYour Name /* Description		CCA_ED0
296*5113495bSYour Name 
297*5113495bSYour Name 			Used by TXPCU to report CCA status at time of transmit bandwidth
298*5113495bSYour Name 			 selection.  Each bit is a sample of BUSY/IDLE of ED[0] (as
299*5113495bSYour Name 			 provided by SCH to TXPCU) for each 20 MHz sub-band. These
300*5113495bSYour Name 			 stats could potentially be used in future for rate adaptation.
301*5113495bSYour Name 
302*5113495bSYour Name 			Hamilton v1 used this to report 'current_tx_duration' but
303*5113495bSYour Name 			 it was unreliable and changed to expand 'cca_ed0' to 16-bit.
304*5113495bSYour Name 
305*5113495bSYour Name 			<legal all>
306*5113495bSYour Name */
307*5113495bSYour Name 
308*5113495bSYour Name #define TX_FES_STATUS_START_CCA_ED0_OFFSET                                          0x0000000000000008
309*5113495bSYour Name #define TX_FES_STATUS_START_CCA_ED0_LSB                                             16
310*5113495bSYour Name #define TX_FES_STATUS_START_CCA_ED0_MSB                                             31
311*5113495bSYour Name #define TX_FES_STATUS_START_CCA_ED0_MASK                                            0x00000000ffff0000
312*5113495bSYour Name 
313*5113495bSYour Name 
314*5113495bSYour Name /* Description		DISABLED_USER_BITMAP_31_0
315*5113495bSYour Name 
316*5113495bSYour Name 			Bitmap of users that are disabled for this transmission,
317*5113495bSYour Name 			LSB 32 bits
318*5113495bSYour Name 
319*5113495bSYour Name 			TXPCU converts disabled_group_bitmap_* in 'PCU_PPDU_SETUP_START'
320*5113495bSYour Name 			from groups to users.
321*5113495bSYour Name 
322*5113495bSYour Name 			Hamilton v1 did not include this (and any subsequent) word.
323*5113495bSYour Name 
324*5113495bSYour Name 			<legal all>
325*5113495bSYour Name */
326*5113495bSYour Name 
327*5113495bSYour Name #define TX_FES_STATUS_START_DISABLED_USER_BITMAP_31_0_OFFSET                        0x0000000000000008
328*5113495bSYour Name #define TX_FES_STATUS_START_DISABLED_USER_BITMAP_31_0_LSB                           32
329*5113495bSYour Name #define TX_FES_STATUS_START_DISABLED_USER_BITMAP_31_0_MSB                           63
330*5113495bSYour Name #define TX_FES_STATUS_START_DISABLED_USER_BITMAP_31_0_MASK                          0xffffffff00000000
331*5113495bSYour Name 
332*5113495bSYour Name 
333*5113495bSYour Name 
334*5113495bSYour Name #endif   // TX_FES_STATUS_START
335