/* 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__ */ | |