triumph2.h (44475B)
1 /* 2 * 3 * This license is set out in https://raw.githubusercontent.com/Broadcom-Network-Switching-Software/OpenBCM/master/Legal/LICENSE file. 4 * 5 * Copyright 2007-2019 Broadcom Inc. All rights reserved. 6 * 7 * File: 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_mim_match_add(int unit, bcm_mim_port_t *mim_port, 219 int vp, bcm_mim_vpn_t vpn); 220 extern int _bcm_tr2_mim_match_delete(int unit, int vp, bcm_mim_port_t mim_port); 221 extern int bcm_tr2_vlan_port_phys_gport_get(int unit, int vp, bcm_gport_t *gp); 222 extern void bcm_tr2_vlan_port_match_count_adjust(int unit, int vp, int step); 223 extern int _bcm_tr2_vlan_port_resolve(int unit, bcm_gport_t vlan_port_id, 224 bcm_module_t *modid, bcm_port_t *port, 225 bcm_trunk_t *trunk_id, int *id); 226 extern int bcm_tr2_vlan_gport_add(int unit, bcm_vlan_t vlan, bcm_gport_t gport, 227 int is_untagged); 228 extern int bcm_tr2_vlan_gport_delete(int unit, bcm_vlan_t vlan, 229 bcm_gport_t gport); 230 extern int bcm_tr2_vlan_gport_delete_all(int unit, bcm_vlan_t vlan); 231 extern int bcm_tr2_vlan_gport_get(int unit, bcm_vlan_t vlan, bcm_gport_t gport, 232 int *is_untagged); 233 extern int bcm_tr2_vlan_gport_get_all(int unit, bcm_vlan_t vlan, int array_max, 234 bcm_gport_t *gport_array, int *is_untagged_array, int *array_size); 235 236 #ifdef BCM_WARM_BOOT_SUPPORT 237 extern int bcm_tr2_vlan_virtual_reinit(int unit); 238 #endif /* BCM_WARM_BOOT_SUPPORT */ 239 240 #ifndef BCM_SW_STATE_DUMP_DISABLE 241 extern void bcm_tr2_vlan_vp_sw_dump(int unit); 242 #endif /* BCM_SW_STATE_DUMP_DISABLE */ 243 244 #endif /* INCLUDE_L3 */ 245 246 #if defined BCM_WARM_BOOT_SUPPORT 247 extern int _bcm_notify_qos_reinit_to_fp (int unit); 248 #endif 249 250 extern int bcm_tr2_cosq_init(int unit); 251 extern int bcm_tr2_cosq_detach(int unit, int software_state_only); 252 extern int bcm_tr2_cosq_config_set(int unit, int numq); 253 extern int bcm_tr2_cosq_config_get(int unit, int *numq); 254 extern int bcm_tr2_cosq_mapping_set(int unit, bcm_port_t port, 255 bcm_cos_t priority, bcm_cos_queue_t cosq); 256 extern int bcm_tr2_cosq_mapping_get(int unit, bcm_port_t port, 257 bcm_cos_t priority, bcm_cos_queue_t *cosq); 258 extern int bcm_tr2_cosq_port_bandwidth_set(int unit, bcm_port_t port, 259 bcm_cos_queue_t cosq, 260 uint32 min_quantum, 261 uint32 max_quantum, 262 uint32 burst_quantum, 263 uint32 flags); 264 extern int bcm_tr2_cosq_port_bandwidth_get(int unit, bcm_port_t port, 265 bcm_cos_queue_t cosq, 266 uint32 *min_quantum, 267 uint32 *max_quantum, 268 uint32 *burst_quantum, 269 uint32 *flags); 270 extern int bcm_tr2_cosq_port_pps_set(int unit, bcm_port_t port, 271 bcm_cos_queue_t cosq, int pps); 272 extern int bcm_tr2_cosq_port_pps_get(int unit, bcm_port_t port, 273 bcm_cos_queue_t cosq, int *pps); 274 extern int bcm_tr2_cosq_port_burst_set(int unit, bcm_port_t port, 275 bcm_cos_queue_t cosq, int burst); 276 extern int bcm_tr2_cosq_port_burst_get(int unit, bcm_port_t port, 277 bcm_cos_queue_t cosq, int *burst); 278 extern int bcm_tr2_cosq_discard_set(int unit, uint32 flags); 279 extern int bcm_tr2_cosq_discard_get(int unit, uint32 *flags); 280 extern int bcm_tr2_cosq_discard_port_set(int unit, bcm_port_t port, 281 bcm_cos_queue_t cosq, uint32 color, 282 int drop_start, int drop_slope, 283 int average_time); 284 extern int bcm_tr2_cosq_discard_port_get(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_gport_discard_set(int unit, bcm_gport_t port, 289 bcm_cos_queue_t cosq, 290 bcm_cosq_gport_discard_t *discard); 291 extern int bcm_tr2_cosq_gport_discard_get(int unit, bcm_gport_t port, 292 bcm_cos_queue_t cosq, 293 bcm_cosq_gport_discard_t *discard); 294 extern int bcm_tr2_cosq_port_sched_set(int unit, bcm_pbmp_t pbm, 295 int mode, const int weights[], int delay); 296 extern int bcm_tr2_cosq_port_sched_get(int unit, bcm_pbmp_t pbm, 297 int *mode, int weights[], int *delay); 298 extern int bcm_tr2_cosq_gport_add(int unit, bcm_gport_t port, int numq, 299 uint32 flags, bcm_gport_t *gport); 300 extern int bcm_tr2_cosq_gport_delete(int unit, bcm_gport_t gport); 301 extern int bcm_tr2_cosq_gport_traverse(int unit, bcm_cosq_gport_traverse_cb cb, 302 void *user_data); 303 304 extern int bcm_tr2_cosq_gport_bandwidth_set(int unit, bcm_gport_t gport, 305 bcm_cos_queue_t cosq, 306 uint32 kbits_sec_min, 307 uint32 kbits_sec_max, 308 uint32 flags); 309 extern int bcm_tr2_cosq_gport_bandwidth_get(int unit, bcm_gport_t gport, 310 bcm_cos_queue_t cosq, 311 uint32 *kbits_sec_min, 312 uint32 *kbits_sec_max, 313 uint32 *flags); 314 extern int bcm_tr2_cosq_gport_bandwidth_burst_set(int unit, 315 bcm_gport_t gport, 316 bcm_cos_queue_t cosq, 317 uint32 kbits_burst_min, 318 uint32 kbits_burst_max); 319 extern int bcm_tr2_cosq_gport_bandwidth_burst_get(int unit, 320 bcm_gport_t gport, 321 bcm_cos_queue_t cosq, 322 uint32 *kbits_burst_min, 323 uint32 *kbits_burst_max); 324 extern int bcm_tr2_cosq_gport_sched_set(int unit, bcm_gport_t gport, 325 bcm_cos_queue_t cosq, int mode, 326 int weight); 327 extern int bcm_tr2_cosq_gport_sched_get(int unit, bcm_gport_t gport, 328 bcm_cos_queue_t cosq, int *mode, 329 int *weight); 330 extern int bcm_tr2_cosq_gport_attach(int unit, bcm_gport_t sched_gport, 331 bcm_cos_queue_t cosq, bcm_gport_t input_gport); 332 extern int bcm_tr2_cosq_gport_detach(int unit, bcm_gport_t sched_gport, 333 bcm_cos_queue_t cosq, bcm_gport_t input_gport); 334 extern int bcm_tr2_cosq_gport_attach_get(int unit, bcm_gport_t sched_gport, 335 bcm_cos_queue_t *cosq, bcm_gport_t *input_gport); 336 extern int _bcm_tr2_cosq_port_resolve(int unit, bcm_gport_t gport, 337 bcm_module_t *modid, bcm_port_t *port, 338 bcm_trunk_t *trunk_id, int *id); 339 340 extern int _bcm_tr2_port_vlan_priority_map_set(int unit, bcm_port_t port, 341 int pkt_pri, int cfi, 342 int internal_pri, 343 bcm_color_t color); 344 extern int _bcm_tr2_port_vlan_priority_map_get(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_priority_color_set(int unit, bcm_port_t port, int prio, bcm_color_t color); 349 350 extern int bcm_tr2x_oam_init(int unit); 351 extern int bcm_tr2x_oam_detach(int unit); 352 extern int bcm_tr2x_oam_lock(int unit); 353 extern int bcm_tr2x_oam_unlock(int unit); 354 extern int bcm_tr2x_oam_group_create(int unit, 355 bcm_oam_group_info_t *group_info); 356 extern int bcm_tr2x_oam_group_get(int unit, bcm_oam_group_t group, 357 bcm_oam_group_info_t *group_info); 358 extern int bcm_tr2x_oam_group_destroy(int unit, bcm_oam_group_t group); 359 extern int bcm_tr2x_oam_group_destroy_all(int unit); 360 extern int bcm_tr2x_oam_group_traverse(int unit, bcm_oam_group_traverse_cb cb, 361 void *user_data); 362 extern int bcm_tr2x_oam_endpoint_create(int unit, 363 bcm_oam_endpoint_info_t *endpoint_info); 364 extern int bcm_tr2x_oam_endpoint_get(int unit, bcm_oam_endpoint_t endpoint, 365 bcm_oam_endpoint_info_t *endpoint_info); 366 extern int bcm_tr2x_oam_endpoint_destroy(int unit, bcm_oam_endpoint_t endpoint); 367 extern int bcm_tr2x_oam_endpoint_destroy_all(int unit, bcm_oam_group_t group); 368 extern int bcm_tr2x_oam_endpoint_traverse(int unit, bcm_oam_group_t group, 369 bcm_oam_endpoint_traverse_cb cb, void *user_data); 370 extern int bcm_tr2x_oam_event_register(int unit, 371 bcm_oam_event_types_t event_types, bcm_oam_event_cb cb, 372 void *user_data); 373 extern int bcm_tr2x_oam_event_unregister(int unit, 374 bcm_oam_event_types_t event_types, bcm_oam_event_cb cb); 375 376 extern int bcm_tr2_subport_init(int unit); 377 extern int bcm_tr2_subport_cleanup(int unit); 378 extern int bcm_tr2_subport_group_create(int unit, bcm_subport_group_config_t *config, 379 bcm_gport_t *group); 380 extern int bcm_tr2_subport_group_destroy(int unit, bcm_gport_t group); 381 extern int bcm_tr2_subport_group_get(int unit, bcm_gport_t group, 382 bcm_subport_group_config_t *config); 383 extern int bcm_tr2_subport_port_add(int unit, bcm_subport_config_t *config, 384 bcm_gport_t *port); 385 extern int bcm_tr2_subport_port_delete(int unit, bcm_gport_t port); 386 extern int bcm_tr2_subport_port_get(int unit, bcm_gport_t port, 387 bcm_subport_config_t *config); 388 extern int bcm_tr2_subport_port_traverse(int unit, bcm_subport_port_traverse_cb cb, 389 void *user_data); 390 extern int _bcm_tr2_subport_group_resolve(int unit, bcm_gport_t gport, 391 bcm_module_t *modid, bcm_port_t *port, 392 bcm_trunk_t *trunk_id, int *id); 393 extern int _bcm_tr2_subport_port_resolve(int unit, bcm_gport_t gport, 394 bcm_module_t *modid, bcm_port_t *port, 395 bcm_trunk_t *trunk_id, int *id); 396 extern int bcm_tr2_subport_learn_set(int unit, bcm_gport_t port, uint32 flags); 397 extern int bcm_tr2_subport_learn_get(int unit, bcm_gport_t port, uint32 *flags); 398 extern int _bcm_tr2_port_lanes_set(int unit, bcm_port_t port, int value); 399 extern int _bcm_tr2_port_lanes_get(int unit, bcm_port_t port, int *value); 400 extern int _bcm_tr2_ing_pri_cng_map_default_entry_add(int unit, 401 soc_profile_mem_t *prof); 402 extern int _bcm_tr2_port_vpd_bitmap_alloc(int unit); 403 extern void _bcm_tr2_port_vpd_bitmap_free(int unit); 404 extern int _bcm_port_vlan_prot_index_alloc(int unit, int *prof_ptr); 405 extern int _bcm_port_vlan_prot_index_free(int unit, int prof_ptr); 406 407 /* Flexible counters support */ 408 409 #define _BCM_FLEX_STAT_TYPE(_id) (((_id) >> 16) & 0xFFFF) 410 #define _BCM_FLEX_STAT_COUNT_INX(_id) ((_id) & 0xFFFF) 411 #define _BCM_FLEX_STAT_COUNT_ID(_type,_ix) ((((_type) & 0xFFFF) << 16) | \ 412 ((_ix) & 0xFFFF)) 413 414 typedef enum _bcm_flex_stat_type_e { 415 _bcmFlexStatTypeService, 416 _bcmFlexStatTypeGport, 417 _bcmFlexStatTypeEgressService, 418 _bcmFlexStatTypeEgressGport, 419 _bcmFlexStatTypeFp, 420 _bcmFlexStatTypeVrf, 421 _bcmFlexStatTypeVxlt, 422 _bcmFlexStatTypeEgrVxlt, 423 _bcmFlexStatTypeMplsLabel, 424 _bcmFlexStatTypeNum, 425 /* count ingress/egress as 1*/ 426 _bcmFlexStatTypeHwNum = _bcmFlexStatTypeEgressService, 427 _bcmFlexStatTypeAllHwNum = _bcmFlexStatTypeFp 428 } _bcm_flex_stat_type_t; 429 430 #define _BCM_FLEX_STAT_HANDLE_WORDS 2 431 432 typedef struct { 433 uint32 words[_BCM_FLEX_STAT_HANDLE_WORDS]; 434 } _bcm_flex_stat_handle_t; 435 436 #define _BCM_FLEX_STAT_HANDLE_WORD_GET(fsh, word) ((fsh).words[(word)]) 437 #define _BCM_FLEX_STAT_HANDLE_WORD_SET(fsh, word, val) \ 438 ((fsh).words[(word)] = (val)) 439 #define _BCM_FLEX_STAT_HANDLE_CLEAR(fsh) \ 440 (_BCM_FLEX_STAT_HANDLE_WORD_GET(fsh, 0) = \ 441 _BCM_FLEX_STAT_HANDLE_WORD_GET(fsh, 1) = 0) 442 443 #define _BCM_FLEX_STAT_HANDLE_ASSIGN(fsh1, fsh2) ((fsh1) = (fsh2)) 444 #define _BCM_FLEX_STAT_HANDLE_COPY(fsh1, fsh2) \ 445 memcpy(&(fsh1), &(fsh2), sizeof(_bcm_flex_stat_handle_t)) 446 447 typedef struct _bcm_flex_stat_handle_to_index_s { 448 _bcm_flex_stat_handle_t handle; 449 uint32 index; 450 _bcm_flex_stat_type_t type; 451 } _bcm_flex_stat_handle_to_index_t; 452 453 typedef enum _bcm_flex_stat_memacc_type_e { 454 _BCM_FS_MEMACC_SERVICE_ING_PKT, 455 _BCM_FS_MEMACC_SERVICE_ING_BYTE, 456 _BCM_FS_MEMACC_SERVICE_EGR_PKT, 457 _BCM_FS_MEMACC_SERVICE_EGR_BYTE, 458 _BCM_FS_MEMACC_VINTF_ING_PKT, 459 _BCM_FS_MEMACC_VINTF_ING_BYTE, 460 _BCM_FS_MEMACC_VINTF_EGR_PKT, 461 _BCM_FS_MEMACC_VINTF_EGR_BYTE, 462 _BCM_FS_MEMACC_NUM 463 } _bcm_flex_stat_memacc_type_t; 464 465 /* Structure for tracking flexible stat info */ 466 typedef struct _bcm_flex_stat_info_s { 467 int stat_mem_size; 468 SHR_BITDCL *stats; 469 int handle_list_size; 470 _bcm_flex_stat_handle_to_index_t *handle_list; 471 uint16 *ref_cnt; /* reference count */ 472 } _bcm_flex_stat_info_t; 473 474 #define _BCM_FLEX_STAT_GRANS 2 /* Packets and Bytes */ 475 #define _BCM_FLEX_STAT_DIRS 2 /* Ingress and Egress */ 476 #define _BCM_FLEX_STAT_BUFFS 2 /* Ping pong fetch buffers */ 477 478 typedef enum _bcm_flex_stat_e { 479 _bcmFlexStatIngressPackets, /* Packets that ingress on the class */ 480 _bcmFlexStatIngressBytes, /* Bytes that ingress on the class */ 481 _bcmFlexStatEgressPackets, /* Packets that egress on the class */ 482 _bcmFlexStatEgressBytes, /* Bytes that egress on the class */ 483 _bcmFlexStatNum 484 } _bcm_flex_stat_t; 485 486 #define _BCM_FLEX_STAT_HW_INGRESS (1 << 0) /* apply to ingress chip */ 487 #define _BCM_FLEX_STAT_HW_EGRESS (1 << 1) /* apply to egress chip */ 488 #define _BCM_FLEX_STAT_HW_BOTH (_BCM_FLEX_STAT_HW_INGRESS | \ 489 _BCM_FLEX_STAT_HW_EGRESS) 490 491 typedef int (*_bcm_flex_stat_src_index_set_f)(int unit, 492 _bcm_flex_stat_handle_t handle, 493 int fs_idx, void *cookie); 494 495 extern int _bcm_esw_flex_stat_detach(int unit, _bcm_flex_stat_type_t type); 496 extern int _bcm_esw_flex_stat_init(int unit, _bcm_flex_stat_type_t type); 497 498 extern void _bcm_esw_flex_stat_ext_reinit_add(int unit, 499 _bcm_flex_stat_type_t type, 500 int fs_idx, 501 _bcm_flex_stat_handle_t handle); 502 extern void _bcm_esw_flex_stat_reinit_add(int unit, 503 _bcm_flex_stat_type_t type, 504 int fs_idx, uint32 handle); 505 extern void _bcm_esw_flex_stat_release_handles(int unit, 506 _bcm_flex_stat_type_t type); 507 extern int _bcm_esw_flex_stat_stat_set(int unit, 508 _bcm_flex_stat_type_t type, 509 int fs_idx, 510 bcm_vlan_stat_t vl_stat, 511 uint64 val); 512 extern int _bcm_esw_flex_stat_stat_get(int unit, 513 _bcm_flex_stat_type_t type, 514 int fs_idx, 515 bcm_vlan_stat_t vl_stat, 516 uint64 *val); 517 extern void _bcm_esw_flex_stat_ext_handle_free(int unit, 518 _bcm_flex_stat_type_t type, 519 _bcm_flex_stat_handle_t handle); 520 extern void _bcm_esw_flex_stat_handle_free(int unit, 521 _bcm_flex_stat_type_t type, 522 uint32 handle); 523 extern int _bcm_esw_vlan_flex_stat_hw_index_set(int unit, 524 _bcm_flex_stat_handle_t handle, 525 int fs_idx, void *cookie); 526 extern int _bcm_esw_port_flex_stat_hw_index_set(int unit, 527 _bcm_flex_stat_handle_t handle, 528 int fs_idx, void *cookie); 529 530 extern int _bcm_esw_flex_stat_ext_enable_set(int unit, 531 _bcm_flex_stat_type_t type, 532 _bcm_flex_stat_src_index_set_f fs_set_cb, 533 void *cookie, 534 _bcm_flex_stat_handle_t handle, 535 int enable, 536 int cnt_inx); 537 extern int _bcm_esw_flex_stat_enable_set(int unit, 538 _bcm_flex_stat_type_t type, 539 _bcm_flex_stat_src_index_set_f fs_set_cb, 540 void *cookie, 541 uint32 handle, 542 int enable, 543 int cnt_inx); 544 extern int _bcm_esw_flex_stat_ext_get(int unit, int sync_mode, 545 _bcm_flex_stat_type_t type, 546 _bcm_flex_stat_handle_t handle, 547 _bcm_flex_stat_t stat, 548 uint64 *val); 549 extern int _bcm_esw_flex_stat_get(int unit, int sync_mode, 550 _bcm_flex_stat_type_t type, 551 uint32 handle, 552 _bcm_flex_stat_t stat, 553 uint64 *val); 554 extern int _bcm_esw_flex_stat_ext_get32(int unit, int sync_mode, 555 _bcm_flex_stat_type_t type, 556 _bcm_flex_stat_handle_t handle, 557 _bcm_flex_stat_t stat, 558 uint32 *val); 559 extern int _bcm_esw_flex_stat_get32(int unit, int sync_mode, 560 _bcm_flex_stat_type_t type, 561 uint32 handle, 562 _bcm_flex_stat_t stat, 563 uint32 *val); 564 extern int _bcm_esw_flex_stat_ext_set(int unit, 565 _bcm_flex_stat_type_t type, 566 _bcm_flex_stat_handle_t handle, 567 _bcm_flex_stat_t stat, 568 uint64 val); 569 extern int _bcm_esw_flex_stat_set(int unit, 570 _bcm_flex_stat_type_t type, 571 uint32 handle, 572 _bcm_flex_stat_t stat, 573 uint64 val); 574 extern int _bcm_esw_flex_stat_ext_set32(int unit, 575 _bcm_flex_stat_type_t type, 576 _bcm_flex_stat_handle_t handle, 577 _bcm_flex_stat_t stat, 578 uint32 val); 579 extern int _bcm_esw_flex_stat_set32(int unit, 580 _bcm_flex_stat_type_t type, 581 uint32 handle, 582 _bcm_flex_stat_t stat, 583 uint32 val); 584 extern int _bcm_esw_flex_stat_ext_multi_get(int unit, 585 _bcm_flex_stat_type_t type, 586 _bcm_flex_stat_handle_t handle, 587 int nstat, 588 _bcm_flex_stat_t *stat_arr, 589 uint64 *value_arr); 590 extern int _bcm_esw_flex_stat_multi_get(int unit, 591 _bcm_flex_stat_type_t type, 592 uint32 handle, 593 int nstat, 594 _bcm_flex_stat_t *stat_arr, 595 uint64 *value_arr); 596 extern int _bcm_esw_flex_stat_ext_multi_get32(int unit, 597 _bcm_flex_stat_type_t type, 598 _bcm_flex_stat_handle_t handle, 599 int nstat, 600 _bcm_flex_stat_t *stat_arr, 601 uint32 *value_arr); 602 extern int _bcm_esw_flex_stat_multi_get32(int unit, 603 _bcm_flex_stat_type_t type, 604 uint32 handle, 605 int nstat, 606 _bcm_flex_stat_t *stat_arr, 607 uint32 *value_arr); 608 extern int _bcm_esw_flex_stat_ext_multi_set(int unit, 609 _bcm_flex_stat_type_t type, 610 _bcm_flex_stat_handle_t handle, 611 int nstat, 612 _bcm_flex_stat_t *stat_arr, 613 uint64 *value_arr); 614 extern int _bcm_esw_flex_stat_multi_set(int unit, 615 _bcm_flex_stat_type_t type, 616 uint32 handle, 617 int nstat, 618 _bcm_flex_stat_t *stat_arr, 619 uint64 *value_arr); 620 extern int _bcm_esw_flex_stat_ext_multi_set32(int unit, 621 _bcm_flex_stat_type_t type, 622 _bcm_flex_stat_handle_t handle, 623 int nstat, 624 _bcm_flex_stat_t *stat_arr, 625 uint32 *value_arr); 626 extern int _bcm_esw_flex_stat_multi_set32(int unit, 627 _bcm_flex_stat_type_t type, 628 uint32 handle, 629 int nstat, 630 _bcm_flex_stat_t *stat_arr, 631 uint32 *value_arr); 632 extern int _bcm_esw_flex_stat_free_index_assign(int unit, 633 _bcm_flex_stat_type_t fs_type); 634 extern int _bcm_esw_flex_stat_count_index_remove(int unit, 635 _bcm_flex_stat_type_t fs_type, 636 int fs_inx); 637 extern int _bcm_esw_port_flex_stat_index_set(int unit, bcm_gport_t port, 638 int fs_idx,uint32 flags); 639 extern int _bcm_esw_mpls_flex_stat_index_set(int unit, bcm_gport_t port, 640 int fs_idx,uint32 flags); 641 extern int _bcm_esw_mim_flex_stat_index_set(int unit, bcm_gport_t port, 642 int fs_idx, uint32 flags); 643 extern int _bcm_esw_subport_flex_stat_index_set(int unit, bcm_gport_t port, 644 int fs_idx, uint32 flags); 645 extern int _bcm_esw_wlan_flex_stat_index_set(int unit, bcm_gport_t port, 646 int fs_idx,uint32 flags); 647 extern int _bcm_esw_vlan_flex_stat_index_set(int unit, bcm_vlan_t vlan, 648 int fs_idx,uint32 flags); 649 extern int _bcm_tr_subport_gport_used(int unit, bcm_gport_t port); 650 extern int _bcm_tr2_vlan_qmid_set(int unit, bcm_vlan_t vlan, int qm_ptr, 651 int use_inner_tag); 652 extern int _bcm_tr2_vlan_qmid_get(int unit, bcm_vlan_t vlan, int *qm_ptr, 653 int *use_inner_tag); 654 extern int _bcm_tr2_qos_pvmid_set(int unit, bcm_vlan_t vlan, int pvmid); 655 extern int _bcm_tr2_qos_pvmid_get(int unit, bcm_vlan_t vlan, int *pvmid); 656 extern int _bcm_tr2_mim_port_phys_gport_get(int unit, int vp, bcm_gport_t *gp); 657 extern void _bcm_tr2_mim_port_match_count_adjust(int unit, int vp, int step); 658 659 typedef struct _bcm_vlan_translate_stat_info_s { 660 bcm_gport_t port; 661 bcm_vlan_translate_key_t key_type; 662 bcm_vlan_t outer_vlan; 663 bcm_vlan_t inner_vlan; 664 } _bcm_vlan_translate_stat_info_t; 665 666 extern int _bcm_tr2_vlan_translate_range_vp_add(int unit, 667 bcm_gport_t port, 668 bcm_vlan_t outer_vlan_low, 669 bcm_vlan_t outer_vlan_high, 670 bcm_vlan_t inner_vlan_low, 671 bcm_vlan_t inner_vlan_high, 672 int vp, 673 bcm_vlan_action_set_t *action); 674 extern int _bcm_tr2_vlan_translate_range_vp_delete(int unit, 675 bcm_gport_t port, 676 bcm_vlan_t outer_vlan_low, 677 bcm_vlan_t outer_vlan_high, 678 bcm_vlan_t inner_vlan_low, 679 bcm_vlan_t inner_vlan_high, 680 int vp); 681 extern int bcm_tr2_qos_init(int unit); 682 extern int bcm_tr2_qos_detach(int unit); 683 extern int bcm_tr2_qos_map_create(int unit, uint32 flags, int *map_id); 684 extern int bcm_tr2_qos_map_destroy(int unit, int map_id); 685 extern int bcm_tr2_qos_map_add(int unit, uint32 flags, bcm_qos_map_t *map, 686 int map_id, int internal); 687 extern int bcm_tr2_qos_map_delete(int unit, uint32 flags, 688 bcm_qos_map_t *map, int map_id); 689 extern int bcm_tr2_qos_multi_get(int unit, int array_size, int *map_ids_array, 690 int *flags_array, int *array_count); 691 extern int bcm_tr2_qos_map_multi_get(int unit, uint32 flags, 692 int map_id, int array_size, 693 bcm_qos_map_t *array, int *array_count); 694 extern int bcm_tr2_qos_port_map_set(int unit, bcm_gport_t port, int ing_map, 695 int egr_map); 696 extern int bcm_tr2_qos_port_map_type_get(int unit, bcm_gport_t port, uint32 flags, 697 int* map_id); 698 extern int bcm_tr2_qos_port_vlan_map_set(int unit, bcm_gport_t port, bcm_vlan_t vid, 699 int ing_map, int egr_map); 700 extern int bcm_tr2_qos_port_vlan_map_get(int unit, bcm_gport_t port, bcm_vlan_t vid, 701 int *ing_map, int *egr_map); 702 extern int _bcm_tr2_qos_id2idx(int unit, int map_id, int *hw_idx); 703 extern int _bcm_tr2_qos_idx2id(int unit, int hw_idx, int type, int *map_id); 704 extern int _bcm_tr2_port_tab_set(int unit, bcm_port_t port, 705 soc_field_t field, int value); 706 extern int _bcm_tr2_port_tab_get(int unit, bcm_port_t port, 707 soc_field_t field, int* value); 708 extern int _bcm_tr2_vp_dscp_map_mode_set(int unit, bcm_gport_t port, 709 int mode); 710 extern int _bcm_tr2_vp_dscp_map_mode_get(int unit, bcm_gport_t port, 711 int *mode); 712 extern int _bcm_tr2_vp_dscp_map_set(int unit, bcm_gport_t port, int srccp, 713 int mapcp, int prio); 714 extern int _bcm_tr2_vp_dscp_map_get(int unit, bcm_gport_t port, int srccp, 715 int *mapcp, int *prio); 716 extern int _bcm_tr2_vp_ing_pri_cng_set(int unit, bcm_port_t port, int untagged, 717 int pkt_pri, int cfi, 718 int int_pri, bcm_color_t color); 719 extern int _bcm_tr2_vp_ing_pri_cng_get(int unit, bcm_port_t port, int untagged, 720 int pkt_pri, int cfi, 721 int *int_pri, bcm_color_t *color); 722 #if defined(BCM_FIELD_SUPPORT) 723 extern int _bcm_field_tr2_init(int unit, _field_control_t *fc); 724 extern int _bcm_field_tr2_stat_hw_mode_to_bmap(int unit, uint16 mode, 725 _field_stage_id_t stage_id, 726 uint32 *hw_bmap, 727 uint8 *hw_entry_count); 728 #endif /* BCM_FIELD_SUPPORT */ 729 730 #ifdef BCM_WARM_BOOT_SUPPORT 731 extern int bcm_tr2_cosq_sync(int unit); 732 extern int _bcm_tr2_qos_sync(int unit); 733 extern int _bcm_tr2_ipmc_repl_reload(int unit); 734 extern int _bcm_tr2x_oam_sync(int unit); 735 extern int bcm_tr2_l3_ecmp_defragment_buffer_wb_alloc_size_get(int unit, 736 int *size); 737 extern int bcm_tr2_l3_ecmp_defragment_buffer_sync(int unit, 738 uint8 **scache_ptr); 739 extern int bcm_tr2_l3_ecmp_defragment_buffer_recover(int unit, 740 uint8 **scache_ptr); 741 extern int bcm_tr2_mim_sync(int unit); 742 #endif /* BCM_WARM_BOOT_SUPPORT */ 743 744 #ifndef BCM_SW_STATE_DUMP_DISABLE 745 extern void bcm_tr2_cosq_sw_dump(int unit); 746 extern void _bcm_tr2_ipmc_repl_sw_dump(int unit); 747 #endif /* BCM_SW_STATE_DUMP_DISABLE */ 748 #ifdef BCM_WARM_BOOT_SUPPORT_SW_DUMP 749 extern void _bcm_tr2_qos_sw_dump(int unit); 750 extern void _bcm_tr2x_oam_sw_dump(int unit); 751 #endif /* BCM_WARM_BOOT_SUPPORT_SW_DUMP */ 752 #ifndef BCM_SW_STATE_DUMP_DISABLE 753 extern void bcm_tr2_l3_ecmp_defragment_buffer_sw_dump(int unit); 754 #endif /* BCM_SW_STATE_DUMP_DISABLE */ 755 extern int bcm_tr2_ipmc_remap_set(int unit, bcm_multicast_t from, int to); 756 extern int bcm_tr2_ipmc_remap_get(int unit, bcm_multicast_t from, int *to); 757 758 extern int _bcm_tr3_vlan_vpn_is_eline( int unit, bcm_vpn_t vpn, uint8 *isEline); 759 extern int _bcm_tr3_vlan_vpn_is_valid( int unit, bcm_vpn_t vpn); 760 extern int _bcm_tr3_vlan_vp_destroy_all(int unit, bcm_vpn_t vpn); 761 #if defined(BCM_TRIDENT3_SUPPORT) && defined(INCLUDE_L3) 762 int 763 bcm_td3_mpls_combo_add (int unit, uint32 flags, bcm_mpls_exp_map_t *mpls_map, 764 int map_id, uint32 hw_idx, uint32 entry_per_index); 765 #endif 766 #endif /* BCM_TRIUMPH2_SUPPORT */ 767 #endif /* !_BCM_INT_TRIUMPH2_H_ */