uboot/drivers/net/octeontx2/npc.h
<<
>>
Prefs
   1/* SPDX-License-Identifier:    GPL-2.0
   2 *
   3 * Copyright (C) 2018 Marvell International Ltd.
   4 */
   5
   6#ifndef __NPC_H__
   7#define __NPC_H__
   8
   9#define RSVD_MCAM_ENTRIES_PER_PF        2       /** Ucast and Bcast */
  10#define RSVD_MCAM_ENTRIES_PER_NIXLF     1       /** Ucast for VFs */
  11
  12struct npc_kpu_profile_cam {
  13        u8 state;
  14        u8 state_mask;
  15        u16 dp0;
  16        u16 dp0_mask;
  17        u16 dp1;
  18        u16 dp1_mask;
  19        u16 dp2;
  20        u16 dp2_mask;
  21};
  22
  23struct npc_kpu_profile_action {
  24        u8 errlev;
  25        u8 errcode;
  26        u8 dp0_offset;
  27        u8 dp1_offset;
  28        u8 dp2_offset;
  29        u8 bypass_count;
  30        u8 parse_done;
  31        u8 next_state;
  32        u8 ptr_advance;
  33        u8 cap_ena;
  34        u8 lid;
  35        u8 ltype;
  36        u8 flags;
  37        u8 offset;
  38        u8 mask;
  39        u8 right;
  40        u8 shift;
  41};
  42
  43struct npc_kpu_profile {
  44        int cam_entries;
  45        int action_entries;
  46        struct npc_kpu_profile_cam *cam;
  47        struct npc_kpu_profile_action *action;
  48};
  49
  50struct npc_pkind {
  51        struct rsrc_bmap rsrc;
  52        u32     *pfchan_map;
  53};
  54
  55struct npc_mcam {
  56        struct rsrc_bmap rsrc;
  57        u16     *pfvf_map;
  58        u16     total_entries; /* Total number of MCAM entries */
  59        u16     entries;  /* Total - reserved for NIX LFs */
  60        u8      banks_per_entry;  /* Number of keywords in key */
  61        u8      keysize;
  62        u8      banks;    /* Number of MCAM banks */
  63        u16     banksize; /* Number of MCAM entries in each bank */
  64        u16     counters; /* Number of match counters */
  65        u16     nixlf_offset;
  66        u16     pf_offset;
  67};
  68
  69struct nix_af_handle;
  70struct nix_handle;
  71struct rvu_hwinfo;
  72
  73struct npc_af {
  74        struct nix_af_handle    *nix_af;
  75        struct npc_pkind        pkind;
  76        void __iomem            *npc_af_base;
  77        u8                      npc_kpus;       /** Number of parser units */
  78        struct npc_mcam         mcam;
  79        struct rvu_block        block;
  80        struct rvu_hwinfo       *hw;
  81};
  82
  83struct npc {
  84        struct npc_af           *npc_af;
  85        void __iomem            *npc_base;
  86        struct nix_handle       *nix;
  87}
  88
  89#endif /* __NPC_H__ */
  90