Linux Audio

Check our new training course

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