Linux Audio

Check our new training course

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