openbcm

Git mirror of https://github.com/Broadcom-Network-Switching-Software/OpenBCM
git clone git://git.finwo.net/mirror/broadcom/openbcm
Log | Files | Refs | README

diag_pp_data.h (4340B)


      1 /*
      2  * 
      3  * This license is set out in https://raw.githubusercontent.com/Broadcom-Network-Switching-Software/OpenBCM/master/Legal/LICENSE file.
      4  * 
      5  * Copyright 2007-2020 Broadcom Inc. All rights reserved.
      6  *
      7  * File:    diag_pp_data.h
      8  * Purpose:    Types and structures used import/export PP data
      9  */
     10 
     11 #ifndef __DIAG_PP_DATA_H
     12 #define __DIAG_PP_DATA_H
     13 
     14 #include <shared/utilex/utilex_rhlist.h>
     15 #include <soc/dpp/PPC/ppc_api_fp.h>
     16 
     17 typedef struct {
     18     char        name[RHNAME_MAX_SIZE];
     19     int         offset;
     20     int         size;
     21     int         header; /* header type for packet or LSB/MSB for signal */
     22     int         valid;
     23     uint16      ce;
     24     int         ce_type;
     25     char        ce_name[RHNAME_MAX_SIZE];
     26 } qualifier_t;
     27 
     28 #define PARSER_PROGRAM_SEGMENT_SIZE 64
     29 #define PARSER_PROGRAM_SEGMENT_NUM  32
     30 #define PARSER_PROGRAM_FIN          0x00 /* Execute instruction's command and finish */
     31 #define PARSER_PROGRAM_END          0x7f /* End and do not execute the instruction's command */
     32 
     33 #define PP_INVLAID_VALUE            -1
     34 
     35 #define CE16_TYPE                   16
     36 #define CE32_TYPE                   32
     37 
     38 #define INTERNAL_BUFFER_CE16_SHIFT  16
     39 #define INTERNAL_BUFFER_CE32_SHIFT  32
     40 #define INTERNAL_BUFFER_QUALIFIER   0x8
     41 
     42 #define VTT_QUALIFIER_NUM           12
     43 #define FLP_QUALIFIER_NUM           32
     44 
     45 #define BOOLSTR(mc_value)         ((mc_value == 0) ? "No" : "Yes")
     46 
     47 /*
     48  * Defines
     49  */
     50 #define DPP_EXPORT_MAX_STAGE_NUM        4
     51 #define DPP_EXPORT_PP_PRESEL_MAX        48
     52 #define DPP_EXPORT_PP_BUNDLE_MAX        DPP_EXPORT_PP_TABLE_MAX
     53 #define DPP_EXPORT_PP_TABLE_MAX         SOC_DPP_DBAL_SW_NOF_TABLES
     54 #define DPP_EXPORT_PP_BUNDLE_TABLE_MAX  32
     55 
     56 #define DPP_EXPORT_CHAR_MAX_LENGTH 50
     57 
     58 /*
     59  * Structs
     60  */
     61 typedef struct dpp_export_pp_table_key_s {
     62     char                         name[DPP_EXPORT_CHAR_MAX_LENGTH];
     63 } dpp_export_pp_table_key_t;
     64 
     65 typedef struct dpp_export_pp_table_action_s {
     66     char                         name[DPP_EXPORT_CHAR_MAX_LENGTH];
     67 } dpp_export_pp_table_action_t;
     68 
     69 typedef struct dpp_export_pp_table_info_s {
     70     char                         name[DPP_EXPORT_CHAR_MAX_LENGTH];
     71     char                         database[DPP_EXPORT_CHAR_MAX_LENGTH];
     72     dpp_export_pp_table_key_t    keys[SOC_PPC_FP_NOF_QUALS_PER_DB_MAX];
     73     dpp_export_pp_table_action_t actions[SOC_PPC_FP_NOF_ACTIONS_PER_DB_MAX];
     74     int                          priority;
     75     int                          is_static;
     76 } dpp_export_pp_table_info_t;
     77 
     78 typedef struct dpp_export_pp_bundle_table_s {
     79     dpp_export_pp_table_info_t   *table;
     80     int                          lookup;
     81     int                          is_static;
     82 } dpp_export_pp_bundle_table_t;
     83 
     84 typedef struct dpp_export_pp_bundle_info_s {
     85     char                         name[DPP_EXPORT_CHAR_MAX_LENGTH];
     86     dpp_export_pp_bundle_table_t tables[DPP_EXPORT_PP_BUNDLE_TABLE_MAX];
     87     int                          nof_tables;
     88     int                          is_static;
     89     int                          selected;
     90 } dpp_export_pp_bundle_info_t;
     91 
     92 typedef struct dpp_presel_qual_info_s {
     93     rhentry_t   entry;
     94     uint32      data;
     95     uint32      mask;
     96     int         size;
     97 } dpp_presel_qual_info_t;
     98 
     99 typedef struct dpp_export_pp_presel_info_s {
    100     char                         name[DPP_EXPORT_CHAR_MAX_LENGTH];
    101     char                         app_type[DPP_EXPORT_CHAR_MAX_LENGTH];
    102     dpp_export_pp_bundle_info_t  *bundle;
    103     int                          is_static;
    104     int                          selected;
    105     rhlist_t                     *qual_list;
    106 } dpp_export_pp_presel_info_t;
    107 
    108 typedef struct dpp_export_pp_stage_info_s {
    109     char                         name[DPP_EXPORT_CHAR_MAX_LENGTH];
    110     dpp_export_pp_presel_info_t  presels[DPP_EXPORT_PP_PRESEL_MAX];
    111     dpp_export_pp_bundle_info_t  bundles[DPP_EXPORT_PP_BUNDLE_MAX];
    112     dpp_export_pp_table_info_t   tables[DPP_EXPORT_PP_TABLE_MAX];
    113 } dpp_export_pp_stage_info_t;
    114 
    115 typedef struct dpp_export_pp_info_s {
    116     dpp_export_pp_stage_info_t   stages[SOC_PPC_NOF_FP_DATABASE_STAGES];
    117 } dpp_export_pp_info_t;
    118 
    119 int dpp_export_pp(int unit, char *stage, char *filename);
    120 
    121 int dpp_dump_vt(int unit,  int core, dpp_export_pp_stage_info_t *stage);
    122 int dpp_dump_tt(int unit,  int core, dpp_export_pp_stage_info_t *stage);
    123 int dpp_dump_flp(int unit, int core, dpp_export_pp_stage_info_t *stage);
    124 
    125 #endif /* __DIAG_PP_DATA_H */