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

saber2.h (16886B)


      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:        saber2.h
      8  * Purpose:     Function declarations for Saber2 bcm functions
      9  */
     10 
     11 #ifndef _BCM_INT_SABER2_H_
     12 #define _BCM_INT_SABER2_H_
     13 #if defined(BCM_SABER2_SUPPORT)
     14 #include <bcm_int/esw/subport.h>
     15 #include <bcm_int/esw/firebolt.h>
     16 #include <bcm_int/esw/mbcm.h>
     17 #include <bcm_int/esw/oam.h>
     18 #include <bcm_int/esw/field.h>
     19 #include <bcm/qos.h>
     20 #include <bcm/failover.h>
     21 #include <bcm/sat.h>
     22 #include <soc/saber2.h>
     23 #if defined(INCLUDE_L3)
     24 extern int
     25 bcm_sb2_failover_init(int unit);
     26 extern int
     27 bcm_sb2_failover_cleanup(int unit);
     28 extern int bcm_sb2_failover_prot_nhi_cleanup(int unit,
     29                                                          int nh_index);
     30 extern int bcm_sb2_failover_status_set(int unit,
     31                                             bcm_failover_element_t *failover,
     32                                             int value);
     33 extern int bcm_sb2_failover_status_get(int unit,
     34                                             bcm_failover_element_t *failover,
     35                                             int  *value);
     36 extern int
     37 bcm_sb2_failover_prot_nhi_set(int unit, uint32 flags, int nh_index, uint32 prot_nh_index, 
     38                                            bcm_multicast_t  mc_group, bcm_failover_t failover_id);
     39 
     40 #endif
     41 /* OAM ING/EGR_SERVICE_PRI_MAP_0/1/2 memory related routines */
     42 #define _BCM_SB2_OAM_PRI_MAP_COUNTER_OFFSET_MAX 7
     43 #define _BCM_SB2_OAM_PRI_MAP_COUNTER_OFFSET_MIN 0
     44 
     45 #define _BCM_SB2_INT_PRI_MAX                15
     46 #define _BCM_SB2_INT_PRI_MIN                0
     47 
     48 #define _BCM_SB2_PKT_PRI_MAX                7
     49 #define _BCM_SB2_PKT_PRI_MIN                0
     50 
     51 #define _BCM_SB2_MPLS_EXP_MAX               7
     52 #define _BCM_SB2_MPLS_EXP_MIN               0
     53 
     54 #define _BCM_SB2_OAM_PRI_MAP_TABLE_MAX      6
     55 
     56 /* Define OAMP port number */
     57 #define _BCM_SB2_SAT_OAMP_PHY_PORT_NUMBER SOC_SB2_SAT_OAMP_PHY_PORT_NUMBER
     58 
     59 #define SB2_MAX_NUM_PROFILES                4
     60 #define SB2_MIN_RQE_PROFILE_INDEX           0
     61 #define SB2_MAX_RQE_PROFILE_INDEX           3
     62 
     63 extern int _bcm_sb2_port_lanes_set_post_operation(int unit, bcm_port_t port);
     64 extern int _bcm_sb2_port_lanes_set(int unit, bcm_port_t port, int value);
     65 extern int _bcm_sb2_port_lanes_get(int unit, bcm_port_t port, int *value);
     66 extern int bcm_sb2_flexio_pbmp_update(int unit, bcm_pbmp_t *pbmp);
     67 
     68 #if defined(BCM_WARM_BOOT_SUPPORT)
     69 extern int _bcm_sb2_wb_v1_flexio_pbmp_update(int unit, bcm_pbmp_t *pbmp);
     70 #endif
     71 
     72 extern int _bcm_sb2_port_oamp_enable(int unit, bcm_port_t port, int enable);
     73 
     74 extern int bcm_sb2_oam_init(int unit);
     75 
     76 extern int bcm_sb2_oam_detach(int unit);
     77 
     78 extern int bcm_sb2_oam_group_create(int unit, bcm_oam_group_info_t *group_info);
     79 
     80 extern int bcm_sb2_oam_group_get(int unit, bcm_oam_group_t group,
     81                                  bcm_oam_group_info_t *group_info);
     82 
     83 extern int bcm_sb2_oam_group_destroy(int unit, bcm_oam_group_t group);
     84 
     85 extern int bcm_sb2_oam_group_destroy_all(int unit);
     86 
     87 extern int bcm_sb2_oam_group_traverse(int unit, bcm_oam_group_traverse_cb cb,
     88                                       void *user_data);
     89 
     90 extern int bcm_sb2_oam_endpoint_create(int unit,
     91                                        bcm_oam_endpoint_info_t *endpoint_info);
     92 
     93 extern int bcm_sb2_oam_endpoint_get(int unit, bcm_oam_endpoint_t endpoint,
     94                                     bcm_oam_endpoint_info_t *endpoint_info);
     95 
     96 extern int bcm_sb2_oam_endpoint_destroy(int unit, bcm_oam_endpoint_t endpoint);
     97 
     98 extern int bcm_sb2_oam_endpoint_destroy_all(int unit, bcm_oam_group_t group);
     99 
    100 extern int bcm_sb2_oam_endpoint_traverse(int unit, bcm_oam_group_t group,
    101                                          bcm_oam_endpoint_traverse_cb cb,
    102                                          void *user_data);
    103 
    104 extern int bcm_sb2_oam_event_register(int unit, 
    105                                       bcm_oam_event_types_t event_types,
    106                                       bcm_oam_event_cb cb, void *user_data);
    107 
    108 extern int bcm_sb2_oam_event_unregister(int unit, 
    109                                       bcm_oam_event_types_t event_types,
    110                                       bcm_oam_event_cb cb);
    111 
    112 extern int bcm_sb2_oam_endpoint_action_set(int unit, bcm_oam_endpoint_t id, 
    113                                            bcm_oam_endpoint_action_t *action); 
    114 
    115 extern int _bcm_sb2_port_control_oam_loopkup_with_dvp_set(int unit, 
    116                                                           bcm_port_t port, 
    117                                                           int val);
    118 extern int _bcm_sb2_port_control_oam_loopkup_with_dvp_get(int unit, 
    119                                                           bcm_port_t port, 
    120                                                           int *val);
    121 extern int bcm_sb2_oam_lookup_enable_set( int unit, bcm_oam_lookup_type_t type,
    122         bcm_oam_condition_t condition, int enable);
    123 extern int bcm_sb2_oam_lookup_enable_multi_set(int unit, bcm_oam_lookup_types_t type,
    124         bcm_oam_conditions_t condition, int enable);
    125 extern int bcm_sb2_oam_lookup_enable_get(int unit, bcm_oam_lookup_type_t type,
    126         bcm_oam_conditions_t *condition);
    127 extern int bcm_sb2_oam_trunk_ports_add(int unit, bcm_gport_t trunk_gport, 
    128                                 int max_ports, bcm_gport_t *port_arr);
    129 extern int bcm_sb2_oam_trunk_ports_delete(int unit, bcm_gport_t trunk_gport, 
    130                                 int max_ports, bcm_gport_t *port_arr);
    131 #ifdef BCM_WARM_BOOT_SUPPORT_SW_DUMP /* BCM_WARM_BOOT_SUPPORT_SW_DUMP*/
    132 extern void _bcm_sb2_oam_sw_dump(int unit);
    133 #endif /* !BCM_WARM_BOOT_SUPPORT_SW_DUMP */
    134 #ifdef BCM_WARM_BOOT_SUPPORT /* BCM_WARM_BOOT_SUPPORT */
    135 extern int _bcm_sb2_oam_sync(int unit);
    136 extern int _bcm_sb2_ipmc_repl_reload(int unit);
    137 #endif/* BCM_WARM_BOOT_SUPPORT */
    138 extern int bcm_sb2_oam_loopback_add(int unit, bcm_oam_loopback_t *loopback_p);
    139 extern int bcm_sb2_oam_loopback_get(int unit, bcm_oam_loopback_t *loopback_p);
    140 extern int bcm_sb2_oam_loopback_delete(int unit, bcm_oam_loopback_t *loopback_p);
    141 extern int bcm_sb2_oam_loss_add( int unit, bcm_oam_loss_t *loss_ptr);
    142 extern int bcm_sb2_oam_loss_delete( int unit, bcm_oam_loss_t *loss_ptr);
    143 extern int bcm_sb2_oam_loss_get( int unit, bcm_oam_loss_t *loss_ptr);
    144 extern int bcm_sb2_oam_delay_add( int unit, bcm_oam_delay_t *delay_ptr);
    145 extern int bcm_sb2_oam_delay_delete( int unit, bcm_oam_delay_t *delay_ptr);
    146 extern int bcm_sb2_oam_delay_get( int unit, bcm_oam_delay_t *delay_ptr);
    147 extern int bcm_sb2_oam_csf_add(int unit, bcm_oam_csf_t *csf_ptr);
    148 extern int bcm_sb2_oam_csf_delete(int unit, bcm_oam_csf_t *csf_ptr);
    149 extern int bcm_sb2_oam_csf_get(int unit, bcm_oam_csf_t *csf_ptr);
    150 extern int bcm_sb2_stg_stp_init(int unit, bcm_stg_t stg);
    151 extern int bcm_sb2_stg_stp_set(int unit, bcm_stg_t stg, 
    152                          bcm_port_t port, int stp_state);
    153 extern int bcm_sb2_stg_stp_get(int unit, bcm_stg_t stg, 
    154                          bcm_port_t port, int *stp_state);
    155 extern int bcm_sb2_oam_control_get(int unit, 
    156                                    bcm_oam_control_type_t type,
    157                                    uint64  *arg); 
    158 extern int bcm_sb2_oam_control_set(int unit, 
    159                                    bcm_oam_control_type_t type,
    160                                    uint64 arg); 
    161 extern int bcm_sb2_oam_upmep_cosq_set(int unit, bcm_oam_upmep_pdu_type_t upmep_pdu_type,
    162                                       bcm_cos_queue_t cosq);
    163 extern int bcm_sb2_oam_upmep_cosq_get(int unit, bcm_oam_upmep_pdu_type_t upmep_pdu_type,
    164                                       bcm_cos_queue_t *cosq);
    165 extern int
    166 bcm_sb2_oam_pm_profile_create(int unit, bcm_oam_pm_profile_info_t *profile_info);
    167 extern int
    168 bcm_sb2_oam_pm_profile_delete(int unit, bcm_oam_pm_profile_t profile_id);
    169 extern int
    170 bcm_sb2_oam_pm_profile_delete_all(int unit);
    171 extern int 
    172 bcm_sb2_oam_pm_profile_detach(int unit, bcm_oam_endpoint_t endpoint_id,
    173                                   bcm_oam_pm_profile_t profile_id);
    174 extern int
    175 bcm_sb2_oam_pm_profile_get(int unit, bcm_oam_pm_profile_info_t *profile_info);
    176 extern int
    177 bcm_sb2_oam_pm_profile_traverse(int unit,
    178                     bcm_oam_pm_profile_traverse_cb cb, void *user_data);
    179 extern int bcm_sb2_oam_pm_stats_get(int unit,
    180                             bcm_oam_endpoint_t endpoint_id, bcm_oam_pm_stats_t *stats_ptr);
    181 extern int bcm_sb2_oam_pm_event_register(int unit, bcm_oam_event_types_t event_types,
    182                                     bcm_oam_pm_event_cb cb, void *user_data);
    183 extern int bcm_sb2_oam_pm_event_unregister(int unit, bcm_oam_event_types_t event_types,
    184                                      bcm_oam_pm_event_cb cb);
    185 extern int
    186 bcm_sb2_oam_pm_raw_data_read_done(int unit, bcm_oam_event_types_t event_types,
    187                                   uint32 read_index);
    188 extern int
    189 bcm_sb2_oam_pm_profile_attach_get(
    190         int unit, bcm_oam_endpoint_t endpoint_id, bcm_oam_pm_profile_t *profile_id);
    191 extern int
    192 bcm_sb2_oam_pm_profile_attach(int unit, bcm_oam_endpoint_t endpoint_id,
    193         bcm_oam_pm_profile_t profile_id);
    194 
    195 extern int
    196 _bcm_sb2_oam_olp_fp_hw_index_get(int unit,
    197                                  bcm_field_olp_header_type_t olp_hdr_type,
    198                                  int *hwindex);
    199 
    200 extern int
    201 _bcm_sb2_oam_olp_hw_index_olp_type_get(int unit,
    202                                        int hwindex,
    203                                        bcm_field_olp_header_type_t *olp_hdr_type);
    204 
    205 
    206 extern int bcm_sb2_sat_init(int unit);
    207 extern int bcm_sb2_sat_detach(int unit);
    208 extern int bcm_sb2_sat_endpoint_create(int unit,
    209                                        bcm_sat_endpoint_info_t *endpoint_info);
    210 
    211 extern int bcm_sb2_sat_endpoint_get(int unit, 
    212                                     bcm_sat_endpoint_t endpoint,
    213                                     uint32 flags,
    214                                     bcm_sat_endpoint_info_t *endpoint_info);
    215 
    216 extern int bcm_sb2_sat_endpoint_destroy(int unit, 
    217                                         bcm_sat_endpoint_t endpoint,
    218                                         uint32 flags);
    219 
    220 extern int bcm_sb2_sat_endpoint_destroy_all(int unit, uint32  flags);
    221 
    222 extern int bcm_sb2_sat_endpoint_traverse(int unit, uint32 flags,
    223                                          bcm_sat_endpoint_traverse_cb cb,
    224                                          void *user_data);
    225 
    226 extern int bcm_sb2_sat_oamp_enable_set(int unit, int enable); 
    227 extern int bcm_sb2_sat_oamp_enable_get(int unit, int *enable); 
    228 extern int bcm_sb2_sat_ts_format_set(int unit, int ts_format); 
    229 extern int bcm_sb2_sat_ctf_report_process(int unit,
    230                                           bcm_sat_event_cb cb, void *cookie);
    231 extern int bcm_sb2_sat_init_check(int unit);
    232 
    233 extern int _bcm_sb2_port_sw_info_display(int unit, bcm_port_t port);
    234 extern int _bcm_sb2_port_hw_info_display(int unit, bcm_port_t port);
    235 
    236 extern  int
    237  _bcm_sb2_ipmc_subscriber_egress_intf_add(int unit, int ipmc_id,
    238                                          bcm_port_t port,
    239                                          int id,
    240                                          bcm_gport_t subscriber_queue,
    241                                          int is_l3,
    242                                          int *queue_count,
    243                                          int *q_count_increased
    244                                          );
    245  extern int
    246  _bcm_sb2_ipmc_subscriber_egress_intf_delete_all(int unit, int ipmc_id,
    247                                          bcm_port_t *port_array,
    248                                          int *encap_array,
    249                                          bcm_if_t *q_array,
    250                                          int *q_count_increased); 
    251 
    252  extern int
    253  _bcm_sb2_ipmc_subscriber_egress_intf_delete(int unit, int ipmc_id,
    254                                              bcm_port_t port,
    255                                              int id,
    256                                              bcm_gport_t subscriber_queue,
    257                                              int *queue_count,
    258                                              int *q_count_increased
    259                                           );
    260 extern  int
    261 _bcm_sb2_ipmc_subscriber_egress_intf_set(int unit, int ipmc_id,
    262                                          bcm_port_t port, int if_count,
    263                                          int *id,
    264                                          bcm_gport_t subscriber_queue,
    265                                          int is_l3,
    266                                          int *queue_count,
    267                                          int *q_count_increased);
    268 int
    269  _bcm_sb2_ipmc_subscriber_egress_intf_get(int unit, int ipmc_id, int if_max,
    270                                           bcm_gport_t *port_array,
    271                                          bcm_if_t *if_array,
    272                                          bcm_gport_t *subs_array,
    273                                          int *count);
    274 
    275 extern int
    276 _bcm_sb2_ipmc_subscriber_egress_intf_qos_map_set(int unit,
    277                                         int ipmc_id,
    278                                         bcm_gport_t port,
    279                                         bcm_gport_t subscriber_queue,
    280                                         int qos_map_id);
    281 extern int
    282 _bcm_sb2_ipmc_subscriber_egress_intf_qos_map_get(int unit,
    283                                         int ipmc_id,
    284                                         bcm_gport_t port,
    285                                         bcm_gport_t subscriber_queue,
    286                                         int *qos_map_id);
    287 
    288 extern  void 
    289 _bcm_sb2_ipmc_port_ext_queue_count_increment(int unit,
    290                                        int ipmc_id, bcm_port_t port);
    291 
    292 extern  void _bcm_sb2_ipmc_port_ext_queue_count_decrement(int unit,
    293                                        int ipmc_id, bcm_port_t port);
    294 
    295 extern  int
    296  _bcm_sb2_ipmc_set_remap_group(int unit, int ipmc_id,
    297                              bcm_port_t port, int count);
    298 
    299 extern int
    300 bcm_sb2_failover_destroy(int unit, int failover_id);
    301 extern 
    302 soc_error_t soc_saber2_port_detach(int unit,uint8 block_port);
    303 
    304 extern int                                                                      
    305 bcm_sb2_oam_opcode_group_set(int unit, bcm_oam_protocol_type_t  proto,          
    306                             bcm_oam_opcodes_t opcodes, uint8 opcode_group);
    307 
    308 extern int
    309 bcm_sb2_oam_opcode_group_get(int unit, bcm_oam_protocol_type_t  proto,          
    310                             bcm_oam_opcode_t opcode, uint8 *opcode_group);
    311 
    312 /* Attach an egress MPLS gport to a MPLS LSP endpoint */
    313 extern int bcm_sb2_oam_endpoint_gport_egress_attach(
    314     int unit,
    315     bcm_oam_endpoint_t endpoint,
    316     bcm_gport_t gport);
    317 
    318 /* Detach an egress MPLS gport from a MPLS LSP endpoint */
    319 extern int bcm_sb2_oam_endpoint_gport_egress_detach(
    320     int unit,
    321     bcm_oam_endpoint_t endpoint,
    322     bcm_gport_t gport);
    323 
    324 /* Get the list of MPLS gports attached to a MPLS LSP endpoint */
    325 extern int bcm_sb2_oam_endpoint_gport_egress_attach_get(
    326     int unit,
    327     bcm_oam_endpoint_t endpoint,
    328     int size,
    329     bcm_gport_t *gport,
    330     int *num_gports);
    331 
    332 /* Attach Egress object pointed by egress_intf to a MPLS LSP endpoint */
    333 extern int bcm_sb2_oam_endpoint_egress_intf_egress_attach(
    334         int unit,
    335         bcm_oam_endpoint_t ep_id,
    336         bcm_if_t egress_intf);
    337 
    338 /* Detach Egress object pointed by egress_intf from MPLS LSP endpoint */
    339 extern int bcm_sb2_oam_endpoint_egress_intf_egress_detach(
    340         int unit,
    341         bcm_oam_endpoint_t ep_id,
    342         bcm_if_t egress_intf);
    343 
    344 /* Get the list of Egress interfaces attached to MPLS LSP endpoint */
    345 extern int bcm_sb2_oam_endpoint_egress_intf_egress_attach_get(int unit,
    346         bcm_oam_endpoint_t ep_id,
    347         int size,
    348         bcm_if_t *egress_intf,
    349         int *count);
    350 
    351 /* Get the faults bitmap for the valid endpoints maximum upto max_endpoints in SB2 */ 
    352 extern int bcm_sb2_oam_endpoint_faults_multi_get(
    353         int unit,
    354         uint32 flags,
    355         bcm_oam_protocol_type_t endpoint_protocol,
    356         uint32 max_endpoints,
    357         bcm_oam_endpoint_fault_t *faults,
    358         uint32 *endpoint_count);
    359 
    360 extern 
    361 soc_error_t soc_saber2_port_attach(
    362         int unit, uint8 block, uint8 block_port );
    363 #ifdef BCM_WARM_BOOT_SUPPORT
    364 extern int
    365 bcm_sb2_failover_sync(int unit);
    366 extern int bcm_sb2_wb_v2_flexio_update;
    367 #endif
    368 #if defined(INCLUDE_BHH)
    369 extern int bcm_sb2_oam_mpls_tp_channel_type_tx_set(int unit,
    370                                                    bcm_oam_mpls_tp_channel_type_t channel_type,
    371                                                    int value);
    372 extern int bcm_sb2_oam_mpls_tp_channel_type_tx_get(int unit,
    373                                                    bcm_oam_mpls_tp_channel_type_t channel_type,
    374                                                    int *value);
    375 #endif /* INCLUDE_BHH */
    376 #endif /* BCM_SABER2_SUPPORT */
    377 #endif  /* !_BCM_INT_SABER2_H_ */
    378