1// SPDX-License-Identifier: BSD-3-Clause
2/* Copyright (C) 2023 Microchip Technology Inc. and its subsidiaries.
3 * Microchip VCAP API
4 */
5
6/* This file is autogenerated by cml-utils 2023-02-10 11:15:56 +0100.
7 * Commit ID: c30fb4bf0281cd4a7133bdab6682f9e43c872ada
8 */
9
10#include <linux/types.h>
11#include <linux/kernel.h>
12
13#include "vcap_api.h"
14#include "sparx5_vcap_ag_api.h"
15
16/* keyfields */
17static const struct vcap_field is0_normal_7tuple_keyfield[] = {
18 [VCAP_KF_TYPE] = {
19 .type = VCAP_FIELD_BIT,
20 .offset = 0,
21 .width = 1,
22 },
23 [VCAP_KF_LOOKUP_FIRST_IS] = {
24 .type = VCAP_FIELD_BIT,
25 .offset = 1,
26 .width = 1,
27 },
28 [VCAP_KF_LOOKUP_GEN_IDX_SEL] = {
29 .type = VCAP_FIELD_U32,
30 .offset = 2,
31 .width = 2,
32 },
33 [VCAP_KF_LOOKUP_GEN_IDX] = {
34 .type = VCAP_FIELD_U32,
35 .offset = 4,
36 .width = 12,
37 },
38 [VCAP_KF_IF_IGR_PORT_MASK_SEL] = {
39 .type = VCAP_FIELD_U32,
40 .offset = 16,
41 .width = 2,
42 },
43 [VCAP_KF_IF_IGR_PORT_MASK] = {
44 .type = VCAP_FIELD_U72,
45 .offset = 18,
46 .width = 65,
47 },
48 [VCAP_KF_L2_MC_IS] = {
49 .type = VCAP_FIELD_BIT,
50 .offset = 83,
51 .width = 1,
52 },
53 [VCAP_KF_L2_BC_IS] = {
54 .type = VCAP_FIELD_BIT,
55 .offset = 84,
56 .width = 1,
57 },
58 [VCAP_KF_8021Q_VLAN_TAGS] = {
59 .type = VCAP_FIELD_U32,
60 .offset = 85,
61 .width = 3,
62 },
63 [VCAP_KF_8021Q_TPID0] = {
64 .type = VCAP_FIELD_U32,
65 .offset = 88,
66 .width = 3,
67 },
68 [VCAP_KF_8021Q_PCP0] = {
69 .type = VCAP_FIELD_U32,
70 .offset = 91,
71 .width = 3,
72 },
73 [VCAP_KF_8021Q_DEI0] = {
74 .type = VCAP_FIELD_BIT,
75 .offset = 94,
76 .width = 1,
77 },
78 [VCAP_KF_8021Q_VID0] = {
79 .type = VCAP_FIELD_U32,
80 .offset = 95,
81 .width = 12,
82 },
83 [VCAP_KF_8021Q_TPID1] = {
84 .type = VCAP_FIELD_U32,
85 .offset = 107,
86 .width = 3,
87 },
88 [VCAP_KF_8021Q_PCP1] = {
89 .type = VCAP_FIELD_U32,
90 .offset = 110,
91 .width = 3,
92 },
93 [VCAP_KF_8021Q_DEI1] = {
94 .type = VCAP_FIELD_BIT,
95 .offset = 113,
96 .width = 1,
97 },
98 [VCAP_KF_8021Q_VID1] = {
99 .type = VCAP_FIELD_U32,
100 .offset = 114,
101 .width = 12,
102 },
103 [VCAP_KF_8021Q_TPID2] = {
104 .type = VCAP_FIELD_U32,
105 .offset = 126,
106 .width = 3,
107 },
108 [VCAP_KF_8021Q_PCP2] = {
109 .type = VCAP_FIELD_U32,
110 .offset = 129,
111 .width = 3,
112 },
113 [VCAP_KF_8021Q_DEI2] = {
114 .type = VCAP_FIELD_BIT,
115 .offset = 132,
116 .width = 1,
117 },
118 [VCAP_KF_8021Q_VID2] = {
119 .type = VCAP_FIELD_U32,
120 .offset = 133,
121 .width = 12,
122 },
123 [VCAP_KF_L2_DMAC] = {
124 .type = VCAP_FIELD_U48,
125 .offset = 145,
126 .width = 48,
127 },
128 [VCAP_KF_L2_SMAC] = {
129 .type = VCAP_FIELD_U48,
130 .offset = 193,
131 .width = 48,
132 },
133 [VCAP_KF_IP_MC_IS] = {
134 .type = VCAP_FIELD_BIT,
135 .offset = 241,
136 .width = 1,
137 },
138 [VCAP_KF_ETYPE_LEN_IS] = {
139 .type = VCAP_FIELD_BIT,
140 .offset = 242,
141 .width = 1,
142 },
143 [VCAP_KF_ETYPE] = {
144 .type = VCAP_FIELD_U32,
145 .offset = 243,
146 .width = 16,
147 },
148 [VCAP_KF_IP_SNAP_IS] = {
149 .type = VCAP_FIELD_BIT,
150 .offset = 259,
151 .width = 1,
152 },
153 [VCAP_KF_IP4_IS] = {
154 .type = VCAP_FIELD_BIT,
155 .offset = 260,
156 .width = 1,
157 },
158 [VCAP_KF_L3_FRAGMENT_TYPE] = {
159 .type = VCAP_FIELD_U32,
160 .offset = 261,
161 .width = 2,
162 },
163 [VCAP_KF_L3_FRAG_INVLD_L4_LEN] = {
164 .type = VCAP_FIELD_BIT,
165 .offset = 263,
166 .width = 1,
167 },
168 [VCAP_KF_L3_OPTIONS_IS] = {
169 .type = VCAP_FIELD_BIT,
170 .offset = 264,
171 .width = 1,
172 },
173 [VCAP_KF_L3_DSCP] = {
174 .type = VCAP_FIELD_U32,
175 .offset = 265,
176 .width = 6,
177 },
178 [VCAP_KF_L3_IP6_DIP] = {
179 .type = VCAP_FIELD_U128,
180 .offset = 271,
181 .width = 128,
182 },
183 [VCAP_KF_L3_IP6_SIP] = {
184 .type = VCAP_FIELD_U128,
185 .offset = 399,
186 .width = 128,
187 },
188 [VCAP_KF_TCP_UDP_IS] = {
189 .type = VCAP_FIELD_BIT,
190 .offset = 527,
191 .width = 1,
192 },
193 [VCAP_KF_TCP_IS] = {
194 .type = VCAP_FIELD_BIT,
195 .offset = 528,
196 .width = 1,
197 },
198 [VCAP_KF_L4_SPORT] = {
199 .type = VCAP_FIELD_U32,
200 .offset = 529,
201 .width = 16,
202 },
203 [VCAP_KF_L4_RNG] = {
204 .type = VCAP_FIELD_U32,
205 .offset = 545,
206 .width = 8,
207 },
208};
209
210static const struct vcap_field is0_normal_5tuple_ip4_keyfield[] = {
211 [VCAP_KF_TYPE] = {
212 .type = VCAP_FIELD_U32,
213 .offset = 0,
214 .width = 2,
215 },
216 [VCAP_KF_LOOKUP_FIRST_IS] = {
217 .type = VCAP_FIELD_BIT,
218 .offset = 2,
219 .width = 1,
220 },
221 [VCAP_KF_LOOKUP_GEN_IDX_SEL] = {
222 .type = VCAP_FIELD_U32,
223 .offset = 3,
224 .width = 2,
225 },
226 [VCAP_KF_LOOKUP_GEN_IDX] = {
227 .type = VCAP_FIELD_U32,
228 .offset = 5,
229 .width = 12,
230 },
231 [VCAP_KF_IF_IGR_PORT_MASK_SEL] = {
232 .type = VCAP_FIELD_U32,
233 .offset = 17,
234 .width = 2,
235 },
236 [VCAP_KF_IF_IGR_PORT_MASK] = {
237 .type = VCAP_FIELD_U72,
238 .offset = 19,
239 .width = 65,
240 },
241 [VCAP_KF_L2_MC_IS] = {
242 .type = VCAP_FIELD_BIT,
243 .offset = 84,
244 .width = 1,
245 },
246 [VCAP_KF_L2_BC_IS] = {
247 .type = VCAP_FIELD_BIT,
248 .offset = 85,
249 .width = 1,
250 },
251 [VCAP_KF_8021Q_VLAN_TAGS] = {
252 .type = VCAP_FIELD_U32,
253 .offset = 86,
254 .width = 3,
255 },
256 [VCAP_KF_8021Q_TPID0] = {
257 .type = VCAP_FIELD_U32,
258 .offset = 89,
259 .width = 3,
260 },
261 [VCAP_KF_8021Q_PCP0] = {
262 .type = VCAP_FIELD_U32,
263 .offset = 92,
264 .width = 3,
265 },
266 [VCAP_KF_8021Q_DEI0] = {
267 .type = VCAP_FIELD_BIT,
268 .offset = 95,
269 .width = 1,
270 },
271 [VCAP_KF_8021Q_VID0] = {
272 .type = VCAP_FIELD_U32,
273 .offset = 96,
274 .width = 12,
275 },
276 [VCAP_KF_8021Q_TPID1] = {
277 .type = VCAP_FIELD_U32,
278 .offset = 108,
279 .width = 3,
280 },
281 [VCAP_KF_8021Q_PCP1] = {
282 .type = VCAP_FIELD_U32,
283 .offset = 111,
284 .width = 3,
285 },
286 [VCAP_KF_8021Q_DEI1] = {
287 .type = VCAP_FIELD_BIT,
288 .offset = 114,
289 .width = 1,
290 },
291 [VCAP_KF_8021Q_VID1] = {
292 .type = VCAP_FIELD_U32,
293 .offset = 115,
294 .width = 12,
295 },
296 [VCAP_KF_8021Q_TPID2] = {
297 .type = VCAP_FIELD_U32,
298 .offset = 127,
299 .width = 3,
300 },
301 [VCAP_KF_8021Q_PCP2] = {
302 .type = VCAP_FIELD_U32,
303 .offset = 130,
304 .width = 3,
305 },
306 [VCAP_KF_8021Q_DEI2] = {
307 .type = VCAP_FIELD_BIT,
308 .offset = 133,
309 .width = 1,
310 },
311 [VCAP_KF_8021Q_VID2] = {
312 .type = VCAP_FIELD_U32,
313 .offset = 134,
314 .width = 12,
315 },
316 [VCAP_KF_IP_MC_IS] = {
317 .type = VCAP_FIELD_BIT,
318 .offset = 146,
319 .width = 1,
320 },
321 [VCAP_KF_IP4_IS] = {
322 .type = VCAP_FIELD_BIT,
323 .offset = 147,
324 .width = 1,
325 },
326 [VCAP_KF_L3_FRAGMENT_TYPE] = {
327 .type = VCAP_FIELD_U32,
328 .offset = 148,
329 .width = 2,
330 },
331 [VCAP_KF_L3_FRAG_INVLD_L4_LEN] = {
332 .type = VCAP_FIELD_BIT,
333 .offset = 150,
334 .width = 1,
335 },
336 [VCAP_KF_L3_OPTIONS_IS] = {
337 .type = VCAP_FIELD_BIT,
338 .offset = 151,
339 .width = 1,
340 },
341 [VCAP_KF_L3_DSCP] = {
342 .type = VCAP_FIELD_U32,
343 .offset = 152,
344 .width = 6,
345 },
346 [VCAP_KF_L3_IP4_DIP] = {
347 .type = VCAP_FIELD_U32,
348 .offset = 158,
349 .width = 32,
350 },
351 [VCAP_KF_L3_IP4_SIP] = {
352 .type = VCAP_FIELD_U32,
353 .offset = 190,
354 .width = 32,
355 },
356 [VCAP_KF_L3_IP_PROTO] = {
357 .type = VCAP_FIELD_U32,
358 .offset = 222,
359 .width = 8,
360 },
361 [VCAP_KF_TCP_UDP_IS] = {
362 .type = VCAP_FIELD_BIT,
363 .offset = 230,
364 .width = 1,
365 },
366 [VCAP_KF_TCP_IS] = {
367 .type = VCAP_FIELD_BIT,
368 .offset = 231,
369 .width = 1,
370 },
371 [VCAP_KF_L4_RNG] = {
372 .type = VCAP_FIELD_U32,
373 .offset = 232,
374 .width = 8,
375 },
376 [VCAP_KF_IP_PAYLOAD_5TUPLE] = {
377 .type = VCAP_FIELD_U32,
378 .offset = 240,
379 .width = 32,
380 },
381};
382
383static const struct vcap_field is2_mac_etype_keyfield[] = {
384 [VCAP_KF_TYPE] = {
385 .type = VCAP_FIELD_U32,
386 .offset = 0,
387 .width = 4,
388 },
389 [VCAP_KF_LOOKUP_FIRST_IS] = {
390 .type = VCAP_FIELD_BIT,
391 .offset = 4,
392 .width = 1,
393 },
394 [VCAP_KF_LOOKUP_PAG] = {
395 .type = VCAP_FIELD_U32,
396 .offset = 5,
397 .width = 8,
398 },
399 [VCAP_KF_IF_IGR_PORT_MASK_L3] = {
400 .type = VCAP_FIELD_BIT,
401 .offset = 13,
402 .width = 1,
403 },
404 [VCAP_KF_IF_IGR_PORT_MASK_RNG] = {
405 .type = VCAP_FIELD_U32,
406 .offset = 14,
407 .width = 4,
408 },
409 [VCAP_KF_IF_IGR_PORT_MASK_SEL] = {
410 .type = VCAP_FIELD_U32,
411 .offset = 18,
412 .width = 2,
413 },
414 [VCAP_KF_IF_IGR_PORT_MASK] = {
415 .type = VCAP_FIELD_U32,
416 .offset = 20,
417 .width = 32,
418 },
419 [VCAP_KF_L2_MC_IS] = {
420 .type = VCAP_FIELD_BIT,
421 .offset = 52,
422 .width = 1,
423 },
424 [VCAP_KF_L2_BC_IS] = {
425 .type = VCAP_FIELD_BIT,
426 .offset = 53,
427 .width = 1,
428 },
429 [VCAP_KF_8021Q_VLAN_TAGGED_IS] = {
430 .type = VCAP_FIELD_BIT,
431 .offset = 54,
432 .width = 1,
433 },
434 [VCAP_KF_ISDX_GT0_IS] = {
435 .type = VCAP_FIELD_BIT,
436 .offset = 55,
437 .width = 1,
438 },
439 [VCAP_KF_ISDX_CLS] = {
440 .type = VCAP_FIELD_U32,
441 .offset = 56,
442 .width = 12,
443 },
444 [VCAP_KF_8021Q_VID_CLS] = {
445 .type = VCAP_FIELD_U32,
446 .offset = 68,
447 .width = 13,
448 },
449 [VCAP_KF_8021Q_DEI_CLS] = {
450 .type = VCAP_FIELD_BIT,
451 .offset = 81,
452 .width = 1,
453 },
454 [VCAP_KF_8021Q_PCP_CLS] = {
455 .type = VCAP_FIELD_U32,
456 .offset = 82,
457 .width = 3,
458 },
459 [VCAP_KF_L2_FWD_IS] = {
460 .type = VCAP_FIELD_BIT,
461 .offset = 85,
462 .width = 1,
463 },
464 [VCAP_KF_L3_RT_IS] = {
465 .type = VCAP_FIELD_BIT,
466 .offset = 88,
467 .width = 1,
468 },
469 [VCAP_KF_L3_DST_IS] = {
470 .type = VCAP_FIELD_BIT,
471 .offset = 89,
472 .width = 1,
473 },
474 [VCAP_KF_L2_DMAC] = {
475 .type = VCAP_FIELD_U48,
476 .offset = 90,
477 .width = 48,
478 },
479 [VCAP_KF_L2_SMAC] = {
480 .type = VCAP_FIELD_U48,
481 .offset = 138,
482 .width = 48,
483 },
484 [VCAP_KF_ETYPE_LEN_IS] = {
485 .type = VCAP_FIELD_BIT,
486 .offset = 186,
487 .width = 1,
488 },
489 [VCAP_KF_ETYPE] = {
490 .type = VCAP_FIELD_U32,
491 .offset = 187,
492 .width = 16,
493 },
494 [VCAP_KF_L2_PAYLOAD_ETYPE] = {
495 .type = VCAP_FIELD_U64,
496 .offset = 203,
497 .width = 64,
498 },
499 [VCAP_KF_L4_RNG] = {
500 .type = VCAP_FIELD_U32,
501 .offset = 267,
502 .width = 16,
503 },
504 [VCAP_KF_OAM_CCM_CNTS_EQ0] = {
505 .type = VCAP_FIELD_BIT,
506 .offset = 283,
507 .width = 1,
508 },
509 [VCAP_KF_OAM_Y1731_IS] = {
510 .type = VCAP_FIELD_BIT,
511 .offset = 284,
512 .width = 1,
513 },
514};
515
516static const struct vcap_field is2_arp_keyfield[] = {
517 [VCAP_KF_TYPE] = {
518 .type = VCAP_FIELD_U32,
519 .offset = 0,
520 .width = 4,
521 },
522 [VCAP_KF_LOOKUP_FIRST_IS] = {
523 .type = VCAP_FIELD_BIT,
524 .offset = 4,
525 .width = 1,
526 },
527 [VCAP_KF_LOOKUP_PAG] = {
528 .type = VCAP_FIELD_U32,
529 .offset = 5,
530 .width = 8,
531 },
532 [VCAP_KF_IF_IGR_PORT_MASK_L3] = {
533 .type = VCAP_FIELD_BIT,
534 .offset = 13,
535 .width = 1,
536 },
537 [VCAP_KF_IF_IGR_PORT_MASK_RNG] = {
538 .type = VCAP_FIELD_U32,
539 .offset = 14,
540 .width = 4,
541 },
542 [VCAP_KF_IF_IGR_PORT_MASK_SEL] = {
543 .type = VCAP_FIELD_U32,
544 .offset = 18,
545 .width = 2,
546 },
547 [VCAP_KF_IF_IGR_PORT_MASK] = {
548 .type = VCAP_FIELD_U32,
549 .offset = 20,
550 .width = 32,
551 },
552 [VCAP_KF_L2_MC_IS] = {
553 .type = VCAP_FIELD_BIT,
554 .offset = 52,
555 .width = 1,
556 },
557 [VCAP_KF_L2_BC_IS] = {
558 .type = VCAP_FIELD_BIT,
559 .offset = 53,
560 .width = 1,
561 },
562 [VCAP_KF_8021Q_VLAN_TAGGED_IS] = {
563 .type = VCAP_FIELD_BIT,
564 .offset = 54,
565 .width = 1,
566 },
567 [VCAP_KF_ISDX_GT0_IS] = {
568 .type = VCAP_FIELD_BIT,
569 .offset = 55,
570 .width = 1,
571 },
572 [VCAP_KF_ISDX_CLS] = {
573 .type = VCAP_FIELD_U32,
574 .offset = 56,
575 .width = 12,
576 },
577 [VCAP_KF_8021Q_VID_CLS] = {
578 .type = VCAP_FIELD_U32,
579 .offset = 68,
580 .width = 13,
581 },
582 [VCAP_KF_8021Q_DEI_CLS] = {
583 .type = VCAP_FIELD_BIT,
584 .offset = 81,
585 .width = 1,
586 },
587 [VCAP_KF_8021Q_PCP_CLS] = {
588 .type = VCAP_FIELD_U32,
589 .offset = 82,
590 .width = 3,
591 },
592 [VCAP_KF_L2_FWD_IS] = {
593 .type = VCAP_FIELD_BIT,
594 .offset = 85,
595 .width = 1,
596 },
597 [VCAP_KF_L2_SMAC] = {
598 .type = VCAP_FIELD_U48,
599 .offset = 86,
600 .width = 48,
601 },
602 [VCAP_KF_ARP_ADDR_SPACE_OK_IS] = {
603 .type = VCAP_FIELD_BIT,
604 .offset = 134,
605 .width = 1,
606 },
607 [VCAP_KF_ARP_PROTO_SPACE_OK_IS] = {
608 .type = VCAP_FIELD_BIT,
609 .offset = 135,
610 .width = 1,
611 },
612 [VCAP_KF_ARP_LEN_OK_IS] = {
613 .type = VCAP_FIELD_BIT,
614 .offset = 136,
615 .width = 1,
616 },
617 [VCAP_KF_ARP_TGT_MATCH_IS] = {
618 .type = VCAP_FIELD_BIT,
619 .offset = 137,
620 .width = 1,
621 },
622 [VCAP_KF_ARP_SENDER_MATCH_IS] = {
623 .type = VCAP_FIELD_BIT,
624 .offset = 138,
625 .width = 1,
626 },
627 [VCAP_KF_ARP_OPCODE_UNKNOWN_IS] = {
628 .type = VCAP_FIELD_BIT,
629 .offset = 139,
630 .width = 1,
631 },
632 [VCAP_KF_ARP_OPCODE] = {
633 .type = VCAP_FIELD_U32,
634 .offset = 140,
635 .width = 2,
636 },
637 [VCAP_KF_L3_IP4_DIP] = {
638 .type = VCAP_FIELD_U32,
639 .offset = 142,
640 .width = 32,
641 },
642 [VCAP_KF_L3_IP4_SIP] = {
643 .type = VCAP_FIELD_U32,
644 .offset = 174,
645 .width = 32,
646 },
647 [VCAP_KF_L3_DIP_EQ_SIP_IS] = {
648 .type = VCAP_FIELD_BIT,
649 .offset = 206,
650 .width = 1,
651 },
652 [VCAP_KF_L4_RNG] = {
653 .type = VCAP_FIELD_U32,
654 .offset = 207,
655 .width = 16,
656 },
657};
658
659static const struct vcap_field is2_ip4_tcp_udp_keyfield[] = {
660 [VCAP_KF_TYPE] = {
661 .type = VCAP_FIELD_U32,
662 .offset = 0,
663 .width = 4,
664 },
665 [VCAP_KF_LOOKUP_FIRST_IS] = {
666 .type = VCAP_FIELD_BIT,
667 .offset = 4,
668 .width = 1,
669 },
670 [VCAP_KF_LOOKUP_PAG] = {
671 .type = VCAP_FIELD_U32,
672 .offset = 5,
673 .width = 8,
674 },
675 [VCAP_KF_IF_IGR_PORT_MASK_L3] = {
676 .type = VCAP_FIELD_BIT,
677 .offset = 13,
678 .width = 1,
679 },
680 [VCAP_KF_IF_IGR_PORT_MASK_RNG] = {
681 .type = VCAP_FIELD_U32,
682 .offset = 14,
683 .width = 4,
684 },
685 [VCAP_KF_IF_IGR_PORT_MASK_SEL] = {
686 .type = VCAP_FIELD_U32,
687 .offset = 18,
688 .width = 2,
689 },
690 [VCAP_KF_IF_IGR_PORT_MASK] = {
691 .type = VCAP_FIELD_U32,
692 .offset = 20,
693 .width = 32,
694 },
695 [VCAP_KF_L2_MC_IS] = {
696 .type = VCAP_FIELD_BIT,
697 .offset = 52,
698 .width = 1,
699 },
700 [VCAP_KF_L2_BC_IS] = {
701 .type = VCAP_FIELD_BIT,
702 .offset = 53,
703 .width = 1,
704 },
705 [VCAP_KF_8021Q_VLAN_TAGGED_IS] = {
706 .type = VCAP_FIELD_BIT,
707 .offset = 54,
708 .width = 1,
709 },
710 [VCAP_KF_ISDX_GT0_IS] = {
711 .type = VCAP_FIELD_BIT,
712 .offset = 55,
713 .width = 1,
714 },
715 [VCAP_KF_ISDX_CLS] = {
716 .type = VCAP_FIELD_U32,
717 .offset = 56,
718 .width = 12,
719 },
720 [VCAP_KF_8021Q_VID_CLS] = {
721 .type = VCAP_FIELD_U32,
722 .offset = 68,
723 .width = 13,
724 },
725 [VCAP_KF_8021Q_DEI_CLS] = {
726 .type = VCAP_FIELD_BIT,
727 .offset = 81,
728 .width = 1,
729 },
730 [VCAP_KF_8021Q_PCP_CLS] = {
731 .type = VCAP_FIELD_U32,
732 .offset = 82,
733 .width = 3,
734 },
735 [VCAP_KF_L2_FWD_IS] = {
736 .type = VCAP_FIELD_BIT,
737 .offset = 85,
738 .width = 1,
739 },
740 [VCAP_KF_L3_RT_IS] = {
741 .type = VCAP_FIELD_BIT,
742 .offset = 88,
743 .width = 1,
744 },
745 [VCAP_KF_L3_DST_IS] = {
746 .type = VCAP_FIELD_BIT,
747 .offset = 89,
748 .width = 1,
749 },
750 [VCAP_KF_IP4_IS] = {
751 .type = VCAP_FIELD_BIT,
752 .offset = 90,
753 .width = 1,
754 },
755 [VCAP_KF_L3_FRAGMENT_TYPE] = {
756 .type = VCAP_FIELD_U32,
757 .offset = 91,
758 .width = 2,
759 },
760 [VCAP_KF_L3_FRAG_INVLD_L4_LEN] = {
761 .type = VCAP_FIELD_BIT,
762 .offset = 93,
763 .width = 1,
764 },
765 [VCAP_KF_L3_OPTIONS_IS] = {
766 .type = VCAP_FIELD_BIT,
767 .offset = 94,
768 .width = 1,
769 },
770 [VCAP_KF_L3_TTL_GT0] = {
771 .type = VCAP_FIELD_BIT,
772 .offset = 95,
773 .width = 1,
774 },
775 [VCAP_KF_L3_TOS] = {
776 .type = VCAP_FIELD_U32,
777 .offset = 96,
778 .width = 8,
779 },
780 [VCAP_KF_L3_IP4_DIP] = {
781 .type = VCAP_FIELD_U32,
782 .offset = 104,
783 .width = 32,
784 },
785 [VCAP_KF_L3_IP4_SIP] = {
786 .type = VCAP_FIELD_U32,
787 .offset = 136,
788 .width = 32,
789 },
790 [VCAP_KF_L3_DIP_EQ_SIP_IS] = {
791 .type = VCAP_FIELD_BIT,
792 .offset = 168,
793 .width = 1,
794 },
795 [VCAP_KF_TCP_IS] = {
796 .type = VCAP_FIELD_BIT,
797 .offset = 169,
798 .width = 1,
799 },
800 [VCAP_KF_L4_DPORT] = {
801 .type = VCAP_FIELD_U32,
802 .offset = 170,
803 .width = 16,
804 },
805 [VCAP_KF_L4_SPORT] = {
806 .type = VCAP_FIELD_U32,
807 .offset = 186,
808 .width = 16,
809 },
810 [VCAP_KF_L4_RNG] = {
811 .type = VCAP_FIELD_U32,
812 .offset = 202,
813 .width = 16,
814 },
815 [VCAP_KF_L4_SPORT_EQ_DPORT_IS] = {
816 .type = VCAP_FIELD_BIT,
817 .offset = 218,
818 .width = 1,
819 },
820 [VCAP_KF_L4_SEQUENCE_EQ0_IS] = {
821 .type = VCAP_FIELD_BIT,
822 .offset = 219,
823 .width = 1,
824 },
825 [VCAP_KF_L4_FIN] = {
826 .type = VCAP_FIELD_BIT,
827 .offset = 220,
828 .width = 1,
829 },
830 [VCAP_KF_L4_SYN] = {
831 .type = VCAP_FIELD_BIT,
832 .offset = 221,
833 .width = 1,
834 },
835 [VCAP_KF_L4_RST] = {
836 .type = VCAP_FIELD_BIT,
837 .offset = 222,
838 .width = 1,
839 },
840 [VCAP_KF_L4_PSH] = {
841 .type = VCAP_FIELD_BIT,
842 .offset = 223,
843 .width = 1,
844 },
845 [VCAP_KF_L4_ACK] = {
846 .type = VCAP_FIELD_BIT,
847 .offset = 224,
848 .width = 1,
849 },
850 [VCAP_KF_L4_URG] = {
851 .type = VCAP_FIELD_BIT,
852 .offset = 225,
853 .width = 1,
854 },
855 [VCAP_KF_L4_PAYLOAD] = {
856 .type = VCAP_FIELD_U64,
857 .offset = 226,
858 .width = 64,
859 },
860};
861
862static const struct vcap_field is2_ip4_other_keyfield[] = {
863 [VCAP_KF_TYPE] = {
864 .type = VCAP_FIELD_U32,
865 .offset = 0,
866 .width = 4,
867 },
868 [VCAP_KF_LOOKUP_FIRST_IS] = {
869 .type = VCAP_FIELD_BIT,
870 .offset = 4,
871 .width = 1,
872 },
873 [VCAP_KF_LOOKUP_PAG] = {
874 .type = VCAP_FIELD_U32,
875 .offset = 5,
876 .width = 8,
877 },
878 [VCAP_KF_IF_IGR_PORT_MASK_L3] = {
879 .type = VCAP_FIELD_BIT,
880 .offset = 13,
881 .width = 1,
882 },
883 [VCAP_KF_IF_IGR_PORT_MASK_RNG] = {
884 .type = VCAP_FIELD_U32,
885 .offset = 14,
886 .width = 4,
887 },
888 [VCAP_KF_IF_IGR_PORT_MASK_SEL] = {
889 .type = VCAP_FIELD_U32,
890 .offset = 18,
891 .width = 2,
892 },
893 [VCAP_KF_IF_IGR_PORT_MASK] = {
894 .type = VCAP_FIELD_U32,
895 .offset = 20,
896 .width = 32,
897 },
898 [VCAP_KF_L2_MC_IS] = {
899 .type = VCAP_FIELD_BIT,
900 .offset = 52,
901 .width = 1,
902 },
903 [VCAP_KF_L2_BC_IS] = {
904 .type = VCAP_FIELD_BIT,
905 .offset = 53,
906 .width = 1,
907 },
908 [VCAP_KF_8021Q_VLAN_TAGGED_IS] = {
909 .type = VCAP_FIELD_BIT,
910 .offset = 54,
911 .width = 1,
912 },
913 [VCAP_KF_ISDX_GT0_IS] = {
914 .type = VCAP_FIELD_BIT,
915 .offset = 55,
916 .width = 1,
917 },
918 [VCAP_KF_ISDX_CLS] = {
919 .type = VCAP_FIELD_U32,
920 .offset = 56,
921 .width = 12,
922 },
923 [VCAP_KF_8021Q_VID_CLS] = {
924 .type = VCAP_FIELD_U32,
925 .offset = 68,
926 .width = 13,
927 },
928 [VCAP_KF_8021Q_DEI_CLS] = {
929 .type = VCAP_FIELD_BIT,
930 .offset = 81,
931 .width = 1,
932 },
933 [VCAP_KF_8021Q_PCP_CLS] = {
934 .type = VCAP_FIELD_U32,
935 .offset = 82,
936 .width = 3,
937 },
938 [VCAP_KF_L2_FWD_IS] = {
939 .type = VCAP_FIELD_BIT,
940 .offset = 85,
941 .width = 1,
942 },
943 [VCAP_KF_L3_RT_IS] = {
944 .type = VCAP_FIELD_BIT,
945 .offset = 88,
946 .width = 1,
947 },
948 [VCAP_KF_L3_DST_IS] = {
949 .type = VCAP_FIELD_BIT,
950 .offset = 89,
951 .width = 1,
952 },
953 [VCAP_KF_IP4_IS] = {
954 .type = VCAP_FIELD_BIT,
955 .offset = 90,
956 .width = 1,
957 },
958 [VCAP_KF_L3_FRAGMENT_TYPE] = {
959 .type = VCAP_FIELD_U32,
960 .offset = 91,
961 .width = 2,
962 },
963 [VCAP_KF_L3_FRAG_INVLD_L4_LEN] = {
964 .type = VCAP_FIELD_BIT,
965 .offset = 93,
966 .width = 1,
967 },
968 [VCAP_KF_L3_OPTIONS_IS] = {
969 .type = VCAP_FIELD_BIT,
970 .offset = 94,
971 .width = 1,
972 },
973 [VCAP_KF_L3_TTL_GT0] = {
974 .type = VCAP_FIELD_BIT,
975 .offset = 95,
976 .width = 1,
977 },
978 [VCAP_KF_L3_TOS] = {
979 .type = VCAP_FIELD_U32,
980 .offset = 96,
981 .width = 8,
982 },
983 [VCAP_KF_L3_IP4_DIP] = {
984 .type = VCAP_FIELD_U32,
985 .offset = 104,
986 .width = 32,
987 },
988 [VCAP_KF_L3_IP4_SIP] = {
989 .type = VCAP_FIELD_U32,
990 .offset = 136,
991 .width = 32,
992 },
993 [VCAP_KF_L3_DIP_EQ_SIP_IS] = {
994 .type = VCAP_FIELD_BIT,
995 .offset = 168,
996 .width = 1,
997 },
998 [VCAP_KF_L3_IP_PROTO] = {
999 .type = VCAP_FIELD_U32,
1000 .offset = 169,
1001 .width = 8,
1002 },
1003 [VCAP_KF_L4_RNG] = {
1004 .type = VCAP_FIELD_U32,
1005 .offset = 177,
1006 .width = 16,
1007 },
1008 [VCAP_KF_L3_PAYLOAD] = {
1009 .type = VCAP_FIELD_U112,
1010 .offset = 193,
1011 .width = 96,
1012 },
1013};
1014
1015static const struct vcap_field is2_ip6_std_keyfield[] = {
1016 [VCAP_KF_TYPE] = {
1017 .type = VCAP_FIELD_U32,
1018 .offset = 0,
1019 .width = 4,
1020 },
1021 [VCAP_KF_LOOKUP_FIRST_IS] = {
1022 .type = VCAP_FIELD_BIT,
1023 .offset = 4,
1024 .width = 1,
1025 },
1026 [VCAP_KF_LOOKUP_PAG] = {
1027 .type = VCAP_FIELD_U32,
1028 .offset = 5,
1029 .width = 8,
1030 },
1031 [VCAP_KF_IF_IGR_PORT_MASK_L3] = {
1032 .type = VCAP_FIELD_BIT,
1033 .offset = 13,
1034 .width = 1,
1035 },
1036 [VCAP_KF_IF_IGR_PORT_MASK_RNG] = {
1037 .type = VCAP_FIELD_U32,
1038 .offset = 14,
1039 .width = 4,
1040 },
1041 [VCAP_KF_IF_IGR_PORT_MASK_SEL] = {
1042 .type = VCAP_FIELD_U32,
1043 .offset = 18,
1044 .width = 2,
1045 },
1046 [VCAP_KF_IF_IGR_PORT_MASK] = {
1047 .type = VCAP_FIELD_U32,
1048 .offset = 20,
1049 .width = 32,
1050 },
1051 [VCAP_KF_L2_MC_IS] = {
1052 .type = VCAP_FIELD_BIT,
1053 .offset = 52,
1054 .width = 1,
1055 },
1056 [VCAP_KF_L2_BC_IS] = {
1057 .type = VCAP_FIELD_BIT,
1058 .offset = 53,
1059 .width = 1,
1060 },
1061 [VCAP_KF_8021Q_VLAN_TAGGED_IS] = {
1062 .type = VCAP_FIELD_BIT,
1063 .offset = 54,
1064 .width = 1,
1065 },
1066 [VCAP_KF_ISDX_GT0_IS] = {
1067 .type = VCAP_FIELD_BIT,
1068 .offset = 55,
1069 .width = 1,
1070 },
1071 [VCAP_KF_ISDX_CLS] = {
1072 .type = VCAP_FIELD_U32,
1073 .offset = 56,
1074 .width = 12,
1075 },
1076 [VCAP_KF_8021Q_VID_CLS] = {
1077 .type = VCAP_FIELD_U32,
1078 .offset = 68,
1079 .width = 13,
1080 },
1081 [VCAP_KF_8021Q_DEI_CLS] = {
1082 .type = VCAP_FIELD_BIT,
1083 .offset = 81,
1084 .width = 1,
1085 },
1086 [VCAP_KF_8021Q_PCP_CLS] = {
1087 .type = VCAP_FIELD_U32,
1088 .offset = 82,
1089 .width = 3,
1090 },
1091 [VCAP_KF_L2_FWD_IS] = {
1092 .type = VCAP_FIELD_BIT,
1093 .offset = 85,
1094 .width = 1,
1095 },
1096 [VCAP_KF_L3_RT_IS] = {
1097 .type = VCAP_FIELD_BIT,
1098 .offset = 88,
1099 .width = 1,
1100 },
1101 [VCAP_KF_L3_TTL_GT0] = {
1102 .type = VCAP_FIELD_BIT,
1103 .offset = 90,
1104 .width = 1,
1105 },
1106 [VCAP_KF_L3_IP6_SIP] = {
1107 .type = VCAP_FIELD_U128,
1108 .offset = 91,
1109 .width = 128,
1110 },
1111 [VCAP_KF_L3_DIP_EQ_SIP_IS] = {
1112 .type = VCAP_FIELD_BIT,
1113 .offset = 219,
1114 .width = 1,
1115 },
1116 [VCAP_KF_L3_IP_PROTO] = {
1117 .type = VCAP_FIELD_U32,
1118 .offset = 220,
1119 .width = 8,
1120 },
1121 [VCAP_KF_L4_RNG] = {
1122 .type = VCAP_FIELD_U32,
1123 .offset = 228,
1124 .width = 16,
1125 },
1126 [VCAP_KF_L3_PAYLOAD] = {
1127 .type = VCAP_FIELD_U48,
1128 .offset = 244,
1129 .width = 40,
1130 },
1131};
1132
1133static const struct vcap_field is2_ip_7tuple_keyfield[] = {
1134 [VCAP_KF_TYPE] = {
1135 .type = VCAP_FIELD_U32,
1136 .offset = 0,
1137 .width = 2,
1138 },
1139 [VCAP_KF_LOOKUP_FIRST_IS] = {
1140 .type = VCAP_FIELD_BIT,
1141 .offset = 2,
1142 .width = 1,
1143 },
1144 [VCAP_KF_LOOKUP_PAG] = {
1145 .type = VCAP_FIELD_U32,
1146 .offset = 3,
1147 .width = 8,
1148 },
1149 [VCAP_KF_IF_IGR_PORT_MASK_L3] = {
1150 .type = VCAP_FIELD_BIT,
1151 .offset = 11,
1152 .width = 1,
1153 },
1154 [VCAP_KF_IF_IGR_PORT_MASK_RNG] = {
1155 .type = VCAP_FIELD_U32,
1156 .offset = 12,
1157 .width = 4,
1158 },
1159 [VCAP_KF_IF_IGR_PORT_MASK_SEL] = {
1160 .type = VCAP_FIELD_U32,
1161 .offset = 16,
1162 .width = 2,
1163 },
1164 [VCAP_KF_IF_IGR_PORT_MASK] = {
1165 .type = VCAP_FIELD_U72,
1166 .offset = 18,
1167 .width = 65,
1168 },
1169 [VCAP_KF_L2_MC_IS] = {
1170 .type = VCAP_FIELD_BIT,
1171 .offset = 83,
1172 .width = 1,
1173 },
1174 [VCAP_KF_L2_BC_IS] = {
1175 .type = VCAP_FIELD_BIT,
1176 .offset = 84,
1177 .width = 1,
1178 },
1179 [VCAP_KF_8021Q_VLAN_TAGGED_IS] = {
1180 .type = VCAP_FIELD_BIT,
1181 .offset = 85,
1182 .width = 1,
1183 },
1184 [VCAP_KF_ISDX_GT0_IS] = {
1185 .type = VCAP_FIELD_BIT,
1186 .offset = 86,
1187 .width = 1,
1188 },
1189 [VCAP_KF_ISDX_CLS] = {
1190 .type = VCAP_FIELD_U32,
1191 .offset = 87,
1192 .width = 12,
1193 },
1194 [VCAP_KF_8021Q_VID_CLS] = {
1195 .type = VCAP_FIELD_U32,
1196 .offset = 99,
1197 .width = 13,
1198 },
1199 [VCAP_KF_8021Q_DEI_CLS] = {
1200 .type = VCAP_FIELD_BIT,
1201 .offset = 112,
1202 .width = 1,
1203 },
1204 [VCAP_KF_8021Q_PCP_CLS] = {
1205 .type = VCAP_FIELD_U32,
1206 .offset = 113,
1207 .width = 3,
1208 },
1209 [VCAP_KF_L2_FWD_IS] = {
1210 .type = VCAP_FIELD_BIT,
1211 .offset = 116,
1212 .width = 1,
1213 },
1214 [VCAP_KF_L3_RT_IS] = {
1215 .type = VCAP_FIELD_BIT,
1216 .offset = 119,
1217 .width = 1,
1218 },
1219 [VCAP_KF_L3_DST_IS] = {
1220 .type = VCAP_FIELD_BIT,
1221 .offset = 120,
1222 .width = 1,
1223 },
1224 [VCAP_KF_L2_DMAC] = {
1225 .type = VCAP_FIELD_U48,
1226 .offset = 121,
1227 .width = 48,
1228 },
1229 [VCAP_KF_L2_SMAC] = {
1230 .type = VCAP_FIELD_U48,
1231 .offset = 169,
1232 .width = 48,
1233 },
1234 [VCAP_KF_IP4_IS] = {
1235 .type = VCAP_FIELD_BIT,
1236 .offset = 217,
1237 .width = 1,
1238 },
1239 [VCAP_KF_L3_TTL_GT0] = {
1240 .type = VCAP_FIELD_BIT,
1241 .offset = 218,
1242 .width = 1,
1243 },
1244 [VCAP_KF_L3_TOS] = {
1245 .type = VCAP_FIELD_U32,
1246 .offset = 219,
1247 .width = 8,
1248 },
1249 [VCAP_KF_L3_IP6_DIP] = {
1250 .type = VCAP_FIELD_U128,
1251 .offset = 227,
1252 .width = 128,
1253 },
1254 [VCAP_KF_L3_IP6_SIP] = {
1255 .type = VCAP_FIELD_U128,
1256 .offset = 355,
1257 .width = 128,
1258 },
1259 [VCAP_KF_L3_DIP_EQ_SIP_IS] = {
1260 .type = VCAP_FIELD_BIT,
1261 .offset = 483,
1262 .width = 1,
1263 },
1264 [VCAP_KF_TCP_UDP_IS] = {
1265 .type = VCAP_FIELD_BIT,
1266 .offset = 484,
1267 .width = 1,
1268 },
1269 [VCAP_KF_TCP_IS] = {
1270 .type = VCAP_FIELD_BIT,
1271 .offset = 485,
1272 .width = 1,
1273 },
1274 [VCAP_KF_L4_DPORT] = {
1275 .type = VCAP_FIELD_U32,
1276 .offset = 486,
1277 .width = 16,
1278 },
1279 [VCAP_KF_L4_SPORT] = {
1280 .type = VCAP_FIELD_U32,
1281 .offset = 502,
1282 .width = 16,
1283 },
1284 [VCAP_KF_L4_RNG] = {
1285 .type = VCAP_FIELD_U32,
1286 .offset = 518,
1287 .width = 16,
1288 },
1289 [VCAP_KF_L4_SPORT_EQ_DPORT_IS] = {
1290 .type = VCAP_FIELD_BIT,
1291 .offset = 534,
1292 .width = 1,
1293 },
1294 [VCAP_KF_L4_SEQUENCE_EQ0_IS] = {
1295 .type = VCAP_FIELD_BIT,
1296 .offset = 535,
1297 .width = 1,
1298 },
1299 [VCAP_KF_L4_FIN] = {
1300 .type = VCAP_FIELD_BIT,
1301 .offset = 536,
1302 .width = 1,
1303 },
1304 [VCAP_KF_L4_SYN] = {
1305 .type = VCAP_FIELD_BIT,
1306 .offset = 537,
1307 .width = 1,
1308 },
1309 [VCAP_KF_L4_RST] = {
1310 .type = VCAP_FIELD_BIT,
1311 .offset = 538,
1312 .width = 1,
1313 },
1314 [VCAP_KF_L4_PSH] = {
1315 .type = VCAP_FIELD_BIT,
1316 .offset = 539,
1317 .width = 1,
1318 },
1319 [VCAP_KF_L4_ACK] = {
1320 .type = VCAP_FIELD_BIT,
1321 .offset = 540,
1322 .width = 1,
1323 },
1324 [VCAP_KF_L4_URG] = {
1325 .type = VCAP_FIELD_BIT,
1326 .offset = 541,
1327 .width = 1,
1328 },
1329 [VCAP_KF_L4_PAYLOAD] = {
1330 .type = VCAP_FIELD_U64,
1331 .offset = 542,
1332 .width = 64,
1333 },
1334};
1335
1336static const struct vcap_field es0_isdx_keyfield[] = {
1337 [VCAP_KF_TYPE] = {
1338 .type = VCAP_FIELD_BIT,
1339 .offset = 0,
1340 .width = 1,
1341 },
1342 [VCAP_KF_IF_EGR_PORT_NO] = {
1343 .type = VCAP_FIELD_U32,
1344 .offset = 1,
1345 .width = 7,
1346 },
1347 [VCAP_KF_8021Q_VID_CLS] = {
1348 .type = VCAP_FIELD_U32,
1349 .offset = 8,
1350 .width = 13,
1351 },
1352 [VCAP_KF_COSID_CLS] = {
1353 .type = VCAP_FIELD_U32,
1354 .offset = 21,
1355 .width = 3,
1356 },
1357 [VCAP_KF_8021Q_TPID] = {
1358 .type = VCAP_FIELD_U32,
1359 .offset = 24,
1360 .width = 3,
1361 },
1362 [VCAP_KF_L3_DPL_CLS] = {
1363 .type = VCAP_FIELD_BIT,
1364 .offset = 27,
1365 .width = 1,
1366 },
1367 [VCAP_KF_ISDX_GT0_IS] = {
1368 .type = VCAP_FIELD_BIT,
1369 .offset = 28,
1370 .width = 1,
1371 },
1372 [VCAP_KF_PROT_ACTIVE] = {
1373 .type = VCAP_FIELD_BIT,
1374 .offset = 29,
1375 .width = 1,
1376 },
1377 [VCAP_KF_ISDX_CLS] = {
1378 .type = VCAP_FIELD_U32,
1379 .offset = 39,
1380 .width = 12,
1381 },
1382};
1383
1384static const struct vcap_field es2_mac_etype_keyfield[] = {
1385 [VCAP_KF_TYPE] = {
1386 .type = VCAP_FIELD_U32,
1387 .offset = 0,
1388 .width = 3,
1389 },
1390 [VCAP_KF_LOOKUP_FIRST_IS] = {
1391 .type = VCAP_FIELD_BIT,
1392 .offset = 3,
1393 .width = 1,
1394 },
1395 [VCAP_KF_L2_MC_IS] = {
1396 .type = VCAP_FIELD_BIT,
1397 .offset = 13,
1398 .width = 1,
1399 },
1400 [VCAP_KF_L2_BC_IS] = {
1401 .type = VCAP_FIELD_BIT,
1402 .offset = 14,
1403 .width = 1,
1404 },
1405 [VCAP_KF_ISDX_GT0_IS] = {
1406 .type = VCAP_FIELD_BIT,
1407 .offset = 15,
1408 .width = 1,
1409 },
1410 [VCAP_KF_ISDX_CLS] = {
1411 .type = VCAP_FIELD_U32,
1412 .offset = 16,
1413 .width = 12,
1414 },
1415 [VCAP_KF_8021Q_VLAN_TAGGED_IS] = {
1416 .type = VCAP_FIELD_BIT,
1417 .offset = 28,
1418 .width = 1,
1419 },
1420 [VCAP_KF_8021Q_VID_CLS] = {
1421 .type = VCAP_FIELD_U32,
1422 .offset = 29,
1423 .width = 13,
1424 },
1425 [VCAP_KF_IF_EGR_PORT_MASK_RNG] = {
1426 .type = VCAP_FIELD_U32,
1427 .offset = 42,
1428 .width = 3,
1429 },
1430 [VCAP_KF_IF_EGR_PORT_MASK] = {
1431 .type = VCAP_FIELD_U32,
1432 .offset = 45,
1433 .width = 32,
1434 },
1435 [VCAP_KF_IF_IGR_PORT_SEL] = {
1436 .type = VCAP_FIELD_BIT,
1437 .offset = 77,
1438 .width = 1,
1439 },
1440 [VCAP_KF_IF_IGR_PORT] = {
1441 .type = VCAP_FIELD_U32,
1442 .offset = 78,
1443 .width = 9,
1444 },
1445 [VCAP_KF_8021Q_PCP_CLS] = {
1446 .type = VCAP_FIELD_U32,
1447 .offset = 87,
1448 .width = 3,
1449 },
1450 [VCAP_KF_8021Q_DEI_CLS] = {
1451 .type = VCAP_FIELD_BIT,
1452 .offset = 90,
1453 .width = 1,
1454 },
1455 [VCAP_KF_COSID_CLS] = {
1456 .type = VCAP_FIELD_U32,
1457 .offset = 91,
1458 .width = 3,
1459 },
1460 [VCAP_KF_L3_DPL_CLS] = {
1461 .type = VCAP_FIELD_BIT,
1462 .offset = 94,
1463 .width = 1,
1464 },
1465 [VCAP_KF_L3_RT_IS] = {
1466 .type = VCAP_FIELD_BIT,
1467 .offset = 95,
1468 .width = 1,
1469 },
1470 [VCAP_KF_L2_DMAC] = {
1471 .type = VCAP_FIELD_U48,
1472 .offset = 99,
1473 .width = 48,
1474 },
1475 [VCAP_KF_L2_SMAC] = {
1476 .type = VCAP_FIELD_U48,
1477 .offset = 147,
1478 .width = 48,
1479 },
1480 [VCAP_KF_ETYPE_LEN_IS] = {
1481 .type = VCAP_FIELD_BIT,
1482 .offset = 195,
1483 .width = 1,
1484 },
1485 [VCAP_KF_ETYPE] = {
1486 .type = VCAP_FIELD_U32,
1487 .offset = 196,
1488 .width = 16,
1489 },
1490 [VCAP_KF_L2_PAYLOAD_ETYPE] = {
1491 .type = VCAP_FIELD_U64,
1492 .offset = 212,
1493 .width = 64,
1494 },
1495 [VCAP_KF_OAM_CCM_CNTS_EQ0] = {
1496 .type = VCAP_FIELD_BIT,
1497 .offset = 276,
1498 .width = 1,
1499 },
1500 [VCAP_KF_OAM_Y1731_IS] = {
1501 .type = VCAP_FIELD_BIT,
1502 .offset = 277,
1503 .width = 1,
1504 },
1505};
1506
1507static const struct vcap_field es2_arp_keyfield[] = {
1508 [VCAP_KF_TYPE] = {
1509 .type = VCAP_FIELD_U32,
1510 .offset = 0,
1511 .width = 3,
1512 },
1513 [VCAP_KF_LOOKUP_FIRST_IS] = {
1514 .type = VCAP_FIELD_BIT,
1515 .offset = 3,
1516 .width = 1,
1517 },
1518 [VCAP_KF_L2_MC_IS] = {
1519 .type = VCAP_FIELD_BIT,
1520 .offset = 13,
1521 .width = 1,
1522 },
1523 [VCAP_KF_L2_BC_IS] = {
1524 .type = VCAP_FIELD_BIT,
1525 .offset = 14,
1526 .width = 1,
1527 },
1528 [VCAP_KF_ISDX_GT0_IS] = {
1529 .type = VCAP_FIELD_BIT,
1530 .offset = 15,
1531 .width = 1,
1532 },
1533 [VCAP_KF_ISDX_CLS] = {
1534 .type = VCAP_FIELD_U32,
1535 .offset = 16,
1536 .width = 12,
1537 },
1538 [VCAP_KF_8021Q_VLAN_TAGGED_IS] = {
1539 .type = VCAP_FIELD_BIT,
1540 .offset = 28,
1541 .width = 1,
1542 },
1543 [VCAP_KF_8021Q_VID_CLS] = {
1544 .type = VCAP_FIELD_U32,
1545 .offset = 29,
1546 .width = 13,
1547 },
1548 [VCAP_KF_IF_EGR_PORT_MASK_RNG] = {
1549 .type = VCAP_FIELD_U32,
1550 .offset = 42,
1551 .width = 3,
1552 },
1553 [VCAP_KF_IF_EGR_PORT_MASK] = {
1554 .type = VCAP_FIELD_U32,
1555 .offset = 45,
1556 .width = 32,
1557 },
1558 [VCAP_KF_IF_IGR_PORT_SEL] = {
1559 .type = VCAP_FIELD_BIT,
1560 .offset = 77,
1561 .width = 1,
1562 },
1563 [VCAP_KF_IF_IGR_PORT] = {
1564 .type = VCAP_FIELD_U32,
1565 .offset = 78,
1566 .width = 9,
1567 },
1568 [VCAP_KF_8021Q_PCP_CLS] = {
1569 .type = VCAP_FIELD_U32,
1570 .offset = 87,
1571 .width = 3,
1572 },
1573 [VCAP_KF_8021Q_DEI_CLS] = {
1574 .type = VCAP_FIELD_BIT,
1575 .offset = 90,
1576 .width = 1,
1577 },
1578 [VCAP_KF_COSID_CLS] = {
1579 .type = VCAP_FIELD_U32,
1580 .offset = 91,
1581 .width = 3,
1582 },
1583 [VCAP_KF_L3_DPL_CLS] = {
1584 .type = VCAP_FIELD_BIT,
1585 .offset = 94,
1586 .width = 1,
1587 },
1588 [VCAP_KF_L2_SMAC] = {
1589 .type = VCAP_FIELD_U48,
1590 .offset = 98,
1591 .width = 48,
1592 },
1593 [VCAP_KF_ARP_ADDR_SPACE_OK_IS] = {
1594 .type = VCAP_FIELD_BIT,
1595 .offset = 146,
1596 .width = 1,
1597 },
1598 [VCAP_KF_ARP_PROTO_SPACE_OK_IS] = {
1599 .type = VCAP_FIELD_BIT,
1600 .offset = 147,
1601 .width = 1,
1602 },
1603 [VCAP_KF_ARP_LEN_OK_IS] = {
1604 .type = VCAP_FIELD_BIT,
1605 .offset = 148,
1606 .width = 1,
1607 },
1608 [VCAP_KF_ARP_TGT_MATCH_IS] = {
1609 .type = VCAP_FIELD_BIT,
1610 .offset = 149,
1611 .width = 1,
1612 },
1613 [VCAP_KF_ARP_SENDER_MATCH_IS] = {
1614 .type = VCAP_FIELD_BIT,
1615 .offset = 150,
1616 .width = 1,
1617 },
1618 [VCAP_KF_ARP_OPCODE_UNKNOWN_IS] = {
1619 .type = VCAP_FIELD_BIT,
1620 .offset = 151,
1621 .width = 1,
1622 },
1623 [VCAP_KF_ARP_OPCODE] = {
1624 .type = VCAP_FIELD_U32,
1625 .offset = 152,
1626 .width = 2,
1627 },
1628 [VCAP_KF_L3_IP4_DIP] = {
1629 .type = VCAP_FIELD_U32,
1630 .offset = 154,
1631 .width = 32,
1632 },
1633 [VCAP_KF_L3_IP4_SIP] = {
1634 .type = VCAP_FIELD_U32,
1635 .offset = 186,
1636 .width = 32,
1637 },
1638 [VCAP_KF_L3_DIP_EQ_SIP_IS] = {
1639 .type = VCAP_FIELD_BIT,
1640 .offset = 218,
1641 .width = 1,
1642 },
1643};
1644
1645static const struct vcap_field es2_ip4_tcp_udp_keyfield[] = {
1646 [VCAP_KF_TYPE] = {
1647 .type = VCAP_FIELD_U32,
1648 .offset = 0,
1649 .width = 3,
1650 },
1651 [VCAP_KF_LOOKUP_FIRST_IS] = {
1652 .type = VCAP_FIELD_BIT,
1653 .offset = 3,
1654 .width = 1,
1655 },
1656 [VCAP_KF_L2_MC_IS] = {
1657 .type = VCAP_FIELD_BIT,
1658 .offset = 13,
1659 .width = 1,
1660 },
1661 [VCAP_KF_L2_BC_IS] = {
1662 .type = VCAP_FIELD_BIT,
1663 .offset = 14,
1664 .width = 1,
1665 },
1666 [VCAP_KF_ISDX_GT0_IS] = {
1667 .type = VCAP_FIELD_BIT,
1668 .offset = 15,
1669 .width = 1,
1670 },
1671 [VCAP_KF_ISDX_CLS] = {
1672 .type = VCAP_FIELD_U32,
1673 .offset = 16,
1674 .width = 12,
1675 },
1676 [VCAP_KF_8021Q_VLAN_TAGGED_IS] = {
1677 .type = VCAP_FIELD_BIT,
1678 .offset = 28,
1679 .width = 1,
1680 },
1681 [VCAP_KF_8021Q_VID_CLS] = {
1682 .type = VCAP_FIELD_U32,
1683 .offset = 29,
1684 .width = 13,
1685 },
1686 [VCAP_KF_IF_EGR_PORT_MASK_RNG] = {
1687 .type = VCAP_FIELD_U32,
1688 .offset = 42,
1689 .width = 3,
1690 },
1691 [VCAP_KF_IF_EGR_PORT_MASK] = {
1692 .type = VCAP_FIELD_U32,
1693 .offset = 45,
1694 .width = 32,
1695 },
1696 [VCAP_KF_IF_IGR_PORT_SEL] = {
1697 .type = VCAP_FIELD_BIT,
1698 .offset = 77,
1699 .width = 1,
1700 },
1701 [VCAP_KF_IF_IGR_PORT] = {
1702 .type = VCAP_FIELD_U32,
1703 .offset = 78,
1704 .width = 9,
1705 },
1706 [VCAP_KF_8021Q_PCP_CLS] = {
1707 .type = VCAP_FIELD_U32,
1708 .offset = 87,
1709 .width = 3,
1710 },
1711 [VCAP_KF_8021Q_DEI_CLS] = {
1712 .type = VCAP_FIELD_BIT,
1713 .offset = 90,
1714 .width = 1,
1715 },
1716 [VCAP_KF_COSID_CLS] = {
1717 .type = VCAP_FIELD_U32,
1718 .offset = 91,
1719 .width = 3,
1720 },
1721 [VCAP_KF_L3_DPL_CLS] = {
1722 .type = VCAP_FIELD_BIT,
1723 .offset = 94,
1724 .width = 1,
1725 },
1726 [VCAP_KF_L3_RT_IS] = {
1727 .type = VCAP_FIELD_BIT,
1728 .offset = 95,
1729 .width = 1,
1730 },
1731 [VCAP_KF_IP4_IS] = {
1732 .type = VCAP_FIELD_BIT,
1733 .offset = 99,
1734 .width = 1,
1735 },
1736 [VCAP_KF_L3_FRAGMENT_TYPE] = {
1737 .type = VCAP_FIELD_U32,
1738 .offset = 100,
1739 .width = 2,
1740 },
1741 [VCAP_KF_L3_OPTIONS_IS] = {
1742 .type = VCAP_FIELD_BIT,
1743 .offset = 102,
1744 .width = 1,
1745 },
1746 [VCAP_KF_L3_TTL_GT0] = {
1747 .type = VCAP_FIELD_BIT,
1748 .offset = 103,
1749 .width = 1,
1750 },
1751 [VCAP_KF_L3_TOS] = {
1752 .type = VCAP_FIELD_U32,
1753 .offset = 104,
1754 .width = 8,
1755 },
1756 [VCAP_KF_L3_IP4_DIP] = {
1757 .type = VCAP_FIELD_U32,
1758 .offset = 112,
1759 .width = 32,
1760 },
1761 [VCAP_KF_L3_IP4_SIP] = {
1762 .type = VCAP_FIELD_U32,
1763 .offset = 144,
1764 .width = 32,
1765 },
1766 [VCAP_KF_L3_DIP_EQ_SIP_IS] = {
1767 .type = VCAP_FIELD_BIT,
1768 .offset = 176,
1769 .width = 1,
1770 },
1771 [VCAP_KF_TCP_IS] = {
1772 .type = VCAP_FIELD_BIT,
1773 .offset = 177,
1774 .width = 1,
1775 },
1776 [VCAP_KF_L4_DPORT] = {
1777 .type = VCAP_FIELD_U32,
1778 .offset = 178,
1779 .width = 16,
1780 },
1781 [VCAP_KF_L4_SPORT] = {
1782 .type = VCAP_FIELD_U32,
1783 .offset = 194,
1784 .width = 16,
1785 },
1786 [VCAP_KF_L4_RNG] = {
1787 .type = VCAP_FIELD_U32,
1788 .offset = 210,
1789 .width = 16,
1790 },
1791 [VCAP_KF_L4_SPORT_EQ_DPORT_IS] = {
1792 .type = VCAP_FIELD_BIT,
1793 .offset = 226,
1794 .width = 1,
1795 },
1796 [VCAP_KF_L4_SEQUENCE_EQ0_IS] = {
1797 .type = VCAP_FIELD_BIT,
1798 .offset = 227,
1799 .width = 1,
1800 },
1801 [VCAP_KF_L4_FIN] = {
1802 .type = VCAP_FIELD_BIT,
1803 .offset = 228,
1804 .width = 1,
1805 },
1806 [VCAP_KF_L4_SYN] = {
1807 .type = VCAP_FIELD_BIT,
1808 .offset = 229,
1809 .width = 1,
1810 },
1811 [VCAP_KF_L4_RST] = {
1812 .type = VCAP_FIELD_BIT,
1813 .offset = 230,
1814 .width = 1,
1815 },
1816 [VCAP_KF_L4_PSH] = {
1817 .type = VCAP_FIELD_BIT,
1818 .offset = 231,
1819 .width = 1,
1820 },
1821 [VCAP_KF_L4_ACK] = {
1822 .type = VCAP_FIELD_BIT,
1823 .offset = 232,
1824 .width = 1,
1825 },
1826 [VCAP_KF_L4_URG] = {
1827 .type = VCAP_FIELD_BIT,
1828 .offset = 233,
1829 .width = 1,
1830 },
1831 [VCAP_KF_L4_PAYLOAD] = {
1832 .type = VCAP_FIELD_U64,
1833 .offset = 234,
1834 .width = 64,
1835 },
1836};
1837
1838static const struct vcap_field es2_ip4_other_keyfield[] = {
1839 [VCAP_KF_TYPE] = {
1840 .type = VCAP_FIELD_U32,
1841 .offset = 0,
1842 .width = 3,
1843 },
1844 [VCAP_KF_LOOKUP_FIRST_IS] = {
1845 .type = VCAP_FIELD_BIT,
1846 .offset = 3,
1847 .width = 1,
1848 },
1849 [VCAP_KF_L2_MC_IS] = {
1850 .type = VCAP_FIELD_BIT,
1851 .offset = 13,
1852 .width = 1,
1853 },
1854 [VCAP_KF_L2_BC_IS] = {
1855 .type = VCAP_FIELD_BIT,
1856 .offset = 14,
1857 .width = 1,
1858 },
1859 [VCAP_KF_ISDX_GT0_IS] = {
1860 .type = VCAP_FIELD_BIT,
1861 .offset = 15,
1862 .width = 1,
1863 },
1864 [VCAP_KF_ISDX_CLS] = {
1865 .type = VCAP_FIELD_U32,
1866 .offset = 16,
1867 .width = 12,
1868 },
1869 [VCAP_KF_8021Q_VLAN_TAGGED_IS] = {
1870 .type = VCAP_FIELD_BIT,
1871 .offset = 28,
1872 .width = 1,
1873 },
1874 [VCAP_KF_8021Q_VID_CLS] = {
1875 .type = VCAP_FIELD_U32,
1876 .offset = 29,
1877 .width = 13,
1878 },
1879 [VCAP_KF_IF_EGR_PORT_MASK_RNG] = {
1880 .type = VCAP_FIELD_U32,
1881 .offset = 42,
1882 .width = 3,
1883 },
1884 [VCAP_KF_IF_EGR_PORT_MASK] = {
1885 .type = VCAP_FIELD_U32,
1886 .offset = 45,
1887 .width = 32,
1888 },
1889 [VCAP_KF_IF_IGR_PORT_SEL] = {
1890 .type = VCAP_FIELD_BIT,
1891 .offset = 77,
1892 .width = 1,
1893 },
1894 [VCAP_KF_IF_IGR_PORT] = {
1895 .type = VCAP_FIELD_U32,
1896 .offset = 78,
1897 .width = 9,
1898 },
1899 [VCAP_KF_8021Q_PCP_CLS] = {
1900 .type = VCAP_FIELD_U32,
1901 .offset = 87,
1902 .width = 3,
1903 },
1904 [VCAP_KF_8021Q_DEI_CLS] = {
1905 .type = VCAP_FIELD_BIT,
1906 .offset = 90,
1907 .width = 1,
1908 },
1909 [VCAP_KF_COSID_CLS] = {
1910 .type = VCAP_FIELD_U32,
1911 .offset = 91,
1912 .width = 3,
1913 },
1914 [VCAP_KF_L3_DPL_CLS] = {
1915 .type = VCAP_FIELD_BIT,
1916 .offset = 94,
1917 .width = 1,
1918 },
1919 [VCAP_KF_L3_RT_IS] = {
1920 .type = VCAP_FIELD_BIT,
1921 .offset = 95,
1922 .width = 1,
1923 },
1924 [VCAP_KF_IP4_IS] = {
1925 .type = VCAP_FIELD_BIT,
1926 .offset = 99,
1927 .width = 1,
1928 },
1929 [VCAP_KF_L3_FRAGMENT_TYPE] = {
1930 .type = VCAP_FIELD_U32,
1931 .offset = 100,
1932 .width = 2,
1933 },
1934 [VCAP_KF_L3_OPTIONS_IS] = {
1935 .type = VCAP_FIELD_BIT,
1936 .offset = 102,
1937 .width = 1,
1938 },
1939 [VCAP_KF_L3_TTL_GT0] = {
1940 .type = VCAP_FIELD_BIT,
1941 .offset = 103,
1942 .width = 1,
1943 },
1944 [VCAP_KF_L3_TOS] = {
1945 .type = VCAP_FIELD_U32,
1946 .offset = 104,
1947 .width = 8,
1948 },
1949 [VCAP_KF_L3_IP4_DIP] = {
1950 .type = VCAP_FIELD_U32,
1951 .offset = 112,
1952 .width = 32,
1953 },
1954 [VCAP_KF_L3_IP4_SIP] = {
1955 .type = VCAP_FIELD_U32,
1956 .offset = 144,
1957 .width = 32,
1958 },
1959 [VCAP_KF_L3_DIP_EQ_SIP_IS] = {
1960 .type = VCAP_FIELD_BIT,
1961 .offset = 176,
1962 .width = 1,
1963 },
1964 [VCAP_KF_L3_IP_PROTO] = {
1965 .type = VCAP_FIELD_U32,
1966 .offset = 177,
1967 .width = 8,
1968 },
1969 [VCAP_KF_L3_PAYLOAD] = {
1970 .type = VCAP_FIELD_U112,
1971 .offset = 185,
1972 .width = 96,
1973 },
1974};
1975
1976static const struct vcap_field es2_ip_7tuple_keyfield[] = {
1977 [VCAP_KF_LOOKUP_FIRST_IS] = {
1978 .type = VCAP_FIELD_BIT,
1979 .offset = 0,
1980 .width = 1,
1981 },
1982 [VCAP_KF_L2_MC_IS] = {
1983 .type = VCAP_FIELD_BIT,
1984 .offset = 10,
1985 .width = 1,
1986 },
1987 [VCAP_KF_L2_BC_IS] = {
1988 .type = VCAP_FIELD_BIT,
1989 .offset = 11,
1990 .width = 1,
1991 },
1992 [VCAP_KF_ISDX_GT0_IS] = {
1993 .type = VCAP_FIELD_BIT,
1994 .offset = 12,
1995 .width = 1,
1996 },
1997 [VCAP_KF_ISDX_CLS] = {
1998 .type = VCAP_FIELD_U32,
1999 .offset = 13,
2000 .width = 12,
2001 },
2002 [VCAP_KF_8021Q_VLAN_TAGGED_IS] = {
2003 .type = VCAP_FIELD_BIT,
2004 .offset = 25,
2005 .width = 1,
2006 },
2007 [VCAP_KF_8021Q_VID_CLS] = {
2008 .type = VCAP_FIELD_U32,
2009 .offset = 26,
2010 .width = 13,
2011 },
2012 [VCAP_KF_IF_EGR_PORT_MASK_RNG] = {
2013 .type = VCAP_FIELD_U32,
2014 .offset = 39,
2015 .width = 3,
2016 },
2017 [VCAP_KF_IF_EGR_PORT_MASK] = {
2018 .type = VCAP_FIELD_U32,
2019 .offset = 42,
2020 .width = 32,
2021 },
2022 [VCAP_KF_IF_IGR_PORT_SEL] = {
2023 .type = VCAP_FIELD_BIT,
2024 .offset = 74,
2025 .width = 1,
2026 },
2027 [VCAP_KF_IF_IGR_PORT] = {
2028 .type = VCAP_FIELD_U32,
2029 .offset = 75,
2030 .width = 9,
2031 },
2032 [VCAP_KF_8021Q_PCP_CLS] = {
2033 .type = VCAP_FIELD_U32,
2034 .offset = 84,
2035 .width = 3,
2036 },
2037 [VCAP_KF_8021Q_DEI_CLS] = {
2038 .type = VCAP_FIELD_BIT,
2039 .offset = 87,
2040 .width = 1,
2041 },
2042 [VCAP_KF_COSID_CLS] = {
2043 .type = VCAP_FIELD_U32,
2044 .offset = 88,
2045 .width = 3,
2046 },
2047 [VCAP_KF_L3_DPL_CLS] = {
2048 .type = VCAP_FIELD_BIT,
2049 .offset = 91,
2050 .width = 1,
2051 },
2052 [VCAP_KF_L3_RT_IS] = {
2053 .type = VCAP_FIELD_BIT,
2054 .offset = 92,
2055 .width = 1,
2056 },
2057 [VCAP_KF_L2_DMAC] = {
2058 .type = VCAP_FIELD_U48,
2059 .offset = 96,
2060 .width = 48,
2061 },
2062 [VCAP_KF_L2_SMAC] = {
2063 .type = VCAP_FIELD_U48,
2064 .offset = 144,
2065 .width = 48,
2066 },
2067 [VCAP_KF_IP4_IS] = {
2068 .type = VCAP_FIELD_BIT,
2069 .offset = 192,
2070 .width = 1,
2071 },
2072 [VCAP_KF_L3_TTL_GT0] = {
2073 .type = VCAP_FIELD_BIT,
2074 .offset = 193,
2075 .width = 1,
2076 },
2077 [VCAP_KF_L3_TOS] = {
2078 .type = VCAP_FIELD_U32,
2079 .offset = 194,
2080 .width = 8,
2081 },
2082 [VCAP_KF_L3_IP6_DIP] = {
2083 .type = VCAP_FIELD_U128,
2084 .offset = 202,
2085 .width = 128,
2086 },
2087 [VCAP_KF_L3_IP6_SIP] = {
2088 .type = VCAP_FIELD_U128,
2089 .offset = 330,
2090 .width = 128,
2091 },
2092 [VCAP_KF_L3_DIP_EQ_SIP_IS] = {
2093 .type = VCAP_FIELD_BIT,
2094 .offset = 458,
2095 .width = 1,
2096 },
2097 [VCAP_KF_TCP_UDP_IS] = {
2098 .type = VCAP_FIELD_BIT,
2099 .offset = 459,
2100 .width = 1,
2101 },
2102 [VCAP_KF_TCP_IS] = {
2103 .type = VCAP_FIELD_BIT,
2104 .offset = 460,
2105 .width = 1,
2106 },
2107 [VCAP_KF_L4_DPORT] = {
2108 .type = VCAP_FIELD_U32,
2109 .offset = 461,
2110 .width = 16,
2111 },
2112 [VCAP_KF_L4_SPORT] = {
2113 .type = VCAP_FIELD_U32,
2114 .offset = 477,
2115 .width = 16,
2116 },
2117 [VCAP_KF_L4_RNG] = {
2118 .type = VCAP_FIELD_U32,
2119 .offset = 493,
2120 .width = 16,
2121 },
2122 [VCAP_KF_L4_SPORT_EQ_DPORT_IS] = {
2123 .type = VCAP_FIELD_BIT,
2124 .offset = 509,
2125 .width = 1,
2126 },
2127 [VCAP_KF_L4_SEQUENCE_EQ0_IS] = {
2128 .type = VCAP_FIELD_BIT,
2129 .offset = 510,
2130 .width = 1,
2131 },
2132 [VCAP_KF_L4_FIN] = {
2133 .type = VCAP_FIELD_BIT,
2134 .offset = 511,
2135 .width = 1,
2136 },
2137 [VCAP_KF_L4_SYN] = {
2138 .type = VCAP_FIELD_BIT,
2139 .offset = 512,
2140 .width = 1,
2141 },
2142 [VCAP_KF_L4_RST] = {
2143 .type = VCAP_FIELD_BIT,
2144 .offset = 513,
2145 .width = 1,
2146 },
2147 [VCAP_KF_L4_PSH] = {
2148 .type = VCAP_FIELD_BIT,
2149 .offset = 514,
2150 .width = 1,
2151 },
2152 [VCAP_KF_L4_ACK] = {
2153 .type = VCAP_FIELD_BIT,
2154 .offset = 515,
2155 .width = 1,
2156 },
2157 [VCAP_KF_L4_URG] = {
2158 .type = VCAP_FIELD_BIT,
2159 .offset = 516,
2160 .width = 1,
2161 },
2162 [VCAP_KF_L4_PAYLOAD] = {
2163 .type = VCAP_FIELD_U64,
2164 .offset = 517,
2165 .width = 64,
2166 },
2167};
2168
2169static const struct vcap_field es2_ip6_std_keyfield[] = {
2170 [VCAP_KF_TYPE] = {
2171 .type = VCAP_FIELD_U32,
2172 .offset = 0,
2173 .width = 3,
2174 },
2175 [VCAP_KF_LOOKUP_FIRST_IS] = {
2176 .type = VCAP_FIELD_BIT,
2177 .offset = 3,
2178 .width = 1,
2179 },
2180 [VCAP_KF_L2_MC_IS] = {
2181 .type = VCAP_FIELD_BIT,
2182 .offset = 13,
2183 .width = 1,
2184 },
2185 [VCAP_KF_L2_BC_IS] = {
2186 .type = VCAP_FIELD_BIT,
2187 .offset = 14,
2188 .width = 1,
2189 },
2190 [VCAP_KF_ISDX_GT0_IS] = {
2191 .type = VCAP_FIELD_BIT,
2192 .offset = 15,
2193 .width = 1,
2194 },
2195 [VCAP_KF_ISDX_CLS] = {
2196 .type = VCAP_FIELD_U32,
2197 .offset = 16,
2198 .width = 12,
2199 },
2200 [VCAP_KF_8021Q_VLAN_TAGGED_IS] = {
2201 .type = VCAP_FIELD_BIT,
2202 .offset = 28,
2203 .width = 1,
2204 },
2205 [VCAP_KF_8021Q_VID_CLS] = {
2206 .type = VCAP_FIELD_U32,
2207 .offset = 29,
2208 .width = 13,
2209 },
2210 [VCAP_KF_IF_EGR_PORT_MASK_RNG] = {
2211 .type = VCAP_FIELD_U32,
2212 .offset = 42,
2213 .width = 3,
2214 },
2215 [VCAP_KF_IF_EGR_PORT_MASK] = {
2216 .type = VCAP_FIELD_U32,
2217 .offset = 45,
2218 .width = 32,
2219 },
2220 [VCAP_KF_IF_IGR_PORT_SEL] = {
2221 .type = VCAP_FIELD_BIT,
2222 .offset = 77,
2223 .width = 1,
2224 },
2225 [VCAP_KF_IF_IGR_PORT] = {
2226 .type = VCAP_FIELD_U32,
2227 .offset = 78,
2228 .width = 9,
2229 },
2230 [VCAP_KF_8021Q_PCP_CLS] = {
2231 .type = VCAP_FIELD_U32,
2232 .offset = 87,
2233 .width = 3,
2234 },
2235 [VCAP_KF_8021Q_DEI_CLS] = {
2236 .type = VCAP_FIELD_BIT,
2237 .offset = 90,
2238 .width = 1,
2239 },
2240 [VCAP_KF_COSID_CLS] = {
2241 .type = VCAP_FIELD_U32,
2242 .offset = 91,
2243 .width = 3,
2244 },
2245 [VCAP_KF_L3_DPL_CLS] = {
2246 .type = VCAP_FIELD_BIT,
2247 .offset = 94,
2248 .width = 1,
2249 },
2250 [VCAP_KF_L3_RT_IS] = {
2251 .type = VCAP_FIELD_BIT,
2252 .offset = 95,
2253 .width = 1,
2254 },
2255 [VCAP_KF_L3_TTL_GT0] = {
2256 .type = VCAP_FIELD_BIT,
2257 .offset = 99,
2258 .width = 1,
2259 },
2260 [VCAP_KF_L3_IP6_SIP] = {
2261 .type = VCAP_FIELD_U128,
2262 .offset = 100,
2263 .width = 128,
2264 },
2265 [VCAP_KF_L3_DIP_EQ_SIP_IS] = {
2266 .type = VCAP_FIELD_BIT,
2267 .offset = 228,
2268 .width = 1,
2269 },
2270 [VCAP_KF_L3_IP_PROTO] = {
2271 .type = VCAP_FIELD_U32,
2272 .offset = 229,
2273 .width = 8,
2274 },
2275 [VCAP_KF_L4_RNG] = {
2276 .type = VCAP_FIELD_U32,
2277 .offset = 237,
2278 .width = 16,
2279 },
2280 [VCAP_KF_L3_PAYLOAD] = {
2281 .type = VCAP_FIELD_U48,
2282 .offset = 253,
2283 .width = 40,
2284 },
2285};
2286
2287/* keyfield_set */
2288static const struct vcap_set is0_keyfield_set[] = {
2289 [VCAP_KFS_NORMAL_7TUPLE] = {
2290 .type_id = 0,
2291 .sw_per_item = 12,
2292 .sw_cnt = 1,
2293 },
2294 [VCAP_KFS_NORMAL_5TUPLE_IP4] = {
2295 .type_id = 2,
2296 .sw_per_item = 6,
2297 .sw_cnt = 2,
2298 },
2299};
2300
2301static const struct vcap_set is2_keyfield_set[] = {
2302 [VCAP_KFS_MAC_ETYPE] = {
2303 .type_id = 0,
2304 .sw_per_item = 6,
2305 .sw_cnt = 2,
2306 },
2307 [VCAP_KFS_ARP] = {
2308 .type_id = 3,
2309 .sw_per_item = 6,
2310 .sw_cnt = 2,
2311 },
2312 [VCAP_KFS_IP4_TCP_UDP] = {
2313 .type_id = 4,
2314 .sw_per_item = 6,
2315 .sw_cnt = 2,
2316 },
2317 [VCAP_KFS_IP4_OTHER] = {
2318 .type_id = 5,
2319 .sw_per_item = 6,
2320 .sw_cnt = 2,
2321 },
2322 [VCAP_KFS_IP6_STD] = {
2323 .type_id = 6,
2324 .sw_per_item = 6,
2325 .sw_cnt = 2,
2326 },
2327 [VCAP_KFS_IP_7TUPLE] = {
2328 .type_id = 1,
2329 .sw_per_item = 12,
2330 .sw_cnt = 1,
2331 },
2332};
2333
2334static const struct vcap_set es0_keyfield_set[] = {
2335 [VCAP_KFS_ISDX] = {
2336 .type_id = 0,
2337 .sw_per_item = 1,
2338 .sw_cnt = 1,
2339 },
2340};
2341
2342static const struct vcap_set es2_keyfield_set[] = {
2343 [VCAP_KFS_MAC_ETYPE] = {
2344 .type_id = 0,
2345 .sw_per_item = 6,
2346 .sw_cnt = 2,
2347 },
2348 [VCAP_KFS_ARP] = {
2349 .type_id = 1,
2350 .sw_per_item = 6,
2351 .sw_cnt = 2,
2352 },
2353 [VCAP_KFS_IP4_TCP_UDP] = {
2354 .type_id = 2,
2355 .sw_per_item = 6,
2356 .sw_cnt = 2,
2357 },
2358 [VCAP_KFS_IP4_OTHER] = {
2359 .type_id = 3,
2360 .sw_per_item = 6,
2361 .sw_cnt = 2,
2362 },
2363 [VCAP_KFS_IP_7TUPLE] = {
2364 .type_id = -1,
2365 .sw_per_item = 12,
2366 .sw_cnt = 1,
2367 },
2368 [VCAP_KFS_IP6_STD] = {
2369 .type_id = 4,
2370 .sw_per_item = 6,
2371 .sw_cnt = 2,
2372 },
2373};
2374
2375/* keyfield_set map */
2376static const struct vcap_field *is0_keyfield_set_map[] = {
2377 [VCAP_KFS_NORMAL_7TUPLE] = is0_normal_7tuple_keyfield,
2378 [VCAP_KFS_NORMAL_5TUPLE_IP4] = is0_normal_5tuple_ip4_keyfield,
2379};
2380
2381static const struct vcap_field *is2_keyfield_set_map[] = {
2382 [VCAP_KFS_MAC_ETYPE] = is2_mac_etype_keyfield,
2383 [VCAP_KFS_ARP] = is2_arp_keyfield,
2384 [VCAP_KFS_IP4_TCP_UDP] = is2_ip4_tcp_udp_keyfield,
2385 [VCAP_KFS_IP4_OTHER] = is2_ip4_other_keyfield,
2386 [VCAP_KFS_IP6_STD] = is2_ip6_std_keyfield,
2387 [VCAP_KFS_IP_7TUPLE] = is2_ip_7tuple_keyfield,
2388};
2389
2390static const struct vcap_field *es0_keyfield_set_map[] = {
2391 [VCAP_KFS_ISDX] = es0_isdx_keyfield,
2392};
2393
2394static const struct vcap_field *es2_keyfield_set_map[] = {
2395 [VCAP_KFS_MAC_ETYPE] = es2_mac_etype_keyfield,
2396 [VCAP_KFS_ARP] = es2_arp_keyfield,
2397 [VCAP_KFS_IP4_TCP_UDP] = es2_ip4_tcp_udp_keyfield,
2398 [VCAP_KFS_IP4_OTHER] = es2_ip4_other_keyfield,
2399 [VCAP_KFS_IP_7TUPLE] = es2_ip_7tuple_keyfield,
2400 [VCAP_KFS_IP6_STD] = es2_ip6_std_keyfield,
2401};
2402
2403/* keyfield_set map sizes */
2404static int is0_keyfield_set_map_size[] = {
2405 [VCAP_KFS_NORMAL_7TUPLE] = ARRAY_SIZE(is0_normal_7tuple_keyfield),
2406 [VCAP_KFS_NORMAL_5TUPLE_IP4] = ARRAY_SIZE(is0_normal_5tuple_ip4_keyfield),
2407};
2408
2409static int is2_keyfield_set_map_size[] = {
2410 [VCAP_KFS_MAC_ETYPE] = ARRAY_SIZE(is2_mac_etype_keyfield),
2411 [VCAP_KFS_ARP] = ARRAY_SIZE(is2_arp_keyfield),
2412 [VCAP_KFS_IP4_TCP_UDP] = ARRAY_SIZE(is2_ip4_tcp_udp_keyfield),
2413 [VCAP_KFS_IP4_OTHER] = ARRAY_SIZE(is2_ip4_other_keyfield),
2414 [VCAP_KFS_IP6_STD] = ARRAY_SIZE(is2_ip6_std_keyfield),
2415 [VCAP_KFS_IP_7TUPLE] = ARRAY_SIZE(is2_ip_7tuple_keyfield),
2416};
2417
2418static int es0_keyfield_set_map_size[] = {
2419 [VCAP_KFS_ISDX] = ARRAY_SIZE(es0_isdx_keyfield),
2420};
2421
2422static int es2_keyfield_set_map_size[] = {
2423 [VCAP_KFS_MAC_ETYPE] = ARRAY_SIZE(es2_mac_etype_keyfield),
2424 [VCAP_KFS_ARP] = ARRAY_SIZE(es2_arp_keyfield),
2425 [VCAP_KFS_IP4_TCP_UDP] = ARRAY_SIZE(es2_ip4_tcp_udp_keyfield),
2426 [VCAP_KFS_IP4_OTHER] = ARRAY_SIZE(es2_ip4_other_keyfield),
2427 [VCAP_KFS_IP_7TUPLE] = ARRAY_SIZE(es2_ip_7tuple_keyfield),
2428 [VCAP_KFS_IP6_STD] = ARRAY_SIZE(es2_ip6_std_keyfield),
2429};
2430
2431/* actionfields */
2432static const struct vcap_field is0_classification_actionfield[] = {
2433 [VCAP_AF_TYPE] = {
2434 .type = VCAP_FIELD_BIT,
2435 .offset = 0,
2436 .width = 1,
2437 },
2438 [VCAP_AF_DSCP_ENA] = {
2439 .type = VCAP_FIELD_BIT,
2440 .offset = 1,
2441 .width = 1,
2442 },
2443 [VCAP_AF_DSCP_VAL] = {
2444 .type = VCAP_FIELD_U32,
2445 .offset = 2,
2446 .width = 6,
2447 },
2448 [VCAP_AF_QOS_ENA] = {
2449 .type = VCAP_FIELD_BIT,
2450 .offset = 12,
2451 .width = 1,
2452 },
2453 [VCAP_AF_QOS_VAL] = {
2454 .type = VCAP_FIELD_U32,
2455 .offset = 13,
2456 .width = 3,
2457 },
2458 [VCAP_AF_DP_ENA] = {
2459 .type = VCAP_FIELD_BIT,
2460 .offset = 16,
2461 .width = 1,
2462 },
2463 [VCAP_AF_DP_VAL] = {
2464 .type = VCAP_FIELD_U32,
2465 .offset = 17,
2466 .width = 2,
2467 },
2468 [VCAP_AF_DEI_ENA] = {
2469 .type = VCAP_FIELD_BIT,
2470 .offset = 19,
2471 .width = 1,
2472 },
2473 [VCAP_AF_DEI_VAL] = {
2474 .type = VCAP_FIELD_BIT,
2475 .offset = 20,
2476 .width = 1,
2477 },
2478 [VCAP_AF_PCP_ENA] = {
2479 .type = VCAP_FIELD_BIT,
2480 .offset = 21,
2481 .width = 1,
2482 },
2483 [VCAP_AF_PCP_VAL] = {
2484 .type = VCAP_FIELD_U32,
2485 .offset = 22,
2486 .width = 3,
2487 },
2488 [VCAP_AF_MAP_LOOKUP_SEL] = {
2489 .type = VCAP_FIELD_U32,
2490 .offset = 25,
2491 .width = 2,
2492 },
2493 [VCAP_AF_MAP_KEY] = {
2494 .type = VCAP_FIELD_U32,
2495 .offset = 27,
2496 .width = 3,
2497 },
2498 [VCAP_AF_MAP_IDX] = {
2499 .type = VCAP_FIELD_U32,
2500 .offset = 30,
2501 .width = 9,
2502 },
2503 [VCAP_AF_CLS_VID_SEL] = {
2504 .type = VCAP_FIELD_U32,
2505 .offset = 39,
2506 .width = 3,
2507 },
2508 [VCAP_AF_VID_VAL] = {
2509 .type = VCAP_FIELD_U32,
2510 .offset = 45,
2511 .width = 13,
2512 },
2513 [VCAP_AF_ISDX_ADD_REPLACE_SEL] = {
2514 .type = VCAP_FIELD_BIT,
2515 .offset = 68,
2516 .width = 1,
2517 },
2518 [VCAP_AF_ISDX_VAL] = {
2519 .type = VCAP_FIELD_U32,
2520 .offset = 69,
2521 .width = 12,
2522 },
2523 [VCAP_AF_PAG_OVERRIDE_MASK] = {
2524 .type = VCAP_FIELD_U32,
2525 .offset = 109,
2526 .width = 8,
2527 },
2528 [VCAP_AF_PAG_VAL] = {
2529 .type = VCAP_FIELD_U32,
2530 .offset = 117,
2531 .width = 8,
2532 },
2533 [VCAP_AF_NXT_IDX_CTRL] = {
2534 .type = VCAP_FIELD_U32,
2535 .offset = 171,
2536 .width = 3,
2537 },
2538 [VCAP_AF_NXT_IDX] = {
2539 .type = VCAP_FIELD_U32,
2540 .offset = 174,
2541 .width = 12,
2542 },
2543};
2544
2545static const struct vcap_field is0_full_actionfield[] = {
2546 [VCAP_AF_DSCP_ENA] = {
2547 .type = VCAP_FIELD_BIT,
2548 .offset = 0,
2549 .width = 1,
2550 },
2551 [VCAP_AF_DSCP_VAL] = {
2552 .type = VCAP_FIELD_U32,
2553 .offset = 1,
2554 .width = 6,
2555 },
2556 [VCAP_AF_QOS_ENA] = {
2557 .type = VCAP_FIELD_BIT,
2558 .offset = 11,
2559 .width = 1,
2560 },
2561 [VCAP_AF_QOS_VAL] = {
2562 .type = VCAP_FIELD_U32,
2563 .offset = 12,
2564 .width = 3,
2565 },
2566 [VCAP_AF_DP_ENA] = {
2567 .type = VCAP_FIELD_BIT,
2568 .offset = 15,
2569 .width = 1,
2570 },
2571 [VCAP_AF_DP_VAL] = {
2572 .type = VCAP_FIELD_U32,
2573 .offset = 16,
2574 .width = 2,
2575 },
2576 [VCAP_AF_DEI_ENA] = {
2577 .type = VCAP_FIELD_BIT,
2578 .offset = 18,
2579 .width = 1,
2580 },
2581 [VCAP_AF_DEI_VAL] = {
2582 .type = VCAP_FIELD_BIT,
2583 .offset = 19,
2584 .width = 1,
2585 },
2586 [VCAP_AF_PCP_ENA] = {
2587 .type = VCAP_FIELD_BIT,
2588 .offset = 20,
2589 .width = 1,
2590 },
2591 [VCAP_AF_PCP_VAL] = {
2592 .type = VCAP_FIELD_U32,
2593 .offset = 21,
2594 .width = 3,
2595 },
2596 [VCAP_AF_MAP_LOOKUP_SEL] = {
2597 .type = VCAP_FIELD_U32,
2598 .offset = 24,
2599 .width = 2,
2600 },
2601 [VCAP_AF_MAP_KEY] = {
2602 .type = VCAP_FIELD_U32,
2603 .offset = 26,
2604 .width = 3,
2605 },
2606 [VCAP_AF_MAP_IDX] = {
2607 .type = VCAP_FIELD_U32,
2608 .offset = 29,
2609 .width = 9,
2610 },
2611 [VCAP_AF_CLS_VID_SEL] = {
2612 .type = VCAP_FIELD_U32,
2613 .offset = 38,
2614 .width = 3,
2615 },
2616 [VCAP_AF_VID_VAL] = {
2617 .type = VCAP_FIELD_U32,
2618 .offset = 44,
2619 .width = 13,
2620 },
2621 [VCAP_AF_ISDX_ADD_REPLACE_SEL] = {
2622 .type = VCAP_FIELD_BIT,
2623 .offset = 67,
2624 .width = 1,
2625 },
2626 [VCAP_AF_ISDX_VAL] = {
2627 .type = VCAP_FIELD_U32,
2628 .offset = 68,
2629 .width = 12,
2630 },
2631 [VCAP_AF_MASK_MODE] = {
2632 .type = VCAP_FIELD_U32,
2633 .offset = 80,
2634 .width = 3,
2635 },
2636 [VCAP_AF_PORT_MASK] = {
2637 .type = VCAP_FIELD_U72,
2638 .offset = 83,
2639 .width = 65,
2640 },
2641 [VCAP_AF_PAG_OVERRIDE_MASK] = {
2642 .type = VCAP_FIELD_U32,
2643 .offset = 204,
2644 .width = 8,
2645 },
2646 [VCAP_AF_PAG_VAL] = {
2647 .type = VCAP_FIELD_U32,
2648 .offset = 212,
2649 .width = 8,
2650 },
2651 [VCAP_AF_NXT_IDX_CTRL] = {
2652 .type = VCAP_FIELD_U32,
2653 .offset = 298,
2654 .width = 3,
2655 },
2656 [VCAP_AF_NXT_IDX] = {
2657 .type = VCAP_FIELD_U32,
2658 .offset = 301,
2659 .width = 12,
2660 },
2661};
2662
2663static const struct vcap_field is0_class_reduced_actionfield[] = {
2664 [VCAP_AF_TYPE] = {
2665 .type = VCAP_FIELD_BIT,
2666 .offset = 0,
2667 .width = 1,
2668 },
2669 [VCAP_AF_QOS_ENA] = {
2670 .type = VCAP_FIELD_BIT,
2671 .offset = 5,
2672 .width = 1,
2673 },
2674 [VCAP_AF_QOS_VAL] = {
2675 .type = VCAP_FIELD_U32,
2676 .offset = 6,
2677 .width = 3,
2678 },
2679 [VCAP_AF_DP_ENA] = {
2680 .type = VCAP_FIELD_BIT,
2681 .offset = 9,
2682 .width = 1,
2683 },
2684 [VCAP_AF_DP_VAL] = {
2685 .type = VCAP_FIELD_U32,
2686 .offset = 10,
2687 .width = 2,
2688 },
2689 [VCAP_AF_MAP_LOOKUP_SEL] = {
2690 .type = VCAP_FIELD_U32,
2691 .offset = 12,
2692 .width = 2,
2693 },
2694 [VCAP_AF_MAP_KEY] = {
2695 .type = VCAP_FIELD_U32,
2696 .offset = 14,
2697 .width = 3,
2698 },
2699 [VCAP_AF_CLS_VID_SEL] = {
2700 .type = VCAP_FIELD_U32,
2701 .offset = 17,
2702 .width = 3,
2703 },
2704 [VCAP_AF_VID_VAL] = {
2705 .type = VCAP_FIELD_U32,
2706 .offset = 23,
2707 .width = 13,
2708 },
2709 [VCAP_AF_ISDX_ADD_REPLACE_SEL] = {
2710 .type = VCAP_FIELD_BIT,
2711 .offset = 46,
2712 .width = 1,
2713 },
2714 [VCAP_AF_ISDX_VAL] = {
2715 .type = VCAP_FIELD_U32,
2716 .offset = 47,
2717 .width = 12,
2718 },
2719 [VCAP_AF_NXT_IDX_CTRL] = {
2720 .type = VCAP_FIELD_U32,
2721 .offset = 90,
2722 .width = 3,
2723 },
2724 [VCAP_AF_NXT_IDX] = {
2725 .type = VCAP_FIELD_U32,
2726 .offset = 93,
2727 .width = 12,
2728 },
2729};
2730
2731static const struct vcap_field is2_base_type_actionfield[] = {
2732 [VCAP_AF_PIPELINE_FORCE_ENA] = {
2733 .type = VCAP_FIELD_BIT,
2734 .offset = 1,
2735 .width = 1,
2736 },
2737 [VCAP_AF_PIPELINE_PT] = {
2738 .type = VCAP_FIELD_U32,
2739 .offset = 2,
2740 .width = 5,
2741 },
2742 [VCAP_AF_HIT_ME_ONCE] = {
2743 .type = VCAP_FIELD_BIT,
2744 .offset = 7,
2745 .width = 1,
2746 },
2747 [VCAP_AF_INTR_ENA] = {
2748 .type = VCAP_FIELD_BIT,
2749 .offset = 8,
2750 .width = 1,
2751 },
2752 [VCAP_AF_CPU_COPY_ENA] = {
2753 .type = VCAP_FIELD_BIT,
2754 .offset = 9,
2755 .width = 1,
2756 },
2757 [VCAP_AF_CPU_QUEUE_NUM] = {
2758 .type = VCAP_FIELD_U32,
2759 .offset = 10,
2760 .width = 3,
2761 },
2762 [VCAP_AF_LRN_DIS] = {
2763 .type = VCAP_FIELD_BIT,
2764 .offset = 14,
2765 .width = 1,
2766 },
2767 [VCAP_AF_RT_DIS] = {
2768 .type = VCAP_FIELD_BIT,
2769 .offset = 15,
2770 .width = 1,
2771 },
2772 [VCAP_AF_POLICE_ENA] = {
2773 .type = VCAP_FIELD_BIT,
2774 .offset = 16,
2775 .width = 1,
2776 },
2777 [VCAP_AF_POLICE_IDX] = {
2778 .type = VCAP_FIELD_U32,
2779 .offset = 17,
2780 .width = 6,
2781 },
2782 [VCAP_AF_IGNORE_PIPELINE_CTRL] = {
2783 .type = VCAP_FIELD_BIT,
2784 .offset = 23,
2785 .width = 1,
2786 },
2787 [VCAP_AF_MASK_MODE] = {
2788 .type = VCAP_FIELD_U32,
2789 .offset = 27,
2790 .width = 3,
2791 },
2792 [VCAP_AF_PORT_MASK] = {
2793 .type = VCAP_FIELD_U72,
2794 .offset = 30,
2795 .width = 68,
2796 },
2797 [VCAP_AF_MIRROR_PROBE] = {
2798 .type = VCAP_FIELD_U32,
2799 .offset = 111,
2800 .width = 2,
2801 },
2802 [VCAP_AF_MATCH_ID] = {
2803 .type = VCAP_FIELD_U32,
2804 .offset = 159,
2805 .width = 16,
2806 },
2807 [VCAP_AF_MATCH_ID_MASK] = {
2808 .type = VCAP_FIELD_U32,
2809 .offset = 175,
2810 .width = 16,
2811 },
2812 [VCAP_AF_CNT_ID] = {
2813 .type = VCAP_FIELD_U32,
2814 .offset = 191,
2815 .width = 12,
2816 },
2817};
2818
2819static const struct vcap_field es0_es0_actionfield[] = {
2820 [VCAP_AF_PUSH_OUTER_TAG] = {
2821 .type = VCAP_FIELD_U32,
2822 .offset = 0,
2823 .width = 2,
2824 },
2825 [VCAP_AF_PUSH_INNER_TAG] = {
2826 .type = VCAP_FIELD_BIT,
2827 .offset = 2,
2828 .width = 1,
2829 },
2830 [VCAP_AF_TAG_A_TPID_SEL] = {
2831 .type = VCAP_FIELD_U32,
2832 .offset = 3,
2833 .width = 3,
2834 },
2835 [VCAP_AF_TAG_A_VID_SEL] = {
2836 .type = VCAP_FIELD_U32,
2837 .offset = 6,
2838 .width = 2,
2839 },
2840 [VCAP_AF_TAG_A_PCP_SEL] = {
2841 .type = VCAP_FIELD_U32,
2842 .offset = 8,
2843 .width = 3,
2844 },
2845 [VCAP_AF_TAG_A_DEI_SEL] = {
2846 .type = VCAP_FIELD_U32,
2847 .offset = 11,
2848 .width = 3,
2849 },
2850 [VCAP_AF_TAG_B_TPID_SEL] = {
2851 .type = VCAP_FIELD_U32,
2852 .offset = 14,
2853 .width = 3,
2854 },
2855 [VCAP_AF_TAG_B_VID_SEL] = {
2856 .type = VCAP_FIELD_U32,
2857 .offset = 17,
2858 .width = 2,
2859 },
2860 [VCAP_AF_TAG_B_PCP_SEL] = {
2861 .type = VCAP_FIELD_U32,
2862 .offset = 19,
2863 .width = 3,
2864 },
2865 [VCAP_AF_TAG_B_DEI_SEL] = {
2866 .type = VCAP_FIELD_U32,
2867 .offset = 22,
2868 .width = 3,
2869 },
2870 [VCAP_AF_TAG_C_TPID_SEL] = {
2871 .type = VCAP_FIELD_U32,
2872 .offset = 25,
2873 .width = 3,
2874 },
2875 [VCAP_AF_TAG_C_PCP_SEL] = {
2876 .type = VCAP_FIELD_U32,
2877 .offset = 28,
2878 .width = 3,
2879 },
2880 [VCAP_AF_TAG_C_DEI_SEL] = {
2881 .type = VCAP_FIELD_U32,
2882 .offset = 31,
2883 .width = 3,
2884 },
2885 [VCAP_AF_VID_A_VAL] = {
2886 .type = VCAP_FIELD_U32,
2887 .offset = 34,
2888 .width = 12,
2889 },
2890 [VCAP_AF_PCP_A_VAL] = {
2891 .type = VCAP_FIELD_U32,
2892 .offset = 46,
2893 .width = 3,
2894 },
2895 [VCAP_AF_DEI_A_VAL] = {
2896 .type = VCAP_FIELD_BIT,
2897 .offset = 49,
2898 .width = 1,
2899 },
2900 [VCAP_AF_VID_B_VAL] = {
2901 .type = VCAP_FIELD_U32,
2902 .offset = 50,
2903 .width = 12,
2904 },
2905 [VCAP_AF_PCP_B_VAL] = {
2906 .type = VCAP_FIELD_U32,
2907 .offset = 62,
2908 .width = 3,
2909 },
2910 [VCAP_AF_DEI_B_VAL] = {
2911 .type = VCAP_FIELD_BIT,
2912 .offset = 65,
2913 .width = 1,
2914 },
2915 [VCAP_AF_VID_C_VAL] = {
2916 .type = VCAP_FIELD_U32,
2917 .offset = 66,
2918 .width = 12,
2919 },
2920 [VCAP_AF_PCP_C_VAL] = {
2921 .type = VCAP_FIELD_U32,
2922 .offset = 78,
2923 .width = 3,
2924 },
2925 [VCAP_AF_DEI_C_VAL] = {
2926 .type = VCAP_FIELD_BIT,
2927 .offset = 81,
2928 .width = 1,
2929 },
2930 [VCAP_AF_POP_VAL] = {
2931 .type = VCAP_FIELD_U32,
2932 .offset = 82,
2933 .width = 2,
2934 },
2935 [VCAP_AF_UNTAG_VID_ENA] = {
2936 .type = VCAP_FIELD_BIT,
2937 .offset = 84,
2938 .width = 1,
2939 },
2940 [VCAP_AF_PUSH_CUSTOMER_TAG] = {
2941 .type = VCAP_FIELD_U32,
2942 .offset = 85,
2943 .width = 2,
2944 },
2945 [VCAP_AF_TAG_C_VID_SEL] = {
2946 .type = VCAP_FIELD_U32,
2947 .offset = 87,
2948 .width = 2,
2949 },
2950 [VCAP_AF_DSCP_SEL] = {
2951 .type = VCAP_FIELD_U32,
2952 .offset = 127,
2953 .width = 3,
2954 },
2955 [VCAP_AF_DSCP_VAL] = {
2956 .type = VCAP_FIELD_U32,
2957 .offset = 130,
2958 .width = 6,
2959 },
2960 [VCAP_AF_ESDX] = {
2961 .type = VCAP_FIELD_U32,
2962 .offset = 323,
2963 .width = 13,
2964 },
2965 [VCAP_AF_FWD_SEL] = {
2966 .type = VCAP_FIELD_U32,
2967 .offset = 459,
2968 .width = 2,
2969 },
2970 [VCAP_AF_CPU_QU] = {
2971 .type = VCAP_FIELD_U32,
2972 .offset = 461,
2973 .width = 3,
2974 },
2975 [VCAP_AF_PIPELINE_PT] = {
2976 .type = VCAP_FIELD_U32,
2977 .offset = 464,
2978 .width = 2,
2979 },
2980 [VCAP_AF_PIPELINE_ACT] = {
2981 .type = VCAP_FIELD_BIT,
2982 .offset = 466,
2983 .width = 1,
2984 },
2985 [VCAP_AF_SWAP_MACS_ENA] = {
2986 .type = VCAP_FIELD_BIT,
2987 .offset = 475,
2988 .width = 1,
2989 },
2990 [VCAP_AF_LOOP_ENA] = {
2991 .type = VCAP_FIELD_BIT,
2992 .offset = 476,
2993 .width = 1,
2994 },
2995};
2996
2997static const struct vcap_field es2_base_type_actionfield[] = {
2998 [VCAP_AF_HIT_ME_ONCE] = {
2999 .type = VCAP_FIELD_BIT,
3000 .offset = 0,
3001 .width = 1,
3002 },
3003 [VCAP_AF_INTR_ENA] = {
3004 .type = VCAP_FIELD_BIT,
3005 .offset = 1,
3006 .width = 1,
3007 },
3008 [VCAP_AF_FWD_MODE] = {
3009 .type = VCAP_FIELD_U32,
3010 .offset = 2,
3011 .width = 2,
3012 },
3013 [VCAP_AF_COPY_QUEUE_NUM] = {
3014 .type = VCAP_FIELD_U32,
3015 .offset = 4,
3016 .width = 16,
3017 },
3018 [VCAP_AF_COPY_PORT_NUM] = {
3019 .type = VCAP_FIELD_U32,
3020 .offset = 20,
3021 .width = 7,
3022 },
3023 [VCAP_AF_MIRROR_PROBE_ID] = {
3024 .type = VCAP_FIELD_U32,
3025 .offset = 27,
3026 .width = 2,
3027 },
3028 [VCAP_AF_CPU_COPY_ENA] = {
3029 .type = VCAP_FIELD_BIT,
3030 .offset = 29,
3031 .width = 1,
3032 },
3033 [VCAP_AF_CPU_QUEUE_NUM] = {
3034 .type = VCAP_FIELD_U32,
3035 .offset = 30,
3036 .width = 3,
3037 },
3038 [VCAP_AF_POLICE_ENA] = {
3039 .type = VCAP_FIELD_BIT,
3040 .offset = 33,
3041 .width = 1,
3042 },
3043 [VCAP_AF_POLICE_REMARK] = {
3044 .type = VCAP_FIELD_BIT,
3045 .offset = 34,
3046 .width = 1,
3047 },
3048 [VCAP_AF_POLICE_IDX] = {
3049 .type = VCAP_FIELD_U32,
3050 .offset = 35,
3051 .width = 6,
3052 },
3053 [VCAP_AF_ES2_REW_CMD] = {
3054 .type = VCAP_FIELD_U32,
3055 .offset = 41,
3056 .width = 3,
3057 },
3058 [VCAP_AF_CNT_ID] = {
3059 .type = VCAP_FIELD_U32,
3060 .offset = 44,
3061 .width = 11,
3062 },
3063 [VCAP_AF_IGNORE_PIPELINE_CTRL] = {
3064 .type = VCAP_FIELD_BIT,
3065 .offset = 55,
3066 .width = 1,
3067 },
3068};
3069
3070/* actionfield_set */
3071static const struct vcap_set is0_actionfield_set[] = {
3072 [VCAP_AFS_CLASSIFICATION] = {
3073 .type_id = 1,
3074 .sw_per_item = 2,
3075 .sw_cnt = 6,
3076 },
3077 [VCAP_AFS_FULL] = {
3078 .type_id = -1,
3079 .sw_per_item = 3,
3080 .sw_cnt = 4,
3081 },
3082 [VCAP_AFS_CLASS_REDUCED] = {
3083 .type_id = 1,
3084 .sw_per_item = 1,
3085 .sw_cnt = 12,
3086 },
3087};
3088
3089static const struct vcap_set is2_actionfield_set[] = {
3090 [VCAP_AFS_BASE_TYPE] = {
3091 .type_id = -1,
3092 .sw_per_item = 3,
3093 .sw_cnt = 4,
3094 },
3095};
3096
3097static const struct vcap_set es0_actionfield_set[] = {
3098 [VCAP_AFS_ES0] = {
3099 .type_id = -1,
3100 .sw_per_item = 1,
3101 .sw_cnt = 1,
3102 },
3103};
3104
3105static const struct vcap_set es2_actionfield_set[] = {
3106 [VCAP_AFS_BASE_TYPE] = {
3107 .type_id = -1,
3108 .sw_per_item = 3,
3109 .sw_cnt = 4,
3110 },
3111};
3112
3113/* actionfield_set map */
3114static const struct vcap_field *is0_actionfield_set_map[] = {
3115 [VCAP_AFS_CLASSIFICATION] = is0_classification_actionfield,
3116 [VCAP_AFS_FULL] = is0_full_actionfield,
3117 [VCAP_AFS_CLASS_REDUCED] = is0_class_reduced_actionfield,
3118};
3119
3120static const struct vcap_field *is2_actionfield_set_map[] = {
3121 [VCAP_AFS_BASE_TYPE] = is2_base_type_actionfield,
3122};
3123
3124static const struct vcap_field *es0_actionfield_set_map[] = {
3125 [VCAP_AFS_ES0] = es0_es0_actionfield,
3126};
3127
3128static const struct vcap_field *es2_actionfield_set_map[] = {
3129 [VCAP_AFS_BASE_TYPE] = es2_base_type_actionfield,
3130};
3131
3132/* actionfield_set map size */
3133static int is0_actionfield_set_map_size[] = {
3134 [VCAP_AFS_CLASSIFICATION] = ARRAY_SIZE(is0_classification_actionfield),
3135 [VCAP_AFS_FULL] = ARRAY_SIZE(is0_full_actionfield),
3136 [VCAP_AFS_CLASS_REDUCED] = ARRAY_SIZE(is0_class_reduced_actionfield),
3137};
3138
3139static int is2_actionfield_set_map_size[] = {
3140 [VCAP_AFS_BASE_TYPE] = ARRAY_SIZE(is2_base_type_actionfield),
3141};
3142
3143static int es0_actionfield_set_map_size[] = {
3144 [VCAP_AFS_ES0] = ARRAY_SIZE(es0_es0_actionfield),
3145};
3146
3147static int es2_actionfield_set_map_size[] = {
3148 [VCAP_AFS_BASE_TYPE] = ARRAY_SIZE(es2_base_type_actionfield),
3149};
3150
3151/* Type Groups */
3152static const struct vcap_typegroup is0_x12_keyfield_set_typegroups[] = {
3153 {
3154 .offset = 0,
3155 .width = 5,
3156 .value = 16,
3157 },
3158 {
3159 .offset = 52,
3160 .width = 1,
3161 .value = 0,
3162 },
3163 {
3164 .offset = 104,
3165 .width = 2,
3166 .value = 0,
3167 },
3168 {
3169 .offset = 156,
3170 .width = 3,
3171 .value = 0,
3172 },
3173 {
3174 .offset = 208,
3175 .width = 2,
3176 .value = 0,
3177 },
3178 {
3179 .offset = 260,
3180 .width = 1,
3181 .value = 0,
3182 },
3183 {
3184 .offset = 312,
3185 .width = 4,
3186 .value = 0,
3187 },
3188 {
3189 .offset = 364,
3190 .width = 1,
3191 .value = 0,
3192 },
3193 {
3194 .offset = 416,
3195 .width = 2,
3196 .value = 0,
3197 },
3198 {
3199 .offset = 468,
3200 .width = 3,
3201 .value = 0,
3202 },
3203 {
3204 .offset = 520,
3205 .width = 2,
3206 .value = 0,
3207 },
3208 {
3209 .offset = 572,
3210 .width = 1,
3211 .value = 0,
3212 },
3213 {}
3214};
3215
3216static const struct vcap_typegroup is0_x6_keyfield_set_typegroups[] = {
3217 {
3218 .offset = 0,
3219 .width = 4,
3220 .value = 8,
3221 },
3222 {
3223 .offset = 52,
3224 .width = 1,
3225 .value = 0,
3226 },
3227 {
3228 .offset = 104,
3229 .width = 2,
3230 .value = 0,
3231 },
3232 {
3233 .offset = 156,
3234 .width = 3,
3235 .value = 0,
3236 },
3237 {
3238 .offset = 208,
3239 .width = 2,
3240 .value = 0,
3241 },
3242 {
3243 .offset = 260,
3244 .width = 1,
3245 .value = 0,
3246 },
3247 {}
3248};
3249
3250static const struct vcap_typegroup is0_x3_keyfield_set_typegroups[] = {
3251 {
3252 .offset = 0,
3253 .width = 3,
3254 .value = 4,
3255 },
3256 {
3257 .offset = 52,
3258 .width = 2,
3259 .value = 0,
3260 },
3261 {
3262 .offset = 104,
3263 .width = 2,
3264 .value = 0,
3265 },
3266 {}
3267};
3268
3269static const struct vcap_typegroup is0_x2_keyfield_set_typegroups[] = {
3270 {
3271 .offset = 0,
3272 .width = 2,
3273 .value = 2,
3274 },
3275 {
3276 .offset = 52,
3277 .width = 1,
3278 .value = 0,
3279 },
3280 {}
3281};
3282
3283static const struct vcap_typegroup is0_x1_keyfield_set_typegroups[] = {
3284 {}
3285};
3286
3287static const struct vcap_typegroup is2_x12_keyfield_set_typegroups[] = {
3288 {
3289 .offset = 0,
3290 .width = 3,
3291 .value = 4,
3292 },
3293 {
3294 .offset = 156,
3295 .width = 1,
3296 .value = 0,
3297 },
3298 {
3299 .offset = 312,
3300 .width = 2,
3301 .value = 0,
3302 },
3303 {
3304 .offset = 468,
3305 .width = 1,
3306 .value = 0,
3307 },
3308 {}
3309};
3310
3311static const struct vcap_typegroup is2_x6_keyfield_set_typegroups[] = {
3312 {
3313 .offset = 0,
3314 .width = 2,
3315 .value = 2,
3316 },
3317 {
3318 .offset = 156,
3319 .width = 1,
3320 .value = 0,
3321 },
3322 {}
3323};
3324
3325static const struct vcap_typegroup is2_x3_keyfield_set_typegroups[] = {
3326 {}
3327};
3328
3329static const struct vcap_typegroup is2_x1_keyfield_set_typegroups[] = {
3330 {}
3331};
3332
3333static const struct vcap_typegroup es0_x1_keyfield_set_typegroups[] = {
3334 {}
3335};
3336
3337static const struct vcap_typegroup es2_x12_keyfield_set_typegroups[] = {
3338 {
3339 .offset = 0,
3340 .width = 3,
3341 .value = 4,
3342 },
3343 {
3344 .offset = 156,
3345 .width = 1,
3346 .value = 0,
3347 },
3348 {
3349 .offset = 312,
3350 .width = 2,
3351 .value = 0,
3352 },
3353 {
3354 .offset = 468,
3355 .width = 1,
3356 .value = 0,
3357 },
3358 {}
3359};
3360
3361static const struct vcap_typegroup es2_x6_keyfield_set_typegroups[] = {
3362 {
3363 .offset = 0,
3364 .width = 2,
3365 .value = 2,
3366 },
3367 {
3368 .offset = 156,
3369 .width = 1,
3370 .value = 0,
3371 },
3372 {}
3373};
3374
3375static const struct vcap_typegroup es2_x3_keyfield_set_typegroups[] = {
3376 {
3377 .offset = 0,
3378 .width = 1,
3379 .value = 1,
3380 },
3381 {}
3382};
3383
3384static const struct vcap_typegroup es2_x1_keyfield_set_typegroups[] = {
3385 {}
3386};
3387
3388static const struct vcap_typegroup *is0_keyfield_set_typegroups[] = {
3389 [12] = is0_x12_keyfield_set_typegroups,
3390 [6] = is0_x6_keyfield_set_typegroups,
3391 [3] = is0_x3_keyfield_set_typegroups,
3392 [2] = is0_x2_keyfield_set_typegroups,
3393 [1] = is0_x1_keyfield_set_typegroups,
3394 [13] = NULL,
3395};
3396
3397static const struct vcap_typegroup *is2_keyfield_set_typegroups[] = {
3398 [12] = is2_x12_keyfield_set_typegroups,
3399 [6] = is2_x6_keyfield_set_typegroups,
3400 [3] = is2_x3_keyfield_set_typegroups,
3401 [1] = is2_x1_keyfield_set_typegroups,
3402 [13] = NULL,
3403};
3404
3405static const struct vcap_typegroup *es0_keyfield_set_typegroups[] = {
3406 [1] = es0_x1_keyfield_set_typegroups,
3407 [2] = NULL,
3408};
3409
3410static const struct vcap_typegroup *es2_keyfield_set_typegroups[] = {
3411 [12] = es2_x12_keyfield_set_typegroups,
3412 [6] = es2_x6_keyfield_set_typegroups,
3413 [3] = es2_x3_keyfield_set_typegroups,
3414 [1] = es2_x1_keyfield_set_typegroups,
3415 [13] = NULL,
3416};
3417
3418static const struct vcap_typegroup is0_x3_actionfield_set_typegroups[] = {
3419 {
3420 .offset = 0,
3421 .width = 3,
3422 .value = 4,
3423 },
3424 {
3425 .offset = 110,
3426 .width = 2,
3427 .value = 0,
3428 },
3429 {
3430 .offset = 220,
3431 .width = 2,
3432 .value = 0,
3433 },
3434 {}
3435};
3436
3437static const struct vcap_typegroup is0_x2_actionfield_set_typegroups[] = {
3438 {
3439 .offset = 0,
3440 .width = 2,
3441 .value = 2,
3442 },
3443 {
3444 .offset = 110,
3445 .width = 1,
3446 .value = 0,
3447 },
3448 {}
3449};
3450
3451static const struct vcap_typegroup is0_x1_actionfield_set_typegroups[] = {
3452 {
3453 .offset = 0,
3454 .width = 1,
3455 .value = 1,
3456 },
3457 {}
3458};
3459
3460static const struct vcap_typegroup is2_x3_actionfield_set_typegroups[] = {
3461 {
3462 .offset = 0,
3463 .width = 2,
3464 .value = 2,
3465 },
3466 {
3467 .offset = 110,
3468 .width = 1,
3469 .value = 0,
3470 },
3471 {
3472 .offset = 220,
3473 .width = 1,
3474 .value = 0,
3475 },
3476 {}
3477};
3478
3479static const struct vcap_typegroup is2_x1_actionfield_set_typegroups[] = {
3480 {}
3481};
3482
3483static const struct vcap_typegroup es0_x1_actionfield_set_typegroups[] = {
3484 {}
3485};
3486
3487static const struct vcap_typegroup es2_x3_actionfield_set_typegroups[] = {
3488 {
3489 .offset = 0,
3490 .width = 2,
3491 .value = 2,
3492 },
3493 {
3494 .offset = 21,
3495 .width = 1,
3496 .value = 0,
3497 },
3498 {
3499 .offset = 42,
3500 .width = 1,
3501 .value = 0,
3502 },
3503 {}
3504};
3505
3506static const struct vcap_typegroup es2_x1_actionfield_set_typegroups[] = {
3507 {}
3508};
3509
3510static const struct vcap_typegroup *is0_actionfield_set_typegroups[] = {
3511 [3] = is0_x3_actionfield_set_typegroups,
3512 [2] = is0_x2_actionfield_set_typegroups,
3513 [1] = is0_x1_actionfield_set_typegroups,
3514 [13] = NULL,
3515};
3516
3517static const struct vcap_typegroup *is2_actionfield_set_typegroups[] = {
3518 [3] = is2_x3_actionfield_set_typegroups,
3519 [1] = is2_x1_actionfield_set_typegroups,
3520 [13] = NULL,
3521};
3522
3523static const struct vcap_typegroup *es0_actionfield_set_typegroups[] = {
3524 [1] = es0_x1_actionfield_set_typegroups,
3525 [2] = NULL,
3526};
3527
3528static const struct vcap_typegroup *es2_actionfield_set_typegroups[] = {
3529 [3] = es2_x3_actionfield_set_typegroups,
3530 [1] = es2_x1_actionfield_set_typegroups,
3531 [13] = NULL,
3532};
3533
3534/* Keyfieldset names */
3535static const char * const vcap_keyfield_set_names[] = {
3536 [VCAP_KFS_NO_VALUE] = "(None)",
3537 [VCAP_KFS_ARP] = "VCAP_KFS_ARP",
3538 [VCAP_KFS_ETAG] = "VCAP_KFS_ETAG",
3539 [VCAP_KFS_IP4_OTHER] = "VCAP_KFS_IP4_OTHER",
3540 [VCAP_KFS_IP4_TCP_UDP] = "VCAP_KFS_IP4_TCP_UDP",
3541 [VCAP_KFS_IP4_VID] = "VCAP_KFS_IP4_VID",
3542 [VCAP_KFS_IP6_OTHER] = "VCAP_KFS_IP6_OTHER",
3543 [VCAP_KFS_IP6_STD] = "VCAP_KFS_IP6_STD",
3544 [VCAP_KFS_IP6_TCP_UDP] = "VCAP_KFS_IP6_TCP_UDP",
3545 [VCAP_KFS_IP6_VID] = "VCAP_KFS_IP6_VID",
3546 [VCAP_KFS_IP_7TUPLE] = "VCAP_KFS_IP_7TUPLE",
3547 [VCAP_KFS_ISDX] = "VCAP_KFS_ISDX",
3548 [VCAP_KFS_LL_FULL] = "VCAP_KFS_LL_FULL",
3549 [VCAP_KFS_MAC_ETYPE] = "VCAP_KFS_MAC_ETYPE",
3550 [VCAP_KFS_MAC_LLC] = "VCAP_KFS_MAC_LLC",
3551 [VCAP_KFS_MAC_SNAP] = "VCAP_KFS_MAC_SNAP",
3552 [VCAP_KFS_NORMAL_5TUPLE_IP4] = "VCAP_KFS_NORMAL_5TUPLE_IP4",
3553 [VCAP_KFS_NORMAL_7TUPLE] = "VCAP_KFS_NORMAL_7TUPLE",
3554 [VCAP_KFS_OAM] = "VCAP_KFS_OAM",
3555 [VCAP_KFS_PURE_5TUPLE_IP4] = "VCAP_KFS_PURE_5TUPLE_IP4",
3556 [VCAP_KFS_SMAC_SIP4] = "VCAP_KFS_SMAC_SIP4",
3557 [VCAP_KFS_SMAC_SIP6] = "VCAP_KFS_SMAC_SIP6",
3558};
3559
3560/* Actionfieldset names */
3561static const char * const vcap_actionfield_set_names[] = {
3562 [VCAP_AFS_NO_VALUE] = "(None)",
3563 [VCAP_AFS_BASE_TYPE] = "VCAP_AFS_BASE_TYPE",
3564 [VCAP_AFS_CLASSIFICATION] = "VCAP_AFS_CLASSIFICATION",
3565 [VCAP_AFS_CLASS_REDUCED] = "VCAP_AFS_CLASS_REDUCED",
3566 [VCAP_AFS_ES0] = "VCAP_AFS_ES0",
3567 [VCAP_AFS_FULL] = "VCAP_AFS_FULL",
3568 [VCAP_AFS_SMAC_SIP] = "VCAP_AFS_SMAC_SIP",
3569};
3570
3571/* Keyfield names */
3572static const char * const vcap_keyfield_names[] = {
3573 [VCAP_KF_NO_VALUE] = "(None)",
3574 [VCAP_KF_8021BR_ECID_BASE] = "8021BR_ECID_BASE",
3575 [VCAP_KF_8021BR_ECID_EXT] = "8021BR_ECID_EXT",
3576 [VCAP_KF_8021BR_E_TAGGED] = "8021BR_E_TAGGED",
3577 [VCAP_KF_8021BR_GRP] = "8021BR_GRP",
3578 [VCAP_KF_8021BR_IGR_ECID_BASE] = "8021BR_IGR_ECID_BASE",
3579 [VCAP_KF_8021BR_IGR_ECID_EXT] = "8021BR_IGR_ECID_EXT",
3580 [VCAP_KF_8021Q_DEI0] = "8021Q_DEI0",
3581 [VCAP_KF_8021Q_DEI1] = "8021Q_DEI1",
3582 [VCAP_KF_8021Q_DEI2] = "8021Q_DEI2",
3583 [VCAP_KF_8021Q_DEI_CLS] = "8021Q_DEI_CLS",
3584 [VCAP_KF_8021Q_PCP0] = "8021Q_PCP0",
3585 [VCAP_KF_8021Q_PCP1] = "8021Q_PCP1",
3586 [VCAP_KF_8021Q_PCP2] = "8021Q_PCP2",
3587 [VCAP_KF_8021Q_PCP_CLS] = "8021Q_PCP_CLS",
3588 [VCAP_KF_8021Q_TPID] = "8021Q_TPID",
3589 [VCAP_KF_8021Q_TPID0] = "8021Q_TPID0",
3590 [VCAP_KF_8021Q_TPID1] = "8021Q_TPID1",
3591 [VCAP_KF_8021Q_TPID2] = "8021Q_TPID2",
3592 [VCAP_KF_8021Q_VID0] = "8021Q_VID0",
3593 [VCAP_KF_8021Q_VID1] = "8021Q_VID1",
3594 [VCAP_KF_8021Q_VID2] = "8021Q_VID2",
3595 [VCAP_KF_8021Q_VID_CLS] = "8021Q_VID_CLS",
3596 [VCAP_KF_8021Q_VLAN_TAGGED_IS] = "8021Q_VLAN_TAGGED_IS",
3597 [VCAP_KF_8021Q_VLAN_TAGS] = "8021Q_VLAN_TAGS",
3598 [VCAP_KF_ACL_GRP_ID] = "ACL_GRP_ID",
3599 [VCAP_KF_ARP_ADDR_SPACE_OK_IS] = "ARP_ADDR_SPACE_OK_IS",
3600 [VCAP_KF_ARP_LEN_OK_IS] = "ARP_LEN_OK_IS",
3601 [VCAP_KF_ARP_OPCODE] = "ARP_OPCODE",
3602 [VCAP_KF_ARP_OPCODE_UNKNOWN_IS] = "ARP_OPCODE_UNKNOWN_IS",
3603 [VCAP_KF_ARP_PROTO_SPACE_OK_IS] = "ARP_PROTO_SPACE_OK_IS",
3604 [VCAP_KF_ARP_SENDER_MATCH_IS] = "ARP_SENDER_MATCH_IS",
3605 [VCAP_KF_ARP_TGT_MATCH_IS] = "ARP_TGT_MATCH_IS",
3606 [VCAP_KF_COSID_CLS] = "COSID_CLS",
3607 [VCAP_KF_ES0_ISDX_KEY_ENA] = "ES0_ISDX_KEY_ENA",
3608 [VCAP_KF_ETYPE] = "ETYPE",
3609 [VCAP_KF_ETYPE_LEN_IS] = "ETYPE_LEN_IS",
3610 [VCAP_KF_HOST_MATCH] = "HOST_MATCH",
3611 [VCAP_KF_IF_EGR_PORT_MASK] = "IF_EGR_PORT_MASK",
3612 [VCAP_KF_IF_EGR_PORT_MASK_RNG] = "IF_EGR_PORT_MASK_RNG",
3613 [VCAP_KF_IF_EGR_PORT_NO] = "IF_EGR_PORT_NO",
3614 [VCAP_KF_IF_IGR_PORT] = "IF_IGR_PORT",
3615 [VCAP_KF_IF_IGR_PORT_MASK] = "IF_IGR_PORT_MASK",
3616 [VCAP_KF_IF_IGR_PORT_MASK_L3] = "IF_IGR_PORT_MASK_L3",
3617 [VCAP_KF_IF_IGR_PORT_MASK_RNG] = "IF_IGR_PORT_MASK_RNG",
3618 [VCAP_KF_IF_IGR_PORT_MASK_SEL] = "IF_IGR_PORT_MASK_SEL",
3619 [VCAP_KF_IF_IGR_PORT_SEL] = "IF_IGR_PORT_SEL",
3620 [VCAP_KF_IP4_IS] = "IP4_IS",
3621 [VCAP_KF_IP_MC_IS] = "IP_MC_IS",
3622 [VCAP_KF_IP_PAYLOAD_5TUPLE] = "IP_PAYLOAD_5TUPLE",
3623 [VCAP_KF_IP_SNAP_IS] = "IP_SNAP_IS",
3624 [VCAP_KF_ISDX_CLS] = "ISDX_CLS",
3625 [VCAP_KF_ISDX_GT0_IS] = "ISDX_GT0_IS",
3626 [VCAP_KF_L2_BC_IS] = "L2_BC_IS",
3627 [VCAP_KF_L2_DMAC] = "L2_DMAC",
3628 [VCAP_KF_L2_FRM_TYPE] = "L2_FRM_TYPE",
3629 [VCAP_KF_L2_FWD_IS] = "L2_FWD_IS",
3630 [VCAP_KF_L2_LLC] = "L2_LLC",
3631 [VCAP_KF_L2_MC_IS] = "L2_MC_IS",
3632 [VCAP_KF_L2_PAYLOAD0] = "L2_PAYLOAD0",
3633 [VCAP_KF_L2_PAYLOAD1] = "L2_PAYLOAD1",
3634 [VCAP_KF_L2_PAYLOAD2] = "L2_PAYLOAD2",
3635 [VCAP_KF_L2_PAYLOAD_ETYPE] = "L2_PAYLOAD_ETYPE",
3636 [VCAP_KF_L2_SMAC] = "L2_SMAC",
3637 [VCAP_KF_L2_SNAP] = "L2_SNAP",
3638 [VCAP_KF_L3_DIP_EQ_SIP_IS] = "L3_DIP_EQ_SIP_IS",
3639 [VCAP_KF_L3_DPL_CLS] = "L3_DPL_CLS",
3640 [VCAP_KF_L3_DSCP] = "L3_DSCP",
3641 [VCAP_KF_L3_DST_IS] = "L3_DST_IS",
3642 [VCAP_KF_L3_FRAGMENT] = "L3_FRAGMENT",
3643 [VCAP_KF_L3_FRAGMENT_TYPE] = "L3_FRAGMENT_TYPE",
3644 [VCAP_KF_L3_FRAG_INVLD_L4_LEN] = "L3_FRAG_INVLD_L4_LEN",
3645 [VCAP_KF_L3_FRAG_OFS_GT0] = "L3_FRAG_OFS_GT0",
3646 [VCAP_KF_L3_IP4_DIP] = "L3_IP4_DIP",
3647 [VCAP_KF_L3_IP4_SIP] = "L3_IP4_SIP",
3648 [VCAP_KF_L3_IP6_DIP] = "L3_IP6_DIP",
3649 [VCAP_KF_L3_IP6_SIP] = "L3_IP6_SIP",
3650 [VCAP_KF_L3_IP_PROTO] = "L3_IP_PROTO",
3651 [VCAP_KF_L3_OPTIONS_IS] = "L3_OPTIONS_IS",
3652 [VCAP_KF_L3_PAYLOAD] = "L3_PAYLOAD",
3653 [VCAP_KF_L3_RT_IS] = "L3_RT_IS",
3654 [VCAP_KF_L3_TOS] = "L3_TOS",
3655 [VCAP_KF_L3_TTL_GT0] = "L3_TTL_GT0",
3656 [VCAP_KF_L4_1588_DOM] = "L4_1588_DOM",
3657 [VCAP_KF_L4_1588_VER] = "L4_1588_VER",
3658 [VCAP_KF_L4_ACK] = "L4_ACK",
3659 [VCAP_KF_L4_DPORT] = "L4_DPORT",
3660 [VCAP_KF_L4_FIN] = "L4_FIN",
3661 [VCAP_KF_L4_PAYLOAD] = "L4_PAYLOAD",
3662 [VCAP_KF_L4_PSH] = "L4_PSH",
3663 [VCAP_KF_L4_RNG] = "L4_RNG",
3664 [VCAP_KF_L4_RST] = "L4_RST",
3665 [VCAP_KF_L4_SEQUENCE_EQ0_IS] = "L4_SEQUENCE_EQ0_IS",
3666 [VCAP_KF_L4_SPORT] = "L4_SPORT",
3667 [VCAP_KF_L4_SPORT_EQ_DPORT_IS] = "L4_SPORT_EQ_DPORT_IS",
3668 [VCAP_KF_L4_SYN] = "L4_SYN",
3669 [VCAP_KF_L4_URG] = "L4_URG",
3670 [VCAP_KF_LOOKUP_FIRST_IS] = "LOOKUP_FIRST_IS",
3671 [VCAP_KF_LOOKUP_GEN_IDX] = "LOOKUP_GEN_IDX",
3672 [VCAP_KF_LOOKUP_GEN_IDX_SEL] = "LOOKUP_GEN_IDX_SEL",
3673 [VCAP_KF_LOOKUP_PAG] = "LOOKUP_PAG",
3674 [VCAP_KF_MIRROR_PROBE] = "MIRROR_PROBE",
3675 [VCAP_KF_OAM_CCM_CNTS_EQ0] = "OAM_CCM_CNTS_EQ0",
3676 [VCAP_KF_OAM_DETECTED] = "OAM_DETECTED",
3677 [VCAP_KF_OAM_FLAGS] = "OAM_FLAGS",
3678 [VCAP_KF_OAM_MEL_FLAGS] = "OAM_MEL_FLAGS",
3679 [VCAP_KF_OAM_MEPID] = "OAM_MEPID",
3680 [VCAP_KF_OAM_OPCODE] = "OAM_OPCODE",
3681 [VCAP_KF_OAM_VER] = "OAM_VER",
3682 [VCAP_KF_OAM_Y1731_IS] = "OAM_Y1731_IS",
3683 [VCAP_KF_PROT_ACTIVE] = "PROT_ACTIVE",
3684 [VCAP_KF_TCP_IS] = "TCP_IS",
3685 [VCAP_KF_TCP_UDP_IS] = "TCP_UDP_IS",
3686 [VCAP_KF_TYPE] = "TYPE",
3687};
3688
3689/* Actionfield names */
3690static const char * const vcap_actionfield_names[] = {
3691 [VCAP_AF_NO_VALUE] = "(None)",
3692 [VCAP_AF_ACL_ID] = "ACL_ID",
3693 [VCAP_AF_CLS_VID_SEL] = "CLS_VID_SEL",
3694 [VCAP_AF_CNT_ID] = "CNT_ID",
3695 [VCAP_AF_COPY_PORT_NUM] = "COPY_PORT_NUM",
3696 [VCAP_AF_COPY_QUEUE_NUM] = "COPY_QUEUE_NUM",
3697 [VCAP_AF_CPU_COPY_ENA] = "CPU_COPY_ENA",
3698 [VCAP_AF_CPU_QU] = "CPU_QU",
3699 [VCAP_AF_CPU_QUEUE_NUM] = "CPU_QUEUE_NUM",
3700 [VCAP_AF_DEI_A_VAL] = "DEI_A_VAL",
3701 [VCAP_AF_DEI_B_VAL] = "DEI_B_VAL",
3702 [VCAP_AF_DEI_C_VAL] = "DEI_C_VAL",
3703 [VCAP_AF_DEI_ENA] = "DEI_ENA",
3704 [VCAP_AF_DEI_VAL] = "DEI_VAL",
3705 [VCAP_AF_DP_ENA] = "DP_ENA",
3706 [VCAP_AF_DP_VAL] = "DP_VAL",
3707 [VCAP_AF_DSCP_ENA] = "DSCP_ENA",
3708 [VCAP_AF_DSCP_SEL] = "DSCP_SEL",
3709 [VCAP_AF_DSCP_VAL] = "DSCP_VAL",
3710 [VCAP_AF_ES2_REW_CMD] = "ES2_REW_CMD",
3711 [VCAP_AF_ESDX] = "ESDX",
3712 [VCAP_AF_FWD_KILL_ENA] = "FWD_KILL_ENA",
3713 [VCAP_AF_FWD_MODE] = "FWD_MODE",
3714 [VCAP_AF_FWD_SEL] = "FWD_SEL",
3715 [VCAP_AF_HIT_ME_ONCE] = "HIT_ME_ONCE",
3716 [VCAP_AF_HOST_MATCH] = "HOST_MATCH",
3717 [VCAP_AF_IGNORE_PIPELINE_CTRL] = "IGNORE_PIPELINE_CTRL",
3718 [VCAP_AF_INTR_ENA] = "INTR_ENA",
3719 [VCAP_AF_ISDX_ADD_REPLACE_SEL] = "ISDX_ADD_REPLACE_SEL",
3720 [VCAP_AF_ISDX_ENA] = "ISDX_ENA",
3721 [VCAP_AF_ISDX_VAL] = "ISDX_VAL",
3722 [VCAP_AF_LOOP_ENA] = "LOOP_ENA",
3723 [VCAP_AF_LRN_DIS] = "LRN_DIS",
3724 [VCAP_AF_MAP_IDX] = "MAP_IDX",
3725 [VCAP_AF_MAP_KEY] = "MAP_KEY",
3726 [VCAP_AF_MAP_LOOKUP_SEL] = "MAP_LOOKUP_SEL",
3727 [VCAP_AF_MASK_MODE] = "MASK_MODE",
3728 [VCAP_AF_MATCH_ID] = "MATCH_ID",
3729 [VCAP_AF_MATCH_ID_MASK] = "MATCH_ID_MASK",
3730 [VCAP_AF_MIRROR_ENA] = "MIRROR_ENA",
3731 [VCAP_AF_MIRROR_PROBE] = "MIRROR_PROBE",
3732 [VCAP_AF_MIRROR_PROBE_ID] = "MIRROR_PROBE_ID",
3733 [VCAP_AF_NXT_IDX] = "NXT_IDX",
3734 [VCAP_AF_NXT_IDX_CTRL] = "NXT_IDX_CTRL",
3735 [VCAP_AF_PAG_OVERRIDE_MASK] = "PAG_OVERRIDE_MASK",
3736 [VCAP_AF_PAG_VAL] = "PAG_VAL",
3737 [VCAP_AF_PCP_A_VAL] = "PCP_A_VAL",
3738 [VCAP_AF_PCP_B_VAL] = "PCP_B_VAL",
3739 [VCAP_AF_PCP_C_VAL] = "PCP_C_VAL",
3740 [VCAP_AF_PCP_ENA] = "PCP_ENA",
3741 [VCAP_AF_PCP_VAL] = "PCP_VAL",
3742 [VCAP_AF_PIPELINE_ACT] = "PIPELINE_ACT",
3743 [VCAP_AF_PIPELINE_FORCE_ENA] = "PIPELINE_FORCE_ENA",
3744 [VCAP_AF_PIPELINE_PT] = "PIPELINE_PT",
3745 [VCAP_AF_POLICE_ENA] = "POLICE_ENA",
3746 [VCAP_AF_POLICE_IDX] = "POLICE_IDX",
3747 [VCAP_AF_POLICE_REMARK] = "POLICE_REMARK",
3748 [VCAP_AF_POLICE_VCAP_ONLY] = "POLICE_VCAP_ONLY",
3749 [VCAP_AF_POP_VAL] = "POP_VAL",
3750 [VCAP_AF_PORT_MASK] = "PORT_MASK",
3751 [VCAP_AF_PUSH_CUSTOMER_TAG] = "PUSH_CUSTOMER_TAG",
3752 [VCAP_AF_PUSH_INNER_TAG] = "PUSH_INNER_TAG",
3753 [VCAP_AF_PUSH_OUTER_TAG] = "PUSH_OUTER_TAG",
3754 [VCAP_AF_QOS_ENA] = "QOS_ENA",
3755 [VCAP_AF_QOS_VAL] = "QOS_VAL",
3756 [VCAP_AF_REW_OP] = "REW_OP",
3757 [VCAP_AF_RT_DIS] = "RT_DIS",
3758 [VCAP_AF_SWAP_MACS_ENA] = "SWAP_MACS_ENA",
3759 [VCAP_AF_TAG_A_DEI_SEL] = "TAG_A_DEI_SEL",
3760 [VCAP_AF_TAG_A_PCP_SEL] = "TAG_A_PCP_SEL",
3761 [VCAP_AF_TAG_A_TPID_SEL] = "TAG_A_TPID_SEL",
3762 [VCAP_AF_TAG_A_VID_SEL] = "TAG_A_VID_SEL",
3763 [VCAP_AF_TAG_B_DEI_SEL] = "TAG_B_DEI_SEL",
3764 [VCAP_AF_TAG_B_PCP_SEL] = "TAG_B_PCP_SEL",
3765 [VCAP_AF_TAG_B_TPID_SEL] = "TAG_B_TPID_SEL",
3766 [VCAP_AF_TAG_B_VID_SEL] = "TAG_B_VID_SEL",
3767 [VCAP_AF_TAG_C_DEI_SEL] = "TAG_C_DEI_SEL",
3768 [VCAP_AF_TAG_C_PCP_SEL] = "TAG_C_PCP_SEL",
3769 [VCAP_AF_TAG_C_TPID_SEL] = "TAG_C_TPID_SEL",
3770 [VCAP_AF_TAG_C_VID_SEL] = "TAG_C_VID_SEL",
3771 [VCAP_AF_TYPE] = "TYPE",
3772 [VCAP_AF_UNTAG_VID_ENA] = "UNTAG_VID_ENA",
3773 [VCAP_AF_VID_A_VAL] = "VID_A_VAL",
3774 [VCAP_AF_VID_B_VAL] = "VID_B_VAL",
3775 [VCAP_AF_VID_C_VAL] = "VID_C_VAL",
3776 [VCAP_AF_VID_VAL] = "VID_VAL",
3777};
3778
3779/* VCAPs */
3780const struct vcap_info sparx5_vcaps[] = {
3781 [VCAP_TYPE_IS0] = {
3782 .name = "is0",
3783 .rows = 1024,
3784 .sw_count = 12,
3785 .sw_width = 52,
3786 .sticky_width = 1,
3787 .act_width = 110,
3788 .default_cnt = 140,
3789 .require_cnt_dis = 0,
3790 .version = 1,
3791 .keyfield_set = is0_keyfield_set,
3792 .keyfield_set_size = ARRAY_SIZE(is0_keyfield_set),
3793 .actionfield_set = is0_actionfield_set,
3794 .actionfield_set_size = ARRAY_SIZE(is0_actionfield_set),
3795 .keyfield_set_map = is0_keyfield_set_map,
3796 .keyfield_set_map_size = is0_keyfield_set_map_size,
3797 .actionfield_set_map = is0_actionfield_set_map,
3798 .actionfield_set_map_size = is0_actionfield_set_map_size,
3799 .keyfield_set_typegroups = is0_keyfield_set_typegroups,
3800 .actionfield_set_typegroups = is0_actionfield_set_typegroups,
3801 },
3802 [VCAP_TYPE_IS2] = {
3803 .name = "is2",
3804 .rows = 256,
3805 .sw_count = 12,
3806 .sw_width = 52,
3807 .sticky_width = 1,
3808 .act_width = 110,
3809 .default_cnt = 73,
3810 .require_cnt_dis = 0,
3811 .version = 1,
3812 .keyfield_set = is2_keyfield_set,
3813 .keyfield_set_size = ARRAY_SIZE(is2_keyfield_set),
3814 .actionfield_set = is2_actionfield_set,
3815 .actionfield_set_size = ARRAY_SIZE(is2_actionfield_set),
3816 .keyfield_set_map = is2_keyfield_set_map,
3817 .keyfield_set_map_size = is2_keyfield_set_map_size,
3818 .actionfield_set_map = is2_actionfield_set_map,
3819 .actionfield_set_map_size = is2_actionfield_set_map_size,
3820 .keyfield_set_typegroups = is2_keyfield_set_typegroups,
3821 .actionfield_set_typegroups = is2_actionfield_set_typegroups,
3822 },
3823 [VCAP_TYPE_ES0] = {
3824 .name = "es0",
3825 .rows = 4096,
3826 .sw_count = 1,
3827 .sw_width = 52,
3828 .sticky_width = 1,
3829 .act_width = 489,
3830 .default_cnt = 70,
3831 .require_cnt_dis = 0,
3832 .version = 1,
3833 .keyfield_set = es0_keyfield_set,
3834 .keyfield_set_size = ARRAY_SIZE(es0_keyfield_set),
3835 .actionfield_set = es0_actionfield_set,
3836 .actionfield_set_size = ARRAY_SIZE(es0_actionfield_set),
3837 .keyfield_set_map = es0_keyfield_set_map,
3838 .keyfield_set_map_size = es0_keyfield_set_map_size,
3839 .actionfield_set_map = es0_actionfield_set_map,
3840 .actionfield_set_map_size = es0_actionfield_set_map_size,
3841 .keyfield_set_typegroups = es0_keyfield_set_typegroups,
3842 .actionfield_set_typegroups = es0_actionfield_set_typegroups,
3843 },
3844 [VCAP_TYPE_ES2] = {
3845 .name = "es2",
3846 .rows = 1024,
3847 .sw_count = 12,
3848 .sw_width = 52,
3849 .sticky_width = 1,
3850 .act_width = 21,
3851 .default_cnt = 74,
3852 .require_cnt_dis = 0,
3853 .version = 1,
3854 .keyfield_set = es2_keyfield_set,
3855 .keyfield_set_size = ARRAY_SIZE(es2_keyfield_set),
3856 .actionfield_set = es2_actionfield_set,
3857 .actionfield_set_size = ARRAY_SIZE(es2_actionfield_set),
3858 .keyfield_set_map = es2_keyfield_set_map,
3859 .keyfield_set_map_size = es2_keyfield_set_map_size,
3860 .actionfield_set_map = es2_actionfield_set_map,
3861 .actionfield_set_map_size = es2_actionfield_set_map_size,
3862 .keyfield_set_typegroups = es2_keyfield_set_typegroups,
3863 .actionfield_set_typegroups = es2_actionfield_set_typegroups,
3864 },
3865};
3866
3867const struct vcap_statistics sparx5_vcap_stats = {
3868 .name = "sparx5",
3869 .count = 4,
3870 .keyfield_set_names = vcap_keyfield_set_names,
3871 .actionfield_set_names = vcap_actionfield_set_names,
3872 .keyfield_names = vcap_keyfield_names,
3873 .actionfield_names = vcap_actionfield_names,
3874};
3875

source code of linux/drivers/net/ethernet/microchip/sparx5/sparx5_vcap_ag_api.c