xref: /wlan-driver/fw-api/hw/qcn6432/tx_fes_status_ack_or_ba.h (revision 5113495b16420b49004c444715d2daae2066e7dc)
1 /*
2  * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
3  *
4  * Permission to use, copy, modify, and/or distribute this software for any
5  * purpose with or without fee is hereby granted, provided that the above
6  * copyright notice and this permission notice appear in all copies.
7  *
8  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
11  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
12  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
13  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
14  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15  */
16 
17 #ifndef _TX_FES_STATUS_ACK_OR_BA_H_
18 #define _TX_FES_STATUS_ACK_OR_BA_H_
19 #if !defined(__ASSEMBLER__)
20 #endif
21 
22 #define NUM_OF_DWORDS_TX_FES_STATUS_ACK_OR_BA 10
23 
24 #define NUM_OF_QWORDS_TX_FES_STATUS_ACK_OR_BA 5
25 
26 
27 struct tx_fes_status_ack_or_ba {
28 #ifndef WIFI_BIT_ORDER_BIG_ENDIAN
29              uint32_t ack_ba_status_type                                      :  1, // [0:0]
30                       ba_type                                                 :  1, // [1:1]
31                       ba_tid                                                  :  4, // [5:2]
32                       unexpected_ack_or_ba                                    :  1, // [6:6]
33                       response_timeout                                        :  1, // [7:7]
34                       ack_frame_rssi                                          :  8, // [15:8]
35                       ssn                                                     : 12, // [27:16]
36                       reserved_0b                                             :  4; // [31:28]
37              uint32_t sw_peer_id                                              : 16, // [15:0]
38                       reserved_1a                                             : 16; // [31:16]
39              uint32_t ba_bitmap_31_0                                          : 32; // [31:0]
40              uint32_t ba_bitmap_63_32                                         : 32; // [31:0]
41              uint32_t ba_bitmap_95_64                                         : 32; // [31:0]
42              uint32_t ba_bitmap_127_96                                        : 32; // [31:0]
43              uint32_t ba_bitmap_159_128                                       : 32; // [31:0]
44              uint32_t ba_bitmap_191_160                                       : 32; // [31:0]
45              uint32_t ba_bitmap_223_192                                       : 32; // [31:0]
46              uint32_t ba_bitmap_255_224                                       : 32; // [31:0]
47 #else
48              uint32_t reserved_0b                                             :  4, // [31:28]
49                       ssn                                                     : 12, // [27:16]
50                       ack_frame_rssi                                          :  8, // [15:8]
51                       response_timeout                                        :  1, // [7:7]
52                       unexpected_ack_or_ba                                    :  1, // [6:6]
53                       ba_tid                                                  :  4, // [5:2]
54                       ba_type                                                 :  1, // [1:1]
55                       ack_ba_status_type                                      :  1; // [0:0]
56              uint32_t reserved_1a                                             : 16, // [31:16]
57                       sw_peer_id                                              : 16; // [15:0]
58              uint32_t ba_bitmap_31_0                                          : 32; // [31:0]
59              uint32_t ba_bitmap_63_32                                         : 32; // [31:0]
60              uint32_t ba_bitmap_95_64                                         : 32; // [31:0]
61              uint32_t ba_bitmap_127_96                                        : 32; // [31:0]
62              uint32_t ba_bitmap_159_128                                       : 32; // [31:0]
63              uint32_t ba_bitmap_191_160                                       : 32; // [31:0]
64              uint32_t ba_bitmap_223_192                                       : 32; // [31:0]
65              uint32_t ba_bitmap_255_224                                       : 32; // [31:0]
66 #endif
67 };
68 
69 
70 /* Description		ACK_BA_STATUS_TYPE
71 
72 			Consumer: SW
73 			Producer: RXPCU
74 
75 			<enum 0 Ack_type> This TLV represents an ACK reception.
76 
77 			<enum 1 BA_type>  This TLV represents an BA reception.
78 			 <legal 0-1>
79 */
80 
81 #define TX_FES_STATUS_ACK_OR_BA_ACK_BA_STATUS_TYPE_OFFSET                           0x0000000000000000
82 #define TX_FES_STATUS_ACK_OR_BA_ACK_BA_STATUS_TYPE_LSB                              0
83 #define TX_FES_STATUS_ACK_OR_BA_ACK_BA_STATUS_TYPE_MSB                              0
84 #define TX_FES_STATUS_ACK_OR_BA_ACK_BA_STATUS_TYPE_MASK                             0x0000000000000001
85 
86 
87 /* Description		BA_TYPE
88 
89 			Field only valid when  Ack_ba_status_type ==  BA_type
90 
91 			<enum 0 BA_TYPE_ACK>
92 			<enum 1 BA_TYPE_bitmap>
93 			<legal all>
94 */
95 
96 #define TX_FES_STATUS_ACK_OR_BA_BA_TYPE_OFFSET                                      0x0000000000000000
97 #define TX_FES_STATUS_ACK_OR_BA_BA_TYPE_LSB                                         1
98 #define TX_FES_STATUS_ACK_OR_BA_BA_TYPE_MSB                                         1
99 #define TX_FES_STATUS_ACK_OR_BA_BA_TYPE_MASK                                        0x0000000000000002
100 
101 
102 /* Description		BA_TID
103 
104 			Field only valid when  Ack_ba_status_type ==  BA_type
105 
106 			The TID field copied from the BA frame
107 			<legal all>
108 */
109 
110 #define TX_FES_STATUS_ACK_OR_BA_BA_TID_OFFSET                                       0x0000000000000000
111 #define TX_FES_STATUS_ACK_OR_BA_BA_TID_LSB                                          2
112 #define TX_FES_STATUS_ACK_OR_BA_BA_TID_MSB                                          5
113 #define TX_FES_STATUS_ACK_OR_BA_BA_TID_MASK                                         0x000000000000003c
114 
115 
116 /* Description		UNEXPECTED_ACK_OR_BA
117 
118 			Set when RXPCU received a BA for which there was no " RXPCU_USER_SETUP_EXT
119 			 TLV' received.
120 			This can happen when a BA for unexpected TID is received.
121 
122 
123 			This message enables SW to still pass this BA information
124 			 on to the right TQM queue.
125 			<legal all>
126 */
127 
128 #define TX_FES_STATUS_ACK_OR_BA_UNEXPECTED_ACK_OR_BA_OFFSET                         0x0000000000000000
129 #define TX_FES_STATUS_ACK_OR_BA_UNEXPECTED_ACK_OR_BA_LSB                            6
130 #define TX_FES_STATUS_ACK_OR_BA_UNEXPECTED_ACK_OR_BA_MSB                            6
131 #define TX_FES_STATUS_ACK_OR_BA_UNEXPECTED_ACK_OR_BA_MASK                           0x0000000000000040
132 
133 
134 /* Description		RESPONSE_TIMEOUT
135 
136 			When set, there was delay in RXPCU (likely due to AST fetch
137 			 delay) that resulted in TXPCU not being able to send the
138 			 RX_RESPONSE_REQUIRED_INFO TLV within a certain timeout
139 			from the falling edge of the frame. This status TLV is still
140 			 generated but RXPCU will NOT have generated the RX_RESPONSE_REQUIRED
141 			 TLV.
142 			<legal all>
143 */
144 
145 #define TX_FES_STATUS_ACK_OR_BA_RESPONSE_TIMEOUT_OFFSET                             0x0000000000000000
146 #define TX_FES_STATUS_ACK_OR_BA_RESPONSE_TIMEOUT_LSB                                7
147 #define TX_FES_STATUS_ACK_OR_BA_RESPONSE_TIMEOUT_MSB                                7
148 #define TX_FES_STATUS_ACK_OR_BA_RESPONSE_TIMEOUT_MASK                               0x0000000000000080
149 
150 
151 /* Description		ACK_FRAME_RSSI
152 
153 			RSSI of the received ACK, BA or M-BA frame.
154 
155 			<legal all>
156 */
157 
158 #define TX_FES_STATUS_ACK_OR_BA_ACK_FRAME_RSSI_OFFSET                               0x0000000000000000
159 #define TX_FES_STATUS_ACK_OR_BA_ACK_FRAME_RSSI_LSB                                  8
160 #define TX_FES_STATUS_ACK_OR_BA_ACK_FRAME_RSSI_MSB                                  15
161 #define TX_FES_STATUS_ACK_OR_BA_ACK_FRAME_RSSI_MASK                                 0x000000000000ff00
162 
163 
164 /* Description		SSN
165 
166 			Consumer: TQM/FW
167 			Producer: SW/RXPCU
168 
169 			Field only valid in case of the  Ack_ba_status_type indicating:
170 			BA_type
171 
172 			The starting Sequence number of the (B)ACK bitmap <legal
173 			 all>
174 */
175 
176 #define TX_FES_STATUS_ACK_OR_BA_SSN_OFFSET                                          0x0000000000000000
177 #define TX_FES_STATUS_ACK_OR_BA_SSN_LSB                                             16
178 #define TX_FES_STATUS_ACK_OR_BA_SSN_MSB                                             27
179 #define TX_FES_STATUS_ACK_OR_BA_SSN_MASK                                            0x000000000fff0000
180 
181 
182 /* Description		RESERVED_0B
183 
184 			<legal 0>
185 */
186 
187 #define TX_FES_STATUS_ACK_OR_BA_RESERVED_0B_OFFSET                                  0x0000000000000000
188 #define TX_FES_STATUS_ACK_OR_BA_RESERVED_0B_LSB                                     28
189 #define TX_FES_STATUS_ACK_OR_BA_RESERVED_0B_MSB                                     31
190 #define TX_FES_STATUS_ACK_OR_BA_RESERVED_0B_MASK                                    0x00000000f0000000
191 
192 
193 /* Description		SW_PEER_ID
194 
195 			The sw_peer_id for which the bitmap is requested.
196 
197 			SW could use this info to link this TLV back to the right
198 			 TQM queue (if needed)
199 			<legal all>
200 */
201 
202 #define TX_FES_STATUS_ACK_OR_BA_SW_PEER_ID_OFFSET                                   0x0000000000000000
203 #define TX_FES_STATUS_ACK_OR_BA_SW_PEER_ID_LSB                                      32
204 #define TX_FES_STATUS_ACK_OR_BA_SW_PEER_ID_MSB                                      47
205 #define TX_FES_STATUS_ACK_OR_BA_SW_PEER_ID_MASK                                     0x0000ffff00000000
206 
207 
208 /* Description		RESERVED_1A
209 
210 			<legal 0>
211 */
212 
213 #define TX_FES_STATUS_ACK_OR_BA_RESERVED_1A_OFFSET                                  0x0000000000000000
214 #define TX_FES_STATUS_ACK_OR_BA_RESERVED_1A_LSB                                     48
215 #define TX_FES_STATUS_ACK_OR_BA_RESERVED_1A_MSB                                     63
216 #define TX_FES_STATUS_ACK_OR_BA_RESERVED_1A_MASK                                    0xffff000000000000
217 
218 
219 /* Description		BA_BITMAP_31_0
220 
221 			Consumer: TQM/FW
222 			Producer: SW/RXPCU
223 
224 			Field only valid in case of the  Ack_ba_status_type indicating:
225 			BA_type
226 
227 			Ba_bitmap_31_0
228 			<legal all>
229 */
230 
231 #define TX_FES_STATUS_ACK_OR_BA_BA_BITMAP_31_0_OFFSET                               0x0000000000000008
232 #define TX_FES_STATUS_ACK_OR_BA_BA_BITMAP_31_0_LSB                                  0
233 #define TX_FES_STATUS_ACK_OR_BA_BA_BITMAP_31_0_MSB                                  31
234 #define TX_FES_STATUS_ACK_OR_BA_BA_BITMAP_31_0_MASK                                 0x00000000ffffffff
235 
236 
237 /* Description		BA_BITMAP_63_32
238 
239 			Consumer: TQM/FW
240 			Producer: SW/RXPCU
241 
242 			Field only valid in case of the  Ack_ba_status_type indicating:
243 			BA_type
244 
245 			Ba_bitmap_63_32
246 			<legal all>
247 */
248 
249 #define TX_FES_STATUS_ACK_OR_BA_BA_BITMAP_63_32_OFFSET                              0x0000000000000008
250 #define TX_FES_STATUS_ACK_OR_BA_BA_BITMAP_63_32_LSB                                 32
251 #define TX_FES_STATUS_ACK_OR_BA_BA_BITMAP_63_32_MSB                                 63
252 #define TX_FES_STATUS_ACK_OR_BA_BA_BITMAP_63_32_MASK                                0xffffffff00000000
253 
254 
255 /* Description		BA_BITMAP_95_64
256 
257 			Consumer: TQM/FW
258 			Producer: SW/RXPCU
259 
260 			Field only valid in case of the  Remove_acked_cmd_type
261 			indicating:
262 			remove_Block_Acked_mpdus
263 
264 			Ba_bitmap_95_64
265 			<legal all>
266 */
267 
268 #define TX_FES_STATUS_ACK_OR_BA_BA_BITMAP_95_64_OFFSET                              0x0000000000000010
269 #define TX_FES_STATUS_ACK_OR_BA_BA_BITMAP_95_64_LSB                                 0
270 #define TX_FES_STATUS_ACK_OR_BA_BA_BITMAP_95_64_MSB                                 31
271 #define TX_FES_STATUS_ACK_OR_BA_BA_BITMAP_95_64_MASK                                0x00000000ffffffff
272 
273 
274 /* Description		BA_BITMAP_127_96
275 
276 			Consumer: TQM/FW
277 			Producer: SW/RXPCU
278 
279 			Field only valid in case of the  Remove_acked_cmd_type
280 			indicating:
281 			remove_Block_Acked_mpdus
282 
283 			Ba_bitmap_127_96
284 			<legal all>
285 */
286 
287 #define TX_FES_STATUS_ACK_OR_BA_BA_BITMAP_127_96_OFFSET                             0x0000000000000010
288 #define TX_FES_STATUS_ACK_OR_BA_BA_BITMAP_127_96_LSB                                32
289 #define TX_FES_STATUS_ACK_OR_BA_BA_BITMAP_127_96_MSB                                63
290 #define TX_FES_STATUS_ACK_OR_BA_BA_BITMAP_127_96_MASK                               0xffffffff00000000
291 
292 
293 /* Description		BA_BITMAP_159_128
294 
295 			Consumer: TQM/FW
296 			Producer: SW/RXPCU
297 
298 			Field only valid in case of the  Remove_acked_cmd_type
299 			indicating:
300 			remove_Block_Acked_mpdus
301 
302 			Ba_bitmap_159_128
303 			<legal all>
304 */
305 
306 #define TX_FES_STATUS_ACK_OR_BA_BA_BITMAP_159_128_OFFSET                            0x0000000000000018
307 #define TX_FES_STATUS_ACK_OR_BA_BA_BITMAP_159_128_LSB                               0
308 #define TX_FES_STATUS_ACK_OR_BA_BA_BITMAP_159_128_MSB                               31
309 #define TX_FES_STATUS_ACK_OR_BA_BA_BITMAP_159_128_MASK                              0x00000000ffffffff
310 
311 
312 /* Description		BA_BITMAP_191_160
313 
314 			Consumer: TQM/FW
315 			Producer: SW/RXPCU
316 
317 			Field only valid in case of the  Remove_acked_cmd_type
318 			indicating:
319 			remove_Block_Acked_mpdus
320 
321 			Ba_bitmap_191_160
322 			<legal all>
323 */
324 
325 #define TX_FES_STATUS_ACK_OR_BA_BA_BITMAP_191_160_OFFSET                            0x0000000000000018
326 #define TX_FES_STATUS_ACK_OR_BA_BA_BITMAP_191_160_LSB                               32
327 #define TX_FES_STATUS_ACK_OR_BA_BA_BITMAP_191_160_MSB                               63
328 #define TX_FES_STATUS_ACK_OR_BA_BA_BITMAP_191_160_MASK                              0xffffffff00000000
329 
330 
331 /* Description		BA_BITMAP_223_192
332 
333 			Consumer: TQM/FW
334 			Producer: SW/RXPCU
335 
336 			Field only valid in case of the  Remove_acked_cmd_type
337 			indicating:
338 			remove_Block_Acked_mpdus
339 
340 			Ba_bitmap_223_192
341 			<legal all>
342 */
343 
344 #define TX_FES_STATUS_ACK_OR_BA_BA_BITMAP_223_192_OFFSET                            0x0000000000000020
345 #define TX_FES_STATUS_ACK_OR_BA_BA_BITMAP_223_192_LSB                               0
346 #define TX_FES_STATUS_ACK_OR_BA_BA_BITMAP_223_192_MSB                               31
347 #define TX_FES_STATUS_ACK_OR_BA_BA_BITMAP_223_192_MASK                              0x00000000ffffffff
348 
349 
350 /* Description		BA_BITMAP_255_224
351 
352 			Consumer: TQM/FW
353 			Producer: SW/RXPCU
354 
355 			Field only valid in case of the  Remove_acked_cmd_type
356 			indicating:
357 			remove_Block_Acked_mpdus
358 
359 			Ba_bitmap_255_224
360 			<legal all>
361 */
362 
363 #define TX_FES_STATUS_ACK_OR_BA_BA_BITMAP_255_224_OFFSET                            0x0000000000000020
364 #define TX_FES_STATUS_ACK_OR_BA_BA_BITMAP_255_224_LSB                               32
365 #define TX_FES_STATUS_ACK_OR_BA_BA_BITMAP_255_224_MSB                               63
366 #define TX_FES_STATUS_ACK_OR_BA_BA_BITMAP_255_224_MASK                              0xffffffff00000000
367 
368 
369 
370 #endif   // TX_FES_STATUS_ACK_OR_BA
371