xref: /wlan-driver/fw-api/hw/qca9574/tcl_status_ring.h (revision 5113495b16420b49004c444715d2daae2066e7dc)
1 /*
2  * Copyright (c) 2021 The Linux Foundation. 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 // $ATH_LICENSE_HW_HDR_C$
18 //
19 // DO NOT EDIT!  This file is automatically generated
20 //               These definitions are tied to a particular hardware layout
21 
22 
23 #ifndef _TCL_STATUS_RING_H_
24 #define _TCL_STATUS_RING_H_
25 #if !defined(__ASSEMBLER__)
26 #endif
27 
28 
29 // ################ START SUMMARY #################
30 //
31 //	Dword	Fields
32 //	0	gse_ctrl[3:0], ase_fse_sel[4], cache_op_res[6:5], index_search_en[7], msdu_cnt_n[31:8]
33 //	1	msdu_byte_cnt_n[31:0]
34 //	2	msdu_timestmp_n[31:0]
35 //	3	cmd_meta_data_31_0[31:0]
36 //	4	cmd_meta_data_63_32[31:0]
37 //	5	hash_indx_val[19:0], cache_set_num[23:20], reserved_5a[31:24]
38 //	6	reserved_6a[31:0]
39 //	7	reserved_7a[19:0], ring_id[27:20], looping_count[31:28]
40 //
41 // ################ END SUMMARY #################
42 
43 #define NUM_OF_DWORDS_TCL_STATUS_RING 8
44 
45 struct tcl_status_ring {
46              uint32_t gse_ctrl                        :  4, //[3:0]
47                       ase_fse_sel                     :  1, //[4]
48                       cache_op_res                    :  2, //[6:5]
49                       index_search_en                 :  1, //[7]
50                       msdu_cnt_n                      : 24; //[31:8]
51              uint32_t msdu_byte_cnt_n                 : 32; //[31:0]
52              uint32_t msdu_timestmp_n                 : 32; //[31:0]
53              uint32_t cmd_meta_data_31_0              : 32; //[31:0]
54              uint32_t cmd_meta_data_63_32             : 32; //[31:0]
55              uint32_t hash_indx_val                   : 20, //[19:0]
56                       cache_set_num                   :  4, //[23:20]
57                       reserved_5a                     :  8; //[31:24]
58              uint32_t reserved_6a                     : 32; //[31:0]
59              uint32_t reserved_7a                     : 20, //[19:0]
60                       ring_id                         :  8, //[27:20]
61                       looping_count                   :  4; //[31:28]
62 };
63 
64 /*
65 
66 gse_ctrl
67 
68 			GSE control operations. This includes cache operations
69 			and table entry statistics read/clear operation.
70 
71 			<enum 0 rd_stat> Report or Read statistics
72 
73 			<enum 1 srch_dis> Search disable. Report only Hash
74 
75 			<enum 2 Wr_bk_single> Write Back single entry
76 
77 			<enum 3 wr_bk_all> Write Back entire cache entry
78 
79 			<enum 4 inval_single> Invalidate single cache entry
80 
81 			<enum 5 inval_all> Invalidate entire cache
82 
83 			<enum 6 wr_bk_inval_single> Write back and Invalidate
84 			single entry in cache
85 
86 			<enum 7 wr_bk_inval_all> write back and invalidate
87 			entire cache
88 
89 			<enum 8 clr_stat_single> Clear statistics for single
90 			entry
91 
92 			<legal 0-8>
93 
94 			Rest of the values reserved.
95 
96 			For all single entry control operations (write back,
97 			Invalidate or both)Statistics will be reported
98 
99 ase_fse_sel
100 
101 			Search Engine for which operation is done.
102 
103 			1'b0: Address Search Engine Result
104 
105 			1'b1: Flow Search Engine result
106 
107 cache_op_res
108 
109 			Cache operation result. Following are results of cache
110 			operation.
111 
112 			<enum 0 op_done>  Operation successful
113 
114 			<enum 1 not_fnd> Entry not found in Table
115 
116 			<enum 2 timeout_er>  Timeout Error
117 
118 			<legal 0-2>
119 
120 index_search_en
121 
122 			When this bit is set to 1 control_buffer_addr[19:0] will
123 			be considered as index of the AST or Flow table and GSE
124 			commands will be executed accordingly on the entry pointed
125 			by the index.
126 
127 			This feature is disabled by setting this bit to 0.
128 
129 			<enum 0 index_based_cmd_disable>
130 
131 			<enum 1 index_based_cmd_enable>
132 
133 
134 
135 			<legal all>
136 
137 msdu_cnt_n
138 
139 			MSDU count of Entry. Valid when GSE_CTRL is 4'b0111 and
140 			4'b1000
141 
142 msdu_byte_cnt_n
143 
144 			MSDU byte count for entry 1. Valid when GSE_CTRL is
145 			4'b0111 and 4'b1000
146 
147 msdu_timestmp_n
148 
149 			MSDU timestamp for entry 1. Valid when GSE_CTRL is
150 			4'b0111 and 4'b1000
151 
152 cmd_meta_data_31_0
153 
154 			Meta data from input ring
155 
156 			<legal all>
157 
158 cmd_meta_data_63_32
159 
160 			Meta data from input ring
161 
162 			<legal all>
163 
164 hash_indx_val
165 
166 
167 			Hash value of the entry in table in case of search
168 			failed or search disable.
169 
170 			<legal all>
171 
172 cache_set_num
173 
174 			Cache set number copied from TCL_GSE_CMD
175 
176 reserved_5a
177 
178 			<legal 0>
179 
180 reserved_6a
181 
182 			<legal 0>
183 
184 reserved_7a
185 
186 			<legal 0>
187 
188 ring_id
189 
190 			The buffer pointer ring ID.
191 
192 
193 
194 			Helps with debugging when dumping ring contents.
195 
196 			<legal all>
197 
198 looping_count
199 
200 			A count value that indicates the number of times the
201 			producer of entries into the Ring has looped around the
202 			ring.
203 
204 			At initialization time, this value is set to 0. On the
205 			first loop, this value is set to 1. After the max value is
206 			reached allowed by the number of bits for this field, the
207 			count value continues with 0 again.
208 
209 
210 
211 			In case SW is the consumer of the ring entries, it can
212 			use this field to figure out up to where the producer of
213 			entries has created new entries. This eliminates the need to
214 			check where the head pointer' of the ring is located once
215 			the SW starts processing an interrupt indicating that new
216 			entries have been put into this ring...
217 
218 
219 
220 			Also note that SW if it wants only needs to look at the
221 			LSB bit of this count value.
222 
223 			<legal all>
224 */
225 
226 
227 /* Description		TCL_STATUS_RING_0_GSE_CTRL
228 
229 			GSE control operations. This includes cache operations
230 			and table entry statistics read/clear operation.
231 
232 			<enum 0 rd_stat> Report or Read statistics
233 
234 			<enum 1 srch_dis> Search disable. Report only Hash
235 
236 			<enum 2 Wr_bk_single> Write Back single entry
237 
238 			<enum 3 wr_bk_all> Write Back entire cache entry
239 
240 			<enum 4 inval_single> Invalidate single cache entry
241 
242 			<enum 5 inval_all> Invalidate entire cache
243 
244 			<enum 6 wr_bk_inval_single> Write back and Invalidate
245 			single entry in cache
246 
247 			<enum 7 wr_bk_inval_all> write back and invalidate
248 			entire cache
249 
250 			<enum 8 clr_stat_single> Clear statistics for single
251 			entry
252 
253 			<legal 0-8>
254 
255 			Rest of the values reserved.
256 
257 			For all single entry control operations (write back,
258 			Invalidate or both)Statistics will be reported
259 */
260 #define TCL_STATUS_RING_0_GSE_CTRL_OFFSET                            0x00000000
261 #define TCL_STATUS_RING_0_GSE_CTRL_LSB                               0
262 #define TCL_STATUS_RING_0_GSE_CTRL_MASK                              0x0000000f
263 
264 /* Description		TCL_STATUS_RING_0_ASE_FSE_SEL
265 
266 			Search Engine for which operation is done.
267 
268 			1'b0: Address Search Engine Result
269 
270 			1'b1: Flow Search Engine result
271 */
272 #define TCL_STATUS_RING_0_ASE_FSE_SEL_OFFSET                         0x00000000
273 #define TCL_STATUS_RING_0_ASE_FSE_SEL_LSB                            4
274 #define TCL_STATUS_RING_0_ASE_FSE_SEL_MASK                           0x00000010
275 
276 /* Description		TCL_STATUS_RING_0_CACHE_OP_RES
277 
278 			Cache operation result. Following are results of cache
279 			operation.
280 
281 			<enum 0 op_done>  Operation successful
282 
283 			<enum 1 not_fnd> Entry not found in Table
284 
285 			<enum 2 timeout_er>  Timeout Error
286 
287 			<legal 0-2>
288 */
289 #define TCL_STATUS_RING_0_CACHE_OP_RES_OFFSET                        0x00000000
290 #define TCL_STATUS_RING_0_CACHE_OP_RES_LSB                           5
291 #define TCL_STATUS_RING_0_CACHE_OP_RES_MASK                          0x00000060
292 
293 /* Description		TCL_STATUS_RING_0_INDEX_SEARCH_EN
294 
295 			When this bit is set to 1 control_buffer_addr[19:0] will
296 			be considered as index of the AST or Flow table and GSE
297 			commands will be executed accordingly on the entry pointed
298 			by the index.
299 
300 			This feature is disabled by setting this bit to 0.
301 
302 			<enum 0 index_based_cmd_disable>
303 
304 			<enum 1 index_based_cmd_enable>
305 
306 
307 
308 			<legal all>
309 */
310 #define TCL_STATUS_RING_0_INDEX_SEARCH_EN_OFFSET                     0x00000000
311 #define TCL_STATUS_RING_0_INDEX_SEARCH_EN_LSB                        7
312 #define TCL_STATUS_RING_0_INDEX_SEARCH_EN_MASK                       0x00000080
313 
314 /* Description		TCL_STATUS_RING_0_MSDU_CNT_N
315 
316 			MSDU count of Entry. Valid when GSE_CTRL is 4'b0111 and
317 			4'b1000
318 */
319 #define TCL_STATUS_RING_0_MSDU_CNT_N_OFFSET                          0x00000000
320 #define TCL_STATUS_RING_0_MSDU_CNT_N_LSB                             8
321 #define TCL_STATUS_RING_0_MSDU_CNT_N_MASK                            0xffffff00
322 
323 /* Description		TCL_STATUS_RING_1_MSDU_BYTE_CNT_N
324 
325 			MSDU byte count for entry 1. Valid when GSE_CTRL is
326 			4'b0111 and 4'b1000
327 */
328 #define TCL_STATUS_RING_1_MSDU_BYTE_CNT_N_OFFSET                     0x00000004
329 #define TCL_STATUS_RING_1_MSDU_BYTE_CNT_N_LSB                        0
330 #define TCL_STATUS_RING_1_MSDU_BYTE_CNT_N_MASK                       0xffffffff
331 
332 /* Description		TCL_STATUS_RING_2_MSDU_TIMESTMP_N
333 
334 			MSDU timestamp for entry 1. Valid when GSE_CTRL is
335 			4'b0111 and 4'b1000
336 */
337 #define TCL_STATUS_RING_2_MSDU_TIMESTMP_N_OFFSET                     0x00000008
338 #define TCL_STATUS_RING_2_MSDU_TIMESTMP_N_LSB                        0
339 #define TCL_STATUS_RING_2_MSDU_TIMESTMP_N_MASK                       0xffffffff
340 
341 /* Description		TCL_STATUS_RING_3_CMD_META_DATA_31_0
342 
343 			Meta data from input ring
344 
345 			<legal all>
346 */
347 #define TCL_STATUS_RING_3_CMD_META_DATA_31_0_OFFSET                  0x0000000c
348 #define TCL_STATUS_RING_3_CMD_META_DATA_31_0_LSB                     0
349 #define TCL_STATUS_RING_3_CMD_META_DATA_31_0_MASK                    0xffffffff
350 
351 /* Description		TCL_STATUS_RING_4_CMD_META_DATA_63_32
352 
353 			Meta data from input ring
354 
355 			<legal all>
356 */
357 #define TCL_STATUS_RING_4_CMD_META_DATA_63_32_OFFSET                 0x00000010
358 #define TCL_STATUS_RING_4_CMD_META_DATA_63_32_LSB                    0
359 #define TCL_STATUS_RING_4_CMD_META_DATA_63_32_MASK                   0xffffffff
360 
361 /* Description		TCL_STATUS_RING_5_HASH_INDX_VAL
362 
363 
364 			Hash value of the entry in table in case of search
365 			failed or search disable.
366 
367 			<legal all>
368 */
369 #define TCL_STATUS_RING_5_HASH_INDX_VAL_OFFSET                       0x00000014
370 #define TCL_STATUS_RING_5_HASH_INDX_VAL_LSB                          0
371 #define TCL_STATUS_RING_5_HASH_INDX_VAL_MASK                         0x000fffff
372 
373 /* Description		TCL_STATUS_RING_5_CACHE_SET_NUM
374 
375 			Cache set number copied from TCL_GSE_CMD
376 */
377 #define TCL_STATUS_RING_5_CACHE_SET_NUM_OFFSET                       0x00000014
378 #define TCL_STATUS_RING_5_CACHE_SET_NUM_LSB                          20
379 #define TCL_STATUS_RING_5_CACHE_SET_NUM_MASK                         0x00f00000
380 
381 /* Description		TCL_STATUS_RING_5_RESERVED_5A
382 
383 			<legal 0>
384 */
385 #define TCL_STATUS_RING_5_RESERVED_5A_OFFSET                         0x00000014
386 #define TCL_STATUS_RING_5_RESERVED_5A_LSB                            24
387 #define TCL_STATUS_RING_5_RESERVED_5A_MASK                           0xff000000
388 
389 /* Description		TCL_STATUS_RING_6_RESERVED_6A
390 
391 			<legal 0>
392 */
393 #define TCL_STATUS_RING_6_RESERVED_6A_OFFSET                         0x00000018
394 #define TCL_STATUS_RING_6_RESERVED_6A_LSB                            0
395 #define TCL_STATUS_RING_6_RESERVED_6A_MASK                           0xffffffff
396 
397 /* Description		TCL_STATUS_RING_7_RESERVED_7A
398 
399 			<legal 0>
400 */
401 #define TCL_STATUS_RING_7_RESERVED_7A_OFFSET                         0x0000001c
402 #define TCL_STATUS_RING_7_RESERVED_7A_LSB                            0
403 #define TCL_STATUS_RING_7_RESERVED_7A_MASK                           0x000fffff
404 
405 /* Description		TCL_STATUS_RING_7_RING_ID
406 
407 			The buffer pointer ring ID.
408 
409 
410 
411 			Helps with debugging when dumping ring contents.
412 
413 			<legal all>
414 */
415 #define TCL_STATUS_RING_7_RING_ID_OFFSET                             0x0000001c
416 #define TCL_STATUS_RING_7_RING_ID_LSB                                20
417 #define TCL_STATUS_RING_7_RING_ID_MASK                               0x0ff00000
418 
419 /* Description		TCL_STATUS_RING_7_LOOPING_COUNT
420 
421 			A count value that indicates the number of times the
422 			producer of entries into the Ring has looped around the
423 			ring.
424 
425 			At initialization time, this value is set to 0. On the
426 			first loop, this value is set to 1. After the max value is
427 			reached allowed by the number of bits for this field, the
428 			count value continues with 0 again.
429 
430 
431 
432 			In case SW is the consumer of the ring entries, it can
433 			use this field to figure out up to where the producer of
434 			entries has created new entries. This eliminates the need to
435 			check where the head pointer' of the ring is located once
436 			the SW starts processing an interrupt indicating that new
437 			entries have been put into this ring...
438 
439 
440 
441 			Also note that SW if it wants only needs to look at the
442 			LSB bit of this count value.
443 
444 			<legal all>
445 */
446 #define TCL_STATUS_RING_7_LOOPING_COUNT_OFFSET                       0x0000001c
447 #define TCL_STATUS_RING_7_LOOPING_COUNT_LSB                          28
448 #define TCL_STATUS_RING_7_LOOPING_COUNT_MASK                         0xf0000000
449 
450 
451 #endif // _TCL_STATUS_RING_H_
452