/* SPDX-License-Identifier: GPL-2.0 * * Copyright (C) 2018 Marvell International Ltd. */ #ifndef __NPC_H__ #define __NPC_H__ #define RSVD_MCAM_ENTRIES_PER_PF 2 /** Ucast and Bcast */ #define RSVD_MCAM_ENTRIES_PER_NIXLF 1 /** Ucast for VFs */ struct npc_kpu_profile_cam { u8 state; u8 state_mask; u16 dp0; u16 dp0_mask; u16 dp1; u16 dp1_mask; u16 dp2; u16 dp2_mask; }; struct npc_kpu_profile_action { u8 errlev; u8 errcode; u8 dp0_offset; u8 dp1_offset; u8 dp2_offset; u8 bypass_count; u8 parse_done; u8 next_state; u8 ptr_advance; u8 cap_ena; u8 lid; u8 ltype; u8 flags; u8 offset; u8 mask; u8 right; u8 shift; }; struct npc_kpu_profile { int cam_entries; int action_entries; struct npc_kpu_profile_cam *cam; struct npc_kpu_profile_action *action; }; struct npc_pkind { struct rsrc_bmap rsrc; u32 *pfchan_map; }; struct npc_mcam { struct rsrc_bmap rsrc; u16 *pfvf_map; u16 total_entries; /* Total number of MCAM entries */ u16 entries; /* Total - reserved for NIX LFs */ u8 banks_per_entry; /* Number of keywords in key */ u8 keysize; u8 banks; /* Number of MCAM banks */ u16 banksize; /* Number of MCAM entries in each bank */ u16 counters; /* Number of match counters */ u16 nixlf_offset; u16 pf_offset; }; struct nix_af_handle; struct nix_handle; struct rvu_hwinfo; struct npc_af { struct nix_af_handle *nix_af; struct npc_pkind pkind; void __iomem *npc_af_base; u8 npc_kpus; /** Number of parser units */ struct npc_mcam mcam; struct rvu_block block; struct rvu_hwinfo *hw; }; struct npc { struct npc_af *npc_af; void __iomem *npc_base; struct nix_handle *nix; } #endif /* __NPC_H__ */