Linux Audio

Check our new training course

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