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