triumph2.h (44808B)
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: triumph2.h 8 * Purpose: Function declarations for Triumph 2 bcm functions 9 */ 10 11 #ifndef _BCM_INT_TRIUMPH2_H_ 12 #define _BCM_INT_TRIUMPH2_H_ 13 #if defined(BCM_TRIUMPH2_SUPPORT) 14 #include <bcm_int/esw/mbcm.h> 15 #include <bcm_int/esw/oam.h> 16 #include <bcm_int/esw/field.h> 17 #include <bcm_int/esw/vlan.h> 18 #include <soc/tnl_term.h> 19 #include <bcm/qos.h> 20 21 22 23 #define _BCM_QOS_MAP_TYPE_ING_PRI_CNG_MAP 1 24 #define _BCM_QOS_MAP_TYPE_EGR_MPLS_MAPS 2 25 #define _BCM_QOS_MAP_TYPE_DSCP_TABLE 3 26 #define _BCM_QOS_MAP_TYPE_EGR_DSCP_TABLE 4 27 #define _BCM_QOS_MAP_TYPE_ING_QUEUE_OFFSET_MAP_TABLE 5 28 #define _BCM_QOS_MAP_TYPE_SERVICE_PRI_MAP_TABLE 6 29 #define _BCM_QOS_MAP_TYPE_RQE_QUEUE_OFFSET_MAP 7 30 #define _BCM_QOS_MAP_TYPE_EXP_TO_PHB_CNG_MAP 8 31 32 #if defined(INCLUDE_L3) 33 extern int _bcm_tr2_l3_tnl_term_add(int unit, uint32 *entry_ptr, 34 bcm_tunnel_terminator_t *tnl_info); 35 extern int _bcm_tr2_l3_tnl_term_entry_init(int unit, 36 bcm_tunnel_terminator_t *tnl_info, 37 soc_tunnel_term_t *entry); 38 extern int _bcm_tr2_l3_tnl_term_entry_parse(int unit, soc_tunnel_term_t *entry, 39 bcm_tunnel_terminator_t *tnl_info); 40 extern int _bcm_tr2_l3_intf_urpf_default_route_set(int unit, 41 bcm_vlan_t vid, 42 int enable); 43 extern int _bcm_tr2_l3_intf_urpf_default_route_get (int unit, 44 bcm_vlan_t vid, 45 int *enable); 46 extern int _bcm_tr2_l3_intf_urpf_mode_set(int unit, bcm_vlan_t vid, 47 bcm_vlan_urpf_mode_t urpf_mode); 48 extern int _bcm_tr2_l3_intf_urpf_mode_get(int unit, bcm_vlan_t vid, 49 bcm_vlan_urpf_mode_t *urpf_mode); 50 51 extern int bcm_tr2_l3_ecmp_defragment_buffer_init(int unit); 52 extern void bcm_tr2_l3_ecmp_defragment_buffer_deinit(int unit); 53 extern int bcm_tr2_l3_ecmp_defragment_buffer_set(int unit, int size); 54 extern int bcm_tr2_l3_ecmp_defragment_buffer_get(int unit, int *size); 55 extern int bcm_tr2_l3_ecmp_defragment(int unit); 56 extern int bcm_tr2_l3_ecmp_defragment_no_lock(int unit, int ecmp_level); 57 58 extern int _bcm_tr2_l3_ecmp_member_copy(int unit, int src_index, int dst_index); 59 extern int _bcm_tr2_l3_ecmp_member_clear(int unit, int index); 60 extern int _bcm_tr2_l3_ecmp_group_base_ptr_update(int unit, int group, int base_ptr); 61 62 extern int bcm_tr2_ipmc_repl_init(int unit); 63 extern int bcm_tr2_ipmc_repl_detach(int unit); 64 extern int bcm_tr2_ipmc_repl_set(int unit, int ipmc_id, bcm_port_t port, 65 bcm_vlan_vector_t vlan_vec); 66 extern int bcm_tr2_ipmc_repl_get(int unit, int index, bcm_port_t port, 67 bcm_vlan_vector_t vlan_vec); 68 extern int bcm_tr2_ipmc_repl_add(int unit, int index, bcm_port_t port, 69 bcm_vlan_t vlan); 70 extern int bcm_tr2_ipmc_repl_delete(int unit, int index, bcm_port_t port, 71 bcm_vlan_t vlan); 72 extern int bcm_tr2_ipmc_repl_delete_all(int unit, int index, 73 bcm_port_t port); 74 extern int bcm_tr2_ipmc_egress_intf_add(int unit, int index, bcm_port_t port, 75 bcm_l3_intf_t *l3_intf); 76 extern int bcm_tr2_ipmc_egress_intf_delete(int unit, int index, bcm_port_t port, 77 bcm_l3_intf_t *l3_intf); 78 extern int bcm_tr2_ipmc_egress_intf_set(int unit, int mc_index, 79 bcm_port_t port, int if_count, 80 bcm_if_t *if_array, int check_port); 81 extern int bcm_tr2_ipmc_egress_intf_get(int unit, int mc_index, 82 bcm_port_t port, 83 int if_max, bcm_if_t *if_array, 84 int *if_count); 85 extern int _bcm_tr2_ipmc_egress_intf_add(int unit, int ipmc_id, bcm_port_t port, 86 int nh_index); 87 extern int _bcm_tr2_ipmc_egress_intf_delete(int unit, int ipmc_id, bcm_port_t port, 88 int if_max, int nh_index); 89 extern int _tr2_ipmc_glp_get(int unit, bcm_ipmc_addr_t *ipmc, ipmc_1_entry_t *entry); 90 extern int bcm_tr2_ipmc_repl_availability_get(int unit, int *available_percent); 91 extern int bcm_tr2_ipmc_repl_list_split(int unit, int array_size, 92 bcm_if_t *encap_id_array, int *sublist_id_array, 93 int sublist_max, int *sublist_count); 94 extern int bcm_tr2_multicast_vpls_encap_get(int unit, bcm_multicast_t group, bcm_gport_t port, 95 bcm_gport_t mpls_port_id, bcm_if_t *encap_id); 96 extern int bcm_tr2_multicast_subport_encap_get(int unit, bcm_multicast_t group, bcm_gport_t port, 97 bcm_gport_t subport, bcm_if_t *encap_id); 98 extern int bcm_tr2_multicast_mim_encap_get(int unit, bcm_multicast_t group, bcm_gport_t port, 99 bcm_gport_t mim_port_id, bcm_if_t *encap_id); 100 extern int bcm_tr2_multicast_wlan_encap_get(int unit, bcm_multicast_t group, bcm_gport_t port, 101 bcm_gport_t wlan_port_id, bcm_if_t *encap_id); 102 extern int bcm_tr2_mim_init(int unit); 103 extern int bcm_tr2_mim_detach(int unit); 104 extern int bcm_tr2_mim_vpn_create(int unit, bcm_mim_vpn_config_t *info); 105 extern int bcm_tr2_mim_vpn_destroy(int unit, bcm_mim_vpn_t vpn); 106 extern int bcm_tr2_mim_vpn_destroy_all(int unit); 107 extern int bcm_tr2_mim_vpn_get(int unit, bcm_mim_vpn_t vpn, 108 bcm_mim_vpn_config_t *info); 109 extern int bcm_tr2_mim_vpn_traverse(int unit, bcm_mim_vpn_traverse_cb cb, 110 void *user_data); 111 extern int bcm_tr2_mim_port_add(int unit, bcm_mim_vpn_t vpn, bcm_mim_port_t *mim_port); 112 extern int bcm_tr2_mim_port_delete(int unit, bcm_vpn_t vpn, bcm_gport_t mim_port_id); 113 extern int bcm_tr2_mim_port_delete_all(int unit, bcm_vpn_t vpn); 114 extern int bcm_tr2_mim_port_get(int unit, bcm_vpn_t vpn, bcm_mim_port_t *mim_port); 115 extern int bcm_tr2_mim_port_get_all(int unit, bcm_vpn_t vpn, int port_max, 116 bcm_mim_port_t *port_array, int *port_count); 117 extern int _bcm_tr2_mim_port_resolve(int unit, bcm_gport_t mim_port, 118 bcm_module_t *modid, bcm_port_t *port, 119 bcm_trunk_t *trunk_id, int *id); 120 extern int bcm_tr2_mim_port_learn_set(int unit, bcm_gport_t port, uint32 flags); 121 extern int bcm_tr2_mim_port_learn_get(int unit, bcm_gport_t port, uint32 *flags); 122 extern int _bcm_tr2_mim_svp_field_set(int unit, bcm_gport_t vp, 123 soc_field_t field, int value); 124 extern int bcm_tr2_wlan_init(int unit); 125 extern int bcm_tr2_wlan_detach(int unit); 126 extern int bcm_tr2_wlan_client_add(int unit, bcm_wlan_client_t *info); 127 extern int bcm_tr2_wlan_client_delete(int unit, bcm_mac_t mac); 128 extern int bcm_tr2_wlan_client_delete_all(int unit); 129 extern int bcm_tr2_wlan_client_traverse(int unit, 130 bcm_wlan_client_traverse_cb cb, 131 void *user_data); 132 extern int bcm_tr2_wlan_client_get(int unit, bcm_mac_t mac, 133 bcm_wlan_client_t *info); 134 extern int _bcm_tr2_wlan_port_resolve(int unit, bcm_gport_t wlan_port, 135 bcm_module_t *modid, bcm_port_t *port, 136 bcm_trunk_t *trunk_id, int *id); 137 extern int bcm_tr2_wlan_port_learn_set(int unit, bcm_gport_t port, uint32 flags); 138 extern int bcm_tr2_wlan_port_learn_get(int unit, bcm_gport_t port, uint32 *flags); 139 extern int bcm_tr2_wlan_port_add(int unit, bcm_wlan_port_t *wlan_port); 140 extern int bcm_tr2_wlan_port_delete(int unit, bcm_gport_t wlan_port_id); 141 extern int bcm_tr2_wlan_port_delete_all(int unit); 142 extern int bcm_tr2_wlan_port_get(int unit, bcm_gport_t wlan_port_id, 143 bcm_wlan_port_t *wlan_port); 144 extern int bcm_tr2_wlan_port_traverse(int unit, 145 bcm_wlan_port_traverse_cb cb, 146 void *user_data); 147 extern int bcm_tr2_wlan_tunnel_initiator_create(int unit, 148 bcm_tunnel_initiator_t *info); 149 extern int bcm_tr2_wlan_tunnel_initiator_destroy(int unit, 150 bcm_gport_t wlan_tunnel_id); 151 extern int bcm_tr2_wlan_tunnel_initiator_get(int unit, 152 bcm_tunnel_initiator_t *info); 153 extern int bcm_tr2_tunnel_terminator_vlan_set(int unit, bcm_gport_t tunnel, 154 bcm_vlan_vector_t vlan_vec); 155 extern int bcm_tr2_tunnel_terminator_vlan_get(int unit, bcm_gport_t tunnel, 156 bcm_vlan_vector_t *vlan_vec); 157 extern int bcm_tr2_wlan_lport_field_set(int unit, bcm_gport_t wlan_port_id, 158 soc_field_t field, int value); 159 extern int bcm_tr2_wlan_lport_field_get(int unit, bcm_gport_t wlan_port_id, 160 soc_field_t field, int *value); 161 extern int _bcm_tr2_wlan_port_set(int unit, bcm_gport_t wlan_port_id, 162 soc_field_t field, uint32 value); 163 extern int bcm_tr2_wlan_port_untagged_vlan_get(int unit, bcm_gport_t port, 164 bcm_vlan_t *vid_ptr); 165 extern int bcm_tr2_wlan_port_untagged_vlan_set(int unit, bcm_gport_t port, 166 bcm_vlan_t vid); 167 extern int bcm_tr2_wlan_port_untagged_prio_get(int unit, bcm_gport_t port, 168 int *prio_ptr); 169 extern int bcm_tr2_wlan_port_untagged_prio_set(int unit, bcm_gport_t port, 170 int prio); 171 extern int _bcm_tr2_svp_field_set(int unit, bcm_gport_t port_id, 172 soc_field_t field, int value); 173 extern int _bcm_tr2_svp_field_get(int unit, bcm_gport_t port_id, 174 soc_field_t field, int *value); 175 extern int _bcm_tr2_mpls_svp_field_set(int unit, bcm_gport_t vp, 176 soc_field_t field, int value); 177 extern int bcm_tr2_mpls_label_stat_enable_set(int unit, 178 bcm_mpls_label_t label, 179 bcm_gport_t port, int enable, 180 int cnt_inx); 181 extern int _bcm_tr2_l3_ecmp_grp_get(int unit, int ecmp_grp, int ecmp_group_size, int *nh_idx); 182 extern int _bcm_tr2_l3_ecmp_grp_add(int unit, int ecmp_grp, void *buf, void *info); 183 extern int _bcm_tr2_l3_ecmp_grp_del(int unit, int ecmp_grp, void *info); 184 extern void bcm_tr2_failover_unlock(int unit); 185 extern int bcm_tr2_failover_lock(int unit); 186 extern int bcm_tr2_failover_init(int unit); 187 extern int bcm_tr2_failover_sync(int unit); 188 extern int bcm_tr2_failover_cleanup(int unit); 189 extern int bcm_tr2_failover_create(int unit, uint32 flags, bcm_failover_t *failover_id); 190 extern int bcm_tr2_failover_destroy(int unit, bcm_failover_t failover_id); 191 extern int bcm_tr2_mmu_failover_destroy(int unit, bcm_failover_t failover_id); 192 extern int bcm_tr2_failover_set(int unit, bcm_failover_t failover_id, int value); 193 extern int bcm_tr2_failover_get(int unit, bcm_failover_t failover_id, int *value); 194 extern int bcm_tr2_failover_prot_nhi_create (int unit, int nh_index); 195 extern int bcm_tr2_failover_prot_nhi_set(int unit, int nh_index, uint32 prot_nh_index, bcm_failover_t failover_id); 196 extern int bcm_tr2_failover_prot_nhi_get(int unit, int nh_index, bcm_failover_t *failover_id, int *prot_nh_index); 197 extern int bcm_tr2_failover_prot_nhi_cleanup (int unit, int nh_index); 198 extern int bcm_tr2_failover_prot_nhi_update (int unit, int old_nh_index, int new_nh_index); 199 extern int bcm_tr2_failover_id_validate (int unit, bcm_failover_t failover_id); 200 extern int bcm_tr2_failover_mmu_id_validate (int unit, bcm_failover_t failover_id); 201 extern int bcm_tr2_failover_ecmp_prot_nhi_set(int unit, int ecmp, int index, int nh_index, 202 bcm_failover_t failover_id, int prot_nh_index); 203 extern int bcm_tr2_failover_ecmp_prot_nhi_get(int unit, int ecmp, int index, int nh_index, 204 bcm_failover_t *failover_id, int *prot_nh_index); 205 extern int bcm_tr2_failover_ecmp_prot_nhi_cleanup(int unit, int ecmp, int index, 206 int nh_index); 207 extern int bcm_tr2_failover_id_check(int unit, bcm_failover_t failover_id); 208 extern int bcm_tr2_failover_egr_check (int unit, bcm_l3_egress_t *egr); 209 extern int bcm_tr2_failover_mpls_check (int unit, bcm_mpls_port_t *mpls_port); 210 211 extern int bcm_tr2_vlan_virtual_init(int unit); 212 extern int bcm_tr2_vlan_virtual_detach(int unit); 213 extern int bcm_tr2_vlan_vp_create(int unit, bcm_vlan_port_t *vlan_vp); 214 extern int bcm_tr2_vlan_vp_destroy(int unit, bcm_gport_t gport); 215 extern int bcm_tr2_vlan_vp_find(int unit, bcm_vlan_port_t *vlan_vp); 216 extern int bcm_tr2_vlan_port_learn_set(int unit, bcm_gport_t vlan_port_id, 217 uint32 flags); 218 extern int bcm_tr2_vlan_vp_match_add(int unit, 219 bcm_vlan_port_t *vlan_vp, int vp); 220 extern int bcm_tr2_vlan_vp_match_delete(int unit, 221 bcm_vlan_port_t *vlan_vp, int vp); 222 extern int _bcm_tr2_mim_match_add(int unit, bcm_mim_port_t *mim_port, 223 int vp, bcm_mim_vpn_t vpn); 224 extern int _bcm_tr2_mim_match_delete(int unit, int vp, bcm_mim_port_t mim_port); 225 extern int bcm_tr2_vlan_port_phys_gport_get(int unit, int vp, bcm_gport_t *gp); 226 extern void bcm_tr2_vlan_port_match_count_adjust(int unit, int vp, int step); 227 extern int _bcm_tr2_vlan_port_resolve(int unit, bcm_gport_t vlan_port_id, 228 bcm_module_t *modid, bcm_port_t *port, 229 bcm_trunk_t *trunk_id, int *id); 230 extern int bcm_tr2_vlan_gport_add(int unit, bcm_vlan_t vlan, bcm_gport_t gport, 231 int is_untagged); 232 extern int bcm_tr2_vlan_gport_delete(int unit, bcm_vlan_t vlan, 233 bcm_gport_t gport); 234 extern int bcm_tr2_vlan_gport_delete_all(int unit, bcm_vlan_t vlan); 235 extern int bcm_tr2_vlan_gport_get(int unit, bcm_vlan_t vlan, bcm_gport_t gport, 236 int *is_untagged); 237 extern int bcm_tr2_vlan_gport_get_all(int unit, bcm_vlan_t vlan, int array_max, 238 bcm_gport_t *gport_array, int *is_untagged_array, int *array_size); 239 240 #ifdef BCM_WARM_BOOT_SUPPORT 241 extern int bcm_tr2_vlan_virtual_reinit(int unit); 242 #endif /* BCM_WARM_BOOT_SUPPORT */ 243 244 #ifndef BCM_SW_STATE_DUMP_DISABLE 245 extern void bcm_tr2_vlan_vp_sw_dump(int unit); 246 #endif /* BCM_SW_STATE_DUMP_DISABLE */ 247 248 #endif /* INCLUDE_L3 */ 249 250 #if defined BCM_WARM_BOOT_SUPPORT 251 extern int _bcm_notify_qos_reinit_to_fp (int unit); 252 #endif 253 254 extern int bcm_tr2_cosq_init(int unit); 255 extern int bcm_tr2_cosq_detach(int unit, int software_state_only); 256 extern int bcm_tr2_cosq_config_set(int unit, int numq); 257 extern int bcm_tr2_cosq_config_get(int unit, int *numq); 258 extern int bcm_tr2_cosq_mapping_set(int unit, bcm_port_t port, 259 bcm_cos_t priority, bcm_cos_queue_t cosq); 260 extern int bcm_tr2_cosq_mapping_get(int unit, bcm_port_t port, 261 bcm_cos_t priority, bcm_cos_queue_t *cosq); 262 extern int bcm_tr2_cosq_port_bandwidth_set(int unit, bcm_port_t port, 263 bcm_cos_queue_t cosq, 264 uint32 min_quantum, 265 uint32 max_quantum, 266 uint32 burst_quantum, 267 uint32 flags); 268 extern int bcm_tr2_cosq_port_bandwidth_get(int unit, bcm_port_t port, 269 bcm_cos_queue_t cosq, 270 uint32 *min_quantum, 271 uint32 *max_quantum, 272 uint32 *burst_quantum, 273 uint32 *flags); 274 extern int bcm_tr2_cosq_port_pps_set(int unit, bcm_port_t port, 275 bcm_cos_queue_t cosq, int pps); 276 extern int bcm_tr2_cosq_port_pps_get(int unit, bcm_port_t port, 277 bcm_cos_queue_t cosq, int *pps); 278 extern int bcm_tr2_cosq_port_burst_set(int unit, bcm_port_t port, 279 bcm_cos_queue_t cosq, int burst); 280 extern int bcm_tr2_cosq_port_burst_get(int unit, bcm_port_t port, 281 bcm_cos_queue_t cosq, int *burst); 282 extern int bcm_tr2_cosq_discard_set(int unit, uint32 flags); 283 extern int bcm_tr2_cosq_discard_get(int unit, uint32 *flags); 284 extern int bcm_tr2_cosq_discard_port_set(int unit, bcm_port_t port, 285 bcm_cos_queue_t cosq, uint32 color, 286 int drop_start, int drop_slope, 287 int average_time); 288 extern int bcm_tr2_cosq_discard_port_get(int unit, bcm_port_t port, 289 bcm_cos_queue_t cosq, uint32 color, 290 int *drop_start, int *drop_slope, 291 int *average_time); 292 extern int bcm_tr2_cosq_gport_discard_set(int unit, bcm_gport_t port, 293 bcm_cos_queue_t cosq, 294 bcm_cosq_gport_discard_t *discard); 295 extern int bcm_tr2_cosq_gport_discard_get(int unit, bcm_gport_t port, 296 bcm_cos_queue_t cosq, 297 bcm_cosq_gport_discard_t *discard); 298 extern int bcm_tr2_cosq_port_sched_set(int unit, bcm_pbmp_t pbm, 299 int mode, const int weights[], int delay); 300 extern int bcm_tr2_cosq_port_sched_get(int unit, bcm_pbmp_t pbm, 301 int *mode, int weights[], int *delay); 302 extern int bcm_tr2_cosq_gport_add(int unit, bcm_gport_t port, int numq, 303 uint32 flags, bcm_gport_t *gport); 304 extern int bcm_tr2_cosq_gport_delete(int unit, bcm_gport_t gport); 305 extern int bcm_tr2_cosq_gport_traverse(int unit, bcm_cosq_gport_traverse_cb cb, 306 void *user_data); 307 308 extern int bcm_tr2_cosq_gport_bandwidth_set(int unit, bcm_gport_t gport, 309 bcm_cos_queue_t cosq, 310 uint32 kbits_sec_min, 311 uint32 kbits_sec_max, 312 uint32 flags); 313 extern int bcm_tr2_cosq_gport_bandwidth_get(int unit, bcm_gport_t gport, 314 bcm_cos_queue_t cosq, 315 uint32 *kbits_sec_min, 316 uint32 *kbits_sec_max, 317 uint32 *flags); 318 extern int bcm_tr2_cosq_gport_bandwidth_burst_set(int unit, 319 bcm_gport_t gport, 320 bcm_cos_queue_t cosq, 321 uint32 kbits_burst_min, 322 uint32 kbits_burst_max); 323 extern int bcm_tr2_cosq_gport_bandwidth_burst_get(int unit, 324 bcm_gport_t gport, 325 bcm_cos_queue_t cosq, 326 uint32 *kbits_burst_min, 327 uint32 *kbits_burst_max); 328 extern int bcm_tr2_cosq_gport_sched_set(int unit, bcm_gport_t gport, 329 bcm_cos_queue_t cosq, int mode, 330 int weight); 331 extern int bcm_tr2_cosq_gport_sched_get(int unit, bcm_gport_t gport, 332 bcm_cos_queue_t cosq, int *mode, 333 int *weight); 334 extern int bcm_tr2_cosq_gport_attach(int unit, bcm_gport_t sched_gport, 335 bcm_cos_queue_t cosq, bcm_gport_t input_gport); 336 extern int bcm_tr2_cosq_gport_detach(int unit, bcm_gport_t sched_gport, 337 bcm_cos_queue_t cosq, bcm_gport_t input_gport); 338 extern int bcm_tr2_cosq_gport_attach_get(int unit, bcm_gport_t sched_gport, 339 bcm_cos_queue_t *cosq, bcm_gport_t *input_gport); 340 extern int _bcm_tr2_cosq_port_resolve(int unit, bcm_gport_t gport, 341 bcm_module_t *modid, bcm_port_t *port, 342 bcm_trunk_t *trunk_id, int *id); 343 344 extern int _bcm_tr2_port_vlan_priority_map_set(int unit, bcm_port_t port, 345 int pkt_pri, int cfi, 346 int internal_pri, 347 bcm_color_t color); 348 extern int _bcm_tr2_port_vlan_priority_map_get(int unit, bcm_port_t port, 349 int pkt_pri, int cfi, 350 int *internal_pri, 351 bcm_color_t *color); 352 extern int _bcm_tr2_port_priority_color_set(int unit, bcm_port_t port, int prio, bcm_color_t color); 353 354 extern int bcm_tr2x_oam_init(int unit); 355 extern int bcm_tr2x_oam_detach(int unit); 356 extern int bcm_tr2x_oam_lock(int unit); 357 extern int bcm_tr2x_oam_unlock(int unit); 358 extern int bcm_tr2x_oam_group_create(int unit, 359 bcm_oam_group_info_t *group_info); 360 extern int bcm_tr2x_oam_group_get(int unit, bcm_oam_group_t group, 361 bcm_oam_group_info_t *group_info); 362 extern int bcm_tr2x_oam_group_destroy(int unit, bcm_oam_group_t group); 363 extern int bcm_tr2x_oam_group_destroy_all(int unit); 364 extern int bcm_tr2x_oam_group_traverse(int unit, bcm_oam_group_traverse_cb cb, 365 void *user_data); 366 extern int bcm_tr2x_oam_endpoint_create(int unit, 367 bcm_oam_endpoint_info_t *endpoint_info); 368 extern int bcm_tr2x_oam_endpoint_get(int unit, bcm_oam_endpoint_t endpoint, 369 bcm_oam_endpoint_info_t *endpoint_info); 370 extern int bcm_tr2x_oam_endpoint_destroy(int unit, bcm_oam_endpoint_t endpoint); 371 extern int bcm_tr2x_oam_endpoint_destroy_all(int unit, bcm_oam_group_t group); 372 extern int bcm_tr2x_oam_endpoint_traverse(int unit, bcm_oam_group_t group, 373 bcm_oam_endpoint_traverse_cb cb, void *user_data); 374 extern int bcm_tr2x_oam_event_register(int unit, 375 bcm_oam_event_types_t event_types, bcm_oam_event_cb cb, 376 void *user_data); 377 extern int bcm_tr2x_oam_event_unregister(int unit, 378 bcm_oam_event_types_t event_types, bcm_oam_event_cb cb); 379 380 extern int bcm_tr2_subport_init(int unit); 381 extern int bcm_tr2_subport_cleanup(int unit); 382 extern int bcm_tr2_subport_group_create(int unit, bcm_subport_group_config_t *config, 383 bcm_gport_t *group); 384 extern int bcm_tr2_subport_group_destroy(int unit, bcm_gport_t group); 385 extern int bcm_tr2_subport_group_get(int unit, bcm_gport_t group, 386 bcm_subport_group_config_t *config); 387 extern int bcm_tr2_subport_port_add(int unit, bcm_subport_config_t *config, 388 bcm_gport_t *port); 389 extern int bcm_tr2_subport_port_delete(int unit, bcm_gport_t port); 390 extern int bcm_tr2_subport_port_get(int unit, bcm_gport_t port, 391 bcm_subport_config_t *config); 392 extern int bcm_tr2_subport_port_traverse(int unit, bcm_subport_port_traverse_cb cb, 393 void *user_data); 394 extern int _bcm_tr2_subport_group_resolve(int unit, bcm_gport_t gport, 395 bcm_module_t *modid, bcm_port_t *port, 396 bcm_trunk_t *trunk_id, int *id); 397 extern int _bcm_tr2_subport_port_resolve(int unit, bcm_gport_t gport, 398 bcm_module_t *modid, bcm_port_t *port, 399 bcm_trunk_t *trunk_id, int *id); 400 extern int bcm_tr2_subport_learn_set(int unit, bcm_gport_t port, uint32 flags); 401 extern int bcm_tr2_subport_learn_get(int unit, bcm_gport_t port, uint32 *flags); 402 extern int _bcm_tr2_port_lanes_set(int unit, bcm_port_t port, int value); 403 extern int _bcm_tr2_port_lanes_get(int unit, bcm_port_t port, int *value); 404 extern int _bcm_tr2_ing_pri_cng_map_default_entry_add(int unit, 405 soc_profile_mem_t *prof); 406 extern int _bcm_tr2_port_vpd_bitmap_alloc(int unit); 407 extern void _bcm_tr2_port_vpd_bitmap_free(int unit); 408 extern int _bcm_port_vlan_prot_index_alloc(int unit, int *prof_ptr); 409 extern int _bcm_port_vlan_prot_index_free(int unit, int prof_ptr); 410 411 /* Flexible counters support */ 412 413 #define _BCM_FLEX_STAT_TYPE(_id) (((_id) >> 16) & 0xFFFF) 414 #define _BCM_FLEX_STAT_COUNT_INX(_id) ((_id) & 0xFFFF) 415 #define _BCM_FLEX_STAT_COUNT_ID(_type,_ix) ((((_type) & 0xFFFF) << 16) | \ 416 ((_ix) & 0xFFFF)) 417 418 typedef enum _bcm_flex_stat_type_e { 419 _bcmFlexStatTypeService, 420 _bcmFlexStatTypeGport, 421 _bcmFlexStatTypeEgressService, 422 _bcmFlexStatTypeEgressGport, 423 _bcmFlexStatTypeFp, 424 _bcmFlexStatTypeVrf, 425 _bcmFlexStatTypeVxlt, 426 _bcmFlexStatTypeEgrVxlt, 427 _bcmFlexStatTypeMplsLabel, 428 _bcmFlexStatTypeNum, 429 /* count ingress/egress as 1*/ 430 _bcmFlexStatTypeHwNum = _bcmFlexStatTypeEgressService, 431 _bcmFlexStatTypeAllHwNum = _bcmFlexStatTypeFp 432 } _bcm_flex_stat_type_t; 433 434 #define _BCM_FLEX_STAT_HANDLE_WORDS 2 435 436 typedef struct { 437 uint32 words[_BCM_FLEX_STAT_HANDLE_WORDS]; 438 } _bcm_flex_stat_handle_t; 439 440 #define _BCM_FLEX_STAT_HANDLE_WORD_GET(fsh, word) ((fsh).words[(word)]) 441 #define _BCM_FLEX_STAT_HANDLE_WORD_SET(fsh, word, val) \ 442 ((fsh).words[(word)] = (val)) 443 #define _BCM_FLEX_STAT_HANDLE_CLEAR(fsh) \ 444 (_BCM_FLEX_STAT_HANDLE_WORD_GET(fsh, 0) = \ 445 _BCM_FLEX_STAT_HANDLE_WORD_GET(fsh, 1) = 0) 446 447 #define _BCM_FLEX_STAT_HANDLE_ASSIGN(fsh1, fsh2) ((fsh1) = (fsh2)) 448 #define _BCM_FLEX_STAT_HANDLE_COPY(fsh1, fsh2) \ 449 memcpy(&(fsh1), &(fsh2), sizeof(_bcm_flex_stat_handle_t)) 450 451 typedef struct _bcm_flex_stat_handle_to_index_s { 452 _bcm_flex_stat_handle_t handle; 453 uint32 index; 454 _bcm_flex_stat_type_t type; 455 } _bcm_flex_stat_handle_to_index_t; 456 457 typedef enum _bcm_flex_stat_memacc_type_e { 458 _BCM_FS_MEMACC_SERVICE_ING_PKT, 459 _BCM_FS_MEMACC_SERVICE_ING_BYTE, 460 _BCM_FS_MEMACC_SERVICE_EGR_PKT, 461 _BCM_FS_MEMACC_SERVICE_EGR_BYTE, 462 _BCM_FS_MEMACC_VINTF_ING_PKT, 463 _BCM_FS_MEMACC_VINTF_ING_BYTE, 464 _BCM_FS_MEMACC_VINTF_EGR_PKT, 465 _BCM_FS_MEMACC_VINTF_EGR_BYTE, 466 _BCM_FS_MEMACC_NUM 467 } _bcm_flex_stat_memacc_type_t; 468 469 /* Structure for tracking flexible stat info */ 470 typedef struct _bcm_flex_stat_info_s { 471 int stat_mem_size; 472 SHR_BITDCL *stats; 473 int handle_list_size; 474 _bcm_flex_stat_handle_to_index_t *handle_list; 475 uint16 *ref_cnt; /* reference count */ 476 } _bcm_flex_stat_info_t; 477 478 #define _BCM_FLEX_STAT_GRANS 2 /* Packets and Bytes */ 479 #define _BCM_FLEX_STAT_DIRS 2 /* Ingress and Egress */ 480 #define _BCM_FLEX_STAT_BUFFS 2 /* Ping pong fetch buffers */ 481 482 typedef enum _bcm_flex_stat_e { 483 _bcmFlexStatIngressPackets, /* Packets that ingress on the class */ 484 _bcmFlexStatIngressBytes, /* Bytes that ingress on the class */ 485 _bcmFlexStatEgressPackets, /* Packets that egress on the class */ 486 _bcmFlexStatEgressBytes, /* Bytes that egress on the class */ 487 _bcmFlexStatNum 488 } _bcm_flex_stat_t; 489 490 #define _BCM_FLEX_STAT_HW_INGRESS (1 << 0) /* apply to ingress chip */ 491 #define _BCM_FLEX_STAT_HW_EGRESS (1 << 1) /* apply to egress chip */ 492 #define _BCM_FLEX_STAT_HW_BOTH (_BCM_FLEX_STAT_HW_INGRESS | \ 493 _BCM_FLEX_STAT_HW_EGRESS) 494 495 typedef int (*_bcm_flex_stat_src_index_set_f)(int unit, 496 _bcm_flex_stat_handle_t handle, 497 int fs_idx, void *cookie); 498 499 extern int _bcm_esw_flex_stat_detach(int unit, _bcm_flex_stat_type_t type); 500 extern int _bcm_esw_flex_stat_init(int unit, _bcm_flex_stat_type_t type); 501 502 extern void _bcm_esw_flex_stat_ext_reinit_add(int unit, 503 _bcm_flex_stat_type_t type, 504 int fs_idx, 505 _bcm_flex_stat_handle_t handle); 506 extern void _bcm_esw_flex_stat_reinit_add(int unit, 507 _bcm_flex_stat_type_t type, 508 int fs_idx, uint32 handle); 509 extern void _bcm_esw_flex_stat_release_handles(int unit, 510 _bcm_flex_stat_type_t type); 511 extern int _bcm_esw_flex_stat_stat_set(int unit, 512 _bcm_flex_stat_type_t type, 513 int fs_idx, 514 bcm_vlan_stat_t vl_stat, 515 uint64 val); 516 extern int _bcm_esw_flex_stat_stat_get(int unit, 517 _bcm_flex_stat_type_t type, 518 int fs_idx, 519 bcm_vlan_stat_t vl_stat, 520 uint64 *val); 521 extern void _bcm_esw_flex_stat_ext_handle_free(int unit, 522 _bcm_flex_stat_type_t type, 523 _bcm_flex_stat_handle_t handle); 524 extern void _bcm_esw_flex_stat_handle_free(int unit, 525 _bcm_flex_stat_type_t type, 526 uint32 handle); 527 extern int _bcm_esw_vlan_flex_stat_hw_index_set(int unit, 528 _bcm_flex_stat_handle_t handle, 529 int fs_idx, void *cookie); 530 extern int _bcm_esw_port_flex_stat_hw_index_set(int unit, 531 _bcm_flex_stat_handle_t handle, 532 int fs_idx, void *cookie); 533 534 extern int _bcm_esw_flex_stat_ext_enable_set(int unit, 535 _bcm_flex_stat_type_t type, 536 _bcm_flex_stat_src_index_set_f fs_set_cb, 537 void *cookie, 538 _bcm_flex_stat_handle_t handle, 539 int enable, 540 int cnt_inx); 541 extern int _bcm_esw_flex_stat_enable_set(int unit, 542 _bcm_flex_stat_type_t type, 543 _bcm_flex_stat_src_index_set_f fs_set_cb, 544 void *cookie, 545 uint32 handle, 546 int enable, 547 int cnt_inx); 548 extern int _bcm_esw_flex_stat_ext_get(int unit, int sync_mode, 549 _bcm_flex_stat_type_t type, 550 _bcm_flex_stat_handle_t handle, 551 _bcm_flex_stat_t stat, 552 uint64 *val); 553 extern int _bcm_esw_flex_stat_get(int unit, int sync_mode, 554 _bcm_flex_stat_type_t type, 555 uint32 handle, 556 _bcm_flex_stat_t stat, 557 uint64 *val); 558 extern int _bcm_esw_flex_stat_ext_get32(int unit, int sync_mode, 559 _bcm_flex_stat_type_t type, 560 _bcm_flex_stat_handle_t handle, 561 _bcm_flex_stat_t stat, 562 uint32 *val); 563 extern int _bcm_esw_flex_stat_get32(int unit, int sync_mode, 564 _bcm_flex_stat_type_t type, 565 uint32 handle, 566 _bcm_flex_stat_t stat, 567 uint32 *val); 568 extern int _bcm_esw_flex_stat_ext_set(int unit, 569 _bcm_flex_stat_type_t type, 570 _bcm_flex_stat_handle_t handle, 571 _bcm_flex_stat_t stat, 572 uint64 val); 573 extern int _bcm_esw_flex_stat_set(int unit, 574 _bcm_flex_stat_type_t type, 575 uint32 handle, 576 _bcm_flex_stat_t stat, 577 uint64 val); 578 extern int _bcm_esw_flex_stat_ext_set32(int unit, 579 _bcm_flex_stat_type_t type, 580 _bcm_flex_stat_handle_t handle, 581 _bcm_flex_stat_t stat, 582 uint32 val); 583 extern int _bcm_esw_flex_stat_set32(int unit, 584 _bcm_flex_stat_type_t type, 585 uint32 handle, 586 _bcm_flex_stat_t stat, 587 uint32 val); 588 extern int _bcm_esw_flex_stat_ext_multi_get(int unit, 589 _bcm_flex_stat_type_t type, 590 _bcm_flex_stat_handle_t handle, 591 int nstat, 592 _bcm_flex_stat_t *stat_arr, 593 uint64 *value_arr); 594 extern int _bcm_esw_flex_stat_multi_get(int unit, 595 _bcm_flex_stat_type_t type, 596 uint32 handle, 597 int nstat, 598 _bcm_flex_stat_t *stat_arr, 599 uint64 *value_arr); 600 extern int _bcm_esw_flex_stat_ext_multi_get32(int unit, 601 _bcm_flex_stat_type_t type, 602 _bcm_flex_stat_handle_t handle, 603 int nstat, 604 _bcm_flex_stat_t *stat_arr, 605 uint32 *value_arr); 606 extern int _bcm_esw_flex_stat_multi_get32(int unit, 607 _bcm_flex_stat_type_t type, 608 uint32 handle, 609 int nstat, 610 _bcm_flex_stat_t *stat_arr, 611 uint32 *value_arr); 612 extern int _bcm_esw_flex_stat_ext_multi_set(int unit, 613 _bcm_flex_stat_type_t type, 614 _bcm_flex_stat_handle_t handle, 615 int nstat, 616 _bcm_flex_stat_t *stat_arr, 617 uint64 *value_arr); 618 extern int _bcm_esw_flex_stat_multi_set(int unit, 619 _bcm_flex_stat_type_t type, 620 uint32 handle, 621 int nstat, 622 _bcm_flex_stat_t *stat_arr, 623 uint64 *value_arr); 624 extern int _bcm_esw_flex_stat_ext_multi_set32(int unit, 625 _bcm_flex_stat_type_t type, 626 _bcm_flex_stat_handle_t handle, 627 int nstat, 628 _bcm_flex_stat_t *stat_arr, 629 uint32 *value_arr); 630 extern int _bcm_esw_flex_stat_multi_set32(int unit, 631 _bcm_flex_stat_type_t type, 632 uint32 handle, 633 int nstat, 634 _bcm_flex_stat_t *stat_arr, 635 uint32 *value_arr); 636 extern int _bcm_esw_flex_stat_free_index_assign(int unit, 637 _bcm_flex_stat_type_t fs_type); 638 extern int _bcm_esw_flex_stat_count_index_remove(int unit, 639 _bcm_flex_stat_type_t fs_type, 640 int fs_inx); 641 extern int _bcm_esw_port_flex_stat_index_set(int unit, bcm_gport_t port, 642 int fs_idx,uint32 flags); 643 extern int _bcm_esw_mpls_flex_stat_index_set(int unit, bcm_gport_t port, 644 int fs_idx,uint32 flags); 645 extern int _bcm_esw_mim_flex_stat_index_set(int unit, bcm_gport_t port, 646 int fs_idx, uint32 flags); 647 extern int _bcm_esw_subport_flex_stat_index_set(int unit, bcm_gport_t port, 648 int fs_idx, uint32 flags); 649 extern int _bcm_esw_wlan_flex_stat_index_set(int unit, bcm_gport_t port, 650 int fs_idx,uint32 flags); 651 extern int _bcm_esw_vlan_flex_stat_index_set(int unit, bcm_vlan_t vlan, 652 int fs_idx,uint32 flags); 653 extern int _bcm_tr_subport_gport_used(int unit, bcm_gport_t port); 654 extern int _bcm_tr2_vlan_qmid_set(int unit, bcm_vlan_t vlan, int qm_ptr, 655 int use_inner_tag); 656 extern int _bcm_tr2_vlan_qmid_get(int unit, bcm_vlan_t vlan, int *qm_ptr, 657 int *use_inner_tag); 658 extern int _bcm_tr2_qos_pvmid_set(int unit, bcm_vlan_t vlan, int pvmid); 659 extern int _bcm_tr2_qos_pvmid_get(int unit, bcm_vlan_t vlan, int *pvmid); 660 extern int _bcm_tr2_mim_port_phys_gport_get(int unit, int vp, bcm_gport_t *gp); 661 extern void _bcm_tr2_mim_port_match_count_adjust(int unit, int vp, int step); 662 663 typedef struct _bcm_vlan_translate_stat_info_s { 664 bcm_gport_t port; 665 bcm_vlan_translate_key_t key_type; 666 bcm_vlan_t outer_vlan; 667 bcm_vlan_t inner_vlan; 668 } _bcm_vlan_translate_stat_info_t; 669 670 extern int _bcm_tr2_vlan_translate_range_vp_add(int unit, 671 bcm_gport_t port, 672 bcm_vlan_t outer_vlan_low, 673 bcm_vlan_t outer_vlan_high, 674 bcm_vlan_t inner_vlan_low, 675 bcm_vlan_t inner_vlan_high, 676 int vp, 677 bcm_vlan_action_set_t *action); 678 extern int _bcm_tr2_vlan_translate_range_vp_delete(int unit, 679 bcm_gport_t port, 680 bcm_vlan_t outer_vlan_low, 681 bcm_vlan_t outer_vlan_high, 682 bcm_vlan_t inner_vlan_low, 683 bcm_vlan_t inner_vlan_high, 684 int vp); 685 extern int bcm_tr2_qos_init(int unit); 686 extern int bcm_tr2_qos_detach(int unit); 687 extern int bcm_tr2_qos_map_create(int unit, uint32 flags, int *map_id); 688 extern int bcm_tr2_qos_map_destroy(int unit, int map_id); 689 extern int bcm_tr2_qos_map_add(int unit, uint32 flags, bcm_qos_map_t *map, 690 int map_id, int internal); 691 extern int bcm_tr2_qos_map_delete(int unit, uint32 flags, 692 bcm_qos_map_t *map, int map_id); 693 extern int bcm_tr2_qos_multi_get(int unit, int array_size, int *map_ids_array, 694 int *flags_array, int *array_count); 695 extern int bcm_tr2_qos_map_multi_get(int unit, uint32 flags, 696 int map_id, int array_size, 697 bcm_qos_map_t *array, int *array_count); 698 extern int bcm_tr2_qos_port_map_set(int unit, bcm_gport_t port, int ing_map, 699 int egr_map); 700 extern int bcm_tr2_qos_port_map_type_get(int unit, bcm_gport_t port, uint32 flags, 701 int* map_id); 702 extern int bcm_tr2_qos_port_vlan_map_set(int unit, bcm_gport_t port, bcm_vlan_t vid, 703 int ing_map, int egr_map); 704 extern int bcm_tr2_qos_port_vlan_map_get(int unit, bcm_gport_t port, bcm_vlan_t vid, 705 int *ing_map, int *egr_map); 706 extern int _bcm_tr2_qos_id2idx(int unit, int map_id, int *hw_idx); 707 extern int _bcm_tr2_qos_idx2id(int unit, int hw_idx, int type, int *map_id); 708 extern int _bcm_tr2_port_tab_set(int unit, bcm_port_t port, 709 soc_field_t field, int value); 710 extern int _bcm_tr2_port_tab_get(int unit, bcm_port_t port, 711 soc_field_t field, int* value); 712 extern int _bcm_tr2_vp_dscp_map_mode_set(int unit, bcm_gport_t port, 713 int mode); 714 extern int _bcm_tr2_vp_dscp_map_mode_get(int unit, bcm_gport_t port, 715 int *mode); 716 extern int _bcm_tr2_vp_dscp_map_set(int unit, bcm_gport_t port, int srccp, 717 int mapcp, int prio); 718 extern int _bcm_tr2_vp_dscp_map_get(int unit, bcm_gport_t port, int srccp, 719 int *mapcp, int *prio); 720 extern int _bcm_tr2_vp_ing_pri_cng_set(int unit, bcm_port_t port, int untagged, 721 int pkt_pri, int cfi, 722 int int_pri, bcm_color_t color); 723 extern int _bcm_tr2_vp_ing_pri_cng_get(int unit, bcm_port_t port, int untagged, 724 int pkt_pri, int cfi, 725 int *int_pri, bcm_color_t *color); 726 #if defined(BCM_FIELD_SUPPORT) 727 extern int _bcm_field_tr2_init(int unit, _field_control_t *fc); 728 extern int _bcm_field_tr2_stat_hw_mode_to_bmap(int unit, uint16 mode, 729 _field_stage_id_t stage_id, 730 uint32 *hw_bmap, 731 uint8 *hw_entry_count); 732 #endif /* BCM_FIELD_SUPPORT */ 733 734 #ifdef BCM_WARM_BOOT_SUPPORT 735 extern int bcm_tr2_cosq_sync(int unit); 736 extern int _bcm_tr2_qos_sync(int unit); 737 extern int _bcm_tr2_ipmc_repl_reload(int unit); 738 extern int _bcm_tr2x_oam_sync(int unit); 739 extern int bcm_tr2_l3_ecmp_defragment_buffer_wb_alloc_size_get(int unit, 740 int *size); 741 extern int bcm_tr2_l3_ecmp_defragment_buffer_sync(int unit, 742 uint8 **scache_ptr, int offset); 743 extern int bcm_tr2_l3_ecmp_defragment_buffer_recover(int unit, 744 uint8 **scache_ptr, int offset); 745 extern int bcm_tr2_mim_sync(int unit); 746 #endif /* BCM_WARM_BOOT_SUPPORT */ 747 748 #ifndef BCM_SW_STATE_DUMP_DISABLE 749 extern void bcm_tr2_cosq_sw_dump(int unit); 750 extern void _bcm_tr2_ipmc_repl_sw_dump(int unit); 751 #endif /* BCM_SW_STATE_DUMP_DISABLE */ 752 #ifdef BCM_WARM_BOOT_SUPPORT_SW_DUMP 753 extern void _bcm_tr2_qos_sw_dump(int unit); 754 extern void _bcm_tr2x_oam_sw_dump(int unit); 755 #endif /* BCM_WARM_BOOT_SUPPORT_SW_DUMP */ 756 #ifndef BCM_SW_STATE_DUMP_DISABLE 757 extern void bcm_tr2_l3_ecmp_defragment_buffer_sw_dump(int unit); 758 #endif /* BCM_SW_STATE_DUMP_DISABLE */ 759 extern int bcm_tr2_ipmc_remap_set(int unit, bcm_multicast_t from, int to); 760 extern int bcm_tr2_ipmc_remap_get(int unit, bcm_multicast_t from, int *to); 761 762 extern int _bcm_tr3_vlan_vpn_is_eline( int unit, bcm_vpn_t vpn, uint8 *isEline); 763 extern int _bcm_tr3_vlan_vpn_is_valid( int unit, bcm_vpn_t vpn); 764 extern int _bcm_tr3_vlan_vp_destroy_all(int unit, bcm_vpn_t vpn); 765 extern int 766 _bcm_tr2_vlan_vp_port_cnt_update(int unit, bcm_gport_t gport, int vp, int incr); 767 #if defined(BCM_TRIDENT3_SUPPORT) && defined(INCLUDE_L3) 768 int 769 bcm_td3_mpls_combo_add (int unit, uint32 flags, bcm_mpls_exp_map_t *mpls_map, 770 int map_id, uint32 hw_idx, uint32 entry_per_index); 771 #endif 772 #endif /* BCM_TRIUMPH2_SUPPORT */ 773 #endif /* !_BCM_INT_TRIUMPH2_H_ */