1  /*
2   * Copyright (c) 2020 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 _RXPT_CLASSIFY_INFO_H_
24  #define _RXPT_CLASSIFY_INFO_H_
25  #if !defined(__ASSEMBLER__)
26  #endif
27  
28  
29  // ################ START SUMMARY #################
30  //
31  //	Dword	Fields
32  //	0	reo_destination_indication[4:0], reserved_0a[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]
33  //
34  // ################ END SUMMARY #################
35  
36  #define NUM_OF_DWORDS_RXPT_CLASSIFY_INFO 1
37  
38  struct rxpt_classify_info {
39               uint32_t reo_destination_indication      :  5, //[4:0]
40                        reserved_0a                     :  2, //[6:5]
41                        use_flow_id_toeplitz_clfy       :  1, //[7]
42                        pkt_selection_fp_ucast_data     :  1, //[8]
43                        pkt_selection_fp_mcast_data     :  1, //[9]
44                        pkt_selection_fp_1000           :  1, //[10]
45                        rxdma0_source_ring_selection    :  2, //[12:11]
46                        rxdma0_destination_ring_selection:  2, //[14:13]
47                        reserved_0b                     : 17; //[31:15]
48  };
49  
50  /*
51  
52  reo_destination_indication
53  
54  			The ID of the REO exit ring where the MSDU frame shall
55  			push after (MPDU level) reordering has finished.
56  
57  
58  
59  			<enum 0 reo_destination_tcl> Reo will push the frame
60  			into the REO2TCL ring
61  
62  			<enum 1 reo_destination_sw1> Reo will push the frame
63  			into the REO2SW1 ring
64  
65  			<enum 2 reo_destination_sw2> Reo will push the frame
66  			into the REO2SW1 ring
67  
68  			<enum 3 reo_destination_sw3> Reo will push the frame
69  			into the REO2SW1 ring
70  
71  			<enum 4 reo_destination_sw4> Reo will push the frame
72  			into the REO2SW1 ring
73  
74  			<enum 5 reo_destination_release> Reo will push the frame
75  			into the REO_release ring
76  
77  			<enum 6 reo_destination_fw> Reo will push the frame into
78  			the REO2FW ring
79  
80  			<enum 7 reo_destination_7> REO remaps this
81  
82  			<enum 8 reo_destination_8> REO remaps this <enum 9
83  			reo_destination_9> REO remaps this <enum 10
84  			reo_destination_10> REO remaps this
85  
86  			<enum 11 reo_destination_11> REO remaps this
87  
88  			<enum 12 reo_destination_12> REO remaps this <enum 13
89  			reo_destination_13> REO remaps this
90  
91  			<enum 14 reo_destination_14> REO remaps this
92  
93  			<enum 15 reo_destination_15> REO remaps this
94  
95  			<enum 16 reo_destination_16> REO remaps this
96  
97  			<enum 17 reo_destination_17> REO remaps this
98  
99  			<enum 18 reo_destination_18> REO remaps this
100  
101  			<enum 19 reo_destination_19> REO remaps this
102  
103  			<enum 20 reo_destination_20> REO remaps this
104  
105  			<enum 21 reo_destination_21> REO remaps this
106  
107  			<enum 22 reo_destination_22> REO remaps this
108  
109  			<enum 23 reo_destination_23> REO remaps this
110  
111  			<enum 24 reo_destination_24> REO remaps this
112  
113  			<enum 25 reo_destination_25> REO remaps this
114  
115  			<enum 26 reo_destination_26> REO remaps this
116  
117  			<enum 27 reo_destination_27> REO remaps this
118  
119  			<enum 28 reo_destination_28> REO remaps this
120  
121  			<enum 29 reo_destination_29> REO remaps this
122  
123  			<enum 30 reo_destination_30> REO remaps this
124  
125  			<enum 31 reo_destination_31> REO remaps this
126  
127  
128  
129  			<legal all>
130  
131  reserved_0a
132  
133  			<legal 0>
134  
135  use_flow_id_toeplitz_clfy
136  
137  			Field is used to enable classification based on the
138  			chosen Toeplitz hash from Common Parser (without reference
139  			to each hash type).
140  
141  			<legal all>
142  
143  pkt_selection_fp_ucast_data
144  
145  			Filter pass ucast data frame routing selection.
146  
147  
148  
149  			1'b0: source and destination rings are selected from the
150  			RxOLE register settings for the packet type
151  
152  
153  
154  			1'b1: source ring and destination ring is selected from
155  			the rxdma0_source_ring_selection and
156  			rxdma0_destination_ring_selection fields in this STRUCT
157  
158  			<legal all>
159  
160  pkt_selection_fp_mcast_data
161  
162  			Filter pass multicase data frame routing selection.
163  
164  
165  
166  			1'b0: source and destination rings are selected from the
167  			RxOLE register settings for the packet type
168  
169  
170  
171  			1'b1: source ring and destination ring is selected from
172  			the rxdma0_source_ring_selection and
173  			rxdma0_destination_ring_selection fields in this STRUCT
174  
175  			<legal all>
176  
177  pkt_selection_fp_1000
178  
179  			Filter pass control bar frame routing selection.
180  
181  
182  
183  			1'b0: source and destination rings are selected from the
184  			RxOLE register settings for the packet type
185  
186  
187  
188  			1'b1: source ring and destination ring is selected from
189  			the rxdma0_source_ring_selection and
190  			rxdma0_destination_ring_selection fields in this STRUCT
191  
192  			<legal all>
193  
194  rxdma0_source_ring_selection
195  
196  			Field only valid when for the received frame type the
197  			corresponding pkt_selection_fp_... bit is set
198  
199  
200  
201  			<enum 0 wbm2rxdma_buf_source_ring> The data buffer for
202  			this frame shall be sourced by wbm2rxdma buffer source ring
203  
204  			<enum 1 fw2rxdma_buf_source_ring> The data buffer for
205  			this frame shall be sourced by fw2rxdma buffer source ring
206  
207  			<enum 2 sw2rxdma_buf_source_ring> The data buffer for
208  			this frame shall be sourced by sw2rxdma buffer source ring
209  
210  			<enum 3 no_buffer_ring> The frame shall not be written
211  			to any data buffer
212  
213  			<legal all>
214  
215  rxdma0_destination_ring_selection
216  
217  			Field only valid when for the received frame type the
218  			corresponding pkt_selection_fp_... bit is set
219  
220  
221  
222  			<enum 0  rxdma_release_ring >  RXDMA0 shall push the
223  			frame to the Release ring. Effectively this means the frame
224  			needs to be dropped.
225  
226  
227  
228  			<enum 1  rxdma2fw_ring >  RXDMA0 shall push the frame to
229  			the FW ring
230  
231  
232  
233  			<enum 2  rxdma2sw_ring >  RXDMA0 shall push the frame to
234  			the SW ring
235  
236  
237  
238  			<enum 3  rxdma2reo_ring >  RXDMA0 shall push the frame
239  			to the REO entrance ring
240  
241  			<legal all>
242  
243  reserved_0b
244  
245  			<legal 0>
246  */
247  
248  
249  /* Description		RXPT_CLASSIFY_INFO_0_REO_DESTINATION_INDICATION
250  
251  			The ID of the REO exit ring where the MSDU frame shall
252  			push after (MPDU level) reordering has finished.
253  
254  
255  
256  			<enum 0 reo_destination_tcl> Reo will push the frame
257  			into the REO2TCL ring
258  
259  			<enum 1 reo_destination_sw1> Reo will push the frame
260  			into the REO2SW1 ring
261  
262  			<enum 2 reo_destination_sw2> Reo will push the frame
263  			into the REO2SW1 ring
264  
265  			<enum 3 reo_destination_sw3> Reo will push the frame
266  			into the REO2SW1 ring
267  
268  			<enum 4 reo_destination_sw4> Reo will push the frame
269  			into the REO2SW1 ring
270  
271  			<enum 5 reo_destination_release> Reo will push the frame
272  			into the REO_release ring
273  
274  			<enum 6 reo_destination_fw> Reo will push the frame into
275  			the REO2FW ring
276  
277  			<enum 7 reo_destination_7> REO remaps this
278  
279  			<enum 8 reo_destination_8> REO remaps this <enum 9
280  			reo_destination_9> REO remaps this <enum 10
281  			reo_destination_10> REO remaps this
282  
283  			<enum 11 reo_destination_11> REO remaps this
284  
285  			<enum 12 reo_destination_12> REO remaps this <enum 13
286  			reo_destination_13> REO remaps this
287  
288  			<enum 14 reo_destination_14> REO remaps this
289  
290  			<enum 15 reo_destination_15> REO remaps this
291  
292  			<enum 16 reo_destination_16> REO remaps this
293  
294  			<enum 17 reo_destination_17> REO remaps this
295  
296  			<enum 18 reo_destination_18> REO remaps this
297  
298  			<enum 19 reo_destination_19> REO remaps this
299  
300  			<enum 20 reo_destination_20> REO remaps this
301  
302  			<enum 21 reo_destination_21> REO remaps this
303  
304  			<enum 22 reo_destination_22> REO remaps this
305  
306  			<enum 23 reo_destination_23> REO remaps this
307  
308  			<enum 24 reo_destination_24> REO remaps this
309  
310  			<enum 25 reo_destination_25> REO remaps this
311  
312  			<enum 26 reo_destination_26> REO remaps this
313  
314  			<enum 27 reo_destination_27> REO remaps this
315  
316  			<enum 28 reo_destination_28> REO remaps this
317  
318  			<enum 29 reo_destination_29> REO remaps this
319  
320  			<enum 30 reo_destination_30> REO remaps this
321  
322  			<enum 31 reo_destination_31> REO remaps this
323  
324  
325  
326  			<legal all>
327  */
328  #define RXPT_CLASSIFY_INFO_0_REO_DESTINATION_INDICATION_OFFSET       0x00000000
329  #define RXPT_CLASSIFY_INFO_0_REO_DESTINATION_INDICATION_LSB          0
330  #define RXPT_CLASSIFY_INFO_0_REO_DESTINATION_INDICATION_MASK         0x0000001f
331  
332  /* Description		RXPT_CLASSIFY_INFO_0_RESERVED_0A
333  
334  			<legal 0>
335  */
336  #define RXPT_CLASSIFY_INFO_0_RESERVED_0A_OFFSET                      0x00000000
337  #define RXPT_CLASSIFY_INFO_0_RESERVED_0A_LSB                         5
338  #define RXPT_CLASSIFY_INFO_0_RESERVED_0A_MASK                        0x00000060
339  
340  /* Description		RXPT_CLASSIFY_INFO_0_USE_FLOW_ID_TOEPLITZ_CLFY
341  
342  			Field is used to enable classification based on the
343  			chosen Toeplitz hash from Common Parser (without reference
344  			to each hash type).
345  
346  			<legal all>
347  */
348  #define RXPT_CLASSIFY_INFO_0_USE_FLOW_ID_TOEPLITZ_CLFY_OFFSET        0x00000000
349  #define RXPT_CLASSIFY_INFO_0_USE_FLOW_ID_TOEPLITZ_CLFY_LSB           7
350  #define RXPT_CLASSIFY_INFO_0_USE_FLOW_ID_TOEPLITZ_CLFY_MASK          0x00000080
351  
352  /* Description		RXPT_CLASSIFY_INFO_0_PKT_SELECTION_FP_UCAST_DATA
353  
354  			Filter pass ucast data frame routing selection.
355  
356  
357  
358  			1'b0: source and destination rings are selected from the
359  			RxOLE register settings for the packet type
360  
361  
362  
363  			1'b1: source ring and destination ring is selected from
364  			the rxdma0_source_ring_selection and
365  			rxdma0_destination_ring_selection fields in this STRUCT
366  
367  			<legal all>
368  */
369  #define RXPT_CLASSIFY_INFO_0_PKT_SELECTION_FP_UCAST_DATA_OFFSET      0x00000000
370  #define RXPT_CLASSIFY_INFO_0_PKT_SELECTION_FP_UCAST_DATA_LSB         8
371  #define RXPT_CLASSIFY_INFO_0_PKT_SELECTION_FP_UCAST_DATA_MASK        0x00000100
372  
373  /* Description		RXPT_CLASSIFY_INFO_0_PKT_SELECTION_FP_MCAST_DATA
374  
375  			Filter pass multicase data frame routing selection.
376  
377  
378  
379  			1'b0: source and destination rings are selected from the
380  			RxOLE register settings for the packet type
381  
382  
383  
384  			1'b1: source ring and destination ring is selected from
385  			the rxdma0_source_ring_selection and
386  			rxdma0_destination_ring_selection fields in this STRUCT
387  
388  			<legal all>
389  */
390  #define RXPT_CLASSIFY_INFO_0_PKT_SELECTION_FP_MCAST_DATA_OFFSET      0x00000000
391  #define RXPT_CLASSIFY_INFO_0_PKT_SELECTION_FP_MCAST_DATA_LSB         9
392  #define RXPT_CLASSIFY_INFO_0_PKT_SELECTION_FP_MCAST_DATA_MASK        0x00000200
393  
394  /* Description		RXPT_CLASSIFY_INFO_0_PKT_SELECTION_FP_1000
395  
396  			Filter pass control bar frame routing selection.
397  
398  
399  
400  			1'b0: source and destination rings are selected from the
401  			RxOLE register settings for the packet type
402  
403  
404  
405  			1'b1: source ring and destination ring is selected from
406  			the rxdma0_source_ring_selection and
407  			rxdma0_destination_ring_selection fields in this STRUCT
408  
409  			<legal all>
410  */
411  #define RXPT_CLASSIFY_INFO_0_PKT_SELECTION_FP_1000_OFFSET            0x00000000
412  #define RXPT_CLASSIFY_INFO_0_PKT_SELECTION_FP_1000_LSB               10
413  #define RXPT_CLASSIFY_INFO_0_PKT_SELECTION_FP_1000_MASK              0x00000400
414  
415  /* Description		RXPT_CLASSIFY_INFO_0_RXDMA0_SOURCE_RING_SELECTION
416  
417  			Field only valid when for the received frame type the
418  			corresponding pkt_selection_fp_... bit is set
419  
420  
421  
422  			<enum 0 wbm2rxdma_buf_source_ring> The data buffer for
423  			this frame shall be sourced by wbm2rxdma buffer source ring
424  
425  			<enum 1 fw2rxdma_buf_source_ring> The data buffer for
426  			this frame shall be sourced by fw2rxdma buffer source ring
427  
428  			<enum 2 sw2rxdma_buf_source_ring> The data buffer for
429  			this frame shall be sourced by sw2rxdma buffer source ring
430  
431  			<enum 3 no_buffer_ring> The frame shall not be written
432  			to any data buffer
433  
434  			<legal all>
435  */
436  #define RXPT_CLASSIFY_INFO_0_RXDMA0_SOURCE_RING_SELECTION_OFFSET     0x00000000
437  #define RXPT_CLASSIFY_INFO_0_RXDMA0_SOURCE_RING_SELECTION_LSB        11
438  #define RXPT_CLASSIFY_INFO_0_RXDMA0_SOURCE_RING_SELECTION_MASK       0x00001800
439  
440  /* Description		RXPT_CLASSIFY_INFO_0_RXDMA0_DESTINATION_RING_SELECTION
441  
442  			Field only valid when for the received frame type the
443  			corresponding pkt_selection_fp_... bit is set
444  
445  
446  
447  			<enum 0  rxdma_release_ring >  RXDMA0 shall push the
448  			frame to the Release ring. Effectively this means the frame
449  			needs to be dropped.
450  
451  
452  
453  			<enum 1  rxdma2fw_ring >  RXDMA0 shall push the frame to
454  			the FW ring
455  
456  
457  
458  			<enum 2  rxdma2sw_ring >  RXDMA0 shall push the frame to
459  			the SW ring
460  
461  
462  
463  			<enum 3  rxdma2reo_ring >  RXDMA0 shall push the frame
464  			to the REO entrance ring
465  
466  			<legal all>
467  */
468  #define RXPT_CLASSIFY_INFO_0_RXDMA0_DESTINATION_RING_SELECTION_OFFSET 0x00000000
469  #define RXPT_CLASSIFY_INFO_0_RXDMA0_DESTINATION_RING_SELECTION_LSB   13
470  #define RXPT_CLASSIFY_INFO_0_RXDMA0_DESTINATION_RING_SELECTION_MASK  0x00006000
471  
472  /* Description		RXPT_CLASSIFY_INFO_0_RESERVED_0B
473  
474  			<legal 0>
475  */
476  #define RXPT_CLASSIFY_INFO_0_RESERVED_0B_OFFSET                      0x00000000
477  #define RXPT_CLASSIFY_INFO_0_RESERVED_0B_LSB                         15
478  #define RXPT_CLASSIFY_INFO_0_RESERVED_0B_MASK                        0xffff8000
479  
480  
481  #endif // _RXPT_CLASSIFY_INFO_H_
482