mbcm_sat.h (8999B)
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-2019 Broadcom Inc. All rights reserved. 6 * 7 * File: mbcm_sat.h 8 * Purpose: Multiplexing of the bcm layer for PP 9 * 10 * Different chip families require such different implementations 11 * of some basic BCM layer functionality that the functions are 12 * multiplexed to allow a fast runtime decision as to which function 13 * to call. This file contains the basic declarations for this 14 * process. 15 * 16 * 17 * See internal/design/soft_arch/xgs_plan.txt for more info. 18 * 19 * Conventions: 20 * MBCM_SAT is the multiplexed pp bcm prefix 21 * _f is the function type declaration postfix 22 */ 23 24 #ifndef _SOC_SAT_MBCM_H 25 #define _SOC_SAT_MBCM_H 26 27 #include <bcm/types.h> 28 #include <soc/error.h> 29 #include <soc/shared/sat.h> 30 #ifdef BCM_SAT_SUPPORT 31 32 /* 33 * the basic SOC_SAND_RET for error 34 */ 35 #ifndef SOC_SAND_ERR 36 #define SOC_SAND_ERR 1 37 #endif 38 /* 39 * the basic SOC_SAND_RET for success 40 */ 41 #ifndef SOC_SAND_OK 42 #define SOC_SAND_OK 0 43 #endif 44 45 /**************************************************************** 46 * 47 * SOC Family type: 48 */ 49 typedef enum soc_sat_chip_family_e { 50 SOC_SAT_FAMILY_SABER2, 51 SOC_SAT_FAMILY_JERICHO 52 } soc_sat_chip_family_t; 53 54 55 /**************************************************************** 56 * 57 * Type definitions for multiplexed BCM functions. 58 */ 59 typedef soc_error_t 60 (*mbcm_sat_config_set_f) ( 61 SOC_SAND_IN int unit, 62 SOC_SAND_IN soc_sat_config_t* conf 63 ); 64 65 typedef soc_error_t 66 (*mbcm_sat_config_get_f) ( 67 SOC_SAND_IN int unit, 68 SOC_SAND_OUT soc_sat_config_t* conf 69 ); 70 71 typedef soc_error_t 72 (*mbcm_sat_gtf_create_f) ( 73 SOC_SAND_IN int unit, 74 SOC_SAND_IN uint32 flags, 75 SOC_SAND_INOUT soc_sat_gtf_t *gtf_id 76 ); 77 78 typedef soc_error_t 79 (*mbcm_sat_gtf_destroy_f) ( 80 SOC_SAND_IN int unit, 81 SOC_SAND_IN soc_sat_gtf_t gtf_id 82 ); 83 84 typedef soc_error_t 85 (*mbcm_sat_gtf_destroy_all_f) ( 86 SOC_SAND_IN int unit 87 ); 88 89 typedef soc_error_t 90 (*mbcm_sat_general_cfg_init_f) ( 91 SOC_SAND_IN int unit, 92 SOC_SAND_IN soc_sat_init_t *sat_init 93 ); 94 95 typedef soc_error_t 96 (*mbcm_sat_gtf_packet_gen_set_f) ( 97 SOC_SAND_IN int unit, 98 SOC_SAND_IN soc_sat_gtf_t gtf_id, 99 SOC_SAND_IN int priority, 100 SOC_SAND_IN int enable 101 ); 102 103 typedef soc_error_t 104 (*mbcm_sat_gtf_packet_gen_get_f) ( 105 SOC_SAND_IN int unit, 106 SOC_SAND_IN soc_sat_gtf_t gtf_id, 107 SOC_SAND_IN int priority, 108 SOC_SAND_OUT int *enable 109 ); 110 111 typedef soc_error_t 112 (*mbcm_sat_gtf_packet_config_f) ( 113 SOC_SAND_IN int unit, 114 SOC_SAND_IN soc_sat_gtf_t gtf_id, 115 SOC_SAND_IN soc_sat_gtf_packet_config_t *config 116 ); 117 118 typedef soc_error_t 119 (*mbcm_sat_gtf_bandwidth_set_f) ( 120 SOC_SAND_IN int unit, 121 SOC_SAND_IN soc_sat_gtf_t gtf_id, 122 SOC_SAND_IN int priority, 123 SOC_SAND_IN soc_sat_gtf_bandwidth_t *bw 124 ); 125 126 typedef soc_error_t 127 (*mbcm_sat_gtf_bandwidth_get_f) ( 128 SOC_SAND_IN int unit, 129 SOC_SAND_IN soc_sat_gtf_t gtf_id, 130 SOC_SAND_IN int priority, 131 SOC_SAND_OUT soc_sat_gtf_bandwidth_t *bw 132 ); 133 134 typedef soc_error_t 135 (*mbcm_sat_gtf_rate_pattern_set_f) ( 136 SOC_SAND_IN int unit, 137 SOC_SAND_IN soc_sat_gtf_t gtf_id, 138 SOC_SAND_IN int priority, 139 SOC_SAND_IN soc_sat_gtf_rate_pattern_t *config 140 ); 141 142 typedef soc_error_t 143 (*mbcm_sat_gtf_rate_pattern_get_f) ( 144 SOC_SAND_IN int unit, 145 SOC_SAND_IN soc_sat_gtf_t gtf_id, 146 SOC_SAND_IN int priority, 147 SOC_SAND_OUT soc_sat_gtf_rate_pattern_t *config 148 ); 149 150 typedef soc_error_t 151 (*mbcm_sat_gtf_stat_get_f) ( 152 SOC_SAND_IN int unit, 153 SOC_SAND_IN soc_sat_gtf_t gtf_id, 154 SOC_SAND_IN int priority, 155 SOC_SAND_IN uint32 flags, 156 SOC_SAND_IN soc_sat_gtf_stat_counter_t type, 157 SOC_SAND_OUT uint64* value 158 ); 159 160 typedef soc_error_t 161 (*mbcm_sat_ctf_packet_config_f) ( 162 SOC_SAND_IN int unit, 163 SOC_SAND_IN soc_sat_ctf_t ctf_id, 164 SOC_SAND_IN soc_sat_ctf_packet_info_t *packet_info 165 ); 166 167 typedef soc_error_t 168 (*mbcm_sat_ctf_identifier_map_f) ( 169 SOC_SAND_IN int unit, 170 SOC_SAND_IN soc_sat_ctf_identifier_t *identifier, 171 SOC_SAND_IN soc_sat_ctf_t ctf_id 172 ); 173 174 typedef soc_error_t 175 (*mbcm_sat_ctf_identifier_unmap_f) ( 176 SOC_SAND_IN int unit, 177 SOC_SAND_IN soc_sat_ctf_identifier_t *identifier 178 ); 179 180 typedef soc_error_t 181 (*mbcm_sat_ctf_trap_set_f) ( 182 SOC_SAND_IN int unit, 183 SOC_SAND_IN uint32 trap_id_cnt, 184 SOC_SAND_IN uint32* trap_id 185 ); 186 187 typedef soc_error_t 188 (*mbcm_sat_ctf_bin_limit_set_f) 189 ( 190 SOC_SAND_IN int unit, 191 SOC_SAND_IN int bins_count, 192 SOC_SAND_IN soc_sat_ctf_bin_limit_t* bins 193 ); 194 195 typedef soc_error_t 196 (*mbcm_sat_ctf_bin_limit_get_f) 197 ( 198 SOC_SAND_IN int unit, 199 SOC_SAND_IN int max_bins_count, 200 SOC_SAND_OUT int * bins_count, 201 SOC_SAND_OUT soc_sat_ctf_bin_limit_t* bins 202 ); 203 204 typedef soc_error_t 205 (*mbcm_sat_ctf_stat_config_set_f) 206 ( 207 SOC_SAND_IN int unit, 208 SOC_SAND_IN soc_sat_ctf_t ctf_id, 209 SOC_SAND_IN soc_sat_ctf_stat_config_t *stat 210 ); 211 212 typedef soc_error_t 213 (*mbcm_sat_ctf_stat_get_f) ( 214 SOC_SAND_IN int unit, 215 SOC_SAND_IN soc_sat_ctf_t ctf_id, 216 SOC_SAND_IN uint32 flags, 217 SOC_SAND_OUT soc_sat_ctf_stat_t* stat 218 ); 219 220 typedef soc_error_t 221 (*mbcm_sat_ctf_availability_config_set_f) 222 ( 223 SOC_SAND_IN int unit, 224 SOC_SAND_IN soc_sat_ctf_t ctf_id, 225 SOC_SAND_IN soc_sat_ctf_availability_config_t *config 226 ); 227 228 typedef soc_error_t 229 (*mbcm_sat_ctf_trap_data_to_session_map_f) ( 230 SOC_SAND_IN int unit, 231 SOC_SAND_IN uint32 trap_data, 232 SOC_SAND_IN uint32 trap_data_mask, 233 SOC_SAND_IN uint32 entry_idx, 234 SOC_SAND_IN uint32 session_id 235 ); 236 237 typedef soc_error_t 238 (*mbcm_sat_ctf_trap_data_to_session_unmap_f) ( 239 SOC_SAND_IN int unit, 240 SOC_SAND_IN uint32 entry_idx 241 ); 242 243 typedef soc_error_t 244 (*mbcm_sat_ctf_reports_config_set_f) ( 245 SOC_SAND_IN int unit, 246 SOC_SAND_IN soc_sat_ctf_t ctf_id, 247 SOC_SAND_IN soc_sat_ctf_report_config_t *reports 248 ); 249 250 typedef soc_error_t 251 (*mbcm_sat_oamp_stat_event_control_f) ( 252 SOC_SAND_IN int unit, 253 SOC_SAND_IN int enable 254 ); 255 256 typedef soc_error_t 257 (*mbcm_sat_oamp_stat_event_clear_f) ( 258 SOC_SAND_IN int unit 259 ); 260 261 typedef int (*mbcm_sat_session_inuse_f)( 262 SOC_SAND_IN int unit, 263 SOC_SAND_IN int session_id); 264 265 266 /**************************************************************** 267 * 268 * Multiplexed BCM SOC Driver Structure 269 */ 270 typedef struct mbcm_sat_functions_s { 271 mbcm_sat_config_set_f mbcm_sat_config_set; 272 mbcm_sat_config_get_f mbcm_sat_config_get; 273 /* GTF functions */ 274 mbcm_sat_general_cfg_init_f mbcm_sat_general_cfg_init; 275 mbcm_sat_gtf_packet_gen_set_f mbcm_sat_gtf_packet_gen_set; 276 mbcm_sat_gtf_packet_gen_get_f mbcm_sat_gtf_packet_gen_get; 277 mbcm_sat_gtf_packet_config_f mbcm_sat_gtf_packet_config; 278 mbcm_sat_gtf_bandwidth_set_f mbcm_sat_gtf_bandwidth_set; 279 mbcm_sat_gtf_bandwidth_get_f mbcm_sat_gtf_bandwidth_get; 280 mbcm_sat_gtf_rate_pattern_set_f mbcm_sat_gtf_rate_pattern_set; 281 mbcm_sat_gtf_rate_pattern_get_f mbcm_sat_gtf_rate_pattern_get; 282 mbcm_sat_gtf_stat_get_f mbcm_sat_gtf_stat_get; 283 /* CTF functions */ 284 mbcm_sat_ctf_packet_config_f mbcm_sat_ctf_packet_config; 285 mbcm_sat_ctf_identifier_map_f mbcm_sat_ctf_identifier_map; 286 mbcm_sat_ctf_identifier_unmap_f mbcm_sat_ctf_identifier_unmap; 287 mbcm_sat_ctf_trap_set_f mbcm_sat_ctf_trap_set; 288 mbcm_sat_ctf_bin_limit_set_f mbcm_sat_ctf_bin_limit_set; 289 mbcm_sat_ctf_bin_limit_get_f mbcm_sat_ctf_bin_limit_get; 290 mbcm_sat_ctf_stat_config_set_f mbcm_sat_ctf_stat_config_set; 291 mbcm_sat_ctf_stat_get_f mbcm_sat_ctf_stat_get; 292 mbcm_sat_ctf_availability_config_set_f mbcm_sat_ctf_availability_config_set; 293 mbcm_sat_ctf_trap_data_to_session_map_f mbcm_sat_ctf_trap_data_to_session_map; 294 mbcm_sat_ctf_trap_data_to_session_unmap_f mbcm_sat_ctf_trap_data_to_session_unmap; 295 mbcm_sat_ctf_reports_config_set_f mbcm_sat_ctf_reports_config_set; 296 /* OAMP inerrupt */ 297 mbcm_sat_oamp_stat_event_control_f mbcm_sat_oamp_stat_event_control; 298 mbcm_sat_oamp_stat_event_clear_f mbcm_sat_oamp_stat_event_clear; 299 mbcm_sat_session_inuse_f mbcm_sat_session_inuse; 300 } mbcm_sat_functions_t; 301 302 303 extern CONST mbcm_sat_functions_t *mbcm_sat_driver[BCM_MAX_NUM_UNITS]; /* USE _CALL MACRO FOR DISPATCH */ 304 extern soc_sat_chip_family_t mbcm_sat_family[BCM_MAX_NUM_UNITS]; 305 306 extern int mbcm_sat_init(int unit); 307 308 /* The argumnet should be in parentheses and to include the unit, i.e. (unit, arg1, arg2, ...) */ 309 #define MBCM_SAT_DRIVER_CALL(unit, function, args) (((unit < BCM_MAX_NUM_UNITS) && mbcm_sat_driver[unit] && mbcm_sat_driver[unit]->function)?mbcm_sat_driver[unit]->function args:BCM_E_UNAVAIL) 310 #endif /* BCM_SAT_SUPPORT */ 311 #endif /*_SOC_SAT_MBCM_H*/