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