trident.h (37741B)
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: trident.h 8 * Purpose: Function declarations for Trident bcm functions 9 */ 10 11 #ifndef _BCM_INT_TRIDENT_H_ 12 #define _BCM_INT_TRIDENT_H_ 13 #if defined(BCM_TRIDENT_SUPPORT) 14 #include <bcm_int/esw/cosq.h> 15 #include <bcm_int/esw/mbcm.h> 16 #include <bcm_int/esw/oam.h> 17 #include <bcm_int/esw/field.h> 18 #include <bcm_int/esw/trill.h> 19 #include <soc/tnl_term.h> 20 #include <bcm/qos.h> 21 #include <bcm/trill.h> 22 #include <bcm/niv.h> 23 24 typedef enum { 25 _BCM_TD_COSQ_INDEX_STYLE_BUCKET, 26 _BCM_TD_COSQ_INDEX_STYLE_BUCKET_MODE, 27 _BCM_TD_COSQ_INDEX_STYLE_WRED, 28 _BCM_TD_COSQ_INDEX_STYLE_WRED_DROP_THRESH, 29 _BCM_TD_COSQ_INDEX_STYLE_SCHEDULER, 30 _BCM_TD_COSQ_INDEX_STYLE_PERQ_XMT, 31 _BCM_TD_COSQ_INDEX_STYLE_UCAST_DROP, 32 _BCM_TD_COSQ_INDEX_STYLE_UCAST_QUEUE, 33 _BCM_TD_COSQ_INDEX_STYLE_MCAST_QUEUE, 34 _BCM_TD_COSQ_INDEX_STYLE_EXT_UCAST_QUEUE, 35 _BCM_TD_COSQ_INDEX_STYLE_EGR_POOL, 36 _BCM_TD_COSQ_INDEX_STYLE_UC_EGR_POOL, 37 _BCM_TD_COSQ_INDEX_STYLE_COUNT 38 } _bcm_td_cosq_index_style_t; 39 40 #if defined(BCM_FIELD_SUPPORT) 41 extern int _bcm_field_trident_init(int unit, _field_control_t *fc); 42 extern int _bcm_field_td_counter_get(int unit, 43 _field_stage_t *stage_fc, 44 soc_mem_t counter_x_mem, 45 uint32 *mem_x_buf, 46 soc_mem_t counter_y_mem, 47 uint32 *mem_y_buf, 48 int idx, 49 uint64 *packet_count, 50 uint64 *byte_count); 51 extern int _bcm_field_td_counter_set(int unit, 52 _field_stage_t *stage_fc, 53 soc_mem_t counter_x_mem, 54 uint32 *mem_x_buf, 55 soc_mem_t counter_y_mem, 56 uint32 *mem_y_buf, 57 int idx, 58 uint64 *packet_count, 59 uint64 *byte_count); 60 #endif /* BCM_FIELD_SUPPORT */ 61 62 extern int bcm_td_l2_myStation_add (int unit, bcm_l2_addr_t *l2addr); 63 extern int bcm_td_l2_myStation_delete (int unit, bcm_mac_t mac, bcm_vlan_t vid, int *l2_index); 64 extern int bcm_td_l2_myStation_get (int unit, bcm_mac_t mac, bcm_vlan_t vid, bcm_l2_addr_t *l2addr); 65 extern int bcm_td_metro_myStation_add(int unit, bcm_mac_t mac, bcm_vlan_t vlan, bcm_port_t port, 66 int tunnel_term); 67 extern int bcm_td_metro_myStation_delete(int unit, bcm_mac_t mac, bcm_vlan_t vlan, bcm_port_t port, 68 int tunnel_term); 69 extern int bcm_td_metro_myStation_delete_all(int unit); 70 71 extern int bcm_td_l2cache_myStation_set(int unit, int index, 72 bcm_l2_cache_addr_t *l2addr); 73 extern int bcm_td_l2cache_myStation_get(int unit, int index, 74 bcm_l2_cache_addr_t *l2addr); 75 extern int bcm_td_l2cache_myStation_delete(int unit, int index); 76 extern int bcm_td_l2cache_myStation_lookup(int unit, 77 bcm_l2_cache_addr_t *l2caddr, 78 int *result_index); 79 80 extern int bcm_trident_trunk_modify(int, bcm_trunk_t, 81 bcm_trunk_info_t *, int, bcm_trunk_member_t *, 82 trunk_private_t *, int, bcm_trunk_member_t *); 83 extern int bcm_trident_trunk_get(int, bcm_trunk_t, 84 bcm_trunk_info_t *, int, bcm_trunk_member_t *, 85 int *, trunk_private_t *); 86 extern int bcm_trident_trunk_destroy(int, bcm_trunk_t, trunk_private_t *); 87 extern int bcm_trident_trunk_mcast_join(int, bcm_trunk_t, bcm_vlan_t, 88 bcm_mac_t, trunk_private_t *); 89 #ifdef INCLUDE_L3 90 extern int bcm_td_trill_init(int unit); 91 extern int bcm_td_trill_cleanup(int unit); 92 extern int bcm_td_trill_trunk_member_add (int unit, bcm_trunk_t trunk_id, 93 int trunk_member_count, bcm_port_t *trunk_member_array); 94 extern int bcm_td_trill_trunk_member_delete(int unit, bcm_trunk_t trunk_id, 95 int trunk_member_count, bcm_port_t *trunk_member_array); 96 extern int bcm_td_trill_port_add(int unit, bcm_trill_port_t *trill_port); 97 extern int bcm_td_trill_port_delete(int unit, bcm_gport_t trill_port_id); 98 extern int bcm_td_trill_port_delete_all(int unit); 99 extern int bcm_td_trill_port_get(int unit, bcm_trill_port_t *trill_port); 100 extern int bcm_td_trill_port_get_all(int unit, int port_max, bcm_trill_port_t *trill_port, int *port_count ); 101 extern int bcm_td_trill_lock (int unit); 102 extern void bcm_td_trill_unlock (int unit); 103 extern int _bcm_td_trill_port_resolve(int unit, bcm_gport_t trill_port_id, bcm_if_t encap_id, 104 bcm_module_t *modid, bcm_port_t *port, 105 bcm_trunk_t *trunk_id, int *id); 106 extern int bcm_td_trill_multicast_add(int unit, uint32 flags, bcm_trill_name_t root_name, bcm_vlan_t vlan, 107 bcm_mac_t c_dmac, bcm_multicast_t group); 108 extern int bcm_td_trill_multicast_delete(int unit, uint32 flags, bcm_trill_name_t root_name, 109 bcm_vlan_t vid, bcm_mac_t c_dmac); 110 extern int bcm_td_trill_multicast_delete_all(int unit, bcm_trill_name_t root_name); 111 extern int bcm_td_trill_multicast_entry_get( int unit, bcm_trill_multicast_entry_t *trill_mc_entry); 112 extern int bcm_td_trill_multicast_check(int unit, bcm_multicast_t l2mc_group); 113 114 extern int bcm_td_trill_multicast_traverse(int unit, 115 bcm_trill_multicast_entry_traverse_cb cb, void *user_data); 116 extern int _bcm_td_l3_ecmp_grp_add(int unit, int ecmp_grp, 117 void *buf, void *info); 118 extern int _bcm_td_l3_ecmp_grp_get(int unit, int ecmp_idx, 119 int ecmp_count, int *nh_idx); 120 extern int _bcm_td_l3_ecmp_grp_del(int unit, int ecmp_grp, void *info); 121 extern int bcm_td_trill_egress_set(int unit, int nh_index, uint32 flags); 122 extern int bcm_td_trill_egress_reset(int unit, int nh_index); 123 extern int bcm_td_trill_egress_get(int unit, bcm_l3_egress_t *egr, int nh_index); 124 extern int bcm_td_trill_ethertype_set(int unit, uint16 etherType); 125 extern int bcm_td_trill_ethertype_get(int unit, int *etherType); 126 extern int bcm_td_trill_mac_set(int unit, bcm_switch_control_t type, 127 uint32 mac_field, uint8 flag); 128 extern int bcm_td_trill_mac_get(int unit, bcm_switch_control_t type, 129 uint32 *mac_field, uint8 flag); 130 extern int bcm_td_trill_ISIS_ethertype_set(int unit, uint16 etherType); 131 extern int bcm_td_trill_ISIS_ethertype_get(int unit, int *etherType); 132 extern int bcm_td_trill_MinTtl_set(int unit, int min_ttl); 133 extern int bcm_td_trill_MinTtl_get(int unit, int *min_ttl); 134 extern int bcm_td_trill_TtlCheckEnable_set(int unit, int enable); 135 extern int bcm_td_trill_TtlCheckEnable_get(int unit, int *enable); 136 extern int bcm_td_trill_source_trill_name_idx_get(int unit, 137 bcm_trill_name_t source_trill_name, 138 int *trill_name_index); 139 extern int bcm_td_trill_source_trill_idx_name_get(int unit, 140 int trill_name_index, 141 bcm_trill_name_t *source_trill_name); 142 extern int bcm_td_trill_vlan_multicast_group_add(int unit, bcm_vlan_t vlan, vlan_tab_entry_t *vtab); 143 extern int bcm_td_trill_vlan_multicast_group_delete(int unit, bcm_vlan_t vlan, vlan_tab_entry_t *vtab); 144 145 extern int bcm_td_trill_egress_add(int unit, bcm_multicast_t l3mc_group); 146 extern int bcm_td_trill_egress_delete(int unit, bcm_multicast_t mc_index); 147 extern int bcm_td_trill_multicast_source_add( int unit, 148 bcm_trill_name_t root_name, 149 bcm_trill_name_t source_name, 150 bcm_gport_t port, 151 bcm_if_t encap_intf); 152 extern int bcm_td_trill_multicast_source_delete( int unit, 153 bcm_trill_name_t root_name, 154 bcm_trill_name_t source_name, 155 bcm_gport_t port, 156 bcm_if_t encap_intf); 157 extern int bcm_td_trill_multicast_source_get( int unit, 158 bcm_trill_name_t root_name, 159 bcm_trill_name_t source_name, 160 bcm_gport_t *port); 161 extern int bcm_td_trill_multicast_source_traverse(int unit, 162 bcm_trill_multicast_source_traverse_cb cb, void *user_data); 163 extern int bcm_td_trill_multicast_source_delete_all(int unit); 164 extern int bcm_td_trill_stat_get(int unit, bcm_gport_t port, 165 bcm_trill_stat_t stat, uint64 *val); 166 extern int bcm_td_trill_stat_get32(int unit, bcm_gport_t port, 167 bcm_trill_stat_t stat, uint32 *val); 168 extern int bcm_td_trill_stat_clear(int unit, bcm_gport_t port, 169 bcm_trill_stat_t stat); 170 extern int bcm_td_multicast_trill_group_update(int unit, 171 int ipmc_index, uint8 trill_tree_id); 172 extern int bcm_td_multicast_trill_group_get(int unit, 173 int ipmc_index, uint8 *trill_tree_id); 174 extern int bcm_td_multicast_trill_rootname_get(int unit, 175 bcm_multicast_t group, bcm_trill_name_t *root_name); 176 extern int _bcm_esw_trill_multicast_entry_add(int unit, uint32 flags, int key, 177 bcm_vlan_t vid, bcm_mac_t c_dmac, 178 uint8 trill_tree_id, bcm_multicast_t group); 179 extern int _bcm_esw_trill_multicast_entry_delete(int unit, int key, bcm_vlan_t vid, 180 bcm_mac_t c_dmac, uint8 trill_tree_id); 181 extern int _bcm_esw_trill_multicast_entry_update(int unit, int key, 182 bcm_vlan_t vid, bcm_mac_t c_dmac, 183 uint8 trill_tree_id, bcm_multicast_t group); 184 extern int _bcm_esw_trill_multicast_entry_get(int unit, int key, bcm_vlan_t vid, 185 bcm_mac_t mac, uint8 trill_tree_id, bcm_multicast_t *group); 186 extern int _bcm_esw_trill_multicast_entry_delete_all (int unit, uint8 trill_tree_id); 187 188 extern int _bcm_esw_trill_multicast_transit_entry_reset(int unit, bcm_trill_name_t root_name); 189 extern int _bcm_esw_trill_multicast_transit_entry_reset_all (int unit, uint8 trill_tree_id); 190 extern int _bcm_esw_trill_multicast_transit_entry_set(int unit, int flags, 191 bcm_trill_name_t root_name, int mc_index, uint8 trill_tree_id); 192 extern int _bcm_esw_trill_multicast_transit_entry_get(int unit, bcm_trill_name_t root_name, bcm_multicast_t *group); 193 194 extern int _bcm_esw_trill_multicast_enable(int unit, int flags, bcm_trill_name_t root_name); 195 extern int _bcm_esw_trill_multicast_disable(int unit, int flags, bcm_trill_name_t root_name); 196 extern int _bcm_esw_trill_network_multicast_entry_traverse (int unit, _bcm_td_trill_multicast_entry_traverse_t *trav_st); 197 extern int _bcm_esw_trill_access_multicast_entry_traverse (int unit, _bcm_td_trill_multicast_entry_traverse_t *trav_st); 198 extern int _bcm_esw_trill_unpruned_entry_traverse (int unit, _bcm_td_trill_multicast_entry_traverse_t *trav_st); 199 200 extern int bcm_td_trill_multicast_transit_entry_set(int unit, int flags, 201 bcm_trill_name_t root_name, int mc_index, uint8 trill_tree_id); 202 extern int bcm_td_trill_multicast_transit_entry_reset(int unit, bcm_trill_name_t root_name); 203 extern int bcm_td_trill_multicast_transit_entry_reset_all (int unit, uint8 tree_id); 204 extern int bcm_td_trill_multicast_transit_entry_get(int unit, bcm_trill_name_t root_name, bcm_multicast_t *group); 205 extern int bcm_td_trill_multicast_enable(int unit, int flags, bcm_trill_name_t root_name); 206 extern int bcm_td_trill_multicast_disable(int unit, int flags, bcm_trill_name_t root_name); 207 extern int bcm_td_trill_unpruned_entry_traverse (int unit, _bcm_td_trill_multicast_entry_traverse_t *trav_st); 208 209 extern int bcm_td_l2_trill_multicast_entry_add(int unit, uint32 flags, int key, 210 bcm_vlan_t vid, bcm_mac_t mac, 211 uint8 trill_tree_id, bcm_multicast_t group); 212 extern int bcm_td_l2_trill_vlan_multicast_entry_modify (int unit, bcm_vlan_t vlan, int set_bit); 213 extern int bcm_td_l2_trill_multicast_entry_update(int unit, int key, 214 bcm_vlan_t vid, bcm_mac_t mac, 215 uint8 trill_tree_id, bcm_multicast_t group); 216 extern int bcm_td_l2_trill_multicast_entry_delete(int unit, int key, bcm_vlan_t vid, 217 bcm_mac_t mac, uint8 trill_tree_id); 218 extern int bcm_td_l2_trill_multicast_entry_get(int unit, int key, bcm_vlan_t vid, 219 bcm_mac_t mac, uint8 trill_tree_id, bcm_multicast_t *group); 220 extern int bcm_td_l2_trill_multicast_entry_delete_all (int unit, uint8 tree_id); 221 extern int bcm_td_l2_trill_network_multicast_entry_traverse (int unit, 222 _bcm_td_trill_multicast_entry_traverse_t *trav_st); 223 extern int bcm_td_l2_trill_access_multicast_entry_traverse (int unit, 224 _bcm_td_trill_multicast_entry_traverse_t *trav_st); 225 extern int _bcm_td_l3_intf_qos_set(int unit, uint32 *l3_if_entry_p, 226 _bcm_l3_intf_cfg_t *intf_info); 227 extern int _bcm_td_l3_intf_qos_get(int unit, uint32 *l3_if_entry_p, 228 _bcm_l3_intf_cfg_t *intf_info); 229 extern int _bcm_td_l3_routed_int_pri_init (int unit); 230 extern int _bcm_xgs3_trunk_nh_store_get(int unit, bcm_trunk_t trunk_id, int *nh_index); 231 232 extern int bcm_td_vp_force_vlan_get(int unit, bcm_gport_t gport, 233 bcm_vlan_t *vlan, uint32 *flags); 234 extern int bcm_td_vp_force_vlan_set(int unit, bcm_gport_t gport, 235 bcm_vlan_t vlan, uint32 flags); 236 237 #endif /* INCLUDE_L3 */ 238 239 extern int bcm_td_cosq_init(int unit); 240 extern int bcm_td_cosq_detach(int unit, int software_state_only); 241 extern int bcm_td_cosq_config_set(int unit, int numq); 242 extern int bcm_td_cosq_config_get(int unit, int *numq); 243 extern int bcm_td_cosq_mapping_set(int unit, bcm_port_t port, 244 bcm_cos_t priority, bcm_cos_queue_t cosq); 245 extern int bcm_td_cosq_mapping_get(int unit, bcm_port_t port, 246 bcm_cos_t priority, bcm_cos_queue_t *cosq); 247 extern int bcm_td_cosq_port_sched_set(int unit, bcm_pbmp_t pbm, 248 int mode, const int *weights, int delay); 249 extern int bcm_td_cosq_port_sched_get(int unit, bcm_pbmp_t pbm, 250 int *mode, int *weights, int *delay); 251 extern int bcm_td_cosq_sched_weight_max_get(int unit, int mode, 252 int *weight_max); 253 extern int bcm_td_cosq_port_bandwidth_set(int unit, bcm_port_t port, 254 bcm_cos_queue_t cosq, 255 uint32 min_quantum, 256 uint32 max_quantum, 257 uint32 burst_quantum, 258 uint32 flags); 259 extern int bcm_td_cosq_port_bandwidth_get(int unit, bcm_port_t port, 260 bcm_cos_queue_t cosq, 261 uint32 *min_quantum, 262 uint32 *max_quantum, 263 uint32 *burst_quantum, 264 uint32 *flags); 265 extern int bcm_td_cosq_port_pps_set(int unit, bcm_port_t port, 266 bcm_cos_queue_t cosq, int pps); 267 extern int bcm_td_cosq_port_pps_get(int unit, bcm_port_t port, 268 bcm_cos_queue_t cosq, int *pps); 269 extern int bcm_td_cosq_port_burst_set(int unit, bcm_port_t port, 270 bcm_cos_queue_t cosq, int burst); 271 extern int bcm_td_cosq_port_burst_get(int unit, bcm_port_t port, 272 bcm_cos_queue_t cosq, int *burst); 273 extern int bcm_td_cosq_discard_set(int unit, uint32 flags); 274 extern int bcm_td_cosq_discard_get(int unit, uint32 *flags); 275 extern int bcm_td_cosq_discard_port_set(int unit, bcm_port_t port, 276 bcm_cos_queue_t cosq, uint32 color, 277 int drop_start, int drop_slope, 278 int average_time); 279 extern int bcm_td_cosq_discard_port_get(int unit, bcm_port_t port, 280 bcm_cos_queue_t cosq, uint32 color, 281 int *drop_start, int *drop_slope, 282 int *average_time); 283 extern int bcm_td_cosq_stat_set(int unit, bcm_port_t port, 284 bcm_cos_queue_t cosq, bcm_cosq_stat_t stat, 285 uint64 value); 286 extern int bcm_td_cosq_stat_get(int unit, bcm_port_t port, 287 bcm_cos_queue_t cosq, bcm_cosq_stat_t stat, 288 int sync_mode, uint64 *value); 289 extern int bcm_td_cosq_congestion_queue_set(int unit, bcm_port_t port, 290 bcm_cos_queue_t cosq, int index); 291 extern int bcm_td_cosq_congestion_queue_get(int unit, bcm_port_t port, 292 bcm_cos_queue_t cosq, int *index); 293 extern int bcm_td_cosq_congestion_quantize_set(int unit, bcm_port_t port, 294 bcm_cos_queue_t cosq, 295 int weight_code, int setpoint); 296 extern int bcm_td_cosq_congestion_quantize_get(int unit, bcm_port_t port, 297 bcm_cos_queue_t cosq, 298 int *weight_code, 299 int *setpoint); 300 extern int bcm_td_cosq_congestion_sample_int_set(int unit, bcm_port_t port, 301 bcm_cos_queue_t cosq, 302 int min, int max); 303 extern int bcm_td_cosq_congestion_sample_int_get(int unit, bcm_port_t port, 304 bcm_cos_queue_t cosq, 305 int *min, int *max); 306 extern int bcm_td_cosq_drop_status_enable_set(int unit, bcm_port_t port, 307 int enable); 308 extern int bcm_td_cosq_control_set(int unit, bcm_gport_t gport, 309 bcm_cos_queue_t cosq, 310 bcm_cosq_control_t type, int arg); 311 extern int bcm_td_cosq_control_get(int unit, bcm_gport_t gport, 312 bcm_cos_queue_t cosq, 313 bcm_cosq_control_t type, int *arg); 314 315 extern int bcm_td_cosq_gport_add(int unit, bcm_gport_t port, int numq, 316 uint32 flags, bcm_gport_t *gport); 317 extern int bcm_td_cosq_gport_delete(int unit, bcm_gport_t gport); 318 extern int bcm_td_cosq_gport_get(int unit, bcm_gport_t gport, 319 bcm_gport_t *port, int *numq, uint32 *flags); 320 extern int bcm_td_cosq_gport_traverse(int unit, bcm_cosq_gport_traverse_cb cb, 321 void *user_data); 322 extern int bcm_td_cosq_gport_mapping_set(int unit, bcm_port_t ing_port, 323 bcm_cos_t int_pri, uint32 flags, 324 bcm_gport_t gport, 325 bcm_cos_queue_t cosq); 326 extern int bcm_td_cosq_gport_mapping_get(int unit, bcm_port_t ing_port, 327 bcm_cos_t int_pri, uint32 flags, 328 bcm_gport_t *gport, 329 bcm_cos_queue_t *cosq); 330 extern int bcm_td_cosq_gport_bandwidth_set(int unit, bcm_gport_t gport, 331 bcm_cos_queue_t cosq, 332 uint32 kbits_sec_min, 333 uint32 kbits_sec_max, uint32 flags); 334 extern int bcm_td_cosq_gport_bandwidth_get(int unit, bcm_gport_t gport, 335 bcm_cos_queue_t cosq, 336 uint32 *kbits_sec_min, 337 uint32 *kbits_sec_max, 338 uint32 *flags); 339 extern int bcm_td_cosq_gport_bandwidth_burst_set(int unit, bcm_gport_t gport, 340 bcm_cos_queue_t cosq, 341 uint32 kbits_burst_min, 342 uint32 kbits_burst_max); 343 extern int bcm_td_cosq_gport_bandwidth_burst_get(int unit, bcm_gport_t gport, 344 bcm_cos_queue_t cosq, 345 uint32 *kbits_burst_min, 346 uint32 *kbits_burst_max); 347 extern int bcm_td_cosq_gport_sched_set(int unit, bcm_gport_t gport, 348 bcm_cos_queue_t cosq, int mode, 349 int weight); 350 extern int bcm_td_cosq_gport_sched_get(int unit, bcm_gport_t gport, 351 bcm_cos_queue_t cosq, 352 int *mode, int *weight); 353 extern int bcm_td_cosq_gport_discard_set(int unit, bcm_gport_t gport, 354 bcm_cos_queue_t cosq, 355 bcm_cosq_gport_discard_t *discard); 356 extern int bcm_td_cosq_gport_discard_get(int unit, bcm_gport_t gport, 357 bcm_cos_queue_t cosq, 358 bcm_cosq_gport_discard_t *discard); 359 extern int bcm_td_cosq_port_pfc_op(int unit, bcm_port_t port, 360 bcm_switch_control_t sctype, 361 _bcm_cosq_op_t op, bcm_gport_t *gport, 362 int gport_count); 363 extern int bcm_td_cosq_port_pfc_get(int unit, bcm_port_t port, 364 bcm_switch_control_t sctype, 365 bcm_gport_t *gport, int gport_count, 366 int *actual_gport_count); 367 extern int bcm_td_cosq_gport_attach(int unit, bcm_gport_t sched_gport, 368 bcm_gport_t input_gport, 369 bcm_cos_queue_t cosq); 370 extern int bcm_td_cosq_gport_detach(int unit, bcm_gport_t sched_gport, 371 bcm_gport_t input_gport, 372 bcm_cos_queue_t cosq); 373 extern int bcm_td_cosq_gport_attach_get(int unit, bcm_gport_t sched_gport, 374 bcm_gport_t *input_gport, 375 bcm_cos_queue_t *cosq); 376 extern int _bcm_td_cosq_port_resolve(int unit, bcm_gport_t gport, 377 bcm_module_t *modid, bcm_port_t *port, 378 bcm_trunk_t *trunk_id, int *id); 379 extern int _bcm_td_cosq_index_resolve(int unit, bcm_port_t port, 380 bcm_cos_queue_t cosq, 381 _bcm_td_cosq_index_style_t style, 382 bcm_port_t *local_port, int *index, 383 int *count); 384 extern int bcm_td_cosq_pfc_class_mapping_set(int unit, 385 bcm_gport_t port, 386 int array_count, 387 bcm_cosq_pfc_class_mapping_t *mapping_array); 388 extern int bcm_td_cosq_pfc_class_mapping_get(int unit, 389 bcm_gport_t port, 390 int array_max, 391 bcm_cosq_pfc_class_mapping_t *mapping_array, 392 int *array_count); 393 394 #ifdef BCM_WARM_BOOT_SUPPORT 395 extern int bcm_td_cosq_sync(int unit); 396 #endif /* BCM_WARM_BOOT_SUPPORT */ 397 #ifndef BCM_SW_STATE_DUMP_DISABLE 398 extern void bcm_td_cosq_sw_dump(int unit); 399 #endif /* BCM_SW_STATE_DUMP_DISABLE */ 400 401 extern int bcm_td_port_init(int unit); 402 extern int bcm_td_port_deinit(int unit); 403 extern int bcm_td_port_ing_pri_cng_set(int unit, bcm_port_t port, 404 int untagged, int pkt_pri, int cfi, 405 int int_pri, bcm_color_t color); 406 extern int bcm_td_port_ing_pri_cng_get(int unit, bcm_port_t port, 407 int untagged, int pkt_pri, int cfi, 408 int *int_pri, bcm_color_t *color); 409 extern int bcm_td_port_egress_set(int unit, bcm_port_t port, int modid, 410 bcm_pbmp_t pbmp); 411 extern int bcm_td_port_egress_get(int unit, bcm_port_t port, int modid, 412 bcm_pbmp_t *pbmp); 413 extern int _bcm_td_mod_port_tpid_enable_write(int unit, bcm_module_t mod, 414 bcm_port_t port, int tpid_enable); 415 extern int _bcm_td_mod_port_tpid_enable_read(int unit, bcm_module_t mod, 416 bcm_port_t port, int *tpid_enable); 417 extern int _bcm_td_mod_port_tpid_set(int unit, bcm_module_t mod, 418 bcm_port_t port, uint16 tpid); 419 extern int _bcm_td_mod_port_tpid_get(int unit, bcm_module_t mod, 420 bcm_port_t port, uint16 *tpid); 421 extern int _bcm_td_mod_port_tpid_add(int unit, bcm_module_t mod, 422 bcm_port_t port, uint16 tpid); 423 extern int _bcm_td_mod_port_tpid_delete(int unit, bcm_module_t mod, 424 bcm_port_t port, uint16 tpid); 425 extern int _bcm_td_mod_port_tpid_delete_all(int unit, bcm_module_t mod, 426 bcm_port_t port); 427 extern int bcm_td_port_niv_type_set(int unit, bcm_port_t port, int value); 428 extern int bcm_td_port_niv_type_get(int unit, bcm_port_t port, int *value); 429 430 #ifdef INCLUDE_L3 431 extern int _bcm_td_port_vif_match_multi_get(int unit, bcm_gport_t gport, 432 int size, 433 bcm_port_match_info_t *match_array, 434 int *count); 435 extern int bcm_td_vp_control_set(int unit, bcm_gport_t gport, 436 bcm_port_control_t type, int value); 437 extern int bcm_td_vp_control_get(int unit, bcm_gport_t gport, 438 bcm_port_control_t type, int *value); 439 extern int bcm_td_vp_group_init(int unit); 440 extern int bcm_td_vp_group_detach(int unit); 441 extern int bcm_td_vp_vlan_member_set(int unit, bcm_gport_t gport, uint32 flags); 442 extern int bcm_td_vp_vlan_member_get(int unit, bcm_gport_t gport, uint32 *flags); 443 extern int bcm_td_ing_vp_group_move(int unit, int vp, bcm_vlan_t vlan, int add); 444 extern int bcm_td_eg_vp_group_move(int unit, int vp, bcm_vlan_t vlan, int add); 445 extern int bcm_td_ing_vp_group_vlan_delete_all(int unit, bcm_vlan_t vlan); 446 extern int bcm_td_eg_vp_group_vlan_delete_all(int unit, bcm_vlan_t vlan); 447 extern int bcm_td_ing_vp_group_vlan_get_all(int unit, bcm_vlan_t vlan, 448 SHR_BITDCL *vp_bitmap); 449 extern int bcm_td_eg_vp_group_vlan_get_all(int unit, bcm_vlan_t vlan, 450 SHR_BITDCL *vp_bitmap); 451 extern int bcm_td_egr_vp_group_unmanaged_set(int unit, int flag); 452 extern int bcm_td_ing_vp_group_unmanaged_set(int unit, int flag); 453 extern int bcm_td_ing_vp_group_unmanaged_get(int unit); 454 extern int bcm_td_egr_vp_group_unmanaged_get(int unit); 455 extern int bcm_td_vlan_vp_group_set(int unit, soc_mem_t vlan_mem, int vlan, 456 int vp_group, int enable); 457 extern int bcm_td_vlan_vp_group_get(int unit, soc_mem_t vlan_mem, int vlan, 458 int vp_group, int *enable); 459 extern int bcm_td_vlan_vp_group_get_all(int unit, int vlan, int array_max, 460 bcm_gport_t *gport_array, int *flags_array, int *port_cnt); 461 extern int _td_egr_dvp_attribute_field_name_get(int unit, 462 egr_dvp_attribute_entry_t * dvp_entry, soc_field_t legacy_name, 463 soc_field_t * result_name); 464 465 466 #ifndef BCM_SW_STATE_DUMP_DISABLE 467 extern void bcm_td_vp_group_sw_dump(int unit); 468 #endif /* BCM_SW_STATE_DUMP_DISABLE */ 469 470 #endif /* INCLUDE_L3 */ 471 472 #ifdef INCLUDE_L3 473 extern int bcm_trident_niv_init(int unit); 474 extern int bcm_trident_niv_cleanup(int unit); 475 extern int bcm_trident_niv_port_add(int unit, bcm_niv_port_t *niv_port); 476 extern int bcm_trident_niv_port_delete(int unit, bcm_gport_t niv_port_id); 477 extern int bcm_trident_niv_port_delete_all(int unit); 478 extern int bcm_trident_niv_port_get(int unit, bcm_niv_port_t *niv_port); 479 extern int bcm_trident_niv_port_traverse(int unit, 480 bcm_niv_port_traverse_cb cb, 481 void *user_data); 482 extern int _bcm_trident_niv_port_resolve(int unit, bcm_gport_t niv_port_id, 483 bcm_module_t *modid, bcm_port_t *port, 484 bcm_trunk_t *trunk_id, int *id); 485 extern int bcm_trident_niv_ethertype_set(int unit, int ethertype); 486 extern int bcm_trident_niv_ethertype_get(int unit, int *ethertype); 487 extern int bcm_trident_niv_forward_add(int unit, 488 bcm_niv_forward_t *iv_fwd_entry); 489 extern int bcm_trident_niv_forward_delete(int unit, 490 bcm_niv_forward_t *iv_fwd_entry); 491 extern int bcm_trident_niv_forward_delete_all(int unit); 492 extern int bcm_trident_niv_forward_get(int unit, 493 bcm_niv_forward_t *iv_fwd_entry); 494 extern int bcm_trident_niv_forward_traverse(int unit, 495 bcm_niv_forward_traverse_cb cb, 496 void *user_data); 497 extern int bcm_trident_niv_untagged_add(int unit, bcm_vlan_t vlan, int vp, 498 int flags, int *egr_vt_added); 499 extern int bcm_trident_niv_untagged_delete(int unit, bcm_vlan_t vlan, int vp); 500 extern int bcm_trident_niv_untagged_get(int unit, bcm_vlan_t vlan, int vp, 501 int *flags); 502 extern int bcm_trident_niv_port_untagged_vlan_set(int unit, bcm_port_t port, 503 bcm_vlan_t vlan); 504 extern int bcm_trident_niv_port_untagged_vlan_get(int unit, bcm_port_t port, 505 bcm_vlan_t *vid_ptr); 506 extern int bcm_trident_niv_port_learn_set(int unit, bcm_gport_t niv_port_id, 507 uint32 flags); 508 extern int bcm_trident_niv_port_learn_get(int unit, bcm_gport_t niv_port_id, 509 uint32 *flags); 510 extern int bcm_trident_niv_egress_add(int unit, bcm_gport_t niv_port, 511 bcm_niv_egress_t *niv_egress); 512 extern int bcm_trident_niv_egress_delete(int unit, bcm_gport_t niv_port, 513 bcm_niv_egress_t *niv_egress); 514 extern int bcm_trident_niv_egress_set(int unit, bcm_gport_t niv_port, 515 int array_size, bcm_niv_egress_t *niv_egress_array); 516 extern int bcm_trident_niv_egress_get(int unit, bcm_gport_t niv_port, 517 int array_size, bcm_niv_egress_t *niv_egress_array, int *count); 518 extern int bcm_trident_niv_egress_delete_all(int unit, bcm_gport_t niv_port); 519 extern int _bcm_trident_niv_match_add(int unit, bcm_gport_t port, 520 uint16 virtual_interface_id, 521 bcm_vlan_t match_vlan, int vp); 522 extern int _bcm_trident_niv_match_delete(int unit, bcm_gport_t port, 523 uint16 virtual_interface_id, 524 bcm_vlan_t match_vlan, int *old_vp); 525 526 #ifdef BCM_WARM_BOOT_SUPPORT 527 extern int bcm_trident_niv_required_scache_size_get(int unit, uint32 *size); 528 extern int bcm_trident_niv_sync(int unit, uint8 **scache_ptr); 529 extern int bcm_trident_niv_reinit(int unit); 530 #endif /* BCM_WARM_BOOT_SUPPORT */ 531 532 #ifndef BCM_SW_STATE_DUMP_DISABLE 533 extern void bcm_trident_niv_sw_dump(int unit); 534 #endif /* BCM_SW_STATE_DUMP_DISABLE */ 535 536 #endif /* INCLUDE_L3 */ 537 538 extern int bcm_td_modport_map_init(int unit); 539 extern int bcm_td_modport_map_detach(int unit); 540 extern int bcm_td_stk_port_modport_op(int unit, int op, bcm_port_t ing_port, 541 bcm_module_t dest_modid, bcm_port_t *dest_port, 542 int dest_port_count); 543 extern int bcm_td_stk_port_modport_get(int unit, bcm_port_t ing_port, 544 bcm_module_t dest_modid, int dest_port_max, 545 bcm_port_t *dest_port_array, 546 int *dest_port_count); 547 extern int bcm_td_stk_modport_voq_op(int unit, bcm_port_t ing_port, 548 bcm_module_t dest_modid, int *grp_id, int op); 549 extern int bcm_td_stk_modport_map_update(int unit); 550 extern int bcm_td_stk_trunk_override_ucast_set(int unit, bcm_port_t ing_port, 551 bcm_trunk_t hgtid, int modid, int enable); 552 extern int bcm_td_stk_trunk_override_ucast_get(int unit, bcm_port_t ing_port, 553 bcm_trunk_t hgtid, int modid, int *enable); 554 extern int bcm_td_modport_map_mode_set(int unit, bcm_switch_control_t type, 555 int arg); 556 extern int bcm_td_modport_map_mode_get(int unit, bcm_switch_control_t type, 557 int *arg); 558 559 #ifdef BCM_WARM_BOOT_SUPPORT 560 extern int bcm_td_modport_map_scache_size_get(int unit, int *size); 561 extern int bcm_td_modport_map_sync(int unit, uint8 **scache_ptr); 562 extern int bcm_td_modport_map_reinit(int unit, uint8 **scache_ptr); 563 extern int bcm_td_modport_map_enable_scache_size_get(int unit, int *size); 564 extern int bcm_td_modport_map_enable_reinit(int unit, uint8 **scache_ptr); 565 extern int bcm_td_modport_map_enable_sync(int unit, uint8 **scache_ptr); 566 extern int bcm_td_stk_trunk_override_hi_scache_size_get(int unit, int *size); 567 extern int bcm_td_stk_trunk_override_hi_sync(int unit, uint8 **scache_ptr); 568 extern int bcm_td_stk_trunk_override_hi_reinit(int unit, uint8 **scache_ptr); 569 #if defined(BCM_TRIUMPH3_SUPPORT) || defined(BCM_HELIX4_SUPPORT) 570 extern int bcm_td_linkflap_trunk_map_scache_size_get(int unit, int *size); 571 extern int bcm_td_linkflap_trunk_map_reinit(int unit, uint8 **scache_ptr); 572 extern int bcm_td_linkflap_trunk_map_sync(int unit, uint8 **scache_ptr); 573 #endif /*defined(BCM_TRIUMPH3_SUPPORT) || defined(BCM_HELIX4_SUPPORT)*/ 574 #endif /* BCM_WARM_BOOT_SUPPORT */ 575 #ifdef BCM_WARM_BOOT_SUPPORT_SW_DUMP 576 extern void bcm_td_modport_map_sw_dump(int unit); 577 #endif /* BCM_WARM_BOOT_SUPPORT_SW_DUMP */ 578 579 /* Utility routines for metering and egress rate control */ 580 #define _BCM_TD_METER_FLAG_NON_LINEAR 0x01 581 #define _BCM_TD_METER_FLAG_PACKET_MODE 0x02 582 #define _BCM_TD_METER_FLAG_FP_POLICER 0x04 583 584 extern int _bcm_td_rate_to_bucket_encoding(int unit, uint32 rate_quantum, 585 uint32 burst_quantum, uint32 flags, 586 int refresh_bitsize, 587 int bucket_max_bitsize, 588 uint32 *refresh_rate, 589 uint32 *bucketsize, 590 uint32 *granularity); 591 extern uint32 _bcm_td_bucket_encoding_to_rate(int unit, uint32 refresh_rate, 592 uint32 bucket_max, 593 uint32 granularity, 594 uint32 flags, 595 uint32 *rate_quantum, 596 uint32 *burst_quantum); 597 598 extern uint32 _bcm_td_default_burst_size(int unit, int port, uint32 kbits_sec); 599 extern uint32 _bcm_td_default_burst_size_by_weight(int unit, int port, 600 uint32 kbits_sec, 601 int port_weights); 602 603 extern int 604 bcm_td_cosq_gport_destmod_attach(int unit, bcm_gport_t gport, 605 bcm_port_t ing_port, 606 bcm_module_t dest_modid, 607 int fabric_egress_port); 608 609 extern int 610 bcm_td_cosq_gport_destmod_detach(int unit, bcm_gport_t gport, 611 bcm_port_t ing_port, 612 bcm_module_t dest_modid, 613 int fabric_egress_port); 614 615 extern int 616 bcm_td_cosq_cpu_cosq_enable_set(int unit, 617 bcm_cos_queue_t cosq, 618 int enable); 619 620 extern int 621 bcm_td_cosq_cpu_cosq_enable_get(int unit, 622 bcm_cos_queue_t cosq, 623 int *enable); 624 625 extern int 626 _bcm_td_port_enqueue_set(int unit, bcm_port_t gport, 627 int enable); 628 extern int 629 _bcm_td_port_enqueue_get(int unit, bcm_port_t gport, 630 int *enable); 631 extern int bcm_td_port_drain_cells(int unit, int port); 632 #ifdef BCM_WARM_BOOT_SUPPORT 633 extern int bcm_td_trill_sync(int unit); 634 #endif /* BCM_WARM_BOOT_SUPPORT */ 635 636 extern int bcm_td_stk_modport_map_port_attach(int unit, bcm_port_t port); 637 extern int bcm_td_stk_modport_map_port_detach(int unit, bcm_port_t port); 638 639 #endif /* BCM_TRIDENT_SUPPORT */ 640 #endif /* !_BCM_INT_TRIDENT_H_ */ 641