triumph.h (41028B)
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: triumph.h 8 * Purpose: Function declarations for Triumph bcm functions 9 */ 10 11 #ifndef _BCM_INT_TRIUMPH_H_ 12 #define _BCM_INT_TRIUMPH_H_ 13 #include <bcm_int/esw/l2.h> 14 #include <bcm_int/esw/mbcm.h> 15 #include <bcm/qos.h> 16 #ifdef BCM_FIELD_SUPPORT 17 #include <bcm_int/esw/field.h> 18 #endif /* BCM_FIELD_SUPPORT */ 19 #if defined(BCM_TRX_SUPPORT) 20 21 typedef struct bcm_tr_mpls_vc_swap_table_nhop_list_s { 22 int nh_index; 23 struct bcm_tr_mpls_vc_swap_table_nhop_list_s *next; 24 } bcm_tr_mpls_vc_swap_table_nhop_list_t; 25 26 typedef struct bcm_tr_mpls_vc_swap_table_hash_entry_s { 27 int index; 28 struct bcm_tr_mpls_vc_swap_table_nhop_list_s *nhop_list; 29 struct bcm_tr_mpls_vc_swap_table_hash_entry_s *link; 30 } bcm_tr_mpls_vc_swap_table_hash_entry_t; 31 32 typedef struct bcm_tr_mpls_vc_swap_table_hash_s { 33 bcm_tr_mpls_vc_swap_table_hash_entry_t *head_link; 34 } bcm_tr_mpls_vc_swap_table_hash_t; 35 36 #define BCM_TR_MPLS_VC_SWAP_HASH_BUCKETS 16384 37 #define BCM_TR_MPLS_VC_SWAP_KEY_LEN_IN_WORDS 2 38 39 /* 40 * Routines for internal use 41 */ 42 extern int _bcm_tr_l2_traverse_mem(int unit, soc_mem_t mem, 43 _bcm_l2_traverse_t *trav_st); 44 extern int _bcm_tr_l2_from_l2x(int unit, 45 bcm_l2_addr_t *l2addr, l2x_entry_t *l2x_entry); 46 extern int _bcm_tr_l2_from_ext_l2(int unit, 47 bcm_l2_addr_t *l2addr, ext_l2_entry_entry_t *ext_l2_entry); 48 extern int _bcm_tr_l2_to_l2x(int unit, l2x_entry_t *l2x_entry, 49 bcm_l2_addr_t *l2addr, int key_only); 50 51 extern int 52 _soc_tr_l2e_ppa_init(int unit); 53 /**************************************************************** 54 * 55 * Triumph functions 56 */ 57 extern int bcm_tr_l2_init(int unit); 58 extern int bcm_tr_l2_term(int unit); 59 extern int _bcm_tr_l2_addr_get(int unit, bcm_mac_t mac_addr, bcm_vlan_t vid, 60 int check_l2_only, bcm_l2_addr_t *l2addr); 61 extern int bcm_tr_l2_addr_get(int unit, bcm_mac_t mac_addr, bcm_vlan_t vid, 62 bcm_l2_addr_t *l2addr); 63 extern int bcm_tr_l2_addr_add(int unit, bcm_l2_addr_t *l2addr); 64 extern int bcm_tr_l2_addr_delete(int unit, bcm_mac_t mac, bcm_vlan_t vid); 65 extern int bcm_tr_l2_addr_delete_by_mac(int unit, bcm_mac_t mac, uint32 flags); 66 extern int bcm_tr_l2_addr_delete_by_mac_port(int unit, bcm_mac_t mac, 67 bcm_module_t mod, bcm_port_t port, 68 uint32 flags); 69 extern int bcm_tr_l2_conflict_get(int unit, bcm_l2_addr_t *addr, 70 bcm_l2_addr_t *cf_array, int cf_max, 71 int *cf_count); 72 extern int bcm_tr_l2_cross_connect_add(int unit, bcm_vlan_t outer_vlan, 73 bcm_vlan_t inner_vlan, 74 bcm_gport_t port_1, bcm_gport_t port_2); 75 extern int bcm_tr_l2_cross_connect_delete(int unit, bcm_vlan_t outer_vlan, 76 bcm_vlan_t inner_vlan); 77 extern int bcm_tr_l2_cross_connect_delete_all(int unit); 78 extern int bcm_tr_l2_cross_connect_traverse(int unit, 79 bcm_vlan_cross_connect_traverse_cb cb, 80 void *user_data); 81 extern int _bcm_tr_l2_replace_by_hw(int unit, _bcm_l2_replace_t *rep_st); 82 83 #if defined(BCM_TRIUMPH_SUPPORT) /* BCM_TRIUMPH_SUPPORT */ 84 85 /* For MY_STATION_PROFILE table */ 86 extern int 87 _bcm_l2_mysta_profile_entry_get(int unit, 88 void *entry, int mem_no, 89 uint32 mysta_prof_id); 90 91 extern int 92 _bcm_l2_mysta_profile_entry_add(int unit, 93 void *entry, int mem_no, 94 uint32 *mysta_prof_id); 95 96 extern int 97 _bcm_l2_mysta_profile_entry_delete(int unit, int mem_no, uint32 mysta_prof_id); 98 99 extern void 100 _bcm_l2_mysta_station_to_entry(int unit, bcm_l2_station_t *station, soc_mem_t, void *entry); 101 102 extern void 103 _bcm_l2_mysta_entry_to_station(int unit, void *entry, soc_mem_t mem, bcm_l2_station_t *station); 104 /* Add an entry to L2 Station Table. */ 105 extern int bcm_tr_l2_station_add(int unit, 106 int *station_id, 107 bcm_l2_station_t *station); 108 109 /* Delete an entry from L2 Station Table. */ 110 extern int bcm_tr_l2_station_delete(int unit, int station_id); 111 112 /* Clear all L2 Station Table entries. */ 113 extern int bcm_tr_l2_station_delete_all( int unit); 114 115 /* Get L2 station entry detail from Station Table. */ 116 extern int bcm_tr_l2_station_get(int unit, 117 int station_id, 118 bcm_l2_station_t *station); 119 120 /* Get size of L2 Station Table. */ 121 extern int bcm_tr_l2_station_size_get(int unit, int *size); 122 123 /* Traverse L2 Station Table. */ 124 extern int bcm_tr_l2_station_traverse(int unit, bcm_l2_station_traverse_cb trav_fn, void *user_data); 125 126 /* L2 station support init routine. */ 127 extern int _bcm_tr_l2_station_control_init(int unit); 128 129 /* Deallocate L2 station control resources. */ 130 extern int _bcm_tr_l2_station_control_deinit(int unit); 131 132 extern int _bcm_l2_station_control_get(int unit, 133 _bcm_l2_station_control_t **sc); 134 extern int _bcm_tr_l2_station_entry_max_size_get(int unit, 135 int overlay, int *size); 136 extern int _bcm_tr_l2_station_entry_last_sid_set(int unit, 137 int overlay, int sid); 138 139 #endif /* !BCM_TRIUMPH_SUPPORT */ 140 141 #ifdef BCM_WARM_BOOT_SUPPORT 142 extern int _bcm_tr_l2_reload_mbi(int unit); 143 extern int _bcm_tr_qos_sync(int unit); 144 extern int _bcm_tr_mpls_match_key_recover(int unit); 145 extern int _bcm_tr_mpls_flex_stat_recover(int unit, int vp); 146 extern int _bcm_tr_mpls_source_vp_tpid_recover(int unit, int vp); 147 extern int _bcm_tr_mpls_associated_data_recover(int unit); 148 extern void _bcm_tr_mpls_label_flex_stat_recover(int unit, mpls_entry_entry_t *ment); 149 150 /* L2 station module warmboot recovery routine. */ 151 extern int _bcm_tr_l2_station_reload(int unit); 152 #else 153 #define _bcm_tr_l2_reload_mbi(_u) (BCM_E_UNAVAIL) 154 #endif /* BCM_WARM_BOOT_SUPPORT */ 155 156 #ifndef BCM_SW_STATE_DUMP_DISABLE 157 extern void _bcm_tr_l2_sw_dump(int unit); 158 #endif /* BCM_SW_STATE_DUMP_DISABLE */ 159 #ifdef BCM_WARM_BOOT_SUPPORT_SW_DUMP 160 extern void _bcm_tr_qos_sw_dump(int unit); 161 #endif /* BCM_WARM_BOOT_SUPPORT_SW_DUMP */ 162 163 extern int _bcm_trx_vlan_port_default_action_set(int unit, bcm_port_t port, 164 bcm_vlan_action_set_t *action); 165 extern int _bcm_trx_vlan_port_default_action_get(int unit, bcm_port_t port, 166 bcm_vlan_action_set_t *action); 167 extern int _bcm_trx_vlan_port_default_action_delete(int unit, bcm_port_t port); 168 extern int _bcm_trx_vlan_port_egress_default_action_set(int unit, bcm_port_t port, 169 bcm_vlan_action_set_t *action); 170 extern int _bcm_trx_vlan_port_egress_default_action_get(int unit, bcm_port_t port, 171 bcm_vlan_action_set_t *action); 172 extern int _bcm_trx_vlan_port_egress_default_action_delete(int unit, bcm_port_t port); 173 extern int _bcm_trx_vlan_port_egress_action_profile_clear(int unit, bcm_port_t port); 174 extern int _bcm_trx_vlan_port_protocol_action_add(int unit, bcm_port_t port, 175 bcm_port_frametype_t frame, 176 bcm_port_ethertype_t ether, 177 bcm_vlan_action_set_t *action); 178 extern int _bcm_trx_vlan_port_protocol_action_get(int unit, bcm_port_t port, 179 bcm_port_frametype_t frame, 180 bcm_port_ethertype_t ether, 181 bcm_vlan_action_set_t *action); 182 183 extern int _bcm_trx_vlan_port_protocol_delete(int unit, bcm_port_t port, 184 bcm_port_frametype_t frame, 185 bcm_port_ethertype_t ether); 186 extern int _bcm_trx_vlan_port_protocol_delete_all(int unit, bcm_port_t port); 187 extern int _bcm_trx_vlan_port_protocol_action_traverse(int unit, 188 bcm_vlan_port_protocol_action_traverse_cb cb, 189 void *user_data); 190 191 extern int bcm_tr_port_rate_pause_get(int unit, bcm_port_t port, 192 uint32 *kbits_pause, 193 uint32 *kbits_resume); 194 extern int bcm_tr_port_rate_egress_set(int unit, bcm_port_t port, 195 uint32 kbits_sec, 196 uint32 kbits_burst, uint32 mode); 197 extern int bcm_tr_port_rate_egress_get(int unit, bcm_port_t port, 198 uint32 *kbits_sec, 199 uint32 *kbits_burst, uint32 *mode); 200 extern int bcm_tr_port_pps_rate_egress_set(int unit, bcm_port_t port, 201 uint32 pps, uint32 burst); 202 extern int bcm_tr_port_pps_rate_egress_get(int unit, bcm_port_t port, 203 uint32 *pps, uint32 *burst); 204 extern int bcm_tr_qos_init(int unit); 205 extern int bcm_tr_qos_detach(int unit); 206 extern int bcm_tr_qos_map_create(int unit, uint32 flags, int *map_id); 207 extern int bcm_tr_qos_map_destroy(int unit, int map_id); 208 extern int bcm_tr_qos_map_add(int unit, uint32 flags, bcm_qos_map_t *map, 209 int map_id); 210 extern int bcm_tr_qos_map_delete(int unit, uint32 flags, 211 bcm_qos_map_t *map, int map_id); 212 extern int bcm_tr_qos_multi_get(int unit, int array_size, int *map_ids_array, 213 int *flags_array, int *array_count); 214 extern int bcm_tr_qos_map_multi_get(int unit, uint32 flags, 215 int map_id, int array_size, 216 bcm_qos_map_t *array, int *array_count); 217 extern int bcm_tr_qos_port_map_set(int unit, bcm_gport_t port, int ing_map, 218 int egr_map); 219 extern int _bcm_tr_qos_id2idx(int unit, int map_id, int *hw_idx); 220 extern int _bcm_tr_qos_idx2id(int unit, int hw_idx, int type, int *map_id); 221 222 223 #ifdef BCM_FIELD_SUPPORT 224 extern int _bcm_field_tr_init(int unit, _field_control_t *fc); 225 extern int _bcm_field_tr_external_tcam_key_mask_get(int unit, 226 _field_entry_t *f_ent); 227 extern int _bcm_field_tr_multipath_hashcontrol_get(int unit, int *arg); 228 extern int _bcm_field_tr_multipath_hashcontrol_set(int unit, int arg); 229 extern int _bcm_field_tr_external_entry_move(int unit, 230 _field_entry_t *f_ent, 231 int index1, int index2); 232 extern int _bcm_field_tr_external_group_remove(int unit, _field_group_t *fg); 233 extern int _bcm_field_tr_external_counter_idx_get(int unit, 234 uint8 slice_number, 235 bcm_field_entry_t entry_index, 236 int *idx); 237 extern int _bcm_field_tr_external_counters_collect(int unit, 238 _field_stage_t *stage_fc); 239 extern int _bcm_field_tr_external_policy_mem_get(int unit, 240 _field_action_t *fa, 241 soc_mem_t *mem); 242 extern int _bcm_field_tr_external_mode_set(int unit, uint8 slice_numb, 243 _field_group_t *fg, uint8 flags); 244 extern int _bcm_field_tr_external_slice_clear(int unit, _field_group_t *fg); 245 extern int _bcm_field_tr_external_init(int unit, _field_stage_t *stage_fc); 246 extern int _bcm_field_tr_hw_clear(int unit, _field_stage_t *stage_fc); 247 extern int _bcm_field_tr_detach(int unit, _field_control_t *fc); 248 extern int _bcm_field_tr_selcode_get(int unit, _field_stage_t *stage_fc, 249 bcm_field_qset_t *qset_req, 250 _field_group_t *fg); 251 extern int _bcm_field_tr_entry_install(int unit, _field_entry_t *f_ent, 252 int tcam_idx); 253 extern int _bcm_field_tr_entry_reinstall(int unit, _field_entry_t *f_ent, 254 int tcam_idx); 255 extern int _bcm_field_tr_write_slice_map(int unit, _field_stage_t *stage_fc, 256 _field_group_t *fg); 257 extern int _bcm_field_tr_counter_get(int unit, _field_stage_t *stage_fc, 258 soc_mem_t counter_x_mem, uint32 *mem_x_buf, 259 soc_mem_t counter_y_mem, uint32 *mem_y_buf, 260 int idx, uint64 *packet_count, 261 uint64 *byte_count); 262 extern int _bcm_field_tr_counter_set(int unit, _field_stage_t *stage_fc, 263 soc_mem_t counter_x_mem, uint32 *mem_x_buf, 264 soc_mem_t counter_y_mem, uint32 *mem_y_buf, 265 int idx, uint64 *packet_count, 266 uint64 *byte_count); 267 extern int _bcm_field_tr_external_entry_install(int unit, 268 _field_entry_t *f_ent); 269 extern int _bcm_field_tr_external_entry_reinstall(int unit, 270 _field_entry_t *f_ent); 271 extern int _bcm_field_tr_external_entry_remove(int unit, _field_entry_t *f_ent); 272 extern int _bcm_field_tr_external_entry_prio_set(int unit, _field_entry_t *f_ent, 273 int prio); 274 #endif /* BCM_FIELD_SUPPORT */ 275 276 #ifdef INCLUDE_L3 277 278 struct _bcm_l3_trvrs_data_s; 279 extern int _bcm_tr_l3_enable(int unit, bcm_port_t port, uint32 flags, int enable); 280 extern int _bcm_tr_l3_ingress_interface_clr(int unit, int intf_id); 281 extern int _bcm_tr_l3_intf_class_set(int unit, bcm_vlan_t vid, uint32 intf_class); 282 extern int _bcm_tr_l3_intf_nat_realm_id_get(int unit, bcm_vlan_t vid, 283 int *realm_id); 284 extern int _bcm_tr_l3_intf_nat_realm_id_set(int unit, bcm_vlan_t vid, 285 int realm_id); 286 extern int _bcm_tr_l3_intf_vrf_get(int unit, bcm_vlan_t vid, bcm_vrf_t *vrf); 287 extern int _bcm_tr_l3_intf_vrf_bind(int unit, bcm_vlan_t vid, bcm_vrf_t vrf); 288 extern int _bcm_tr_l3_intf_global_route_enable_get(int unit, bcm_vlan_t vid, 289 int *enable); 290 extern int _bcm_tr_l3_intf_global_route_enable_set(int unit, bcm_vlan_t vid, 291 int enable); 292 extern int _bcm_tr_l3_ipmc_get(int unit, _bcm_l3_cfg_t *l3cfg); 293 extern int _bcm_tr_l3_ipmc_add(int unit, _bcm_l3_cfg_t *l3cfg); 294 extern int _bcm_tr_l3_ipmc_del(int unit, _bcm_l3_cfg_t *l3cfg); 295 extern int _bcm_tr_l3_ipmc_get_by_idx(int unit, void *dma_ptr, int idx, 296 _bcm_l3_cfg_t *l3cfg); 297 extern int _bcm_tr_l3_defip_mem_get(int unit, uint32 flags, 298 int plen, soc_mem_t *mem); 299 extern void _bcm_tr_l3_ipmc_ent_init(int unit, uint32 *l3x_entry, 300 _bcm_l3_cfg_t *l3cfg); 301 extern int _bcm_tr_defip_init(int unit); 302 extern int _bcm_tr_defip_deinit(int unit); 303 extern int _bcm_tr_l3_intf_mtu_get(int unit, _bcm_l3_intf_cfg_t *intf_info); 304 extern int _bcm_tr_l3_intf_mtu_set(int unit, _bcm_l3_intf_cfg_t *intf_info); 305 extern int _bcm_tr_ext_lpm_init(int unit, soc_mem_t mem); 306 extern int _bcm_tr_ext_lpm_deinit(int unit, soc_mem_t mem); 307 extern int _bcm_tr_ext_lpm_add(int unit, _bcm_defip_cfg_t *data, 308 int nh_ecmp_idx); 309 extern int _bcm_tr_ext_lpm_delete(int unit, _bcm_defip_cfg_t *key); 310 extern int _bcm_tr_ext_lpm_match(int unit, _bcm_defip_cfg_t *key, 311 int *next_hop_index); 312 extern int _bcm_tr_defip_traverse(int unit, struct _bcm_l3_trvrs_data_s *trv_data); 313 314 extern int bcm_tr_ipmc_init(int unit); 315 extern int bcm_tr_ipmc_detach(int unit); 316 extern int bcm_tr_ipmc_get(int unit, int index, bcm_ipmc_addr_t *ipmc); 317 extern int bcm_tr_ipmc_lookup(int unit, int *index, bcm_ipmc_addr_t *ipmc); 318 extern int bcm_tr_ipmc_add(int unit, bcm_ipmc_addr_t *ipmc); 319 extern int bcm_tr_ipmc_put(int unit, int index, bcm_ipmc_addr_t *ipmc); 320 extern int bcm_tr_ipmc_write (int unit, int ipmc_id, bcm_ipmc_addr_t *ipmc); 321 extern int bcm_tr_ipmc_delete(int unit, bcm_ipmc_addr_t *ipmc); 322 extern int bcm_tr_ipmc_delete_all(int unit); 323 extern int bcm_tr_ipmc_age(int unit, uint32 flags, bcm_ipmc_traverse_cb age_cb, 324 void *user_data); 325 extern int bcm_tr_ipmc_traverse(int unit, uint32 flags, 326 bcm_ipmc_traverse_cb cb, void *user_data); 327 extern int bcm_tr_ipmc_enable(int unit, int enable); 328 extern int bcm_tr_ipmc_src_port_check(int unit, int enable); 329 extern int bcm_tr_ipmc_src_ip_search(int unit, int enable); 330 extern int bcm_tr_ipmc_egress_port_set(int unit, bcm_port_t port, 331 const bcm_mac_t mac, int untag, 332 bcm_vlan_t vid, int ttl_threshold); 333 extern int bcm_tr_ipmc_egress_port_get(int unit, bcm_port_t port, 334 sal_mac_addr_t mac, int *untag, 335 bcm_vlan_t *vid, int *ttl_threshold); 336 extern int _bcm_tr_ipmc_src_port_consistency_check(int unit, int ipmc_index, 337 bcm_ipmc_addr_t *ipmc, int already_used, int *need_write); 338 339 340 #ifdef BCM_WARM_BOOT_SUPPORT 341 extern int _bcm_tr_ipmc_reinit(int unit); 342 #else 343 #define _bcm_tr_ipmc_reinit(_u) (BCM_E_UNAVAIL) 344 #endif /* BCM_WARM_BOOT_SUPPORT */ 345 346 #ifndef BCM_SW_STATE_DUMP_DISABLE 347 extern void _bcm_tr_ipmc_sw_dump(int unit); 348 #endif /* BCM_SW_STATE_DUMP_DISABLE */ 349 350 extern int bcm_tr_mpls_lock (int unit); 351 extern void bcm_tr_mpls_unlock(int unit); 352 extern int bcm_tr_mpls_init(int unit); 353 extern int bcm_tr_mpls_cleanup(int unit); 354 #ifdef BCM_WARM_BOOT_SUPPORT 355 extern int bcm_tr_mpls_sync(int unit); 356 #endif 357 extern int bcm_tr_mpls_vpn_id_create(int unit, bcm_mpls_vpn_config_t *info); 358 extern int bcm_tr_mpls_vpn_id_destroy(int unit, bcm_vpn_t vpn); 359 extern int bcm_tr_mpls_vpn_id_get( int unit, bcm_vpn_t vpn, bcm_mpls_vpn_config_t *info); 360 extern int bcm_tr_mpls_vpn_id_destroy_all(int unit); 361 extern int bcm_tr_mpls_vpn_traverse(int unit, bcm_mpls_vpn_traverse_cb cb, void *user_data); 362 extern int bcm_tr_mpls_port_add(int unit, bcm_vpn_t vpn, 363 bcm_mpls_port_t *mpls_port); 364 extern int bcm_tr_mpls_port_delete(int unit, bcm_vpn_t vpn, bcm_gport_t mpls_port_id); 365 extern int bcm_tr_mpls_port_delete_all(int unit, bcm_vpn_t vpn); 366 extern int bcm_tr_mpls_port_get(int unit, bcm_vpn_t vpn, 367 bcm_mpls_port_t *mpls_port); 368 extern int bcm_tr_mpls_port_get_all(int unit, bcm_vpn_t vpn, int port_max, 369 bcm_mpls_port_t *port_array, int *port_count); 370 extern int bcm_tr_mpls_tunnel_initiator_set(int unit, bcm_if_t intf, int num_labels, 371 bcm_mpls_egress_label_t *label_array); 372 extern int bcm_tr_mpls_tunnel_initiator_clear(int unit, bcm_if_t intf); 373 extern int bcm_tr_mpls_tunnel_initiator_get(int unit, bcm_if_t intf, int label_max, 374 bcm_mpls_egress_label_t *label_array, 375 int *label_count); 376 extern int _bcm_tr_mpls_tunnel_chain_label_count_get(int unit, uint32 index, 377 int *label_count); 378 extern int bcm_tr_mpls_tunnel_initiator_clear_all(int unit); 379 extern int bcm_tr_mpls_tunnel_switch_add(int unit, bcm_mpls_tunnel_switch_t *info); 380 extern int bcm_tr_mpls_tunnel_switch_delete(int unit, bcm_mpls_tunnel_switch_t *info); 381 extern int bcm_tr_mpls_tunnel_switch_delete_all(int unit); 382 extern int bcm_tr_mpls_tunnel_switch_get(int unit, bcm_mpls_tunnel_switch_t *info); 383 extern int bcm_tr_mpls_tunnel_switch_traverse(int unit, 384 bcm_mpls_tunnel_switch_traverse_cb cb, 385 void *user_data); 386 extern int bcm_tr_mpls_exp_map_create(int unit, uint32 flags, int *exp_map_id); 387 extern int bcm_tr_mpls_exp_map_destroy(int unit, int exp_map_id); 388 extern int bcm_tr_mpls_exp_map_destroy_all(int unit); 389 extern int bcm_tr_mpls_exp_map_set(int unit, int exp_map_id, 390 bcm_mpls_exp_map_t *exp_map); 391 extern int bcm_tr_mpls_exp_map_get(int unit, int exp_map_id, 392 bcm_mpls_exp_map_t *exp_map); 393 extern int _bcm_tr_get_ing_mpls_index_size(int unit); 394 #ifdef BCM_APACHE_SUPPORT 395 extern int bcm_tr_mpls_exp_to_phb_cng_map_create(int unit, uint32 flags, 396 int *exp_map_id); 397 extern int bcm_tr_mpls_exp_to_phb_cng_map_destroy(int unit, int exp_map_id); 398 extern int bcm_tr_mpls_exp_to_phb_cng_map_set(int unit, int exp_map_id, 399 bcm_mpls_exp_map_t *exp_map); 400 extern int bcm_tr_mpls_exp_map_get(int unit, int exp_map_id, 401 bcm_mpls_exp_map_t *exp_map); 402 extern int bcm_tr_mpls_exp_to_phb_cng_map_profile_id_get(int unit, uint32 flags, 403 int exp_map_id, int *profile_id); 404 extern int bcm_tr_mpls_exp_to_phb_cng_map_usage_get(int unit, uint32 flags, 405 int exp_map_id); 406 407 extern int bcm_tr_mpls_exp_to_phb_cng_map_profile_range_get(int unit, 408 uint32 flags, 409 int *count); 410 #endif 411 extern int bcm_tr_mpls_label_stat_get(int unit, int sync_mode, 412 bcm_mpls_label_t label, 413 bcm_gport_t port, 414 bcm_mpls_stat_t stat, 415 uint64 *val); 416 extern int bcm_tr_mpls_label_stat_get32(int unit, int sync_mode, 417 bcm_mpls_label_t label, 418 bcm_gport_t port, 419 bcm_mpls_stat_t stat, 420 uint32 *val); 421 extern int bcm_tr_mpls_label_stat_clear(int unit, bcm_mpls_label_t label, bcm_gport_t port, 422 bcm_mpls_stat_t stat); 423 extern int _bcm_tr_mpls_port_resolve(int unit, bcm_gport_t mpls_port, 424 bcm_module_t *modid, bcm_port_t *port, 425 bcm_trunk_t *trunk_id, int *id); 426 extern int bcm_tr_mpls_port_learn_set(int unit, bcm_gport_t port, uint32 flags); 427 extern int bcm_tr_mpls_port_learn_get(int unit, bcm_gport_t port, uint32 *flags); 428 extern int bcm_tr_mpls_mcast_flood_set(int unit, bcm_vlan_t vlan, 429 bcm_vlan_mcast_flood_t mode); 430 extern int bcm_tr_mpls_mcast_flood_get(int unit, bcm_vlan_t vlan, 431 bcm_vlan_mcast_flood_t *mode); 432 extern int bcm_tr_mpls_port_phys_gport_get(int unit, int vp, bcm_gport_t *gp); 433 extern int bcm_tr_mpls_l3_nh_info_add(int unit, bcm_mpls_tunnel_switch_t *info, int *nh_index); 434 extern int bcm_tr_mpls_l3_nh_info_delete(int unit, int nh_index); 435 extern int bcm_tr_mpls_l3_nh_info_get(int unit, bcm_mpls_tunnel_switch_t *info, int nh_index); 436 extern int bcm_tr_mpls_get_vp_nh (int unit, int vp_index, bcm_if_t *egress_if); 437 extern int bcm_tr_mpls_egress_entry_modify(int unit, int nh_index, 438 int mpath_flag, int new_entry_type); 439 extern int bcm_tr_mpls_egress_entry_mac_replace(int unit, int nh_index, bcm_l3_egress_t *egr); 440 extern void bcm_tr_mpls_pw_used_clear(int unit, int pw_cnt); 441 extern int bcm_tr_mpls_pw_used_get(int unit, int pw_cnt); 442 extern void bcm_tr_mpls_pw_used_set(int unit, int pw_cnt); 443 extern int bcm_tr_mpls_vrf_used_get(int unit, int vrf); 444 extern int bcm_tr_mpls_port_independent_range (int unit, bcm_mpls_label_t label, bcm_gport_t port ); 445 extern int bcm_tr_mpls_tunnel_intf_valid (int unit, int nh_index); 446 extern int bcm_tr_mpls_get_label_action (int unit, int nh_index, uint32 *label_action ); 447 extern int _bcm_tr_mpls_match_delete(int unit, int vp, bcm_mpls_port_t *mpls_port, int sw_clear); 448 extern int _bcm_tr_mpls_match_add(int unit, bcm_mpls_port_t *mpls_port, int vp, int vpn, int hw_update); 449 extern int _bcm_tr_mpls_match_failover_update(int unit, int vp, int fo_vp); 450 extern int _bcm_tr_mpls_failover_nw_port_match_get(int unit, bcm_mpls_port_t *mpls_port, 451 int vp, mpls_entry_entry_t *return_ment); 452 extern int _bcm_esw_mpls_match_delete(int unit, int vp, int sw_clear); 453 extern int _bcm_esw_mpls_match_failover_update(int unit, int vp, int fo_vp); 454 extern int _bcm_esw_mpls_match_add(int unit, bcm_mpls_port_t *mpls_port, int vp, 455 int vpn, int update); 456 extern int _bcm_tr_mpls_match_get(int unit, bcm_mpls_port_t *mpls_port, int vp); 457 extern int _bcm_esw_mpls_match_get(int unit, bcm_mpls_port_t *mpls_port, int vp); 458 extern int _bcm_esw_mpls_failover_nw_port_match_get(int unit, 459 bcm_mpls_port_t *mpls_port, int vp, mpls_entry_entry_t *return_ment); 460 extern int _bcm_esw_mpls_tunnel_switch_delete_all (int unit); 461 extern int bcm_tr_mpls_port_untagged_profile_set (int unit, bcm_port_t port); 462 extern int bcm_tr_mpls_port_untagged_profile_reset(int unit, bcm_port_t port); 463 extern void bcm_tr_mpls_match_clear (int unit, int vp); 464 extern void bcm_tr_mpls_port_match_count_adjust(int unit, int vp, int step); 465 extern int bcm_tr_mpls_trunk_member_add(int unit, bcm_trunk_t trunk_id, 466 int trunk_member_count, 467 bcm_port_t *trunk_member_array); 468 extern int bcm_tr_mpls_trunk_member_delete(int unit, bcm_trunk_t trunk_id, 469 int trunk_member_count, 470 bcm_port_t *trunk_member_array); 471 extern int _bcm_esw_mpls_trunk_member_add(int unit, bcm_trunk_t trunk_id, 472 int trunk_member_count, 473 bcm_port_t *trunk_member_array); 474 extern int _bcm_esw_mpls_trunk_member_delete(int unit, bcm_trunk_t trunk_id, 475 int trunk_member_count, 476 bcm_port_t *trunk_member_array); 477 extern int bcm_tr_mpls_match_trunk_add(int unit, bcm_trunk_t tgid, int vp); 478 extern int bcm_tr_mpls_match_trunk_delete(int unit, bcm_trunk_t tgid, int vp); 479 extern int _bcm_tr_mpls_vpless_failover_nh_index_find (int unit, int vp, 480 int primary_nh_index, int *fo_nh_index); 481 482 extern int _bcm_tr_vlan_translate_vp_add(int unit, 483 bcm_gport_t port, 484 bcm_vlan_translate_key_t key_type, 485 bcm_vlan_t outer_vlan, 486 bcm_vlan_t inner_vlan, 487 int vp, 488 bcm_vlan_action_set_t *action, 489 int *existing_updated); 490 extern int _bcm_tr_lltag_vlan_translate_vp_add(int unit, 491 bcm_gport_t port, 492 bcm_vlan_translate_key_t key_type, 493 bcm_vlan_t lltag_vlan, 494 bcm_vlan_t other_vlan, 495 int vp, bcm_vlan_action_set_t *action); 496 extern int _bcm_tr_vlan_translate_vp_delete(int unit, 497 bcm_gport_t port, 498 bcm_vlan_translate_key_t key_type, 499 bcm_vlan_t outer_vlan, 500 bcm_vlan_t inner_vlan, 501 int vp); 502 extern int _bcm_tr_lltag_vlan_translate_vp_delete(int unit, 503 bcm_gport_t port, 504 bcm_vlan_translate_key_t key_type, 505 bcm_vlan_t lltag_vlan, 506 bcm_vlan_t other_vlan, 507 int vp); 508 extern int bcm_tr_subport_init(int unit); 509 extern int bcm_tr_subport_cleanup(int unit); 510 extern int bcm_tr_subport_group_create(int unit, bcm_subport_group_config_t *config, 511 bcm_gport_t *group); 512 extern int bcm_tr_subport_group_destroy(int unit, bcm_gport_t group); 513 extern int bcm_tr_subport_group_get(int unit, bcm_gport_t group, 514 bcm_subport_group_config_t *config); 515 extern int bcm_tr_subport_port_add(int unit, bcm_subport_config_t *config, 516 bcm_gport_t *port); 517 extern int bcm_tr_subport_port_delete(int unit, bcm_gport_t port); 518 extern int bcm_tr_subport_port_get(int unit, bcm_gport_t port, 519 bcm_subport_config_t *config); 520 extern int bcm_tr_subport_port_traverse(int unit, bcm_subport_port_traverse_cb cb, 521 void *user_data); 522 extern int _bcm_tr_subport_group_resolve(int unit, bcm_gport_t gport, 523 bcm_module_t *modid, bcm_port_t *port, 524 bcm_trunk_t *trunk_id, int *id); 525 extern int _bcm_tr_subport_port_resolve(int unit, bcm_gport_t gport, 526 bcm_module_t *modid, bcm_port_t *port, 527 bcm_trunk_t *trunk_id, int *id); 528 extern int bcm_tr_subport_learn_set(int unit, bcm_gport_t port, uint32 flags); 529 extern int bcm_tr_subport_learn_get(int unit, bcm_gport_t port, uint32 *flags); 530 extern int _bcm_tr_subport_group_find(int unit, int vp, int *grp); 531 extern int bcm_tr_multicast_vpls_encap_get(int unit, bcm_multicast_t group, bcm_gport_t port, 532 bcm_gport_t mpls_port_id, bcm_if_t *encap_id); 533 extern int bcm_tr_multicast_subport_encap_get(int unit, bcm_multicast_t group, bcm_gport_t port, 534 bcm_gport_t subport, bcm_if_t *encap_id); 535 extern int bcm_trx_multicast_egress_delete_all(int unit, bcm_multicast_t group); 536 extern int bcm_trx_multicast_egress_set(int unit, bcm_multicast_t group, 537 int port_count, bcm_gport_t *port_array, 538 bcm_if_t *encap_array); 539 extern int bcm_tr_mpls_swap_nh_info_add(int unit, bcm_l3_egress_t *egr, int nh_index, uint32 flags); 540 extern int bcm_tr_mpls_swap_nh_info_delete(int unit, int nh_index); 541 extern int bcm_tr_mpls_swap_nh_info_get(int unit, bcm_l3_egress_t *egr, int nh_index); 542 extern int bcm_tr_mpls_update_vp_nh ( int unit, int index); 543 extern int bcm_tr_mpls_l3_label_add (int unit, bcm_l3_egress_t *egr, int index, uint32 flags); 544 extern int bcm_tr_mpls_l3_label_delete (int unit, int index); 545 extern int bcm_tr_mpls_l3_label_get (int unit, int index, bcm_l3_egress_t *nh_info); 546 extern int bcm_tr_mpls_get_entry_type (int unit, int nh_index, uint32 *entry_type ); 547 extern void bcm_tr_mpls_entry_internal_qos_set(int unit, bcm_mpls_port_t *mpls_port, 548 bcm_mpls_tunnel_switch_t *info, mpls_entry_entry_t *ment); 549 extern void _bcm_tr_mpls_vc_and_swap_ref_count_adjust (int unit, int index, int step); 550 #if defined(BCM_TRIUMPH3_SUPPORT) 551 extern int _bcm_tr_mpls_vc_and_swap_table_entry_adjust (int unit, int vp); 552 #endif 553 /* trx mpls hash related functions */ 554 extern int 555 bcmi_tr_mpls_vc_swap_hash_index_get(int unit, bcm_mpls_port_t *mpls_port, 556 int action, bcm_mpls_tunnel_switch_t *info, 557 bcm_l3_egress_t *egr_obj, 558 egr_mpls_vc_and_swap_label_table_entry_t *vc_entry, 559 int *idx); 560 extern int 561 bcmi_tr_mpls_vc_swap_hash_delete(int unit, 562 bcm_tr_mpls_vc_swap_table_hash_t *hash, 563 int vc_swap_idx); 564 extern int 565 bcmi_tr_mpls_vc_swap_hash_insert(int unit, 566 bcm_tr_mpls_vc_swap_table_hash_t *hash, 567 int table_idx, bcm_mpls_port_t *mpls_port, 568 bcm_mpls_tunnel_switch_t *info, bcm_l3_egress_t *egr_obj, 569 egr_mpls_vc_and_swap_label_table_entry_t *vc_entry, 570 int action, int *vc_swap_index, int cmp); 571 572 extern int 573 _bcm_tr_mpls_get_vc_and_swap_table_index (int unit, int flags, 574 bcm_mpls_port_t *mpls_port, 575 bcm_mpls_tunnel_switch_t *info, 576 bcm_l3_egress_t *egr_obj, 577 egr_mpls_vc_and_swap_label_table_entry_t *vc_entry, 578 int action, int *vc_swap_index); 579 extern int 580 _bcm_tr_mpls_vc_and_swap_table_index_reset (int unit, int vc_swap_index); 581 582 #if defined(BCM_TRIDENT2_SUPPORT) 583 extern int bcm_td2_mpls_port_source_vp_lag_set(int unit, bcm_gport_t gport, int vp_lag_vp); 584 extern int bcm_td2_mpls_port_source_vp_lag_clear(int unit, bcm_gport_t gport, int vp_lag_vp); 585 extern int bcm_td2_mpls_port_source_vp_lag_get(int unit, bcm_gport_t gport, int *vp_lag_vp); 586 #endif 587 #if defined(BCM_TRIDENT3_SUPPORT) 588 extern int bcmi_td3_mpls_php_vcswap_info_add(int unit, bcm_mpls_tunnel_switch_t *info, int *nh_index); 589 590 extern int bcmi_td3_mpls_php_vcswap_info_delete(int unit, int nh_index, int dest_type); 591 #endif 592 #endif /* INCLUDE_L3 */ 593 extern int bcm_tr_cosq_init(int unit); 594 extern int bcm_tr_cosq_detach(int unit, int software_state_only); 595 extern int bcm_tr_cosq_config_set(int unit, int numq); 596 extern int bcm_tr_cosq_config_get(int unit, int *numq); 597 extern int bcm_tr_cosq_mapping_set(int unit, bcm_port_t port, 598 bcm_cos_t priority, bcm_cos_queue_t cosq); 599 extern int bcm_tr_cosq_mapping_get(int unit, bcm_port_t port, 600 bcm_cos_t priority, bcm_cos_queue_t *cosq); 601 extern int bcm_tr_cosq_port_bandwidth_set(int unit, bcm_port_t port, 602 bcm_cos_queue_t cosq, 603 uint32 kbits_sec_min, 604 uint32 kbits_sec_max, 605 uint32 kbits_sec_burst, 606 uint32 flags); 607 extern int bcm_tr_cosq_port_bandwidth_get(int unit, bcm_port_t port, 608 bcm_cos_queue_t cosq, 609 uint32 *kbits_sec_min, 610 uint32 *kbits_sec_max, 611 uint32 *kbits_sec_burst, 612 uint32 *flags); 613 extern int bcm_tr_cosq_port_pps_set(int unit, bcm_port_t port, 614 bcm_cos_queue_t cosq, int pps); 615 extern int bcm_tr_cosq_port_pps_get(int unit, bcm_port_t port, 616 bcm_cos_queue_t cosq, int *pps); 617 extern int bcm_tr_cosq_port_burst_set(int unit, bcm_port_t port, 618 bcm_cos_queue_t cosq, int burst); 619 extern int bcm_tr_cosq_port_burst_get(int unit, bcm_port_t port, 620 bcm_cos_queue_t cosq, int *burst); 621 extern int bcm_tr_cosq_discard_set(int unit, uint32 flags); 622 extern int bcm_tr_cosq_discard_get(int unit, uint32 *flags); 623 extern int bcm_tr_cosq_discard_port_set(int unit, bcm_port_t port, 624 bcm_cos_queue_t cosq, uint32 color, 625 int drop_start, int drop_slope, 626 int average_time); 627 extern int bcm_tr_cosq_discard_port_get(int unit, bcm_port_t port, 628 bcm_cos_queue_t cosq, uint32 color, 629 int *drop_start, int *drop_slope, 630 int *average_time); 631 extern int bcm_tr_cosq_gport_discard_set(int unit, bcm_gport_t port, 632 bcm_cos_queue_t cosq, 633 bcm_cosq_gport_discard_t *discard); 634 extern int bcm_tr_cosq_gport_discard_get(int unit, bcm_gport_t port, 635 bcm_cos_queue_t cosq, 636 bcm_cosq_gport_discard_t *discard); 637 extern int bcm_tr_cosq_port_sched_set(int unit, bcm_pbmp_t pbm, 638 int mode, const int weights[], int delay); 639 extern int bcm_tr_cosq_port_sched_get(int unit, bcm_pbmp_t pbm, 640 int *mode, int weights[], int *delay); 641 extern int bcm_tr_cosq_sched_weight_max_get(int unit, int mode, 642 int *weight_max); 643 extern int bcm_tr_cosq_gport_add(int unit, bcm_gport_t port, int numq, 644 uint32 flags, bcm_gport_t *gport); 645 extern int bcm_tr_cosq_gport_delete(int unit, bcm_gport_t gport); 646 extern int bcm_tr_cosq_gport_traverse(int unit, bcm_cosq_gport_traverse_cb cb, 647 void *user_data); 648 649 extern int bcm_tr_cosq_gport_bandwidth_set(int unit, bcm_gport_t gport, 650 bcm_cos_queue_t cosq, 651 uint32 kbits_sec_min, 652 uint32 kbits_sec_max, 653 uint32 flags); 654 extern int bcm_tr_cosq_gport_bandwidth_get(int unit, bcm_gport_t gport, 655 bcm_cos_queue_t cosq, 656 uint32 *kbits_sec_min, 657 uint32 *kbits_sec_max, 658 uint32 *flags); 659 extern int bcm_tr_cosq_gport_bandwidth_burst_set(int unit, bcm_gport_t gport, 660 bcm_cos_queue_t cosq, 661 uint32 kbits_burst_min, 662 uint32 kbits_burst_max); 663 extern int bcm_tr_cosq_gport_bandwidth_burst_get(int unit, bcm_gport_t gport, 664 bcm_cos_queue_t cosq, 665 uint32 *kbits_burst_min, 666 uint32 *kbits_burst_max); 667 extern int bcm_tr_cosq_gport_sched_set(int unit, bcm_gport_t gport, 668 bcm_cos_queue_t cosq, int mode, 669 int weight); 670 extern int bcm_tr_cosq_gport_sched_get(int unit, bcm_gport_t gport, 671 bcm_cos_queue_t cosq, int *mode, 672 int *weight); 673 extern int bcm_tr_cosq_gport_attach(int unit, bcm_gport_t sched_gport, 674 bcm_cos_queue_t cosq, bcm_gport_t input_gport); 675 extern int bcm_tr_cosq_gport_detach(int unit, bcm_gport_t sched_gport, 676 bcm_cos_queue_t cosq, bcm_gport_t input_gport); 677 extern int bcm_tr_cosq_gport_attach_get(int unit, bcm_gport_t sched_gport, 678 bcm_cos_queue_t *cosq, bcm_gport_t *input_gport); 679 extern int _bcm_tr_cosq_port_resolve(int unit, bcm_gport_t gport, 680 bcm_module_t *modid, bcm_port_t *port, 681 bcm_trunk_t *trunk_id, int *id); 682 extern int _bcm_l2_hash_dynamic_replace(int unit, l2x_entry_t *l2x_entry); 683 extern int _bcm_l2_hash_pending_override(int unit, l2x_entry_t *l2x_entry); 684 extern int bcm_bfd_l2_hash_dynamic_replace(int unit, l2x_entry_t *l2x_entry); 685 #ifdef BCM_WARM_BOOT_SUPPORT 686 extern int bcm_tr_cosq_sync(int unit); 687 #endif /* BCM_WARM_BOOT_SUPPORT */ 688 #ifndef BCM_SW_STATE_DUMP_DISABLE 689 extern void bcm_tr_cosq_sw_dump(int unit); 690 #endif /* BCM_SW_STATE_DUMP_DISABLE */ 691 692 extern int _bcm_sb2_ing_service_pri_map_info_get(int unit, int pri_map_id, 693 uint32 *hw_idx, uint32 *pri_mode); 694 extern int 695 _bcm_sb2_service_pri_map_flags_max_pri_get(uint32 flags, int *max_pri); 696 extern int 697 _bcm_sb2_service_pri_map_flags_pri_set(uint32 flags, int pri, bcm_qos_map_t *map); 698 extern int _bcm_sb2_service_pri_map_info_id_get(int unit, uint32 hw_idx, int *pri_map_id); 699 extern int _bcm_sb2_service_pri_map_reference_add(int unit, int pri_map_id); 700 extern int _bcm_tr_mpls_pw_term_counter_set(int unit, int *pw_term_cnt); 701 int _bcm_tr_mpls_vpws_egress_if_get(int unit, bcm_gport_t gport, bcm_if_t *egress_if); 702 703 #endif /* BCM_TRX_SUPPORT */ 704 #endif /* !_BCM_INT_TRIUMPH_H_ */