1 /* SPDX-License-Identifier: GPL-2.0
2 * Marvell OcteonTx2 RVU Admin Function driver
4 * Copyright (C) 2018 Marvell International Ltd.
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License version 2 as
8 * published by the Free Software Foundation.
27 enum npc_kpu_la_ltype {
32 enum npc_kpu_lb_ltype {
41 enum npc_kpu_lc_ltype {
52 /* Don't modify Ltypes upto SCTP, otherwise it will
53 * effect flow tag calculation and thus RSS.
55 enum npc_kpu_ld_ltype {
70 enum npc_kpu_le_ltype {
71 NPC_LT_LE_TU_ETHER = 1,
73 NPC_LT_LE_TU_MPLS_IN_NSH,
77 enum npc_kpu_lf_ltype {
82 NPC_LT_LF_TU_MPLS_IP6,
83 NPC_LT_LF_TU_MPLS_ETHER,
86 enum npc_kpu_lg_ltype {
97 enum npc_kpu_lh_ltype {
98 NPC_LT_LH_TCP_DATA = 1,
100 NPC_LT_LH_HTTPS_DATA,
105 struct npc_kpu_profile_cam {
116 struct npc_kpu_profile_action {
136 struct npc_kpu_profile {
139 struct npc_kpu_profile_cam *cam;
140 struct npc_kpu_profile_action *action;
143 /* NPC KPU register formats */
145 #if defined(__BIG_ENDIAN_BITFIELD)
160 struct npc_kpu_action0 {
161 #if defined(__BIG_ENDIAN_BITFIELD)
169 u64 capture_ltype : 4;
170 u64 capture_flags : 8;
172 u64 var_len_offset : 8;
173 u64 var_len_mask : 8;
174 u64 var_len_right : 1;
175 u64 var_len_shift : 3;
177 u64 var_len_shift : 3;
178 u64 var_len_right : 1;
179 u64 var_len_mask : 8;
180 u64 var_len_offset : 8;
182 u64 capture_flags : 8;
183 u64 capture_ltype : 4;
194 struct npc_kpu_action1 {
195 #if defined(__BIG_ENDIAN_BITFIELD)
212 struct npc_kpu_pkind_cpi_def {
213 #if defined(__BIG_ENDIAN_BITFIELD)
244 struct nix_rx_action {
245 #if defined(__BIG_ENDIAN_BITFIELD)
262 /* NIX Receive Vtag Action Structure */
263 #define VTAG0_VALID_BIT BIT_ULL(15)
264 #define VTAG0_TYPE_MASK GENMASK_ULL(14, 12)
265 #define VTAG0_LID_MASK GENMASK_ULL(10, 8)
266 #define VTAG0_RELPTR_MASK GENMASK_ULL(7, 0)
268 struct npc_mcam_kex {
269 /* MKEX Profle Header */
270 u64 mkex_sign; /* "mcam-kex-profile" (8 bytes/ASCII characters) */
271 u8 name[MKEX_NAME_LEN]; /* MKEX Profile name */
272 u64 cpu_model; /* Format as profiled by CPU hardware */
273 u64 kpu_version; /* KPU firmware/profile version */
274 u64 reserved; /* Reserved for extension */
276 /* MKEX Profle Data */
277 u64 keyx_cfg[NPC_MAX_INTF]; /* NPC_AF_INTF(0..1)_KEX_CFG */
278 /* NPC_AF_KEX_LDATA(0..1)_FLAGS_CFG */
279 u64 kex_ld_flags[NPC_MAX_LD];
280 /* NPC_AF_INTF(0..1)_LID(0..7)_LT(0..15)_LD(0..1)_CFG */
281 u64 intf_lid_lt_ld[NPC_MAX_INTF][NPC_MAX_LID][NPC_MAX_LT][NPC_MAX_LD];
282 /* NPC_AF_INTF(0..1)_LDATA(0..1)_FLAGS(0..15)_CFG */
283 u64 intf_ld_flags[NPC_MAX_INTF][NPC_MAX_LD][NPC_MAX_LFL];