openbcm

Git mirror of https://github.com/Broadcom-Network-Switching-Software/OpenBCM
git clone git://git.finwo.net/mirror/broadcom/openbcm
Log | Files | Refs | README

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-2019 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