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

katana2.h (44218B)


      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:        katana2.h
      8  * Purpose:     Function declarations for Trident  bcm functions
      9  */
     10 
     11 #ifndef _BCM_INT_KATANA2_H_
     12 #define _BCM_INT_KATANA2_H_
     13 #if defined(BCM_KATANA2_SUPPORT)
     14 #include <bcm/oob.h>
     15 #include <bcm_int/esw/subport.h>
     16 #include <bcm_int/esw/firebolt.h>
     17 #include <bcm_int/esw/mbcm.h>
     18 #include <bcm_int/esw/oam.h>
     19 #include <bcm_int/esw/field.h>
     20 #include <bcm/qos.h>
     21 #include <bcm/failover.h>
     22 #include <bcm_int/esw/cosq.h>
     23 typedef  enum bcm_cosq_flush_type_e {
     24     bcmCosqFlushTypeQueue=0,
     25     bcmCosqFlushTypePort=1
     26 }bcm_cosq_flush_type_t;
     27 
     28 typedef enum {
     29     _BCM_KT2_COSQ_NODE_LEVEL_ROOT,
     30     _BCM_KT2_COSQ_NODE_LEVEL_S0,
     31     _BCM_KT2_COSQ_NODE_LEVEL_S1,
     32     _BCM_KT2_COSQ_NODE_LEVEL_L0,
     33     _BCM_KT2_COSQ_NODE_LEVEL_L1,
     34     _BCM_KT2_COSQ_NODE_LEVEL_L2,
     35     _BCM_KT2_COSQ_NODE_LEVEL_MAX
     36 }_bcm_kt2_cosq_node_level_t;
     37 
     38 typedef enum {
     39     _BCM_KT2_NODE_UNKNOWN = 0,
     40     _BCM_KT2_NODE_UCAST,
     41     _BCM_KT2_NODE_MCAST,
     42     _BCM_KT2_NODE_VOQ,
     43     _BCM_KT2_NODE_VLAN_UCAST,
     44     _BCM_KT2_NODE_VM_UCAST,
     45     _BCM_KT2_NODE_SERVICE_UCAST,
     46     _BCM_KT2_NODE_SCHEDULER,
     47     _BCM_KT2_NODE_SUBSCRIBER_GPORT_ID,
     48     _BCM_KT2_NODE_VOQ_ID,
     49     _BCM_KT2_NODE_SCHEDULER_WFQ
     50 } _bcm_kt2_node_type_e;
     51 
     52 typedef struct _bcm_kt2_cosq_node_s{
     53     struct _bcm_kt2_cosq_node_s *parent;
     54     struct _bcm_kt2_cosq_node_s *sibling;
     55     struct _bcm_kt2_cosq_node_s *child;
     56     bcm_gport_t gport;
     57     SHR_BITDCL *cosq_map;
     58     int in_use;
     59     int wrr_in_use;
     60     int wrr_mode;
     61     int base_index;
     62     int mc_base_index;
     63     int numq;
     64     int hw_index;
     65     _bcm_kt2_cosq_node_level_t level;
     66     _bcm_kt2_node_type_e type;
     67     int cosq_attached_to;
     68     int num_child;
     69     int first_child;
     70     int linkphy_enabled;
     71     int subport_enabled;
     72     bcm_port_t local_port;
     73     int wred_disabled;
     74     int burst_calculation_enable;
     75  
     76     /* DPVOQ specific information */
     77     bcm_module_t remote_modid;
     78     bcm_module_t fabric_modid;
     79     bcm_port_t   remote_port;
     80     bcm_pbmp_t   fabric_pbmp;
     81 }_bcm_kt2_cosq_node_t;
     82 
     83 extern int
     84 bcm_kt2_cosq_subscriber_qid_set(int unit,
     85         bcm_gport_t *gport,
     86         int queue_id); 
     87 extern int
     88 _bcm_kt2_subscriber_sw_qid_set(int unit,
     89                                bcm_gport_t *gport,
     90                                int queue_id);
     91 extern int
     92 bcm_kt2_is_uc_queue(int unit, int queue_id, int *is_ucq);
     93 extern int bcm_kt2_port_cfg_init(int, bcm_port_t, bcm_vlan_data_t *);
     94 extern int
     95 bcm_katana2_cosq_reconfigure_flexio(int uint, bcm_port_t port, int lanes);
     96 extern int bcm_kt2_cosq_port_flush(int unit, 
     97                                    bcm_port_t port, 
     98                                    bcm_cosq_flush_type_t type);
     99 
    100 extern int
    101 bcm_kt2_sw_hw_queue(int unit, int *queue_array);
    102 extern int
    103 _bcm_kt2_intf_ref_cnt_increment(int unit, uint32 queue_id, int count);
    104 extern int
    105 _bcm_kt2_intf_ref_cnt_decrement(int unit, uint32 queue_id, int count);
    106 
    107 #if defined(BCM_FIELD_SUPPORT)
    108 extern int _bcm_field_kt2_init(int unit, _field_control_t *fc);
    109 extern int _bcm_field_kt2_qual_tcam_key_mask_get(int unit,
    110                                                  _field_entry_t *f_ent,
    111                                                  _field_tcam_t  *tcam
    112                                                  );
    113 extern int _bcm_field_kt2_qual_tcam_key_mask_set(int unit,
    114                                                  _field_entry_t *f_ent,
    115                                                  unsigned       validf
    116                                                  );
    117 extern int _bcm_field_kt2_qualify_class (int unit, 
    118                                          bcm_field_entry_t entry, 
    119                                          bcm_field_qualify_t qual, 
    120                                          uint32 *data, 
    121                                          uint32 *mask 
    122                                         );
    123 extern int _bcm_field_kt2_qualify_class_get (int unit,
    124                                              bcm_field_entry_t   entry,
    125                                              bcm_field_qualify_t qual,
    126                                              uint32              *data,
    127                                              uint32              *mask
    128                                             );
    129 extern int _bcm_field_kt2_qualify_PacketRes(int               unit,
    130                                             bcm_field_entry_t entry,
    131                                             uint32            *data,
    132                                             uint32            *mask
    133                                             );
    134 extern int _bcm_field_kt2_qualify_PacketRes_get(int               unit,
    135                                                 bcm_field_entry_t entry,
    136                                                 uint32            *data,
    137                                                 uint32            *mask
    138                                                 );
    139 extern int soc_katana2_port_lanes_set_post_operation(int unit, bcm_port_t port);
    140 extern int _bcm_kt2_port_lanes_set_post_operation(int unit, bcm_port_t port);
    141 extern int _bcm_kt2_port_lanes_set(int unit, bcm_port_t port, int value);
    142 extern int _bcm_kt2_port_lanes_get(int unit, bcm_port_t port, int *value);
    143 extern int _bcm_kt2_cosq_port_ext_buf_set(int unit, bcm_port_t port, int enable);
    144 extern int _bcm_kt2_cosq_port_ext_buf_get(int unit, bcm_port_t port, int *enable);
    145 extern int _bcm_kt2_port_hw_info_display(int unit, bcm_port_t port);
    146 extern int _bcm_kt2_port_sw_info_display(int unit, bcm_port_t port);
    147 #ifdef BCM_WARM_BOOT_SUPPORT /* BCM_WARM_BOOT_SUPPORT */
    148 extern int _bcm_field_kt2_loopback_type_sel_recover(int unit,
    149                                                     int slice_idx,
    150                                                     char *fp_global_mask_tcam_buf,
    151                                                     _field_stage_t *stage_fc,
    152                                                     int intraslice,
    153                                                     int8 *loopback_type_sel);
    154 #endif /* BCM_WARM_BOOT_SUPPORT */
    155 #endif /* BCM_FIELD_SUPPORT */
    156 
    157 extern int bcm_kt2_subport_init(int unit);
    158 extern int bcm_kt2_subport_cleanup(int unit);
    159 extern int bcm_kt2_subport_group_create(int unit,
    160                                      bcm_subport_group_config_t *config,
    161                                      bcm_gport_t *group);
    162 extern int bcm_kt2_subport_group_destroy(int unit, bcm_gport_t group);
    163 extern int bcm_kt2_subport_group_get(int unit, bcm_gport_t group,
    164                                      bcm_subport_group_config_t *config);
    165 extern int bcm_kt2_subport_group_traverse(int unit, bcm_gport_t group,
    166                                      bcm_subport_port_traverse_cb cb,
    167                                      void *user_data);
    168 extern int bcm_kt2_subport_port_add(int unit, bcm_subport_config_t *config,
    169                                    bcm_gport_t *port);
    170 extern int bcm_kt2_subport_port_delete(int unit, bcm_gport_t port);
    171 extern int bcm_kt2_subport_port_get(int unit, bcm_gport_t port,
    172                                    bcm_subport_config_t *config);
    173 extern int bcm_kt2_subport_port_traverse(int unit,
    174                                       bcm_subport_port_traverse_cb cb,
    175                                         void *user_data);
    176 extern int bcm_kt2_subport_group_linkphy_config_get(int unit, 
    177                           bcm_gport_t group, 
    178                           bcm_subport_group_linkphy_config_t *linkphy_config);
    179 extern int bcm_kt2_subport_group_linkphy_config_set(int unit,
    180                           bcm_gport_t group,
    181                           bcm_subport_group_linkphy_config_t *linkphy_config);
    182 extern int bcm_kt2_subport_port_stat_set(int unit, 
    183                           bcm_gport_t port, 
    184                           int stream_id, 
    185                           bcm_subport_stat_t stat_type, 
    186                           uint64 val);
    187 extern int bcm_kt2_subport_port_stat_get(
    188                           int unit, 
    189                           bcm_gport_t port, 
    190                           int stream_id, 
    191                           bcm_subport_stat_t stat_type, 
    192                           uint64 *val);
    193 extern int bcm_kt2_subport_linkphy_rx_error_register (
    194         int unit,
    195         bcm_subport_linkphy_rx_errors_t errors,
    196         bcm_subport_linkphy_rx_error_reg_info_t *reg_info,
    197         void *user_data);
    198 extern int bcm_kt2_subport_linkphy_rx_error_unregister (
    199         int unit,
    200         bcm_subport_linkphy_rx_errors_t errors);
    201 extern int bcmi_kt2_subport_gport_modport_get(int unit,
    202             bcm_gport_t subport_gport, bcm_module_t *module, bcm_port_t *port);
    203 extern int bcm_kt2_subport_port_stat_show(int unit, uint32 flag, int sid);
    204 extern int bcm_kt2_subport_group_resolve(int unit,
    205                               bcm_gport_t subport_group_gport,
    206                               bcm_module_t *modid, bcm_port_t *port,
    207                               bcm_trunk_t *trunk_id, int *id);
    208 extern int bcm_kt2_subport_port_resolve(int unit,
    209                               bcm_gport_t subport_port_gport,
    210                               bcm_module_t *modid, bcm_port_t *port,
    211                               bcm_trunk_t *trunk_id, int *id);
    212 extern int bcm_kt2_subport_pp_port_subport_info_get(int unit,
    213                               bcm_port_t pp_port,
    214                               _bcm_kt2_subport_info_t *subport_info);
    215 extern int bcm_kt2_subport_pp_port_s1_index_get(int unit,
    216                                                 bcm_port_t pp_port,
    217                                                 int *s1_index);
    218 extern int bcm_kt2_subport_counter_init(int unit);
    219 extern int bcm_kt2_subport_counter_cleanup(int unit);
    220 
    221 extern int bcm_kt2_subport_egr_subtag_dot1p_map_add(int unit,
    222                                         bcm_qos_map_t *map);
    223 extern int bcm_kt2_subport_egr_subtag_dot1p_map_delete(int unit,
    224                                         bcm_qos_map_t *map);
    225 extern int bcm_kt2_subport_subtag_port_tpid_set(int unit,
    226                                  bcm_gport_t gport, uint16 tpid);
    227 extern int bcm_kt2_subport_subtag_port_tpid_get(int unit,
    228                                  bcm_gport_t gport, uint16 *tpid);
    229 extern int bcm_kt2_subport_subtag_port_tpid_delete(int unit,
    230                                  bcm_gport_t gport, uint16 tpid);
    231 extern int bcm_kt2_port_control_subtag_status_set(int unit,
    232                                  bcm_port_t port, int value);
    233 extern int bcm_kt2_port_control_subtag_status_get(int unit,
    234                                  bcm_port_t port, int *value);
    235 extern int bcm_kt2_port_control_linkphy_status_set(int unit,
    236                                  bcm_port_t port, int value);
    237 extern int bcm_kt2_port_control_linkphy_status_get(int unit,
    238                                  bcm_port_t port, int *value);
    239 
    240 #ifdef BCM_WARM_BOOT_SUPPORT
    241 extern int bcm_kt2_subport_wb_scache_alloc(int unit, uint16 version,
    242                                            int *alloc_sz);
    243 extern int bcm_kt2_subport_wb_sync(int unit, uint16 version,
    244                                    uint8 **scache_ptr);
    245 extern int bcm_kt2_subport_wb_recover(int unit, uint16 version,
    246                                       uint8 **scache_ptr);
    247 #endif /* BCM_WARM_BOOT_SUPPORT */
    248 
    249 extern int bcm_kt2_oam_init(int unit);
    250 
    251 extern int bcm_kt2_oam_detach(int unit);
    252 
    253 extern int bcm_kt2_oam_group_create(int unit, bcm_oam_group_info_t *group_info);
    254 
    255 extern int bcm_kt2_oam_group_get(int unit, bcm_oam_group_t group,
    256                                  bcm_oam_group_info_t *group_info);
    257 
    258 extern int bcm_kt2_oam_group_destroy(int unit, bcm_oam_group_t group);
    259 
    260 extern int bcm_kt2_oam_group_destroy_all(int unit);
    261 
    262 extern int bcm_kt2_oam_group_traverse(int unit, bcm_oam_group_traverse_cb cb,
    263                                       void *user_data);
    264 
    265 extern int bcm_kt2_oam_endpoint_create(int unit,
    266                                        bcm_oam_endpoint_info_t *endpoint_info);
    267 
    268 extern int bcm_kt2_oam_endpoint_get(int unit, bcm_oam_endpoint_t endpoint,
    269                                     bcm_oam_endpoint_info_t *endpoint_info);
    270 
    271 extern int bcm_kt2_oam_endpoint_destroy(int unit, bcm_oam_endpoint_t endpoint);
    272 
    273 extern int bcm_kt2_oam_endpoint_destroy_all(int unit, bcm_oam_group_t group);
    274 
    275 extern int bcm_kt2_oam_endpoint_traverse(int unit, bcm_oam_group_t group,
    276                                          bcm_oam_endpoint_traverse_cb cb,
    277                                          void *user_data);
    278 
    279 extern int bcm_kt2_oam_event_register(int unit, 
    280                                       bcm_oam_event_types_t event_types,
    281                                       bcm_oam_event_cb cb, void *user_data);
    282 
    283 extern int bcm_kt2_oam_event_unregister(int unit, 
    284                                       bcm_oam_event_types_t event_types,
    285                                       bcm_oam_event_cb cb);
    286 
    287 extern int bcm_kt2_oam_endpoint_action_set(int unit, bcm_oam_endpoint_t id, 
    288                                            bcm_oam_endpoint_action_t *action); 
    289 
    290 extern int
    291 _bcm_kt2_oam_olp_fp_hw_index_get(int unit,
    292                                  bcm_field_olp_header_type_t olp_hdr_type,
    293                                  int *hwindex);
    294 
    295 extern int
    296 _bcm_kt2_oam_olp_hw_index_olp_type_get(int unit,
    297                                    int hwindex,
    298                                    bcm_field_olp_header_type_t *olp_hdr_type);
    299 
    300 
    301 extern int _bcm_kt2_port_control_oam_loopkup_with_dvp_set(int unit, 
    302                                                           bcm_port_t port, 
    303                                                           int val);
    304 extern int _bcm_kt2_port_control_oam_loopkup_with_dvp_get(int unit, 
    305                                                           bcm_port_t port, 
    306                                                           int *val);
    307 extern int bcm_kt2_stg_stp_init(int unit, bcm_stg_t stg);
    308 extern int bcm_kt2_stg_stp_set(int unit, bcm_stg_t stg, 
    309                          bcm_port_t port, int stp_state);
    310 extern int bcm_kt2_stg_stp_get(int unit, bcm_stg_t stg, 
    311                          bcm_port_t port, int *stp_state);
    312 extern int bcm_kt2_oam_control_get(int unit, 
    313                                    bcm_oam_control_type_t type,
    314                                    uint64  *arg); 
    315 extern int bcm_kt2_oam_control_set(int unit, 
    316                                    bcm_oam_control_type_t type,
    317                                    uint64 arg); 
    318 extern int bcm_kt2_oam_upmep_cosq_set(int unit, bcm_oam_upmep_pdu_type_t upmep_pdu_type,
    319                                       bcm_cos_queue_t cosq);
    320 extern int bcm_kt2_oam_upmep_cosq_get(int unit, bcm_oam_upmep_pdu_type_t upmep_pdu_type,
    321                                       bcm_cos_queue_t *cosq);
    322 
    323 extern int bcm_kt2_oam_trunk_ports_add(int unit, bcm_gport_t trunk_gport, 
    324                                 int max_ports, bcm_gport_t *port_arr);
    325 extern int bcm_kt2_oam_trunk_ports_delete(int unit, bcm_gport_t trunk_gport, 
    326                                 int max_ports, bcm_gport_t *port_arr);
    327 extern int bcm_kt2_dump_port_lls(int unit, bcm_port_t port);
    328 
    329 #ifndef BCM_SW_STATE_DUMP_DISABLE
    330 extern void bcm_kt2_ipmc_subscriber_sw_dump(int unit);
    331 #endif /* BCM_SW_STATE_DUMP_DISABLE */
    332 #ifdef BCM_WARM_BOOT_SUPPORT /* BCM_WARM_BOOT_SUPPORT */
    333 extern int _bcm_kt2_oam_sync(int unit);
    334 extern int _bcm_kt2_ipmc_repl_reload(int unit);
    335 extern int _bcm_kt2_extq_repl_reload(int unit);
    336 #endif /* !BCM_WARM_BOOT_SUPPORT */
    337 #define KT2_MAX_NUM_PROFILES 4
    338 #define KT2_MIN_RQE_PROFILE_INDEX 0
    339 #define KT2_MAX_RQE_PROFILE_INDEX 3
    340 extern int _bcm_kt2_init_check(int unit, int ipmc_id);
    341 extern int bcm_kt2_ipmc_repl_init(int unit);
    342 extern int
    343 _bcm_kt2_ipmc_egress_intf_set(int unit, int repl_group, bcm_port_t port,
    344                              int ipmc_ptr, int if_count, bcm_if_t *if_array,
    345                              int *new_ipmc_ptr, int *last_ipmc_flag,
    346                              int check_port);
    347 extern int
    348 _bcm_kt2_ipmc_egress_intf_add(int unit, int ipmc_id, bcm_port_t port,
    349                               int ipmc_ptr, int id, int  *new_ipmc_ptr,
    350                               int *last_flag);
    351 extern int
    352 _bcm_kt2_ipmc_egress_intf_get(int unit, int repl_group,
    353                              int ipmc_ptr, bcm_if_t *if_array,
    354                              int *if_count);
    355 extern int
    356 _bcm_kt2_ipmc_egress_intf_delete(int unit, int ipmc_id, bcm_port_t port,
    357                                 int ipmc_ptr, int id, int  *new_ipmc_ptr,
    358                                 int *last_flag);
    359 
    360 extern int
    361 _bcm_kt2_ipmc_egress_intf_delete_all(int unit, int ipmc_id, int ipmc_ptr); 
    362 extern int
    363 _bcm_kt2_ipmc_subscriber_egress_queue_qos_map(int unit, int extq_ptr,
    364                                              int base_queue_id,
    365                                              int *profile,
    366                                              int set);
    367 extern int
    368 _bcm_kt2_ipmc_subscriber_egress_intf_qos_map_set(int unit,
    369                                         int ipmc_id,
    370                                         bcm_gport_t port,
    371                                         bcm_gport_t subscriber_queue,
    372                                         int qos_map_id);
    373 
    374 extern int
    375 _bcm_kt2_ipmc_subscriber_egress_intf_qos_map_get(int unit,
    376                                         int ipmc_id,
    377                                         bcm_gport_t port,
    378                                         bcm_gport_t subscriber_queue,
    379                                         int *qos_map_id);
    380 
    381 
    382 
    383 
    384 #ifdef BCM_WARM_BOOT_SUPPORT_SW_DUMP /* BCM_WARM_BOOT_SUPPORT_SW_DUMP*/
    385 extern void _bcm_kt2_oam_sw_dump(int unit);
    386 #endif /* !BCM_WARM_BOOT_SUPPORT_SW_DUMP */
    387 
    388 #if defined(INCLUDE_BHH)
    389 extern int bcm_kt2_oam_loopback_add(int unit, bcm_oam_loopback_t *loopback_p);
    390 extern int bcm_kt2_oam_loopback_get(int unit, bcm_oam_loopback_t *loopback_p);
    391 extern int bcm_kt2_oam_loopback_delete(int unit, bcm_oam_loopback_t *loopback_p);
    392 extern int bcm_kt2_oam_loss_add( int unit, bcm_oam_loss_t *loss_ptr);
    393 extern int bcm_kt2_oam_loss_delete( int unit, bcm_oam_loss_t *loss_ptr);
    394 extern int bcm_kt2_oam_loss_get( int unit, bcm_oam_loss_t *loss_ptr);
    395 extern int bcm_kt2_oam_delay_add( int unit, bcm_oam_delay_t *delay_ptr);
    396 extern int bcm_kt2_oam_delay_delete( int unit, bcm_oam_delay_t *delay_ptr);
    397 extern int bcm_kt2_oam_delay_get( int unit, bcm_oam_delay_t *delay_ptr);
    398 extern int bcm_kt2_oam_csf_add(int unit, bcm_oam_csf_t *csf_ptr);
    399 extern int bcm_kt2_oam_csf_delete(int unit, bcm_oam_csf_t *csf_ptr);
    400 extern int bcm_kt2_oam_csf_get(int unit, bcm_oam_csf_t *csf_ptr);
    401 extern int bcm_kt2_oam_endpoint_faults_multi_get( int unit, uint32 flags,
    402                           bcm_oam_protocol_type_t endpoint_protocol,
    403                           uint32 max_endpoints, bcm_oam_endpoint_fault_t *faults,
    404                           uint32 *endpoint_count);
    405 extern int
    406 bcm_kt2_oam_pm_profile_create(int unit, bcm_oam_pm_profile_info_t *profile_info);
    407 extern int
    408 bcm_kt2_oam_pm_profile_delete(int unit, bcm_oam_pm_profile_t profile_id);
    409 extern int
    410 bcm_kt2_oam_pm_profile_delete_all(int unit);
    411 extern int 
    412 bcm_kt2_oam_pm_profile_detach(int unit, bcm_oam_endpoint_t endpoint_id,
    413                                   bcm_oam_pm_profile_t profile_id);
    414 extern int
    415 bcm_kt2_oam_pm_profile_get(int unit, bcm_oam_pm_profile_info_t *profile_info);
    416 extern int
    417 bcm_kt2_oam_pm_profile_traverse(int unit,
    418                     bcm_oam_pm_profile_traverse_cb cb, void *user_data);
    419 extern int bcm_kt2_oam_pm_stats_get(int unit,
    420                             bcm_oam_endpoint_t endpoint_id, bcm_oam_pm_stats_t *stats_ptr);
    421 extern int
    422 bcm_kt2_oam_pm_profile_attach_get(
    423         int unit, bcm_oam_endpoint_t endpoint_id, bcm_oam_pm_profile_t *profile_id);
    424 extern int
    425 bcm_kt2_oam_pm_profile_attach(int unit, bcm_oam_endpoint_t endpoint_id,
    426         bcm_oam_pm_profile_t profile_id);
    427 extern int bcm_kt2_oam_mpls_tp_channel_type_tx_set(int unit,
    428                                                    bcm_oam_mpls_tp_channel_type_t channel_type,
    429                                                    int value);
    430 extern int bcm_kt2_oam_mpls_tp_channel_type_tx_get(int unit,
    431                                                    bcm_oam_mpls_tp_channel_type_t channel_type,
    432                                                    int *value);
    433 #endif /* INCLUDE_BHH */
    434 
    435 typedef enum {
    436     _BCM_KT2_COSQ_INDEX_STYLE_BUCKET,
    437     _BCM_KT2_COSQ_INDEX_STYLE_WRED,
    438     _BCM_KT2_COSQ_INDEX_STYLE_SCHEDULER,
    439     _BCM_KT2_COSQ_INDEX_STYLE_UCAST_QUEUE,
    440     _BCM_KT2_COSQ_INDEX_STYLE_PERQ_XMT,
    441     _BCM_KT2_COSQ_INDEX_STYLE_QUEUE_REPLICATION
    442 }_bcm_kt2_cosq_index_style_t;
    443 
    444 extern int bcm_kt2_cosq_init(int unit);
    445 extern int bcm_kt2_cosq_detach(int unit, int software_state_only);
    446 extern int bcm_kt2_cosq_config_set(int unit, int numq);
    447 extern int bcm_kt2_cosq_config_get(int unit, int *numq);
    448 extern int bcm_kt2_cosq_mapping_set(int unit, bcm_port_t port,
    449                                    bcm_cos_t priority, bcm_cos_queue_t cosq);
    450 extern int bcm_kt2_cosq_mapping_get(int unit, bcm_port_t port,
    451                                    bcm_cos_t priority, bcm_cos_queue_t *cosq);
    452 extern int bcm_kt2_cosq_port_mapping_multi_set(int unit, bcm_port_t port,int count,
    453                                    bcm_cos_t *priority_array, bcm_cos_queue_t *cosq_array);
    454 extern int bcm_kt2_cosq_port_mapping_multi_get(int unit, bcm_port_t port,int count,
    455                                    bcm_cos_t *priority_array, bcm_cos_queue_t *cosq_array);
    456 extern int bcm_kt2_cosq_port_sched_set(int unit, bcm_pbmp_t pbm,
    457                                       int mode, const int *weights, int delay);
    458 extern int bcm_kt2_cosq_port_sched_get(int unit, bcm_pbmp_t pbm,
    459                                       int *mode, int *weights, int *delay);
    460 extern int bcm_kt2_cosq_sched_weight_max_get(int unit, int mode,
    461                                             int *weight_max);
    462 extern int bcm_kt2_cosq_port_bandwidth_set(int unit, bcm_port_t port,
    463                                           bcm_cos_queue_t cosq,
    464                                           uint32 min_quantum,
    465                                           uint32 max_quantum,
    466                                           uint32 burst_quantum,
    467                                           uint32 flags);
    468 extern int bcm_kt2_cosq_port_bandwidth_get(int unit, bcm_port_t port,
    469                                           bcm_cos_queue_t cosq,
    470                                           uint32 *min_quantum,
    471                                           uint32 *max_quantum,
    472                                           uint32 *burst_quantum,
    473                                           uint32 *flags);
    474 extern int bcm_kt2_cosq_discard_set(int unit, uint32 flags);
    475 extern int bcm_kt2_cosq_discard_get(int unit, uint32 *flags);
    476 extern int bcm_kt2_cosq_discard_port_set(int unit, bcm_port_t port,
    477                                         bcm_cos_queue_t cosq, uint32 color,
    478                                         int drop_start, int drop_slope,
    479                                         int average_time);
    480 extern int bcm_kt2_cosq_discard_port_get(int unit, bcm_port_t port,
    481                                         bcm_cos_queue_t cosq, uint32 color,
    482                                         int *drop_start, int *drop_slope,
    483                                         int *average_time);
    484 extern int bcm_kt2_cosq_gport_add(int unit, bcm_gport_t port, int numq,
    485                                  uint32 flags, bcm_gport_t *gport);
    486 extern int bcm_kt2_cosq_gport_delete(int unit, bcm_gport_t gport);
    487 extern int bcm_kt2_cosq_gport_get(int unit, bcm_gport_t gport,
    488                                  bcm_gport_t *port, int *numq, uint32 *flags);
    489 extern int bcm_kt2_cosq_gport_traverse(int unit, bcm_cosq_gport_traverse_cb cb,
    490                                       void *user_data);
    491 extern int bcm_kt2_cosq_gport_sched_set(int unit, bcm_gport_t gport,
    492                                        bcm_cos_queue_t cosq, int mode,
    493                                        int weight);
    494 extern int bcm_kt2_cosq_gport_sched_get(int unit, bcm_gport_t gport,
    495                                        bcm_cos_queue_t cosq,
    496                                        int *mode, int *weight);
    497 extern int bcm_kt2_cosq_gport_attach(int unit, bcm_gport_t sched_gport,
    498                                     bcm_gport_t input_gport,
    499                                     bcm_cos_queue_t cosq);
    500 extern int bcm_kt2_cosq_gport_validate(int unit, bcm_gport_t sched_gport,
    501                                     bcm_gport_t input_gport,
    502                                     bcm_cos_queue_t cosq);
    503 extern int bcm_kt2_cosq_gport_detach(int unit, bcm_gport_t sched_gport,
    504                                     bcm_gport_t input_gport,
    505                                     bcm_cos_queue_t cosq);
    506 extern int bcm_kt2_cosq_gport_reattach(int unit, bcm_gport_t sched_gport,
    507                                     bcm_gport_t input_gport,
    508                                     bcm_cos_queue_t cosq);
    509 extern int bcm_kt2_cosq_gport_reattach(int unit, bcm_gport_t sched_gport,
    510                                     bcm_gport_t input_gport,
    511                                     bcm_cos_queue_t cosq);
    512 extern int bcm_kt2_cosq_gport_child_node_bandwidth_set(int unit,
    513                                            bcm_gport_t gport,
    514                                            bcm_cos_queue_t cosq,
    515                                            uint32 kbits_sec_min,
    516                                            uint32 kbits_sec_max,
    517                                            uint32 flags);
    518 extern int bcm_kt2_cosq_gport_child_node_bandwidth_get(int unit,
    519                                            bcm_gport_t gport,
    520                                            bcm_cos_queue_t cosq,
    521                                            uint32 *kbits_sec_min,
    522                                            uint32 *kbits_sec_max,
    523                                            uint32 *flags);
    524 extern int bcm_kt2_cosq_gport_bandwidth_set(int unit, bcm_gport_t gport,
    525                                            bcm_cos_queue_t cosq,
    526                                            uint32 kbits_sec_min,
    527                                            uint32 kbits_sec_max, uint32 flags);
    528 extern int bcm_kt2_cosq_gport_bandwidth_get(int unit, bcm_gport_t gport,
    529                                            bcm_cos_queue_t cosq,
    530                                            uint32 *kbits_sec_min,
    531                                            uint32 *kbits_sec_max,
    532                                            uint32 *burst_min,
    533                                            uint32 *burst_max,
    534                                            uint32 *flags);
    535 extern int bcm_kt2_cosq_gport_bandwidth_burst_set(int unit, bcm_gport_t gport,
    536                                                  bcm_cos_queue_t cosq,
    537                                                  uint32 kbits_burst_min,
    538                                                  uint32 kbits_burst_max);
    539 extern int bcm_kt2_cosq_gport_bandwidth_burst_get(int unit, bcm_gport_t gport,
    540                                                  bcm_cos_queue_t cosq,
    541                                                  uint32 *kbits_burst_min,
    542                                                  uint32 *kbits_burst_max);
    543 extern int bcm_kt2_cosq_gport_attach_get(int unit, bcm_gport_t sched_gport,
    544                                         bcm_gport_t *input_gport,
    545                                         bcm_cos_queue_t *cosq);
    546 extern int bcm_kt2_cosq_gport_discard_set(int unit, bcm_gport_t gport,
    547                                          bcm_cos_queue_t cosq,
    548                                          bcm_cosq_gport_discard_t *discard);
    549 extern int bcm_kt2_cosq_gport_discard_get(int unit, bcm_gport_t gport,
    550                                          bcm_cos_queue_t cosq,
    551                                          bcm_cosq_gport_discard_t *discard);
    552 extern int bcm_kt2_cosq_stat_set(int unit, bcm_gport_t port, 
    553                                 bcm_cos_queue_t cosq,
    554                                 bcm_cosq_stat_t stat, uint64 value);
    555 extern int bcm_kt2_cosq_stat_get(int unit, bcm_gport_t port, 
    556                                 bcm_cos_queue_t cosq, bcm_cosq_stat_t stat, 
    557                                 int sync_mode, uint64 *value);
    558 extern int bcm_kt2_cosq_gport_stat_set(int unit, bcm_gport_t port, 
    559                                 bcm_cos_queue_t cosq,
    560                                 bcm_cosq_gport_stats_t stat, uint64 value);
    561 extern int bcm_kt2_cosq_gport_stat_get(int unit, bcm_gport_t port, 
    562                                 bcm_cos_queue_t cosq,
    563                                 bcm_cosq_gport_stats_t stat, uint64 *value);
    564 extern int bcm_kt2_cosq_port_get(int unit, int queue_id, bcm_port_t *port);
    565 extern int _bcm_kt2_cosq_index_resolve(int unit, bcm_port_t port,
    566                            bcm_cos_queue_t cosq,
    567                            _bcm_kt2_cosq_index_style_t style,
    568                            bcm_port_t *local_port, int *index, int *count);
    569 #ifndef BCM_KATANA_SUPPORT
    570 extern int bcm_kt_port_rate_egress_set(int unit, bcm_port_t port,
    571                            uint32 kbits_sec, uint32 kbits_burst, uint32 mode);
    572 extern int bcm_kt_port_rate_egress_get(int unit, bcm_port_t port,
    573                            uint32 *kbits_sec, uint32 *kbits_burst, uint32 *mode);
    574 extern int bcm_kt_port_pps_rate_egress_set(int unit, bcm_port_t port,
    575                                            uint32 pps, uint32 burst);
    576 #endif
    577 extern int bcm_kt2_cosq_drop_status_enable_set(int unit, bcm_port_t port,
    578                                               int enable);
    579 extern int bcm_kt2_cosq_control_set(int unit, bcm_gport_t gport,
    580                                    bcm_cos_queue_t cosq,
    581                                    bcm_cosq_control_t type, int arg);
    582 
    583 extern int bcm_kt2_cosq_control_get(int unit, bcm_gport_t gport,
    584                                    bcm_cos_queue_t cosq,
    585                                    bcm_cosq_control_t type, int *arg);
    586 extern int _bcm_kt2_cosq_port_resolve(int unit, bcm_gport_t gport,
    587                                      bcm_module_t *modid, bcm_port_t *port,
    588                                      bcm_trunk_t *trunk_id, int *id,
    589                                      int *qnum);
    590 extern int
    591 _bcm_kt2_cosq_localport_resolve(int unit, bcm_gport_t gport,
    592                                bcm_port_t *local_port);
    593 extern int
    594 bcm_kt2_cosq_port_pps_set(int unit, bcm_port_t port, bcm_cos_queue_t cosq,
    595                          int pps);
    596 extern int
    597 bcm_kt2_cosq_port_pps_get(int unit, bcm_port_t port, bcm_cos_queue_t cosq,
    598                           int *pps);
    599 
    600 extern int
    601 bcm_kt2_cosq_port_burst_set(int unit, bcm_port_t port, bcm_cos_queue_t cosq,
    602                            int burst);
    603 
    604 extern int
    605 bcm_kt2_cosq_port_burst_get(int unit, bcm_port_t port, bcm_cos_queue_t cosq,
    606                             int *burst);
    607 extern int
    608 bcm_kt2_cosq_pfc_class_mapping_set(int unit,
    609     bcm_gport_t port,
    610     int array_count,
    611     bcm_cosq_pfc_class_mapping_t *mapping_array);
    612 extern int
    613 bcm_kt2_cosq_pfc_class_mapping_get(int unit,
    614      bcm_gport_t port,
    615      int array_max,
    616      int *array_count,
    617      bcm_cosq_pfc_class_mapping_t *mapping_array);
    618 extern int
    619 bcm_kt2_cosq_safc_class_mapping_set(int unit,
    620     bcm_gport_t port,
    621     int array_count,
    622     bcm_cosq_safc_class_mapping_t *mapping_array);
    623 extern int
    624 bcm_kt2_cosq_safc_class_mapping_get(int unit,
    625      bcm_gport_t port,
    626      int array_max,
    627      int *array_count,
    628      bcm_cosq_safc_class_mapping_t *mapping_array);
    629 extern int
    630 bcm_kt2_cosq_port_pfc_op(int unit, bcm_port_t port,
    631                         bcm_switch_control_t sctype, _bcm_cosq_op_t op,
    632                         bcm_gport_t *gport, int gport_count);
    633 extern int
    634 bcm_kt2_cosq_port_pfc_get(int unit, bcm_port_t port,
    635                           bcm_switch_control_t sctype,
    636                           bcm_gport_t *gport, int gport_count,
    637                           int *actual_gport_count);
    638 
    639 
    640 
    641 /* Routines to program IFP_COS_MAP table. */
    642 extern int
    643 bcm_kt2_cosq_field_classifier_id_create(int unit,
    644                                         bcm_cosq_classifier_t *classifier,
    645                                         int *classifier_id);
    646 extern int 
    647 bcm_kt2_cosq_field_classifier_map_set(int unit,
    648                                       int classifier_id,
    649                                       int array_count,
    650                                       bcm_cos_t *priority_array,
    651                                       bcm_cos_queue_t *cosq_array);
    652 extern int
    653 bcm_kt2_cosq_field_classifier_map_get(int unit,
    654                                       int classifier_id,
    655                                       int array_max,
    656                                       bcm_cos_t *priority_array,
    657                                       bcm_cos_queue_t *cosq_array,
    658                                       int *array_count);
    659 extern int
    660 bcm_kt2_cosq_field_classifier_map_clear(int unit, int classifier_id);
    661 
    662 extern int
    663 bcm_kt2_cosq_field_classifier_id_destroy(int unit, int classifier_id);
    664 
    665 extern int
    666 bcm_kt2_cosq_field_classifier_get(int unit, int classifier_id,
    667                                   bcm_cosq_classifier_t *classifier);
    668 
    669 /* Routines to program SERVICE_COS_MAP table. */
    670 extern int 
    671 bcm_kt2_cosq_service_classifier_id_create(int unit,
    672         bcm_cosq_classifier_t *classifier,
    673         int *classifier_id);
    674 
    675 extern int 
    676 bcm_kt2_cosq_service_classifier_id_destroy(int unit,
    677         int classifier_id);
    678 
    679 extern int 
    680 bcm_kt2_cosq_service_classifier_get(int unit,
    681         int classifier_id,
    682         bcm_cosq_classifier_t *classifier);
    683 
    684 extern int 
    685 bcm_kt2_cosq_service_map_set(int unit, bcm_port_t port,
    686         int classifier_id,
    687         bcm_gport_t queue_group,
    688         int array_count,
    689         bcm_cos_t *priority_array,
    690         bcm_cos_queue_t *cosq_array);
    691 
    692 extern int 
    693 bcm_kt2_cosq_service_map_get(int unit, bcm_port_t port,
    694         int classifier_id,
    695         bcm_gport_t *queue_group,
    696         int array_max,
    697         bcm_cos_t *priority_array,
    698         bcm_cos_queue_t *cosq_array,
    699         int *array_count);
    700 
    701 extern int 
    702 bcm_kt2_cosq_service_map_clear(int unit,
    703         bcm_gport_t port,
    704         int classifier_id);
    705 
    706 extern void soc_katana2_pbmp_all_resync(int unit);
    707 extern void soc_katana2_pbmp_remove(int unit, soc_port_t port);
    708 
    709 
    710 #if defined(INCLUDE_L3)
    711 extern int bcm_kt2_failover_prot_nhi_cleanup(int unit,
    712                                                          int nh_index);
    713 extern int bcm_kt2_failover_status_set(int unit,
    714                                             bcm_failover_element_t *failover,
    715                                             int value);
    716 extern int bcm_kt2_failover_status_get(int unit,
    717                                             bcm_failover_element_t *failover,
    718                                             int  *value);
    719 /*LPM */
    720 extern int _bcm_kt2_l3_lpm_get(int unit, _bcm_defip_cfg_t *lpm_cfg, int *nh_ecmp_idx);
    721 extern int _bcm_kt2_l3_lpm_add(int unit, _bcm_defip_cfg_t *lpm_cfg, int nh_ecmp_idx);
    722 extern int _bcm_kt2_l3_lpm_del(int unit, _bcm_defip_cfg_t *lpm_cfg);
    723 extern int _bcm_kt2_l3_lpm_update_match(int unit, _bcm_l3_trvrs_data_t *trv_data);
    724 extern int _bcm_kt2_l3_defip_init(int unit);
    725 extern int _bcm_kt2_l3_defip_deinit(int unit);
    726 
    727 #endif /* INCLUDE_L3 */
    728 
    729 #ifdef BCM_WARM_BOOT_SUPPORT
    730 extern int bcm_kt2_cosq_sync(int unit);
    731 #endif /* BCM_WARM_BOOT_SUPPORT */
    732 #ifndef BCM_SW_STATE_DUMP_DISABLE
    733 extern void bcm_kt2_cosq_sw_dump(int unit);
    734 #endif /* BCM_SW_STATE_DUMP_DISABLE */
    735 
    736 extern int
    737 bcm_kt2_modid_set_all(int unit, int *my_modid_list, int *my_modid_valid_list,
    738                       int *base_port_ptr_list);
    739 
    740 extern int
    741 bcm_kt2_modid_set(int unit, int mod_index, int modid,
    742                   int modid_valid, int base_port_ptr);
    743 
    744 extern int 
    745 bcm_kt2_modid_get_all(int unit, int *my_modid_list, int *my_modid_valid_list,
    746         int *base_port_ptr_list);
    747 
    748 extern int
    749 bcm_kt2_modid_get(int unit, int mod_index, int *my_modid_list,
    750                   int *my_modid_valid_list, int *base_port_ptr_list);
    751 
    752 extern int
    753 _bcm_kt2_pp_port_to_modport_get(int unit, bcm_port_t pp_port, int *modid,
    754                               bcm_port_t *port);
    755 extern int
    756 _bcm_kt2_modport_to_pp_port_get(int unit, int modid, bcm_port_t port,
    757                             bcm_port_t *pp_port);
    758 extern int
    759 _bcm_kt2_mod_is_coe_mod_check(int unit, int modid);
    760 
    761 extern int
    762  _bcm_kt2_port_mac_set(int unit, bcm_port_t port, uint64 port_mac);
    763 extern int
    764 _bcm_kt2_port_mac_get(int unit, bcm_port_t port, uint64 *port_mac);
    765 extern int
    766 _bcm_kt2_port_gport_validate(int unit, bcm_port_t port_in, bcm_port_t *port_out);
    767 extern int
    768 _bcm_kt2_source_trunk_map_set(int unit, bcm_port_t port, 
    769                                          soc_field_t field, uint32 value);
    770 extern int
    771 _bcm_kt2_source_trunk_map_get(int unit, bcm_port_t port, 
    772                                          soc_field_t field, uint32 *value);
    773 extern int
    774 _bcm_kt2_trunk_table_write(int unit, bcm_port_t port, int tid);
    775 extern int
    776 _bcm_kt2_trunk_table_read(int unit, bcm_port_t port, int *tid);
    777 extern void
    778 _bcm_kt2_subport_pbmp_update(int unit, bcm_pbmp_t *pbmp);
    779 
    780 extern int
    781 _bcm_kt2_modport_is_local_coe_subport(int unit, int mod, bcm_port_t port,
    782                                       int *is_local_subport);
    783 
    784 extern int
    785 _bcm_kt2_flexio_pbmp_update(int unit, bcm_pbmp_t *pbmp);
    786 
    787 extern int
    788 bcm_kt2_port_dscp_map_set(int unit, bcm_port_t port, int srccp,
    789                             int mapcp, int prio, int cng);
    790 
    791 extern int 
    792 bcm_kt2_cosq_gport_congestion_config_set(int unit, bcm_gport_t gport, 
    793                                          bcm_cos_queue_t cosq, 
    794                                          bcm_cosq_congestion_info_t *config);
    795 extern int 
    796 bcm_kt2_cosq_gport_congestion_config_get(int unit, bcm_gport_t port, 
    797                                          bcm_cos_queue_t cosq, 
    798                                          bcm_cosq_congestion_info_t *config);
    799 int
    800 bcm_kt2_cosq_congestion_mapping_set(int unit,int fabric_modid ,
    801         bcm_cosq_congestion_mapping_info_t *config);
    802 
    803 int
    804 bcm_kt2_cosq_congestion_mapping_get(int unit,int fabric_modid ,
    805         bcm_cosq_congestion_mapping_info_t *config);
    806 
    807 extern int
    808 bcm_kt2_cosq_gport_mapping_set(int unit, bcm_port_t ing_port,
    809                               bcm_cos_t int_pri, uint32 flags,
    810                               bcm_gport_t gport, bcm_cos_queue_t cosq);
    811 
    812 extern int
    813 bcm_kt2_cosq_gport_mapping_get(int unit, bcm_port_t ing_port,
    814                               bcm_cos_t int_pri, uint32 flags,
    815                               bcm_gport_t *gport, bcm_cos_queue_t *cosq);
    816 
    817 extern int
    818 bcm_kt2_cosq_gport_egress_mapping_set(int unit, bcm_port_t gport, bcm_cos_t priority,
    819         bcm_cos_t cosq, uint32 flags);
    820 
    821 extern int
    822 bcm_kt2_cosq_gport_egress_mapping_get(int unit, bcm_port_t gport, bcm_cos_t *priority,
    823                         bcm_cos_queue_t *cosq, uint32 flags);
    824 
    825 extern int
    826 _soc_katana2_mmu_set_invalid_parent(int unit);
    827 
    828 extern int
    829 bcmi_katana2_port_fn_drv_init(int unit);
    830 
    831 
    832 #define KT2_MAX_MODIDS_PER_TRANSLATION_TABLE 4
    833 #define KT2_MAX_PP_PORT_GPP_TRANSLATION_TABLES 4 
    834 #define KT2_MAX_EGR_PP_PORT_GPP_TRANSLATION_TABLES 2 
    835 #define KT2_MAX_PHYSICAL_PORTS 40
    836 #define KT2_HG_NUM_PHYSICAL_QUEUES  24
    837 #define KT2_CPU_NUM_PHYSICAL_QUEUES  48
    838 #define KT2_DEFAULT_NUM_PHYSICAL_QUEUES  8
    839 
    840 #define _BCMI_KT2_MAX_COE_MODULES 3
    841 #define _BCMI_KT2_PP_PORT_MAX    (128)
    842 
    843 #define _BCMI_KATANA2_MODULE_1  (0)
    844 #define _BCMI_KATANA2_MODULE_2  (1)
    845 #define _BCMI_KATANA2_MODULE_3  (2)
    846 #define _BCMI_KATANA2_MODULE_4  (3)
    847 
    848 /* OOB FC Tx side global configuration API */
    849 extern int bcm_kt2_oob_fc_tx_config_set(
    850     int unit,
    851     bcm_oob_fc_tx_config_t *config);
    852 
    853 /* OOB FC Tx side global configuration get API */
    854 extern int bcm_kt2_oob_fc_tx_config_get(
    855     int unit,
    856     bcm_oob_fc_tx_config_t *config);
    857 
    858 extern int
    859 _bcm_kt2_oob_fc_tx_port_control_set(int unit, bcm_port_t port,
    860                                    int status, int dir);
    861 extern int
    862 _bcm_kt2_oob_fc_tx_port_control_get(int unit, bcm_port_t port,
    863                                    int *status, int dir);
    864 
    865 /* OOB FC Tx side global info get API */
    866 extern int bcm_kt2_oob_fc_tx_info_get(
    867     int unit,
    868     bcm_oob_fc_tx_info_t *info);
    869 
    870 /*
    871  * OOB FC Rx Interface side Traffic Class to Priority Mapping Multi Set
    872  * API
    873  */
    874 extern int bcm_kt2_oob_fc_rx_port_tc_mapping_multi_set(
    875     int unit,
    876     bcm_oob_fc_rx_intf_id_t intf_id,
    877     bcm_gport_t gport,
    878     int array_count,
    879     uint32 *tc,
    880     uint32 *pri_bmp);
    881 
    882 /*
    883  * OOB FC Rx Interface side Traffic Class to Priority Mapping Multi Get
    884  * API
    885  */
    886 extern int bcm_kt2_oob_fc_rx_port_tc_mapping_multi_get(
    887     int unit,
    888     bcm_oob_fc_rx_intf_id_t intf_id,
    889     bcm_gport_t gport,
    890     int array_max,
    891     uint32 *tc,
    892     uint32 *pri_bmp,
    893     int *array_count);
    894 
    895 /* OOB FC Rx Interface side Traffic Class to Priority Mapping set API */
    896 extern int bcm_kt2_oob_fc_rx_port_tc_mapping_set(
    897     int unit,
    898     bcm_oob_fc_rx_intf_id_t intf_id,
    899     bcm_gport_t gport,
    900     uint32 tc,
    901     uint32 pri_bmp);
    902 
    903 /* OOB FC Rx Interface side Traffic Class to Priority Mapping get API */
    904 extern int bcm_kt2_oob_fc_rx_port_tc_mapping_get(
    905     int unit,
    906     bcm_oob_fc_rx_intf_id_t intf_id,
    907     bcm_gport_t gport,
    908     uint32 tc,
    909     uint32 *pri_bmp);
    910 
    911 /* OOB FC Rx Interface side Configuration set API */
    912 extern int bcm_kt2_oob_fc_rx_config_set(
    913     int unit,
    914     bcm_oob_fc_rx_intf_id_t intf_id,
    915     bcm_oob_fc_rx_config_t *config,
    916     int array_count,
    917     bcm_gport_t *gport_array);
    918 
    919 /* OOB FC Rx Interface side Configuration get API */
    920 extern int bcm_kt2_oob_fc_rx_config_get(
    921     int unit,
    922     bcm_oob_fc_rx_intf_id_t intf_id,
    923     bcm_oob_fc_rx_config_t *config,
    924     int array_max,
    925     bcm_gport_t *gport_array,
    926     int *array_count);
    927 
    928 /* OOB FC Rx Interface side Channel offset value for a port */
    929 extern int bcm_kt2_oob_fc_rx_port_offset_get(
    930     int unit,
    931     bcm_oob_fc_rx_intf_id_t intf_id,
    932     bcm_gport_t gport,
    933     uint32 *offset);
    934 
    935 extern int
    936 soc_katana2_mmu_port_enable_set(int unit, bcm_port_t gport,
    937                                 int enable);
    938 extern int
    939 _bcm_kt2_port_enqueue_set(int unit, bcm_port_t gport,
    940                           int enable);
    941 extern int 
    942 bcm_kt2_port_drain_cells(int unit, int port);
    943 
    944 extern int
    945 bcm_kt2_cosq_gport_e2ecc_transmit_set(int unit, bcm_gport_t gport, 
    946                                       bcm_cos_queue_t cosq, 
    947                                       bcm_cosq_control_t type, 
    948                                       int enable);
    949 extern int
    950 bcm_kt2_cosq_gport_e2ecc_transmit_get(int unit, bcm_gport_t gport,
    951                                       bcm_cos_queue_t cosq,
    952                                       bcm_cosq_control_t type,
    953                                       int *enable);
    954 extern int 
    955 bcm_kt2_cosq_stat_config_set(int unit, int stat_count, 
    956                     bcm_cosq_stat_t  *stat_array);
    957 
    958 extern int 
    959 bcm_kt2_cosq_stat_config_get(int unit, int stat_count, 
    960                     bcm_cosq_stat_t  *stat_array);
    961 
    962 /*
    963  * 8 Priority Groups supported.
    964  */
    965 #define KT2_PRIOROTY_GROUP_ID_MIN 0
    966 #define KT2_PRIOROTY_GROUP_ID_MAX 7
    967 /*
    968  * Inpur priority range.
    969  * PFC : 0-7
    970  * SAFC : 0-15
    971  */
    972 #define KT2_PFC_INPUT_PRIORITY_MIN 0
    973 #define KT2_PFC_INPUT_PRIORITY_MAX 7
    974 #define KT2_SAFC_INPUT_PRIORITY_MIN KT2_PFC_INPUT_PRIORITY_MIN
    975 #define KT2_SAFC_INPUT_PRIORITY_MAX 15
    976 
    977 extern int
    978 bcm_kt2_port_priority_group_mapping_set(int unit,
    979                                         bcm_gport_t gport,
    980                                         int prio,
    981                                         int priority_group);
    982 extern int
    983 bcm_kt2_port_priority_group_mapping_get(int unit,
    984                                         bcm_gport_t gport,
    985                                         int prio,
    986                                         int *priority_group);
    987 extern int bcm_kt2_switch_control_set(int unit, bcm_switch_control_t type, int arg);
    988 extern int bcm_kt2_switch_control_get(int unit, bcm_switch_control_t type, int *arg);
    989 extern int bcm_kt2_cosq_is_attached(int unit,
    990                                     bcm_port_t port,
    991                                     int exclude_default,
    992                                     int *present);
    993 #endif /* BCM_KATANA2_SUPPORT */
    994 #endif  /* !_BCM_INT_KATANA2_H_ */