brintos

brintos / linux-shallow public Read only

0
0
Text · 69.8 KiB · fb6851b Raw
3271 lines · c
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};3271