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-2020 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_ */