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