xref: /wlan-driver/fw-api/hw/qca5332/tx_fes_status_start_prot.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_PROT_H_
27*5113495bSYour Name #define _TX_FES_STATUS_START_PROT_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_PROT 4
32*5113495bSYour Name 
33*5113495bSYour Name #define NUM_OF_QWORDS_TX_FES_STATUS_START_PROT 2
34*5113495bSYour Name 
35*5113495bSYour Name 
36*5113495bSYour Name struct tx_fes_status_start_prot {
37*5113495bSYour Name #ifndef WIFI_BIT_ORDER_BIG_ENDIAN
38*5113495bSYour Name              uint32_t prot_timestamp_lower_32                                 : 32; // [31:0]
39*5113495bSYour Name              uint32_t prot_timestamp_upper_32                                 : 32; // [31:0]
40*5113495bSYour Name              uint32_t subband_mask                                            : 16, // [15:0]
41*5113495bSYour Name                       reserved_2b                                             :  4, // [19:16]
42*5113495bSYour Name                       prot_coex_based_tx_bw                                   :  3, // [22:20]
43*5113495bSYour Name                       prot_coex_based_ant_mask                                :  8, // [30:23]
44*5113495bSYour Name                       prot_coex_result_alt_based                              :  1; // [31:31]
45*5113495bSYour Name              uint32_t prot_coex_tx_pwr_shared_ant                             :  8, // [7:0]
46*5113495bSYour Name                       prot_coex_tx_pwr_ant                                    :  8, // [15:8]
47*5113495bSYour Name                       prot_concurrent_bt_tx                                   :  1, // [16:16]
48*5113495bSYour Name                       prot_concurrent_wlan_tx                                 :  1, // [17:17]
49*5113495bSYour Name                       prot_concurrent_wan_tx                                  :  1, // [18:18]
50*5113495bSYour Name                       prot_concurrent_wan_rx                                  :  1, // [19:19]
51*5113495bSYour Name                       prot_coex_pwr_reduction_bt                              :  1, // [20:20]
52*5113495bSYour Name                       prot_coex_pwr_reduction_wlan                            :  1, // [21:21]
53*5113495bSYour Name                       prot_coex_pwr_reduction_wan                             :  1, // [22:22]
54*5113495bSYour Name                       prot_request_packet_bw                                  :  3, // [25:23]
55*5113495bSYour Name                       response_type                                           :  5, // [30:26]
56*5113495bSYour Name                       reserved_3a                                             :  1; // [31:31]
57*5113495bSYour Name #else
58*5113495bSYour Name              uint32_t prot_timestamp_lower_32                                 : 32; // [31:0]
59*5113495bSYour Name              uint32_t prot_timestamp_upper_32                                 : 32; // [31:0]
60*5113495bSYour Name              uint32_t prot_coex_result_alt_based                              :  1, // [31:31]
61*5113495bSYour Name                       prot_coex_based_ant_mask                                :  8, // [30:23]
62*5113495bSYour Name                       prot_coex_based_tx_bw                                   :  3, // [22:20]
63*5113495bSYour Name                       reserved_2b                                             :  4, // [19:16]
64*5113495bSYour Name                       subband_mask                                            : 16; // [15:0]
65*5113495bSYour Name              uint32_t reserved_3a                                             :  1, // [31:31]
66*5113495bSYour Name                       response_type                                           :  5, // [30:26]
67*5113495bSYour Name                       prot_request_packet_bw                                  :  3, // [25:23]
68*5113495bSYour Name                       prot_coex_pwr_reduction_wan                             :  1, // [22:22]
69*5113495bSYour Name                       prot_coex_pwr_reduction_wlan                            :  1, // [21:21]
70*5113495bSYour Name                       prot_coex_pwr_reduction_bt                              :  1, // [20:20]
71*5113495bSYour Name                       prot_concurrent_wan_rx                                  :  1, // [19:19]
72*5113495bSYour Name                       prot_concurrent_wan_tx                                  :  1, // [18:18]
73*5113495bSYour Name                       prot_concurrent_wlan_tx                                 :  1, // [17:17]
74*5113495bSYour Name                       prot_concurrent_bt_tx                                   :  1, // [16:16]
75*5113495bSYour Name                       prot_coex_tx_pwr_ant                                    :  8, // [15:8]
76*5113495bSYour Name                       prot_coex_tx_pwr_shared_ant                             :  8; // [7:0]
77*5113495bSYour Name #endif
78*5113495bSYour Name };
79*5113495bSYour Name 
80*5113495bSYour Name 
81*5113495bSYour Name /* Description		PROT_TIMESTAMP_LOWER_32
82*5113495bSYour Name 
83*5113495bSYour Name 			Global timer value at start of Protection transmission
84*5113495bSYour Name */
85*5113495bSYour Name 
86*5113495bSYour Name #define TX_FES_STATUS_START_PROT_PROT_TIMESTAMP_LOWER_32_OFFSET                     0x0000000000000000
87*5113495bSYour Name #define TX_FES_STATUS_START_PROT_PROT_TIMESTAMP_LOWER_32_LSB                        0
88*5113495bSYour Name #define TX_FES_STATUS_START_PROT_PROT_TIMESTAMP_LOWER_32_MSB                        31
89*5113495bSYour Name #define TX_FES_STATUS_START_PROT_PROT_TIMESTAMP_LOWER_32_MASK                       0x00000000ffffffff
90*5113495bSYour Name 
91*5113495bSYour Name 
92*5113495bSYour Name /* Description		PROT_TIMESTAMP_UPPER_32
93*5113495bSYour Name 
94*5113495bSYour Name 			Global timer value at start of Protection transmission
95*5113495bSYour Name */
96*5113495bSYour Name 
97*5113495bSYour Name #define TX_FES_STATUS_START_PROT_PROT_TIMESTAMP_UPPER_32_OFFSET                     0x0000000000000000
98*5113495bSYour Name #define TX_FES_STATUS_START_PROT_PROT_TIMESTAMP_UPPER_32_LSB                        32
99*5113495bSYour Name #define TX_FES_STATUS_START_PROT_PROT_TIMESTAMP_UPPER_32_MSB                        63
100*5113495bSYour Name #define TX_FES_STATUS_START_PROT_PROT_TIMESTAMP_UPPER_32_MASK                       0xffffffff00000000
101*5113495bSYour Name 
102*5113495bSYour Name 
103*5113495bSYour Name /* Description		SUBBAND_MASK
104*5113495bSYour Name 
105*5113495bSYour Name 			This mask indicates which 20 Mhz channels are actively used
106*5113495bSYour Name 			 in the BW or puncture pattern selected for transmit.
107*5113495bSYour Name 
108*5113495bSYour Name 			Bit 0: primary 20 Mhz
109*5113495bSYour Name 			Bit 1: secondary 20 MHz
110*5113495bSYour Name 			Etc.
111*5113495bSYour Name 
112*5113495bSYour Name 			Hamilton v1 used bits [5:1] for the 'Response_type' expected.
113*5113495bSYour Name 
114*5113495bSYour Name 			<legal all>
115*5113495bSYour Name */
116*5113495bSYour Name 
117*5113495bSYour Name #define TX_FES_STATUS_START_PROT_SUBBAND_MASK_OFFSET                                0x0000000000000008
118*5113495bSYour Name #define TX_FES_STATUS_START_PROT_SUBBAND_MASK_LSB                                   0
119*5113495bSYour Name #define TX_FES_STATUS_START_PROT_SUBBAND_MASK_MSB                                   15
120*5113495bSYour Name #define TX_FES_STATUS_START_PROT_SUBBAND_MASK_MASK                                  0x000000000000ffff
121*5113495bSYour Name 
122*5113495bSYour Name 
123*5113495bSYour Name /* Description		RESERVED_2B
124*5113495bSYour Name 
125*5113495bSYour Name 			<legal 0>
126*5113495bSYour Name */
127*5113495bSYour Name 
128*5113495bSYour Name #define TX_FES_STATUS_START_PROT_RESERVED_2B_OFFSET                                 0x0000000000000008
129*5113495bSYour Name #define TX_FES_STATUS_START_PROT_RESERVED_2B_LSB                                    16
130*5113495bSYour Name #define TX_FES_STATUS_START_PROT_RESERVED_2B_MSB                                    19
131*5113495bSYour Name #define TX_FES_STATUS_START_PROT_RESERVED_2B_MASK                                   0x00000000000f0000
132*5113495bSYour Name 
133*5113495bSYour Name 
134*5113495bSYour Name /* Description		PROT_COEX_BASED_TX_BW
135*5113495bSYour Name 
136*5113495bSYour Name 			Field valid for Protection frame transmission
137*5113495bSYour Name 
138*5113495bSYour Name 			This is the transmit bandwidth value
139*5113495bSYour Name 			that is granted by Coex.
140*5113495bSYour Name 
141*5113495bSYour Name 			<enum 0 20_mhz>20 Mhz BW
142*5113495bSYour Name 			<enum 1 40_mhz>40 Mhz BW
143*5113495bSYour Name 			<enum 2 80_mhz>80 Mhz BW
144*5113495bSYour Name 			<enum 3 160_mhz>160 Mhz BW
145*5113495bSYour Name 			<enum 4 320_mhz>320 Mhz BW
146*5113495bSYour Name 			<enum 5 240_mhz>240 Mhz BW
147*5113495bSYour Name */
148*5113495bSYour Name 
149*5113495bSYour Name #define TX_FES_STATUS_START_PROT_PROT_COEX_BASED_TX_BW_OFFSET                       0x0000000000000008
150*5113495bSYour Name #define TX_FES_STATUS_START_PROT_PROT_COEX_BASED_TX_BW_LSB                          20
151*5113495bSYour Name #define TX_FES_STATUS_START_PROT_PROT_COEX_BASED_TX_BW_MSB                          22
152*5113495bSYour Name #define TX_FES_STATUS_START_PROT_PROT_COEX_BASED_TX_BW_MASK                         0x0000000000700000
153*5113495bSYour Name 
154*5113495bSYour Name 
155*5113495bSYour Name /* Description		PROT_COEX_BASED_ANT_MASK
156*5113495bSYour Name 
157*5113495bSYour Name 			Field valid for Protection frame transmission
158*5113495bSYour Name 
159*5113495bSYour Name 			The antennas allowed to be used for this transmission.
160*5113495bSYour Name 			(Coex is allowed to reduce the number of antennas to be
161*5113495bSYour Name 			used, but not the number of SS)
162*5113495bSYour Name 			<legal all>
163*5113495bSYour Name */
164*5113495bSYour Name 
165*5113495bSYour Name #define TX_FES_STATUS_START_PROT_PROT_COEX_BASED_ANT_MASK_OFFSET                    0x0000000000000008
166*5113495bSYour Name #define TX_FES_STATUS_START_PROT_PROT_COEX_BASED_ANT_MASK_LSB                       23
167*5113495bSYour Name #define TX_FES_STATUS_START_PROT_PROT_COEX_BASED_ANT_MASK_MSB                       30
168*5113495bSYour Name #define TX_FES_STATUS_START_PROT_PROT_COEX_BASED_ANT_MASK_MASK                      0x000000007f800000
169*5113495bSYour Name 
170*5113495bSYour Name 
171*5113495bSYour Name /* Description		PROT_COEX_RESULT_ALT_BASED
172*5113495bSYour Name 
173*5113495bSYour Name 			Field valid for Protection frame transmission
174*5113495bSYour Name 
175*5113495bSYour Name 			When set, the resulting Coex transmit parameters are based
176*5113495bSYour Name 			 alternate transmit settings in the TX_RATE_SETTING STRUCT
177*5113495bSYour Name 			 of the original selected BW
178*5113495bSYour Name 
179*5113495bSYour Name 			When not set, the resulting Coex parameters are based on
180*5113495bSYour Name 			 the default transmit settings in the TX_RATE_SETTING STRUCT
181*5113495bSYour Name 
182*5113495bSYour Name 
183*5113495bSYour Name 			<legal all>
184*5113495bSYour Name */
185*5113495bSYour Name 
186*5113495bSYour Name #define TX_FES_STATUS_START_PROT_PROT_COEX_RESULT_ALT_BASED_OFFSET                  0x0000000000000008
187*5113495bSYour Name #define TX_FES_STATUS_START_PROT_PROT_COEX_RESULT_ALT_BASED_LSB                     31
188*5113495bSYour Name #define TX_FES_STATUS_START_PROT_PROT_COEX_RESULT_ALT_BASED_MSB                     31
189*5113495bSYour Name #define TX_FES_STATUS_START_PROT_PROT_COEX_RESULT_ALT_BASED_MASK                    0x0000000080000000
190*5113495bSYour Name 
191*5113495bSYour Name 
192*5113495bSYour Name /* Description		PROT_COEX_TX_PWR_SHARED_ANT
193*5113495bSYour Name 
194*5113495bSYour Name 			Field valid for Protection frame transmission
195*5113495bSYour Name 
196*5113495bSYour Name 			Transmit Power in s6.2 format.
197*5113495bSYour Name 			In units of 0.25 dBm
198*5113495bSYour Name 			<legal all>
199*5113495bSYour Name */
200*5113495bSYour Name 
201*5113495bSYour Name #define TX_FES_STATUS_START_PROT_PROT_COEX_TX_PWR_SHARED_ANT_OFFSET                 0x0000000000000008
202*5113495bSYour Name #define TX_FES_STATUS_START_PROT_PROT_COEX_TX_PWR_SHARED_ANT_LSB                    32
203*5113495bSYour Name #define TX_FES_STATUS_START_PROT_PROT_COEX_TX_PWR_SHARED_ANT_MSB                    39
204*5113495bSYour Name #define TX_FES_STATUS_START_PROT_PROT_COEX_TX_PWR_SHARED_ANT_MASK                   0x000000ff00000000
205*5113495bSYour Name 
206*5113495bSYour Name 
207*5113495bSYour Name /* Description		PROT_COEX_TX_PWR_ANT
208*5113495bSYour Name 
209*5113495bSYour Name 			Field valid for Protection frame transmission
210*5113495bSYour Name 
211*5113495bSYour Name 			Transmit Power in s6.2 format.
212*5113495bSYour Name 			In units of 0.25 dBm
213*5113495bSYour Name 			<legal all>
214*5113495bSYour Name */
215*5113495bSYour Name 
216*5113495bSYour Name #define TX_FES_STATUS_START_PROT_PROT_COEX_TX_PWR_ANT_OFFSET                        0x0000000000000008
217*5113495bSYour Name #define TX_FES_STATUS_START_PROT_PROT_COEX_TX_PWR_ANT_LSB                           40
218*5113495bSYour Name #define TX_FES_STATUS_START_PROT_PROT_COEX_TX_PWR_ANT_MSB                           47
219*5113495bSYour Name #define TX_FES_STATUS_START_PROT_PROT_COEX_TX_PWR_ANT_MASK                          0x0000ff0000000000
220*5113495bSYour Name 
221*5113495bSYour Name 
222*5113495bSYour Name /* Description		PROT_CONCURRENT_BT_TX
223*5113495bSYour Name 
224*5113495bSYour Name 			Field valid for Protection frame transmission
225*5113495bSYour Name 
226*5113495bSYour Name 			Indicate the current TX is concurrent with a BT transmission.
227*5113495bSYour Name 			This bit is to be copied over into the FES status info.
228*5113495bSYour Name 
229*5113495bSYour Name 			<legal all>
230*5113495bSYour Name */
231*5113495bSYour Name 
232*5113495bSYour Name #define TX_FES_STATUS_START_PROT_PROT_CONCURRENT_BT_TX_OFFSET                       0x0000000000000008
233*5113495bSYour Name #define TX_FES_STATUS_START_PROT_PROT_CONCURRENT_BT_TX_LSB                          48
234*5113495bSYour Name #define TX_FES_STATUS_START_PROT_PROT_CONCURRENT_BT_TX_MSB                          48
235*5113495bSYour Name #define TX_FES_STATUS_START_PROT_PROT_CONCURRENT_BT_TX_MASK                         0x0001000000000000
236*5113495bSYour Name 
237*5113495bSYour Name 
238*5113495bSYour Name /* Description		PROT_CONCURRENT_WLAN_TX
239*5113495bSYour Name 
240*5113495bSYour Name 			Field valid for Protection frame transmission
241*5113495bSYour Name 
242*5113495bSYour Name 			Indicate the current TX is concurrent with other WLAN transmission.
243*5113495bSYour Name 			This bit is to be copied over into FES status info. <legal
244*5113495bSYour Name 			 all>
245*5113495bSYour Name */
246*5113495bSYour Name 
247*5113495bSYour Name #define TX_FES_STATUS_START_PROT_PROT_CONCURRENT_WLAN_TX_OFFSET                     0x0000000000000008
248*5113495bSYour Name #define TX_FES_STATUS_START_PROT_PROT_CONCURRENT_WLAN_TX_LSB                        49
249*5113495bSYour Name #define TX_FES_STATUS_START_PROT_PROT_CONCURRENT_WLAN_TX_MSB                        49
250*5113495bSYour Name #define TX_FES_STATUS_START_PROT_PROT_CONCURRENT_WLAN_TX_MASK                       0x0002000000000000
251*5113495bSYour Name 
252*5113495bSYour Name 
253*5113495bSYour Name /* Description		PROT_CONCURRENT_WAN_TX
254*5113495bSYour Name 
255*5113495bSYour Name 			Field valid for Protection frame transmission
256*5113495bSYour Name 
257*5113495bSYour Name 			Indicate the current TX is concurrent with WAN transmission.
258*5113495bSYour Name 			This bit is to be copied over into FES status info.
259*5113495bSYour Name 			<legal all>
260*5113495bSYour Name */
261*5113495bSYour Name 
262*5113495bSYour Name #define TX_FES_STATUS_START_PROT_PROT_CONCURRENT_WAN_TX_OFFSET                      0x0000000000000008
263*5113495bSYour Name #define TX_FES_STATUS_START_PROT_PROT_CONCURRENT_WAN_TX_LSB                         50
264*5113495bSYour Name #define TX_FES_STATUS_START_PROT_PROT_CONCURRENT_WAN_TX_MSB                         50
265*5113495bSYour Name #define TX_FES_STATUS_START_PROT_PROT_CONCURRENT_WAN_TX_MASK                        0x0004000000000000
266*5113495bSYour Name 
267*5113495bSYour Name 
268*5113495bSYour Name /* Description		PROT_CONCURRENT_WAN_RX
269*5113495bSYour Name 
270*5113495bSYour Name 			Field valid for Protection frame transmission
271*5113495bSYour Name 
272*5113495bSYour Name 			Indicate the current TX is concurrent with WAN reception.
273*5113495bSYour Name 			This bit is to be copied over into FES status info.
274*5113495bSYour Name 			<legal all>
275*5113495bSYour Name */
276*5113495bSYour Name 
277*5113495bSYour Name #define TX_FES_STATUS_START_PROT_PROT_CONCURRENT_WAN_RX_OFFSET                      0x0000000000000008
278*5113495bSYour Name #define TX_FES_STATUS_START_PROT_PROT_CONCURRENT_WAN_RX_LSB                         51
279*5113495bSYour Name #define TX_FES_STATUS_START_PROT_PROT_CONCURRENT_WAN_RX_MSB                         51
280*5113495bSYour Name #define TX_FES_STATUS_START_PROT_PROT_CONCURRENT_WAN_RX_MASK                        0x0008000000000000
281*5113495bSYour Name 
282*5113495bSYour Name 
283*5113495bSYour Name /* Description		PROT_COEX_PWR_REDUCTION_BT
284*5113495bSYour Name 
285*5113495bSYour Name 			When set, transmit power for the protection frame is reduced
286*5113495bSYour Name 			 due to BT coex reason
287*5113495bSYour Name 			<legal all>
288*5113495bSYour Name */
289*5113495bSYour Name 
290*5113495bSYour Name #define TX_FES_STATUS_START_PROT_PROT_COEX_PWR_REDUCTION_BT_OFFSET                  0x0000000000000008
291*5113495bSYour Name #define TX_FES_STATUS_START_PROT_PROT_COEX_PWR_REDUCTION_BT_LSB                     52
292*5113495bSYour Name #define TX_FES_STATUS_START_PROT_PROT_COEX_PWR_REDUCTION_BT_MSB                     52
293*5113495bSYour Name #define TX_FES_STATUS_START_PROT_PROT_COEX_PWR_REDUCTION_BT_MASK                    0x0010000000000000
294*5113495bSYour Name 
295*5113495bSYour Name 
296*5113495bSYour Name /* Description		PROT_COEX_PWR_REDUCTION_WLAN
297*5113495bSYour Name 
298*5113495bSYour Name 			When set, transmit power  for the protection frame is reduced
299*5113495bSYour Name 			 due to wlan coex reason
300*5113495bSYour Name 			<legal all>
301*5113495bSYour Name */
302*5113495bSYour Name 
303*5113495bSYour Name #define TX_FES_STATUS_START_PROT_PROT_COEX_PWR_REDUCTION_WLAN_OFFSET                0x0000000000000008
304*5113495bSYour Name #define TX_FES_STATUS_START_PROT_PROT_COEX_PWR_REDUCTION_WLAN_LSB                   53
305*5113495bSYour Name #define TX_FES_STATUS_START_PROT_PROT_COEX_PWR_REDUCTION_WLAN_MSB                   53
306*5113495bSYour Name #define TX_FES_STATUS_START_PROT_PROT_COEX_PWR_REDUCTION_WLAN_MASK                  0x0020000000000000
307*5113495bSYour Name 
308*5113495bSYour Name 
309*5113495bSYour Name /* Description		PROT_COEX_PWR_REDUCTION_WAN
310*5113495bSYour Name 
311*5113495bSYour Name 			When set, transmit power for the protection frame is reduced
312*5113495bSYour Name 			 due to wan coex reason
313*5113495bSYour Name 			<legal all>
314*5113495bSYour Name */
315*5113495bSYour Name 
316*5113495bSYour Name #define TX_FES_STATUS_START_PROT_PROT_COEX_PWR_REDUCTION_WAN_OFFSET                 0x0000000000000008
317*5113495bSYour Name #define TX_FES_STATUS_START_PROT_PROT_COEX_PWR_REDUCTION_WAN_LSB                    54
318*5113495bSYour Name #define TX_FES_STATUS_START_PROT_PROT_COEX_PWR_REDUCTION_WAN_MSB                    54
319*5113495bSYour Name #define TX_FES_STATUS_START_PROT_PROT_COEX_PWR_REDUCTION_WAN_MASK                   0x0040000000000000
320*5113495bSYour Name 
321*5113495bSYour Name 
322*5113495bSYour Name /* Description		PROT_REQUEST_PACKET_BW
323*5113495bSYour Name 
324*5113495bSYour Name 			The requested transmit BW to PDG
325*5113495bSYour Name 			Note that Coex can have changed the actual allowed transmit
326*5113495bSYour Name 			 bandwidth.
327*5113495bSYour Name 
328*5113495bSYour Name 			<enum 0 20_mhz>20 Mhz BW
329*5113495bSYour Name 			<enum 1 40_mhz>40 Mhz BW
330*5113495bSYour Name 			<enum 2 80_mhz>80 Mhz BW
331*5113495bSYour Name 			<enum 3 160_mhz>160 Mhz BW
332*5113495bSYour Name 			<enum 4 320_mhz>320 Mhz BW
333*5113495bSYour Name 			<enum 5 240_mhz>240 Mhz BW
334*5113495bSYour Name */
335*5113495bSYour Name 
336*5113495bSYour Name #define TX_FES_STATUS_START_PROT_PROT_REQUEST_PACKET_BW_OFFSET                      0x0000000000000008
337*5113495bSYour Name #define TX_FES_STATUS_START_PROT_PROT_REQUEST_PACKET_BW_LSB                         55
338*5113495bSYour Name #define TX_FES_STATUS_START_PROT_PROT_REQUEST_PACKET_BW_MSB                         57
339*5113495bSYour Name #define TX_FES_STATUS_START_PROT_PROT_REQUEST_PACKET_BW_MASK                        0x0380000000000000
340*5113495bSYour Name 
341*5113495bSYour Name 
342*5113495bSYour Name /* Description		RESPONSE_TYPE
343*5113495bSYour Name 
344*5113495bSYour Name 			PPDU transmission Response type expected
345*5113495bSYour Name 
346*5113495bSYour Name 			<enum 0 no_response_expected>After transmission of this
347*5113495bSYour Name 			frame, no response in SIFS time is expected
348*5113495bSYour Name 
349*5113495bSYour Name 			When TXPCU sees this setting, it shall not generated the
350*5113495bSYour Name 			 EXPECTED_RESPONSE TLV.
351*5113495bSYour Name 
352*5113495bSYour Name 			RXPCU should never see this setting
353*5113495bSYour Name 			<enum 1 ack_expected>An ACK frame is expected as response
354*5113495bSYour Name 
355*5113495bSYour Name 
356*5113495bSYour Name 			RXPCU is just expecting any response. It is TXPCU who checks
357*5113495bSYour Name 			 that the right response was received.
358*5113495bSYour Name 			<enum 2 ba_64_bitmap_expected>BA with 64 bitmap is expected.
359*5113495bSYour Name 
360*5113495bSYour Name 
361*5113495bSYour Name 			PDG DOES NOT use the size info to calculated response duration.
362*5113495bSYour Name 			The length of the response will have to be programmed by
363*5113495bSYour Name 			 SW in the per-BW 'Expected_ppdu_resp_length' field.
364*5113495bSYour Name 
365*5113495bSYour Name 			For TXPCU only the fact that it is a BA is important. Actual
366*5113495bSYour Name 			 received BA size is not important
367*5113495bSYour Name 
368*5113495bSYour Name 			RXPCU is just expecting any response. It is TXPCU who checks
369*5113495bSYour Name 			 that the right response was received.
370*5113495bSYour Name 			<enum 3 ba_256_expected>BA with 256 bitmap is expected.
371*5113495bSYour Name 
372*5113495bSYour Name 			PDG DOES NOT use the size info to calculated response duration.
373*5113495bSYour Name 			The length of the response will have to be programmed by
374*5113495bSYour Name 			 SW in the per-BW 'Expected_ppdu_resp_length' field.
375*5113495bSYour Name 
376*5113495bSYour Name 			For TXPCU only the fact that it is a BA is important. Actual
377*5113495bSYour Name 			 received BA size is not important
378*5113495bSYour Name 
379*5113495bSYour Name 			RXPCU is just expecting any response. It is TXPCU who checks
380*5113495bSYour Name 			 that the right response was received.
381*5113495bSYour Name 			<enum 4 actionnoack_expected>SW sets this after sending
382*5113495bSYour Name 			NDP or BR-Poll.
383*5113495bSYour Name 
384*5113495bSYour Name 			As PDG has no idea on how long the reception is going to
385*5113495bSYour Name 			 be, the reception time of the response will have to be
386*5113495bSYour Name 			programmed by SW in the 'Extend_duration_value_bw...' field
387*5113495bSYour Name 
388*5113495bSYour Name 
389*5113495bSYour Name 			RXPCU is just expecting any response. It is TXPCU who checks
390*5113495bSYour Name 			 that the right response was received.
391*5113495bSYour Name 			<enum 5 ack_ba_expected>PDG uses the size info and assumes
392*5113495bSYour Name 			 single BA format with ACK and 64 bitmap embedded.
393*5113495bSYour Name 			If SW expects more bitmaps in case of multi-TID, is shall
394*5113495bSYour Name 			 program the 'Extend_duration_value_bw...' field for additional
395*5113495bSYour Name 			 duration time.
396*5113495bSYour Name 			For TXPCU only the fact that an ACK and/or BA is received
397*5113495bSYour Name 			 is important. Reception of only ACK or BA is also considered
398*5113495bSYour Name 			 a success.
399*5113495bSYour Name 			SW also typically sets this when sending VHT single MPDU.
400*5113495bSYour Name 			Some chip vendors might send BA rather than ACK in response
401*5113495bSYour Name 			 to VHT single MPDU but still we want to accept BA as well.
402*5113495bSYour Name 
403*5113495bSYour Name 
404*5113495bSYour Name 			RXPCU is just expecting any response. It is TXPCU who checks
405*5113495bSYour Name 			 that the right response was received.
406*5113495bSYour Name 			<enum 6 cts_expected>SW sets this after queuing RTS frame
407*5113495bSYour Name 			 as standalone packet and sending it.
408*5113495bSYour Name 
409*5113495bSYour Name 			RXPCU is just expecting any response. It is TXPCU who checks
410*5113495bSYour Name 			 that the right response was received.
411*5113495bSYour Name 			<enum 7 ack_data_expected>SW sets this after sending PS-Poll.
412*5113495bSYour Name 
413*5113495bSYour Name 
414*5113495bSYour Name 			For TXPCU either ACK and/or data reception is considered
415*5113495bSYour Name 			 success.
416*5113495bSYour Name 			PDG basis it's response duration calculation on an ACK.
417*5113495bSYour Name 			For the data portion, SW shall program the 'Extend_duration_value_bw...'
418*5113495bSYour Name 			field
419*5113495bSYour Name 			<enum 8 ndp_ack_expected>Reserved for 11ah usage.
420*5113495bSYour Name 			<enum 9 ndp_modified_ack>Reserved for 11ah usage
421*5113495bSYour Name 			<enum 10 ndp_ba_expected>Reserved for 11ah usage.
422*5113495bSYour Name 			<enum 11 ndp_cts_expected>Reserved for 11ah usage
423*5113495bSYour Name 			<enum 12 ndp_ack_or_ndp_modified_ack_expected>Reserved for
424*5113495bSYour Name 			 11ah usage
425*5113495bSYour Name 			<enum 13 ul_mu_ba_expected>NOT SUPPORTED IN NAPIER AX AND
426*5113495bSYour Name 			 HASTINGS
427*5113495bSYour Name 
428*5113495bSYour Name 			TXPCU expects UL MU OFDMA or UL MU MIMO reception.
429*5113495bSYour Name 			As PDG does not know how RUs are assigned for the uplink
430*5113495bSYour Name 			 portion, PDG can not calculate the uplink duration. Therefor
431*5113495bSYour Name 			 SW shall program the 'Extend_duration_value_bw...' field
432*5113495bSYour Name 
433*5113495bSYour Name 
434*5113495bSYour Name 			RXPCU will report any frame received, irrespective of it
435*5113495bSYour Name 			 having been UL MU or SU It is TXPCUs responsibility to
436*5113495bSYour Name 			distinguish between the UL MU or SU
437*5113495bSYour Name 
438*5113495bSYour Name 			TXPCU can check in TLV RECEIVED_RESPONSE_INFO MU_Response_BA_bitmap
439*5113495bSYour Name 			 if indeed BA was received
440*5113495bSYour Name 			<enum 14 ul_mu_ba_and_data_expected>NOT SUPPORTED IN NAPIER
441*5113495bSYour Name 			 AX AND HASTINGS
442*5113495bSYour Name 
443*5113495bSYour Name 			TXPCU expects UL MU OFDMA or UL MU MIMO reception.
444*5113495bSYour Name 			As PDG does not know how RUs are assigned for the uplink
445*5113495bSYour Name 			 portion, PDG can not calculate the uplink duration. Therefor
446*5113495bSYour Name 			 SW shall program the 'Extend_duration_value_bw...' field
447*5113495bSYour Name 
448*5113495bSYour Name 
449*5113495bSYour Name 			RXPCU will report any frame received, irrespective of it
450*5113495bSYour Name 			 having been UL MU or SU It is TXPCUs responsibility to
451*5113495bSYour Name 			distinguish between the UL MU or SU
452*5113495bSYour Name 
453*5113495bSYour Name 			TXPCU can check in TLV RECEIVED_RESPONSE_INFO, field MU_Response_data_bitmap
454*5113495bSYour Name 			 and MU_Response_BA_bitmap if indeed BA and data was received
455*5113495bSYour Name 
456*5113495bSYour Name 			<enum 15 ul_mu_cbf_expected>NOT SUPPORTED IN NAPIER AX AND
457*5113495bSYour Name 			 HASTINGS
458*5113495bSYour Name 
459*5113495bSYour Name 			When selected, CBF frames are expected to be received in
460*5113495bSYour Name 			 MU reception (uplink OFDMA or uplink MIMO)
461*5113495bSYour Name 
462*5113495bSYour Name 			RXPCU is just expecting any response. It is TXPCU who checks
463*5113495bSYour Name 			 that the right response was received
464*5113495bSYour Name 			TXPCU can check in TLV RECEIVED_RESPONSE_INFO, field MU_Response_cbf_bitmap
465*5113495bSYour Name 			 if indeed CBF frames were received.
466*5113495bSYour Name 			<enum 16 ul_mu_frames_expected>When selected, MPDU frames
467*5113495bSYour Name 			 are expected in the MU reception (uplink OFDMA or uplink
468*5113495bSYour Name 			 MIMO)
469*5113495bSYour Name 
470*5113495bSYour Name 			RXPCU is just expecting any response. It is TXPCU who checks
471*5113495bSYour Name 			 that the right response was received
472*5113495bSYour Name 
473*5113495bSYour Name 			TXPCU can check in TLV RECEIVED_RESPONSE_INFO, field MU_Response_bitmap
474*5113495bSYour Name 			 if indeed frames were received.
475*5113495bSYour Name 			<enum 17 any_response_to_this_device>Any response expected
476*5113495bSYour Name 			 to be send to this device in SIFS time is acceptable.
477*5113495bSYour Name 
478*5113495bSYour Name 			RXPCU is just expecting any response. It is TXPCU who checks
479*5113495bSYour Name 			 that the right response was received
480*5113495bSYour Name 
481*5113495bSYour Name 			For TXPCU, UL MU or SU is both acceptable.
482*5113495bSYour Name 
483*5113495bSYour Name 			Can be used for complex OFDMA scenarios. PDG can not calculate
484*5113495bSYour Name 			 the uplink duration. Therefor SW shall program the 'Extend_duration_value_bw...'
485*5113495bSYour Name 			field
486*5113495bSYour Name 			<enum 18 any_response_accepted>Any frame in the medium to
487*5113495bSYour Name 			 this or any other device, is acceptable as response.
488*5113495bSYour Name 			RXPCU is just expecting any response. It is TXPCU who checks
489*5113495bSYour Name 			 that the right response was received
490*5113495bSYour Name 
491*5113495bSYour Name 			For TXPCU, UL MU or SU is both acceptable.
492*5113495bSYour Name 
493*5113495bSYour Name 			Can be used for complex OFDMA scenarios. PDG can not calculate
494*5113495bSYour Name 			 the uplink duration. Therefor SW shall program the 'Extend_duration_value_bw...'
495*5113495bSYour Name 			field
496*5113495bSYour Name 			<enum 19 frameless_phyrx_response_accepted>Any MU frameless
497*5113495bSYour Name 			 reception generated by the PHY is acceptable.
498*5113495bSYour Name 
499*5113495bSYour Name 			PHY indicates this type of reception explicitly in TLV PHYRX_RSSI_LEGACY,
500*5113495bSYour Name 			field Reception_type == reception_is_frameless
501*5113495bSYour Name 
502*5113495bSYour Name 			RXPCU will report any frame received, irrespective of it
503*5113495bSYour Name 			 having been UL MU or SU.
504*5113495bSYour Name 
505*5113495bSYour Name 			This can be used for complex MU-MIMO or OFDMA scenarios,
506*5113495bSYour Name 			like receiving MU-CTS.
507*5113495bSYour Name 
508*5113495bSYour Name 			PDG can not calculate the uplink duration. Therefor SW shall
509*5113495bSYour Name 			 program the 'Extend_duration_value_bw...' field
510*5113495bSYour Name 			<enum 20 ranging_ndp_and_lmr_expected>SW sets this after
511*5113495bSYour Name 			 sending ranging NDPA followed by NDP as an ISTA and NDP
512*5113495bSYour Name 			 and LMR (Action No Ack) are expected as back-to-back reception
513*5113495bSYour Name 			 in SIFS.
514*5113495bSYour Name 
515*5113495bSYour Name 			As PDG has no idea on how long the reception is going to
516*5113495bSYour Name 			 be, the reception time of the response will have to be
517*5113495bSYour Name 			programmed by SW in the 'Extend_duration_value_bw...' field
518*5113495bSYour Name 
519*5113495bSYour Name 
520*5113495bSYour Name 			RXPCU is just expecting any response. It is TXPCU who checks
521*5113495bSYour Name 			 that the right response was received.
522*5113495bSYour Name 			<enum 21 ba_512_expected>BA with 512 bitmap is expected.
523*5113495bSYour Name 
524*5113495bSYour Name 
525*5113495bSYour Name 			PDG DOES NOT use the size info to calculated response duration.
526*5113495bSYour Name 			The length of the response will have to be programmed by
527*5113495bSYour Name 			 SW in the per-BW 'Expected_ppdu_resp_length' field.
528*5113495bSYour Name 
529*5113495bSYour Name 			For TXPCU only the fact that it is a BA is important. Actual
530*5113495bSYour Name 			 received BA size is not important
531*5113495bSYour Name 
532*5113495bSYour Name 			RXPCU is just expecting any response. It is TXPCU who checks
533*5113495bSYour Name 			 that the right response was received.
534*5113495bSYour Name 			<enum 22 ba_1024_expected>BA with 1024 bitmap is expected.
535*5113495bSYour Name 
536*5113495bSYour Name 
537*5113495bSYour Name 			PDG DOES NOT use the size info to calculated response duration.
538*5113495bSYour Name 			The length of the response will have to be programmed by
539*5113495bSYour Name 			 SW in the per-BW 'Expected_ppdu_resp_length' field.
540*5113495bSYour Name 
541*5113495bSYour Name 			For TXPCU only the fact that it is a BA is important. Actual
542*5113495bSYour Name 			 received BA size is not important
543*5113495bSYour Name 
544*5113495bSYour Name 			RXPCU is just expecting any response. It is TXPCU who checks
545*5113495bSYour Name 			 that the right response was received.
546*5113495bSYour Name 			<enum 23 ul_mu_ranging_cts2s_expected>When selected, CTS2S
547*5113495bSYour Name 			 frames are expected to be received in MU reception (uplink
548*5113495bSYour Name 			 OFDMA)
549*5113495bSYour Name 
550*5113495bSYour Name 			RXPCU shall check each response for CTS2S and report to
551*5113495bSYour Name 			TXPCU.
552*5113495bSYour Name 
553*5113495bSYour Name 			TXPCU can check in the TLV 'RECEIVED_RESPONSE_INFO,' fields
554*5113495bSYour Name 			 'MU_Response_bitmap' and 'TB_Ranging_Resp' if indeed CTS2S
555*5113495bSYour Name 			 frames were received.
556*5113495bSYour Name 			<enum 24 ul_mu_ranging_ndp_expected>When selected, UL NDP
557*5113495bSYour Name 			 frames are expected to be received in MU reception (uplink
558*5113495bSYour Name 			 spatial multiplexing)
559*5113495bSYour Name 
560*5113495bSYour Name 			RXPCU shall check each response for NDP and report to TXPCU.
561*5113495bSYour Name 
562*5113495bSYour Name 
563*5113495bSYour Name 			TXPCU can check in the TLV 'RECEIVED_RESPONSE_INFO,' fields
564*5113495bSYour Name 			 'MU_Response_bitmap' and 'TB_Ranging_Resp' if indeed NDP
565*5113495bSYour Name 			 frames were received.
566*5113495bSYour Name 			<enum 25 ul_mu_ranging_lmr_expected>When selected, LMR frames
567*5113495bSYour Name 			 are expected to be received in MU reception (uplink OFDMA
568*5113495bSYour Name 			 or uplink MIMO)
569*5113495bSYour Name 
570*5113495bSYour Name 			RXPCU shall check each response for LMR and report to TXPCU.
571*5113495bSYour Name 
572*5113495bSYour Name 
573*5113495bSYour Name 			TXPCU can check in the TLV 'RECEIVED_RESPONSE_INFO,' fields
574*5113495bSYour Name 			 'MU_Response_bitmap' and 'TB_Ranging_Resp' if indeed LMR
575*5113495bSYour Name 			 frames were received.
576*5113495bSYour Name */
577*5113495bSYour Name 
578*5113495bSYour Name #define TX_FES_STATUS_START_PROT_RESPONSE_TYPE_OFFSET                               0x0000000000000008
579*5113495bSYour Name #define TX_FES_STATUS_START_PROT_RESPONSE_TYPE_LSB                                  58
580*5113495bSYour Name #define TX_FES_STATUS_START_PROT_RESPONSE_TYPE_MSB                                  62
581*5113495bSYour Name #define TX_FES_STATUS_START_PROT_RESPONSE_TYPE_MASK                                 0x7c00000000000000
582*5113495bSYour Name 
583*5113495bSYour Name 
584*5113495bSYour Name /* Description		RESERVED_3A
585*5113495bSYour Name 
586*5113495bSYour Name */
587*5113495bSYour Name 
588*5113495bSYour Name #define TX_FES_STATUS_START_PROT_RESERVED_3A_OFFSET                                 0x0000000000000008
589*5113495bSYour Name #define TX_FES_STATUS_START_PROT_RESERVED_3A_LSB                                    63
590*5113495bSYour Name #define TX_FES_STATUS_START_PROT_RESERVED_3A_MSB                                    63
591*5113495bSYour Name #define TX_FES_STATUS_START_PROT_RESERVED_3A_MASK                                   0x8000000000000000
592*5113495bSYour Name 
593*5113495bSYour Name 
594*5113495bSYour Name 
595*5113495bSYour Name #endif   // TX_FES_STATUS_START_PROT
596