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