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