Linux Audio

Check our new training course

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