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

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