xref: /wlan-driver/fw-api/hw/qca6490/v1/rxpt_classify_info.h (revision 5113495b16420b49004c444715d2daae2066e7dc)
1 /*
2  * Copyright (c) 2019 The Linux Foundation. All rights reserved.
3  *
4  * Permission to use, copy, modify, and/or distribute this software for
5  * any purpose with or without fee is hereby granted, provided that the
6  * above copyright notice and this permission notice appear in all
7  * copies.
8  *
9  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
10  * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
11  * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
12  * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
13  * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
14  * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
15  * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
16  * PERFORMANCE OF THIS SOFTWARE.
17  */
18 
19 //
20 // DO NOT EDIT!  This file is automatically generated
21 //               These definitions are tied to a particular hardware layout
22 
23 
24 #ifndef _RXPT_CLASSIFY_INFO_H_
25 #define _RXPT_CLASSIFY_INFO_H_
26 #if !defined(__ASSEMBLER__)
27 #endif
28 
29 
30 // ################ START SUMMARY #################
31 //
32 //	Dword	Fields
33 //	0	reo_destination_indication[4:0], lmac_peer_id_msb[6:5], use_flow_id_toeplitz_clfy[7], pkt_selection_fp_ucast_data[8], pkt_selection_fp_mcast_data[9], pkt_selection_fp_1000[10], rxdma0_source_ring_selection[12:11], rxdma0_destination_ring_selection[14:13], reserved_0b[31:15]
34 //
35 // ################ END SUMMARY #################
36 
37 #define NUM_OF_DWORDS_RXPT_CLASSIFY_INFO 1
38 
39 struct rxpt_classify_info {
40              uint32_t reo_destination_indication      :  5, //[4:0]
41                       lmac_peer_id_msb                :  2, //[6:5]
42                       use_flow_id_toeplitz_clfy       :  1, //[7]
43                       pkt_selection_fp_ucast_data     :  1, //[8]
44                       pkt_selection_fp_mcast_data     :  1, //[9]
45                       pkt_selection_fp_1000           :  1, //[10]
46                       rxdma0_source_ring_selection    :  2, //[12:11]
47                       rxdma0_destination_ring_selection:  2, //[14:13]
48                       reserved_0b                     : 17; //[31:15]
49 };
50 
51 /*
52 
53 reo_destination_indication
54 
55 			The ID of the REO exit ring where the MSDU frame shall
56 			push after (MPDU level) reordering has finished.
57 
58 
59 
60 			<enum 0 reo_destination_tcl> Reo will push the frame
61 			into the REO2TCL ring
62 
63 			<enum 1 reo_destination_sw1> Reo will push the frame
64 			into the REO2SW1 ring
65 
66 			<enum 2 reo_destination_sw2> Reo will push the frame
67 			into the REO2SW2 ring
68 
69 			<enum 3 reo_destination_sw3> Reo will push the frame
70 			into the REO2SW3 ring
71 
72 			<enum 4 reo_destination_sw4> Reo will push the frame
73 			into the REO2SW4 ring
74 
75 			<enum 5 reo_destination_release> Reo will push the frame
76 			into the REO_release ring
77 
78 			<enum 6 reo_destination_fw> Reo will push the frame into
79 			the REO2FW ring
80 
81 			<enum 7 reo_destination_sw5> Reo will push the frame
82 			into the REO2SW5 ring
83 
84 			<enum 8 reo_destination_sw6> Reo will push the frame
85 			into the REO2SW6 ring
86 
87 			<enum 9 reo_destination_9> REO remaps this <enum 10
88 			reo_destination_10> REO remaps this
89 
90 			<enum 11 reo_destination_11> REO remaps this
91 
92 			<enum 12 reo_destination_12> REO remaps this <enum 13
93 			reo_destination_13> REO remaps this
94 
95 			<enum 14 reo_destination_14> REO remaps this
96 
97 			<enum 15 reo_destination_15> REO remaps this
98 
99 			<enum 16 reo_destination_16> REO remaps this
100 
101 			<enum 17 reo_destination_17> REO remaps this
102 
103 			<enum 18 reo_destination_18> REO remaps this
104 
105 			<enum 19 reo_destination_19> REO remaps this
106 
107 			<enum 20 reo_destination_20> REO remaps this
108 
109 			<enum 21 reo_destination_21> REO remaps this
110 
111 			<enum 22 reo_destination_22> REO remaps this
112 
113 			<enum 23 reo_destination_23> REO remaps this
114 
115 			<enum 24 reo_destination_24> REO remaps this
116 
117 			<enum 25 reo_destination_25> REO remaps this
118 
119 			<enum 26 reo_destination_26> REO remaps this
120 
121 			<enum 27 reo_destination_27> REO remaps this
122 
123 			<enum 28 reo_destination_28> REO remaps this
124 
125 			<enum 29 reo_destination_29> REO remaps this
126 
127 			<enum 30 reo_destination_30> REO remaps this
128 
129 			<enum 31 reo_destination_31> REO remaps this
130 
131 
132 
133 			<legal all>
134 
135 lmac_peer_id_msb
136 
137 			If use_flow_id_toeplitz_clfy is set and lmac_peer_id_'sb
138 			is 2'b00, Rx OLE uses a REO desination indicati'n of {1'b1,
139 			hash[3:0]} using the chosen Toeplitz hash from Common Parser
140 			if flow search fails.
141 
142 			If use_flow_id_toeplitz_clfy is set and lmac_peer_id_msb
143 			's not 2'b00, Rx OLE uses a REO desination indication of
144 			{lmac_peer_id_msb, hash[2:0]} using the chosen Toeplitz hash
145 			from Common Parser if flow search fails.
146 
147 			This LMAC/peer-based routing is not supported in
148 			Hastings80 and HastingsPrime.
149 
150 			<legal 0>
151 
152 use_flow_id_toeplitz_clfy
153 
154 			Indication to Rx OLE to enable REO destination routing
155 			based on the chosen Toeplitz hash from Common Parser, in
156 			case flow search fails
157 
158 			<legal all>
159 
160 pkt_selection_fp_ucast_data
161 
162 			Filter pass Unicast data frame (matching
163 			rxpcu_filter_pass and sw_frame_group_Unicast_data) routing
164 			selection
165 
166 
167 
168 			1'b0: source and destination rings are selected from the
169 			RxOLE register settings for the packet type
170 
171 
172 
173 			1'b1: source ring and destination ring is selected from
174 			the rxdma0_source_ring_selection and
175 			rxdma0_destination_ring_selection fields in this STRUCT
176 
177 			<legal all>
178 
179 pkt_selection_fp_mcast_data
180 
181 			Filter pass Multicast data frame (matching
182 			rxpcu_filter_pass and sw_frame_group_Multicast_data) routing
183 			selection
184 
185 
186 
187 			1'b0: source and destination rings are selected from the
188 			RxOLE register settings for the packet type
189 
190 
191 
192 			1'b1: source ring and destination ring is selected from
193 			the rxdma0_source_ring_selection and
194 			rxdma0_destination_ring_selection fields in this STRUCT
195 
196 			<legal all>
197 
198 pkt_selection_fp_1000
199 
200 			Filter pass BAR frame (matching rxpcu_filter_pass and
201 			sw_frame_group_ctrl_1000) routing selection
202 
203 
204 
205 			1'b0: source and destination rings are selected from the
206 			RxOLE register settings for the packet type
207 
208 
209 
210 			1'b1: source ring and destination ring is selected from
211 			the rxdma0_source_ring_selection and
212 			rxdma0_destination_ring_selection fields in this STRUCT
213 
214 			<legal all>
215 
216 rxdma0_source_ring_selection
217 
218 			Field only valid when for the received frame type the
219 			corresponding pkt_selection_fp_... bit is set
220 
221 
222 
223 			<enum 0 wbm2rxdma_buf_source_ring> The data buffer for
224 
225 			<enum 1 fw2rxdma_buf_source_ring> The data buffer for
226 			this frame shall be sourced by fw2rxdma buffer source ring.
227 
228 			<enum 2 sw2rxdma_buf_source_ring> The data buffer for
229 			this frame shall be sourced by sw2rxdma buffer source ring.
230 
231 			<enum 3 no_buffer_ring> The frame shall not be written
232 			to any data buffer.
233 
234 
235 
236 			<legal all>
237 
238 rxdma0_destination_ring_selection
239 
240 			Field only valid when for the received frame type the
241 			corresponding pkt_selection_fp_... bit is set
242 
243 
244 
245 			<enum 0  rxdma_release_ring> RXDMA0 shall push the frame
246 			to the Release ring. Effectively this means the frame needs
247 			to be dropped.
248 
249 			<enum 1  rxdma2fw_ring> RXDMA0 shall push the frame to
250 			the FW ring.
251 
252 			<enum 2  rxdma2sw_ring> RXDMA0 shall push the frame to
253 			the SW ring.
254 
255 			<enum 3  rxdma2reo_ring> RXDMA0 shall push the frame to
256 			the REO entrance ring.
257 
258 
259 
260 			<legal all>
261 
262 reserved_0b
263 
264 			<legal 0>
265 */
266 
267 
268 /* Description		RXPT_CLASSIFY_INFO_0_REO_DESTINATION_INDICATION
269 
270 			The ID of the REO exit ring where the MSDU frame shall
271 			push after (MPDU level) reordering has finished.
272 
273 
274 
275 			<enum 0 reo_destination_tcl> Reo will push the frame
276 			into the REO2TCL ring
277 
278 			<enum 1 reo_destination_sw1> Reo will push the frame
279 			into the REO2SW1 ring
280 
281 			<enum 2 reo_destination_sw2> Reo will push the frame
282 			into the REO2SW2 ring
283 
284 			<enum 3 reo_destination_sw3> Reo will push the frame
285 			into the REO2SW3 ring
286 
287 			<enum 4 reo_destination_sw4> Reo will push the frame
288 			into the REO2SW4 ring
289 
290 			<enum 5 reo_destination_release> Reo will push the frame
291 			into the REO_release ring
292 
293 			<enum 6 reo_destination_fw> Reo will push the frame into
294 			the REO2FW ring
295 
296 			<enum 7 reo_destination_sw5> Reo will push the frame
297 			into the REO2SW5 ring
298 
299 			<enum 8 reo_destination_sw6> Reo will push the frame
300 			into the REO2SW6 ring
301 
302 			<enum 9 reo_destination_9> REO remaps this <enum 10
303 			reo_destination_10> REO remaps this
304 
305 			<enum 11 reo_destination_11> REO remaps this
306 
307 			<enum 12 reo_destination_12> REO remaps this <enum 13
308 			reo_destination_13> REO remaps this
309 
310 			<enum 14 reo_destination_14> REO remaps this
311 
312 			<enum 15 reo_destination_15> REO remaps this
313 
314 			<enum 16 reo_destination_16> REO remaps this
315 
316 			<enum 17 reo_destination_17> REO remaps this
317 
318 			<enum 18 reo_destination_18> REO remaps this
319 
320 			<enum 19 reo_destination_19> REO remaps this
321 
322 			<enum 20 reo_destination_20> REO remaps this
323 
324 			<enum 21 reo_destination_21> REO remaps this
325 
326 			<enum 22 reo_destination_22> REO remaps this
327 
328 			<enum 23 reo_destination_23> REO remaps this
329 
330 			<enum 24 reo_destination_24> REO remaps this
331 
332 			<enum 25 reo_destination_25> REO remaps this
333 
334 			<enum 26 reo_destination_26> REO remaps this
335 
336 			<enum 27 reo_destination_27> REO remaps this
337 
338 			<enum 28 reo_destination_28> REO remaps this
339 
340 			<enum 29 reo_destination_29> REO remaps this
341 
342 			<enum 30 reo_destination_30> REO remaps this
343 
344 			<enum 31 reo_destination_31> REO remaps this
345 
346 
347 
348 			<legal all>
349 */
350 #define RXPT_CLASSIFY_INFO_0_REO_DESTINATION_INDICATION_OFFSET       0x00000000
351 #define RXPT_CLASSIFY_INFO_0_REO_DESTINATION_INDICATION_LSB          0
352 #define RXPT_CLASSIFY_INFO_0_REO_DESTINATION_INDICATION_MASK         0x0000001f
353 
354 /* Description		RXPT_CLASSIFY_INFO_0_LMAC_PEER_ID_MSB
355 
356 			If use_flow_id_toeplitz_clfy is set and lmac_peer_id_'sb
357 			is 2'b00, Rx OLE uses a REO desination indicati'n of {1'b1,
358 			hash[3:0]} using the chosen Toeplitz hash from Common Parser
359 			if flow search fails.
360 
361 			If use_flow_id_toeplitz_clfy is set and lmac_peer_id_msb
362 			's not 2'b00, Rx OLE uses a REO desination indication of
363 			{lmac_peer_id_msb, hash[2:0]} using the chosen Toeplitz hash
364 			from Common Parser if flow search fails.
365 
366 			This LMAC/peer-based routing is not supported in
367 			Hastings80 and HastingsPrime.
368 
369 			<legal 0>
370 */
371 #define RXPT_CLASSIFY_INFO_0_LMAC_PEER_ID_MSB_OFFSET                 0x00000000
372 #define RXPT_CLASSIFY_INFO_0_LMAC_PEER_ID_MSB_LSB                    5
373 #define RXPT_CLASSIFY_INFO_0_LMAC_PEER_ID_MSB_MASK                   0x00000060
374 
375 /* Description		RXPT_CLASSIFY_INFO_0_USE_FLOW_ID_TOEPLITZ_CLFY
376 
377 			Indication to Rx OLE to enable REO destination routing
378 			based on the chosen Toeplitz hash from Common Parser, in
379 			case flow search fails
380 
381 			<legal all>
382 */
383 #define RXPT_CLASSIFY_INFO_0_USE_FLOW_ID_TOEPLITZ_CLFY_OFFSET        0x00000000
384 #define RXPT_CLASSIFY_INFO_0_USE_FLOW_ID_TOEPLITZ_CLFY_LSB           7
385 #define RXPT_CLASSIFY_INFO_0_USE_FLOW_ID_TOEPLITZ_CLFY_MASK          0x00000080
386 
387 /* Description		RXPT_CLASSIFY_INFO_0_PKT_SELECTION_FP_UCAST_DATA
388 
389 			Filter pass Unicast data frame (matching
390 			rxpcu_filter_pass and sw_frame_group_Unicast_data) routing
391 			selection
392 
393 
394 
395 			1'b0: source and destination rings are selected from the
396 			RxOLE register settings for the packet type
397 
398 
399 
400 			1'b1: source ring and destination ring is selected from
401 			the rxdma0_source_ring_selection and
402 			rxdma0_destination_ring_selection fields in this STRUCT
403 
404 			<legal all>
405 */
406 #define RXPT_CLASSIFY_INFO_0_PKT_SELECTION_FP_UCAST_DATA_OFFSET      0x00000000
407 #define RXPT_CLASSIFY_INFO_0_PKT_SELECTION_FP_UCAST_DATA_LSB         8
408 #define RXPT_CLASSIFY_INFO_0_PKT_SELECTION_FP_UCAST_DATA_MASK        0x00000100
409 
410 /* Description		RXPT_CLASSIFY_INFO_0_PKT_SELECTION_FP_MCAST_DATA
411 
412 			Filter pass Multicast data frame (matching
413 			rxpcu_filter_pass and sw_frame_group_Multicast_data) routing
414 			selection
415 
416 
417 
418 			1'b0: source and destination rings are selected from the
419 			RxOLE register settings for the packet type
420 
421 
422 
423 			1'b1: source ring and destination ring is selected from
424 			the rxdma0_source_ring_selection and
425 			rxdma0_destination_ring_selection fields in this STRUCT
426 
427 			<legal all>
428 */
429 #define RXPT_CLASSIFY_INFO_0_PKT_SELECTION_FP_MCAST_DATA_OFFSET      0x00000000
430 #define RXPT_CLASSIFY_INFO_0_PKT_SELECTION_FP_MCAST_DATA_LSB         9
431 #define RXPT_CLASSIFY_INFO_0_PKT_SELECTION_FP_MCAST_DATA_MASK        0x00000200
432 
433 /* Description		RXPT_CLASSIFY_INFO_0_PKT_SELECTION_FP_1000
434 
435 			Filter pass BAR frame (matching rxpcu_filter_pass and
436 			sw_frame_group_ctrl_1000) routing selection
437 
438 
439 
440 			1'b0: source and destination rings are selected from the
441 			RxOLE register settings for the packet type
442 
443 
444 
445 			1'b1: source ring and destination ring is selected from
446 			the rxdma0_source_ring_selection and
447 			rxdma0_destination_ring_selection fields in this STRUCT
448 
449 			<legal all>
450 */
451 #define RXPT_CLASSIFY_INFO_0_PKT_SELECTION_FP_1000_OFFSET            0x00000000
452 #define RXPT_CLASSIFY_INFO_0_PKT_SELECTION_FP_1000_LSB               10
453 #define RXPT_CLASSIFY_INFO_0_PKT_SELECTION_FP_1000_MASK              0x00000400
454 
455 /* Description		RXPT_CLASSIFY_INFO_0_RXDMA0_SOURCE_RING_SELECTION
456 
457 			Field only valid when for the received frame type the
458 			corresponding pkt_selection_fp_... bit is set
459 
460 
461 
462 			<enum 0 wbm2rxdma_buf_source_ring> The data buffer for
463 
464 			<enum 1 fw2rxdma_buf_source_ring> The data buffer for
465 			this frame shall be sourced by fw2rxdma buffer source ring.
466 
467 			<enum 2 sw2rxdma_buf_source_ring> The data buffer for
468 			this frame shall be sourced by sw2rxdma buffer source ring.
469 
470 			<enum 3 no_buffer_ring> The frame shall not be written
471 			to any data buffer.
472 
473 
474 
475 			<legal all>
476 */
477 #define RXPT_CLASSIFY_INFO_0_RXDMA0_SOURCE_RING_SELECTION_OFFSET     0x00000000
478 #define RXPT_CLASSIFY_INFO_0_RXDMA0_SOURCE_RING_SELECTION_LSB        11
479 #define RXPT_CLASSIFY_INFO_0_RXDMA0_SOURCE_RING_SELECTION_MASK       0x00001800
480 
481 /* Description		RXPT_CLASSIFY_INFO_0_RXDMA0_DESTINATION_RING_SELECTION
482 
483 			Field only valid when for the received frame type the
484 			corresponding pkt_selection_fp_... bit is set
485 
486 
487 
488 			<enum 0  rxdma_release_ring> RXDMA0 shall push the frame
489 			to the Release ring. Effectively this means the frame needs
490 			to be dropped.
491 
492 			<enum 1  rxdma2fw_ring> RXDMA0 shall push the frame to
493 			the FW ring.
494 
495 			<enum 2  rxdma2sw_ring> RXDMA0 shall push the frame to
496 			the SW ring.
497 
498 			<enum 3  rxdma2reo_ring> RXDMA0 shall push the frame to
499 			the REO entrance ring.
500 
501 
502 
503 			<legal all>
504 */
505 #define RXPT_CLASSIFY_INFO_0_RXDMA0_DESTINATION_RING_SELECTION_OFFSET 0x00000000
506 #define RXPT_CLASSIFY_INFO_0_RXDMA0_DESTINATION_RING_SELECTION_LSB   13
507 #define RXPT_CLASSIFY_INFO_0_RXDMA0_DESTINATION_RING_SELECTION_MASK  0x00006000
508 
509 /* Description		RXPT_CLASSIFY_INFO_0_RESERVED_0B
510 
511 			<legal 0>
512 */
513 #define RXPT_CLASSIFY_INFO_0_RESERVED_0B_OFFSET                      0x00000000
514 #define RXPT_CLASSIFY_INFO_0_RESERVED_0B_LSB                         15
515 #define RXPT_CLASSIFY_INFO_0_RESERVED_0B_MASK                        0xffff8000
516 
517 
518 #endif // _RXPT_CLASSIFY_INFO_H_
519