brintos

brintos / linux-shallow public Read only

0
0
Text · 14.9 KiB · 6c3aca6 Raw
649 lines · c
1/* SPDX-License-Identifier: GPL-2.0 */2/* Marvell RVU Admin Function driver3 *4 * Copyright (C) 2018 Marvell.5 *6 */7 8#ifndef NPC_H9#define NPC_H10 11#define NPC_KEX_CHAN_MASK	0xFFFULL12 13#define SET_KEX_LD(intf, lid, ltype, ld, cfg)	\14	rvu_write64(rvu, blkaddr,	\15		    NPC_AF_INTFX_LIDX_LTX_LDX_CFG(intf, lid, ltype, ld), cfg)16 17#define SET_KEX_LDFLAGS(intf, ld, flags, cfg)	\18	rvu_write64(rvu, blkaddr,	\19		    NPC_AF_INTFX_LDATAX_FLAGSX_CFG(intf, ld, flags), cfg)20 21enum NPC_LID_E {22	NPC_LID_LA = 0,23	NPC_LID_LB,24	NPC_LID_LC,25	NPC_LID_LD,26	NPC_LID_LE,27	NPC_LID_LF,28	NPC_LID_LG,29	NPC_LID_LH,30};31 32#define NPC_LT_NA 033 34enum npc_kpu_la_ltype {35	NPC_LT_LA_8023 = 1,36	NPC_LT_LA_ETHER,37	NPC_LT_LA_IH_NIX_ETHER,38	NPC_LT_LA_HIGIG2_ETHER = 7,39	NPC_LT_LA_IH_NIX_HIGIG2_ETHER,40	NPC_LT_LA_CUSTOM_L2_90B_ETHER,41	NPC_LT_LA_CPT_HDR,42	NPC_LT_LA_CUSTOM_L2_24B_ETHER,43	NPC_LT_LA_CUSTOM_PRE_L2_ETHER,44	NPC_LT_LA_CUSTOM0 = 0xE,45	NPC_LT_LA_CUSTOM1 = 0xF,46};47 48enum npc_kpu_lb_ltype {49	NPC_LT_LB_ETAG = 1,50	NPC_LT_LB_CTAG,51	NPC_LT_LB_STAG_QINQ,52	NPC_LT_LB_BTAG,53	NPC_LT_LB_PPPOE,54	NPC_LT_LB_DSA,55	NPC_LT_LB_DSA_VLAN,56	NPC_LT_LB_EDSA,57	NPC_LT_LB_EDSA_VLAN,58	NPC_LT_LB_EXDSA,59	NPC_LT_LB_EXDSA_VLAN,60	NPC_LT_LB_FDSA,61	NPC_LT_LB_VLAN_EXDSA,62	NPC_LT_LB_CUSTOM0 = 0xE,63	NPC_LT_LB_CUSTOM1 = 0xF,64};65 66/* Don't modify ltypes up to IP6_EXT, otherwise length and checksum of IP67 * headers may not be checked correctly. IPv4 ltypes and IPv6 ltypes must68 * differ only at bit 0 so mask 0xE can be used to detect extended headers.69 */70enum npc_kpu_lc_ltype {71	NPC_LT_LC_PTP = 1,72	NPC_LT_LC_IP,73	NPC_LT_LC_IP_OPT,74	NPC_LT_LC_IP6,75	NPC_LT_LC_IP6_EXT,76	NPC_LT_LC_ARP,77	NPC_LT_LC_RARP,78	NPC_LT_LC_MPLS,79	NPC_LT_LC_NSH,80	NPC_LT_LC_FCOE,81	NPC_LT_LC_NGIO,82	NPC_LT_LC_CUSTOM0 = 0xE,83	NPC_LT_LC_CUSTOM1 = 0xF,84};85 86/* Don't modify Ltypes upto SCTP, otherwise it will87 * effect flow tag calculation and thus RSS.88 */89enum npc_kpu_ld_ltype {90	NPC_LT_LD_TCP = 1,91	NPC_LT_LD_UDP,92	NPC_LT_LD_SCTP = 4,93	NPC_LT_LD_ICMP6,94	NPC_LT_LD_CUSTOM0,95	NPC_LT_LD_CUSTOM1,96	NPC_LT_LD_IGMP = 8,97	NPC_LT_LD_AH,98	NPC_LT_LD_GRE,99	NPC_LT_LD_NVGRE,100	NPC_LT_LD_NSH,101	NPC_LT_LD_TU_MPLS_IN_NSH,102	NPC_LT_LD_TU_MPLS_IN_IP,103	NPC_LT_LD_ICMP,104};105 106enum npc_kpu_le_ltype {107	NPC_LT_LE_VXLAN = 1,108	NPC_LT_LE_GENEVE,109	NPC_LT_LE_ESP,110	NPC_LT_LE_GTPU = 4,111	NPC_LT_LE_VXLANGPE,112	NPC_LT_LE_GTPC,113	NPC_LT_LE_NSH,114	NPC_LT_LE_TU_MPLS_IN_GRE,115	NPC_LT_LE_TU_NSH_IN_GRE,116	NPC_LT_LE_TU_MPLS_IN_UDP,117	NPC_LT_LE_CUSTOM0 = 0xE,118	NPC_LT_LE_CUSTOM1 = 0xF,119};120 121enum npc_kpu_lf_ltype {122	NPC_LT_LF_TU_ETHER = 1,123	NPC_LT_LF_TU_PPP,124	NPC_LT_LF_TU_MPLS_IN_VXLANGPE,125	NPC_LT_LF_TU_NSH_IN_VXLANGPE,126	NPC_LT_LF_TU_MPLS_IN_NSH,127	NPC_LT_LF_TU_3RD_NSH,128	NPC_LT_LF_CUSTOM0 = 0xE,129	NPC_LT_LF_CUSTOM1 = 0xF,130};131 132enum npc_kpu_lg_ltype {133	NPC_LT_LG_TU_IP = 1,134	NPC_LT_LG_TU_IP6,135	NPC_LT_LG_TU_ARP,136	NPC_LT_LG_TU_ETHER_IN_NSH,137	NPC_LT_LG_CUSTOM0 = 0xE,138	NPC_LT_LG_CUSTOM1 = 0xF,139};140 141/* Don't modify Ltypes upto SCTP, otherwise it will142 * effect flow tag calculation and thus RSS.143 */144enum npc_kpu_lh_ltype {145	NPC_LT_LH_TU_TCP = 1,146	NPC_LT_LH_TU_UDP,147	NPC_LT_LH_TU_SCTP = 4,148	NPC_LT_LH_TU_ICMP6,149	NPC_LT_LH_CUSTOM0,150	NPC_LT_LH_CUSTOM1,151	NPC_LT_LH_TU_IGMP = 8,152	NPC_LT_LH_TU_ESP,153	NPC_LT_LH_TU_AH,154	NPC_LT_LH_TU_ICMP = 0xF,155};156 157/* NPC port kind defines how the incoming or outgoing packets158 * are processed. NPC accepts packets from up to 64 pkinds.159 * Software assigns pkind for each incoming port such as CGX160 * Ethernet interfaces, LBK interfaces, etc.161 */162#define NPC_UNRESERVED_PKIND_COUNT NPC_RX_CPT_HDR_PTP_PKIND163 164enum npc_pkind_type {165	NPC_RX_LBK_PKIND = 0ULL,166	NPC_RX_CPT_HDR_PTP_PKIND = 54ULL,167	NPC_RX_CUSTOM_PRE_L2_PKIND = 55ULL,168	NPC_RX_VLAN_EXDSA_PKIND = 56ULL,169	NPC_RX_CHLEN24B_PKIND = 57ULL,170	NPC_RX_CPT_HDR_PKIND,171	NPC_RX_CHLEN90B_PKIND,172	NPC_TX_HIGIG_PKIND,173	NPC_RX_HIGIG_PKIND,174	NPC_RX_EDSA_PKIND,175	NPC_TX_DEF_PKIND,	/* NIX-TX PKIND */176};177 178enum npc_interface_type {179	NPC_INTF_MODE_DEF,180};181 182/* list of known and supported fields in packet header and183 * fields present in key structure.184 */185enum key_fields {186	NPC_DMAC,187	NPC_SMAC,188	NPC_ETYPE,189	NPC_VLAN_ETYPE_CTAG, /* 0x8100 */190	NPC_VLAN_ETYPE_STAG, /* 0x88A8 */191	NPC_OUTER_VID,192	NPC_INNER_VID,193	NPC_TOS,194	NPC_IPFRAG_IPV4,195	NPC_SIP_IPV4,196	NPC_DIP_IPV4,197	NPC_IPFRAG_IPV6,198	NPC_SIP_IPV6,199	NPC_DIP_IPV6,200	NPC_IPPROTO_TCP,201	NPC_IPPROTO_UDP,202	NPC_IPPROTO_SCTP,203	NPC_IPPROTO_AH,204	NPC_IPPROTO_ESP,205	NPC_IPPROTO_ICMP,206	NPC_IPPROTO_ICMP6,207	NPC_SPORT_TCP,208	NPC_DPORT_TCP,209	NPC_SPORT_UDP,210	NPC_DPORT_UDP,211	NPC_SPORT_SCTP,212	NPC_DPORT_SCTP,213	NPC_IPSEC_SPI,214	NPC_MPLS1_LBTCBOS,215	NPC_MPLS1_TTL,216	NPC_MPLS2_LBTCBOS,217	NPC_MPLS2_TTL,218	NPC_MPLS3_LBTCBOS,219	NPC_MPLS3_TTL,220	NPC_MPLS4_LBTCBOS,221	NPC_MPLS4_TTL,222	NPC_TYPE_ICMP,223	NPC_CODE_ICMP,224	NPC_TCP_FLAGS,225	NPC_HEADER_FIELDS_MAX,226	NPC_CHAN = NPC_HEADER_FIELDS_MAX, /* Valid when Rx */227	NPC_PF_FUNC, /* Valid when Tx */228	NPC_ERRLEV,229	NPC_ERRCODE,230	NPC_LXMB,231	NPC_EXACT_RESULT,232	NPC_LA,233	NPC_LB,234	NPC_LC,235	NPC_LD,236	NPC_LE,237	NPC_LF,238	NPC_LG,239	NPC_LH,240	/* Ethertype for untagged frame */241	NPC_ETYPE_ETHER,242	/* Ethertype for single tagged frame */243	NPC_ETYPE_TAG1,244	/* Ethertype for double tagged frame */245	NPC_ETYPE_TAG2,246	/* outer vlan tci for single tagged frame */247	NPC_VLAN_TAG1,248	/* outer vlan tci for double tagged frame */249	NPC_VLAN_TAG2,250	/* inner vlan tci for double tagged frame */251	NPC_VLAN_TAG3,252	/* other header fields programmed to extract but not of our interest */253	NPC_UNKNOWN,254	NPC_KEY_FIELDS_MAX,255};256 257struct npc_kpu_profile_cam {258	u8 state;259	u8 state_mask;260	u16 dp0;261	u16 dp0_mask;262	u16 dp1;263	u16 dp1_mask;264	u16 dp2;265	u16 dp2_mask;266} __packed;267 268struct npc_kpu_profile_action {269	u8 errlev;270	u8 errcode;271	u8 dp0_offset;272	u8 dp1_offset;273	u8 dp2_offset;274	u8 bypass_count;275	u8 parse_done;276	u8 next_state;277	u8 ptr_advance;278	u8 cap_ena;279	u8 lid;280	u8 ltype;281	u8 flags;282	u8 offset;283	u8 mask;284	u8 right;285	u8 shift;286} __packed;287 288struct npc_kpu_profile {289	int cam_entries;290	int action_entries;291	struct npc_kpu_profile_cam *cam;292	struct npc_kpu_profile_action *action;293};294 295/* NPC KPU register formats */296struct npc_kpu_cam {297#if defined(__BIG_ENDIAN_BITFIELD)298	u64 rsvd_63_56     : 8;299	u64 state          : 8;300	u64 dp2_data       : 16;301	u64 dp1_data       : 16;302	u64 dp0_data       : 16;303#else304	u64 dp0_data       : 16;305	u64 dp1_data       : 16;306	u64 dp2_data       : 16;307	u64 state          : 8;308	u64 rsvd_63_56     : 8;309#endif310};311 312struct npc_kpu_action0 {313#if defined(__BIG_ENDIAN_BITFIELD)314	u64 rsvd_63_57     : 7;315	u64 byp_count      : 3;316	u64 capture_ena    : 1;317	u64 parse_done     : 1;318	u64 next_state     : 8;319	u64 rsvd_43        : 1;320	u64 capture_lid    : 3;321	u64 capture_ltype  : 4;322	u64 capture_flags  : 8;323	u64 ptr_advance    : 8;324	u64 var_len_offset : 8;325	u64 var_len_mask   : 8;326	u64 var_len_right  : 1;327	u64 var_len_shift  : 3;328#else329	u64 var_len_shift  : 3;330	u64 var_len_right  : 1;331	u64 var_len_mask   : 8;332	u64 var_len_offset : 8;333	u64 ptr_advance    : 8;334	u64 capture_flags  : 8;335	u64 capture_ltype  : 4;336	u64 capture_lid    : 3;337	u64 rsvd_43        : 1;338	u64 next_state     : 8;339	u64 parse_done     : 1;340	u64 capture_ena    : 1;341	u64 byp_count      : 3;342	u64 rsvd_63_57     : 7;343#endif344};345 346struct npc_kpu_action1 {347#if defined(__BIG_ENDIAN_BITFIELD)348	u64 rsvd_63_36     : 28;349	u64 errlev         : 4;350	u64 errcode        : 8;351	u64 dp2_offset     : 8;352	u64 dp1_offset     : 8;353	u64 dp0_offset     : 8;354#else355	u64 dp0_offset     : 8;356	u64 dp1_offset     : 8;357	u64 dp2_offset     : 8;358	u64 errcode        : 8;359	u64 errlev         : 4;360	u64 rsvd_63_36     : 28;361#endif362};363 364struct npc_kpu_pkind_cpi_def {365#if defined(__BIG_ENDIAN_BITFIELD)366	u64 ena            : 1;367	u64 rsvd_62_59     : 4;368	u64 lid            : 3;369	u64 ltype_match    : 4;370	u64 ltype_mask     : 4;371	u64 flags_match    : 8;372	u64 flags_mask     : 8;373	u64 add_offset     : 8;374	u64 add_mask       : 8;375	u64 rsvd_15        : 1;376	u64 add_shift      : 3;377	u64 rsvd_11_10     : 2;378	u64 cpi_base       : 10;379#else380	u64 cpi_base       : 10;381	u64 rsvd_11_10     : 2;382	u64 add_shift      : 3;383	u64 rsvd_15        : 1;384	u64 add_mask       : 8;385	u64 add_offset     : 8;386	u64 flags_mask     : 8;387	u64 flags_match    : 8;388	u64 ltype_mask     : 4;389	u64 ltype_match    : 4;390	u64 lid            : 3;391	u64 rsvd_62_59     : 4;392	u64 ena            : 1;393#endif394};395 396struct nix_rx_action {397#if defined(__BIG_ENDIAN_BITFIELD)398	u64	rsvd_63_61	:3;399	u64	flow_key_alg	:5;400	u64	match_id	:16;401	u64	index		:20;402	u64	pf_func		:16;403	u64	op		:4;404#else405	u64	op		:4;406	u64	pf_func		:16;407	u64	index		:20;408	u64	match_id	:16;409	u64	flow_key_alg	:5;410	u64	rsvd_63_61	:3;411#endif412};413 414/* NPC_AF_INTFX_KEX_CFG field masks */415#define NPC_EXACT_NIBBLE_START		40416#define NPC_EXACT_NIBBLE_END		43417#define NPC_EXACT_NIBBLE		GENMASK_ULL(43, 40)418 419/* NPC_EXACT_KEX_S nibble definitions for each field */420#define NPC_EXACT_NIBBLE_HIT		BIT_ULL(40)421#define NPC_EXACT_NIBBLE_OPC		BIT_ULL(40)422#define NPC_EXACT_NIBBLE_WAY		BIT_ULL(40)423#define NPC_EXACT_NIBBLE_INDEX		GENMASK_ULL(43, 41)424 425#define NPC_EXACT_RESULT_HIT		BIT_ULL(0)426#define NPC_EXACT_RESULT_OPC		GENMASK_ULL(2, 1)427#define NPC_EXACT_RESULT_WAY		GENMASK_ULL(4, 3)428#define NPC_EXACT_RESULT_IDX		GENMASK_ULL(15, 5)429 430/* NPC_AF_INTFX_KEX_CFG field masks */431#define NPC_PARSE_NIBBLE		GENMASK_ULL(30, 0)432 433/* NPC_PARSE_KEX_S nibble definitions for each field */434#define NPC_PARSE_NIBBLE_CHAN		GENMASK_ULL(2, 0)435#define NPC_PARSE_NIBBLE_ERRLEV		BIT_ULL(3)436#define NPC_PARSE_NIBBLE_ERRCODE	GENMASK_ULL(5, 4)437#define NPC_PARSE_NIBBLE_L2L3_BCAST	BIT_ULL(6)438#define NPC_PARSE_NIBBLE_LA_FLAGS	GENMASK_ULL(8, 7)439#define NPC_PARSE_NIBBLE_LA_LTYPE	BIT_ULL(9)440#define NPC_PARSE_NIBBLE_LB_FLAGS	GENMASK_ULL(11, 10)441#define NPC_PARSE_NIBBLE_LB_LTYPE	BIT_ULL(12)442#define NPC_PARSE_NIBBLE_LC_FLAGS	GENMASK_ULL(14, 13)443#define NPC_PARSE_NIBBLE_LC_LTYPE	BIT_ULL(15)444#define NPC_PARSE_NIBBLE_LD_FLAGS	GENMASK_ULL(17, 16)445#define NPC_PARSE_NIBBLE_LD_LTYPE	BIT_ULL(18)446#define NPC_PARSE_NIBBLE_LE_FLAGS	GENMASK_ULL(20, 19)447#define NPC_PARSE_NIBBLE_LE_LTYPE	BIT_ULL(21)448#define NPC_PARSE_NIBBLE_LF_FLAGS	GENMASK_ULL(23, 22)449#define NPC_PARSE_NIBBLE_LF_LTYPE	BIT_ULL(24)450#define NPC_PARSE_NIBBLE_LG_FLAGS	GENMASK_ULL(26, 25)451#define NPC_PARSE_NIBBLE_LG_LTYPE	BIT_ULL(27)452#define NPC_PARSE_NIBBLE_LH_FLAGS	GENMASK_ULL(29, 28)453#define NPC_PARSE_NIBBLE_LH_LTYPE	BIT_ULL(30)454 455struct nix_tx_action {456#if defined(__BIG_ENDIAN_BITFIELD)457	u64	rsvd_63_48	:16;458	u64	match_id	:16;459	u64	index		:20;460	u64	rsvd_11_8	:8;461	u64	op		:4;462#else463	u64	op		:4;464	u64	rsvd_11_8	:8;465	u64	index		:20;466	u64	match_id	:16;467	u64	rsvd_63_48	:16;468#endif469};470 471/* NIX Receive Vtag Action Structure */472#define RX_VTAG0_VALID_BIT		BIT_ULL(15)473#define RX_VTAG0_TYPE_MASK		GENMASK_ULL(14, 12)474#define RX_VTAG0_LID_MASK		GENMASK_ULL(10, 8)475#define RX_VTAG0_RELPTR_MASK		GENMASK_ULL(7, 0)476#define RX_VTAG1_VALID_BIT		BIT_ULL(47)477#define RX_VTAG1_TYPE_MASK		GENMASK_ULL(46, 44)478#define RX_VTAG1_LID_MASK		GENMASK_ULL(42, 40)479#define RX_VTAG1_RELPTR_MASK		GENMASK_ULL(39, 32)480 481/* NIX Transmit Vtag Action Structure */482#define TX_VTAG0_DEF_MASK		GENMASK_ULL(25, 16)483#define TX_VTAG0_OP_MASK		GENMASK_ULL(13, 12)484#define TX_VTAG0_LID_MASK		GENMASK_ULL(10, 8)485#define TX_VTAG0_RELPTR_MASK		GENMASK_ULL(7, 0)486#define TX_VTAG1_DEF_MASK		GENMASK_ULL(57, 48)487#define TX_VTAG1_OP_MASK		GENMASK_ULL(45, 44)488#define TX_VTAG1_LID_MASK		GENMASK_ULL(42, 40)489#define TX_VTAG1_RELPTR_MASK		GENMASK_ULL(39, 32)490 491/* NPC MCAM reserved entry index per nixlf */492#define NIXLF_UCAST_ENTRY	0493#define NIXLF_BCAST_ENTRY	1494#define NIXLF_ALLMULTI_ENTRY	2495#define NIXLF_PROMISC_ENTRY	3496 497struct npc_coalesced_kpu_prfl {498#define NPC_SIGN	0x00666f727063706e499#define NPC_PRFL_NAME   "npc_prfls_array"500#define NPC_NAME_LEN	32501	__le64 signature; /* "npcprof\0" (8 bytes/ASCII characters) */502	u8 name[NPC_NAME_LEN]; /* KPU Profile name */503	u64 version; /* KPU firmware/profile version */504	u8 num_prfl; /* No of NPC profiles. */505	u16 prfl_sz[];506};507 508struct npc_mcam_kex {509	/* MKEX Profle Header */510	u64 mkex_sign; /* "mcam-kex-profile" (8 bytes/ASCII characters) */511	u8 name[MKEX_NAME_LEN];   /* MKEX Profile name */512	u64 cpu_model;   /* Format as profiled by CPU hardware */513	u64 kpu_version; /* KPU firmware/profile version */514	u64 reserved; /* Reserved for extension */515 516	/* MKEX Profle Data */517	u64 keyx_cfg[NPC_MAX_INTF]; /* NPC_AF_INTF(0..1)_KEX_CFG */518	/* NPC_AF_KEX_LDATA(0..1)_FLAGS_CFG */519	u64 kex_ld_flags[NPC_MAX_LD];520	/* NPC_AF_INTF(0..1)_LID(0..7)_LT(0..15)_LD(0..1)_CFG */521	u64 intf_lid_lt_ld[NPC_MAX_INTF][NPC_MAX_LID][NPC_MAX_LT][NPC_MAX_LD];522	/* NPC_AF_INTF(0..1)_LDATA(0..1)_FLAGS(0..15)_CFG */523	u64 intf_ld_flags[NPC_MAX_INTF][NPC_MAX_LD][NPC_MAX_LFL];524} __packed;525 526struct npc_kpu_fwdata {527	int	entries;528	/* What follows is:529	 * struct npc_kpu_profile_cam[entries];530	 * struct npc_kpu_profile_action[entries];531	 */532	u8	data[];533} __packed;534 535struct npc_lt_def {536	u8	ltype_mask;537	u8	ltype_match;538	u8	lid;539} __packed;540 541struct npc_lt_def_ipsec {542	u8	ltype_mask;543	u8	ltype_match;544	u8	lid;545	u8	spi_offset;546	u8	spi_nz;547} __packed;548 549struct npc_lt_def_apad {550	u8	ltype_mask;551	u8	ltype_match;552	u8	lid;553	u8	valid;554} __packed;555 556struct npc_lt_def_color {557	u8	ltype_mask;558	u8	ltype_match;559	u8	lid;560	u8	noffset;561	u8	offset;562} __packed;563 564struct npc_lt_def_et {565	u8	ltype_mask;566	u8	ltype_match;567	u8	lid;568	u8	valid;569	u8	offset;570} __packed;571 572struct npc_lt_def_cfg {573	struct npc_lt_def	rx_ol2;574	struct npc_lt_def	rx_oip4;575	struct npc_lt_def	rx_iip4;576	struct npc_lt_def	rx_oip6;577	struct npc_lt_def	rx_iip6;578	struct npc_lt_def	rx_otcp;579	struct npc_lt_def	rx_itcp;580	struct npc_lt_def	rx_oudp;581	struct npc_lt_def	rx_iudp;582	struct npc_lt_def	rx_osctp;583	struct npc_lt_def	rx_isctp;584	struct npc_lt_def_ipsec	rx_ipsec[2];585	struct npc_lt_def	pck_ol2;586	struct npc_lt_def	pck_oip4;587	struct npc_lt_def	pck_oip6;588	struct npc_lt_def	pck_iip4;589	struct npc_lt_def_apad	rx_apad0;590	struct npc_lt_def_apad	rx_apad1;591	struct npc_lt_def_color	ovlan;592	struct npc_lt_def_color	ivlan;593	struct npc_lt_def_color	rx_gen0_color;594	struct npc_lt_def_color	rx_gen1_color;595	struct npc_lt_def_et	rx_et[2];596} __packed;597 598/* Loadable KPU profile firmware data */599struct npc_kpu_profile_fwdata {600#define KPU_SIGN	0x00666f727075706b601#define KPU_NAME_LEN	32602/** Maximum number of custom KPU entries supported by the built-in profile. */603#define KPU_MAX_CST_ENT	6604	/* KPU Profle Header */605	__le64	signature; /* "kpuprof\0" (8 bytes/ASCII characters) */606	u8	name[KPU_NAME_LEN]; /* KPU Profile name */607	__le64	version; /* KPU profile version */608	u8	kpus;609	u8	reserved[7];610 611	/* Default MKEX profile to be used with this KPU profile. May be612	 * overridden with mkex_profile module parameter. Format is same as for613	 * the MKEX profile to streamline processing.614	 */615	struct npc_mcam_kex	mkex;616	/* LTYPE values for specific HW offloaded protocols. */617	struct npc_lt_def_cfg	lt_def;618	/* Dynamically sized data:619	 *  Custom KPU CAM and ACTION configuration entries.620	 * struct npc_kpu_fwdata kpu[kpus];621	 */622	u8	data[];623} __packed;624 625struct rvu_npc_mcam_rule {626	struct flow_msg packet;627	struct flow_msg mask;628	u8 intf;629	union {630		struct nix_tx_action tx_action;631		struct nix_rx_action rx_action;632	};633	u64 vtag_action;634	struct list_head list;635	u64 features;636	u16 owner;637	u16 entry;638	u16 cntr;639	bool has_cntr;640	u8 default_rule;641	bool enable;642	bool vfvlan_cfg;643	u16 chan;644	u16 chan_mask;645	u8 lxmb;646};647 648#endif /* NPC_H */649