tomahawk.h (78728B)
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: tomahawk.h 8 * Purpose: Function declarations for Tomahawk Internal functions. 9 */ 10 11 #ifndef _BCM_INT_TOMAHAWK_H_ 12 #define _BCM_INT_TOMAHAWK_H_ 13 14 #include <soc/defs.h> 15 16 #if defined(BCM_TOMAHAWK_SUPPORT) 17 18 #include <bcm/types.h> 19 #include <bcm_int/esw/firebolt.h> 20 #include <bcm_int/esw/flex_ctr.h> 21 #include <bcm_int/esw/cosq.h> 22 #include <bcm_int/esw/ipmc.h> 23 #include <bcm_int/esw/keygen_api.h> 24 25 #define TH_AGG_ID_INVALID (-1) 26 #define TH_AGG_ID_HW_INVALID (0x3F) 27 /* ECMP mode encodings match hardware values */ 28 #define TH_ECMP_MODE_SINGLE 0x1 29 #define TH_ECMP_MODE_SINGLE_LOW_LATENCY 0x0 30 #define TH_ECMP_MODE_HIERARCHICAL 0x3 31 32 #define RH_OPT_MAX_PATHS(u) (((SOC_IS_TOMAHAWK3(u)) || (SOC_IS_TOMAHAWK2(u))) \ 33 ? 32768: 16384) 34 #define RH_OPT_MIN_PATHS(u) 64 35 36 /* ECMP LB mode encodings match hardware values */ 37 #define BCM_TH_L3_ECMP_LB_MODE_RH 0x01 38 #define BCM_TH_L3_ECMP_LB_MODE_RANDOM 0x2 39 #define BCM_TH_L3_ECMP_LB_MODE_RR 0x3 40 41 #ifdef BCM_WARM_BOOT_SUPPORT 42 /* ECMP member table size */ 43 #define RH_ECMP_MEMBER_TBL_MAX(u) (SOC_IS_TOMAHAWK2(u) ? 32768: 16384) 44 #endif /* BCM_WARM_BOOT_SUPPORT */ 45 46 #define L3_EXT_VIEW_INVALID_VNTAG_ETAG_PROFILE 0 47 #define VNTAG_ACTIONS_NIV 1 48 #define VNTAG_ACTIONS_ETAG 2 49 50 #define TH_MGMT_PORT0_NUM 129 /* Management Port 0 Physical Number */ 51 #define TH_MGMT_PORT1_NUM 131 /* Management Port 1 Physical Number */ 52 53 #if defined(BCM_FIELD_SUPPORT) 54 #define _FP_TCAM_IPBMP_SIZE(unit) _field_fp_tcam_ipbmp_size(unit) 55 extern int _field_fp_tcam_ipbmp_size(int unit); 56 extern int _bcm_field_th_group_lt_prio_update(int unit, _field_group_t *fg, 57 int priority); 58 extern int _bcm_field_th_group_status_calc(int unit, _field_group_t *fg); 59 extern int _bcm_field_th_group_enable_set(int unit, bcm_field_group_t group, uint32 enable); 60 extern int _bcm_field_th_group_free_unused_slices(int unit, 61 _field_stage_t *stage_fc, 62 _field_group_t *fg); 63 extern int _bcm_field_th_group_add_slice_validate(int unit, 64 _field_stage_t *stage_fc, 65 _field_group_t *fg, 66 int slice_id); 67 extern int _bcm_field_th_entry_part_tcam_idx_get(int unit, 68 _field_entry_t *f_ent, 69 uint32 idx_pri, 70 uint8 entry_part, 71 int *idx_out); 72 extern int _bcm_field_th_slice_offset_to_tcam_idx(int unit, 73 _field_stage_t *stage_fc, 74 int instance, int slice, int slice_idx, 75 int *tcam_idx); 76 extern int _bcm_field_th_tcam_idx_to_slice_offset(int unit, 77 _field_stage_t *stage_fc, 78 _field_entry_t *f_ent, int tcam_idx, 79 int *slice, int *slice_idx); 80 extern int _bcm_field_th_tcam_part_to_slice_number(int entry_part, 81 uint32 group_flags, 82 uint8 *slice_number); 83 extern int _bcm_field_th_tcam_part_to_entry_flags(int unit, int entry_part, 84 uint32 group_flags, 85 uint32 *entry_flags); 86 extern int _bcm_field_th_entry_flags_to_tcam_part (int unit, uint32 entry_flags, 87 uint32 group_flags, 88 uint8 *entry_part); 89 extern int _bcm_field_th_lt_tcam_idx_to_slice_offset(int unit, 90 _field_stage_t *stage_fc, 91 int instance, int tcam_idx, 92 int *slice, 93 int *slice_idx); 94 extern int _bcm_field_th_lt_tcam_entry_get(int unit, 95 _field_group_t *fg, 96 _field_lt_entry_t *lt_f_ent); 97 extern int _bcm_field_th_lt_slice_offset_to_tcam_index(int unit, 98 _field_stage_t *stage_fc, 99 int instance, int slice, 100 int slice_idx, 101 int *tcam_idx); 102 extern int _bcm_field_th_entry_tcam_parts_count(int unit, uint32 group_flags, 103 int *part_count); 104 extern int _bcm_field_th_lt_entry_tcam_parts_count(int unit, 105 _field_stage_id_t stage_id, 106 uint32 group_flags, 107 int *part_count); 108 extern int _bcm_field_th_group_deinit(int unit, _field_group_t *fg); 109 extern int _bcm_field_th_group_add(int unit, uint32 flags, bcm_field_group_config_t *gc); 110 extern int _bcm_field_th_stages_delete(int unit, _field_control_t *fc); 111 extern int _bcm_field_th_stages_add(int unit, _field_control_t *fc); 112 extern int _bcm_field_th_stage_init(int unit, _field_stage_t *stage_fc); 113 extern int _bcm_field_th_init(int unit, _field_control_t *fc); 114 extern int _field_th_keygen_profiles_init(int unit, _field_stage_t *stage_fc, 115 _field_control_t *fc); 116 extern int _bcm_field_th_multi_pipe_counter_mem_get(int unit, 117 _field_stage_t *stage_fc, 118 soc_mem_t *counter_mem); 119 extern int _bcm_field_th_counter_multi_pipe_collect_init(int unit, 120 _field_control_t *fc, 121 _field_stage_t *stage_fc); 122 extern int _bcm_field_th_val_set(uint32 *p_fn_data, uint32 *p_data, 123 uint32 offset, uint32 width); 124 extern int _bcm_field_th_val_get(uint32 *p_fn_data, uint32 *p_data, 125 uint32 offset, uint32 width); 126 extern int _bcm_field_th_profile1_action_set(int unit, _field_entry_t *f_ent, 127 _field_action_t *fa, uint32 *entbuf); 128 extern int _bcm_field_th_profile2_action_set(int unit, _field_entry_t *f_ent, 129 _field_action_t *fa, uint32 *entbuf); 130 extern int _bcm_field_th_misc_action_set(int unit, _field_entry_t *f_ent, 131 _field_action_t *fa, uint32 *entbuf); 132 extern int _bcm_field_th_l3swl2change_action_set(int unit, 133 _field_entry_t *f_ent, 134 _field_action_t *fa, 135 uint32 *entbuf); 136 extern int _bcm_field_th_redirect_action_set(int unit, _field_entry_t *f_ent, 137 _field_action_t *fa, uint32 *entbuf); 138 extern int _field_th_ingress_policer_action_set(int unit, 139 _field_entry_t *f_ent, 140 uint32 *buf); 141 extern int 142 _bcm_field_th_stat_attach(int unit, 143 bcm_field_group_t field_group, 144 uint32 flex_sid, uint32 *stat_id); 145 extern int _bcm_field_th_action_params_check(int unit, 146 _field_entry_t *f_ent, 147 _field_action_t *fa); 148 extern int _field_calc_group_aset_size(int unit, 149 _field_group_t *fg, uint16 *aset_size); 150 extern int _field_group_check_action_profile(int unit, 151 _field_group_t *fg, uint16 *new_action_profile); 152 extern int _bcm_field_qset_update_with_internal_actions(int unit, 153 _field_group_t *fg); 154 extern int _bcm_field_th_action_support_check(int unit, 155 _field_entry_t *f_ent, 156 bcm_field_action_t action, 157 int *result); 158 extern int _bcm_field_th_action_set(int unit, soc_mem_t mem, _field_entry_t *f_ent, 159 int tcam_idx, _field_action_t *fa, uint32 *entbuf); 160 extern int _bcm_field_th_selcodes_install(int unit, 161 _field_group_t *fg, 162 uint8 slice_numb, 163 bcm_pbmp_t pbmp, 164 int selcode_index); 165 extern int _bcm_field_th_scache_sync(int unit, 166 _field_control_t *fc, 167 _field_stage_t *stage_fc); 168 169 extern int _bcm_field_th_policer_meter_hw_free(int unit, 170 _field_entry_t *f_ent, 171 _field_entry_policer_t *f_ent_pl); 172 extern int _bcm_field_th_policer_meter_hw_free_old(int unit, 173 _field_entry_t *f_ent, 174 _field_entry_policer_t *f_ent_pl); 175 extern int _bcm_field_th_policer_mem_get(int unit, _field_stage_t *stage_fc, 176 int instance, soc_mem_t *policer_mem); 177 extern int _bcm_field_th_group_oper_mode_set(int unit, 178 bcm_field_qualify_t stage, 179 bcm_field_group_oper_mode_t mode); 180 181 extern int _bcm_field_th_group_oper_mode_get(int unit, 182 bcm_field_qualify_t stage, 183 bcm_field_group_oper_mode_t *mode); 184 185 extern int _bcm_field_wb_group_oper_mode_set(int unit, 186 bcm_field_qualify_t stage, 187 _field_stage_t **stage_fc, 188 bcm_field_group_oper_mode_t mode); 189 190 extern int _bcm_field_th_source_class_mode_set(int unit, 191 bcm_field_stage_t stage, 192 bcm_pbmp_t pbmp, 193 bcm_field_src_class_mode_t mode); 194 195 extern int _bcm_field_th_source_class_mode_get(int unit, 196 bcm_field_stage_t stage, 197 bcm_pbmp_t pbmp, 198 bcm_field_src_class_mode_t *mode); 199 200 201 extern int _bcm_field_th_qualify_MixedSrcClassId(int unit, 202 bcm_field_entry_t entry, 203 bcm_pbmp_t pbmp, 204 bcm_field_src_class_t data, 205 bcm_field_src_class_t mask); 206 207 extern int _bcm_field_th_qualify_MixedSrcClassId_get(int unit, 208 bcm_field_entry_t entry, 209 bcm_pbmp_t pbmp, 210 uint32 hw_data, 211 uint32 hw_mask, 212 bcm_field_src_class_t *data, 213 bcm_field_src_class_t *mask); 214 215 extern int _bcm_field_th_qualifier_MixedSrcClassId_delete(int unit, 216 bcm_field_entry_t entry); 217 218 extern int _bcm_field_th_entry_install(int unit, _field_entry_t *f_ent, 219 int tcam_idx); 220 221 extern int _bcm_field_th_entry_reinstall(int unit, _field_entry_t *f_ent, 222 int tcam_idx); 223 224 extern int _bcm_field_th_qual_tcam_key_mask_get(int unit, 225 _field_entry_t *f_ent, 226 _field_tcam_t *tcam); 227 228 extern int 229 _bcm_field_th_entry_remove(int unit, _field_entry_t *f_ent, int tcam_idx); 230 231 extern int 232 _bcm_field_th_entry_move(int unit, _field_entry_t *f_ent, int parts_count, 233 int *tcam_idx_old, int *tcam_idx_new); 234 extern int 235 _bcm_field_th_entry_enable_set(int unit, _field_entry_t *f_ent, 236 int enable_flag); 237 extern int 238 _bcm_field_th_slice_enable_set(int unit, _field_group_t *fg, 239 _field_slice_t *fs, uint8 enable); 240 extern int _bcm_field_th_stat_action_set(int unit, _field_entry_t *f_ent, 241 soc_mem_t mem, int tcam_idx, 242 uint32 *buf); 243 extern int 244 _bcm_field_th_forwardingType_set(int unit, _field_stage_id_t stage_id, 245 bcm_field_entry_t entry, 246 bcm_field_ForwardingType_t type, 247 uint32 *data, uint32 *mask); 248 extern int 249 _bcm_field_th_forwardingType_get(int unit, _field_stage_id_t stage_id, 250 bcm_field_entry_t entry, 251 uint32 data, uint32 mask, 252 bcm_field_ForwardingType_t *type); 253 extern int 254 _bcm_field_th_qualify_class(int unit, 255 bcm_field_entry_t entry, 256 bcm_field_qualify_t qual, 257 uint32 *data, 258 uint32 *mask); 259 extern int 260 _bcm_field_th_qualify_svp(int unit, bcm_field_entry_t entry, 261 bcm_field_qualify_t qual, 262 uint32 data, uint32 mask, 263 int svp_valid); 264 extern int 265 _bcm_field_th_qualify_dvp(int unit, bcm_field_entry_t entry, 266 bcm_field_qualify_t qual, 267 uint32 data, uint32 mask, 268 int dvp_valid); 269 270 extern int 271 _bcm_field_th_qualify_trunk(int unit, 272 bcm_field_entry_t entry, 273 bcm_field_qualify_t qual, 274 bcm_trunk_t data, bcm_trunk_t mask); 275 276 int 277 _bcm_field_th_qualify_trunk_get(int unit, 278 bcm_field_entry_t entry, 279 bcm_field_qualify_t qual, 280 bcm_trunk_t *data, bcm_trunk_t *mask); 281 extern int 282 _bcm_field_th_qualify_set(int unit, bcm_field_entry_t entry, 283 int qual, uint32 *data, uint32 *mask, 284 uint8 flags); 285 extern int 286 _bcm_field_th_qual_value_set(int unit, _bcm_field_qual_offset_t *q_offset, 287 _field_entry_t *f_ent, 288 uint32 *p_data, uint32 *p_mask); 289 extern int 290 _bcm_field_th_find_empty_slice(int unit, _field_group_t *fg, 291 _field_slice_t **fs_ptr); 292 extern int 293 _bcm_field_th_qual_offset_get(int unit, _field_entry_t *f_ent, int qid, 294 int entry_part, _bcm_field_qual_offset_t **offset); 295 extern int 296 _bcm_field_th_entry_qualifier_key_get(int unit, 297 bcm_field_entry_t entry, 298 int qual_id, 299 _bcm_field_qual_data_t q_data, 300 _bcm_field_qual_data_t q_mask); 301 extern int 302 _bcm_field_th_qualifier_delete(int unit, bcm_field_entry_t entry, 303 bcm_field_qualify_t qual_id); 304 extern int _bcm_field_th_qualify_InPorts(int unit, 305 bcm_field_entry_t entry, 306 bcm_field_qualify_t qual, 307 bcm_pbmp_t data, 308 bcm_pbmp_t mask); 309 extern int 310 _bcm_field_th_qualify_VlanTranslationHit(int unit, 311 bcm_field_entry_t entry, 312 uint8 *data, 313 uint8 *mask); 314 extern int 315 _field_th_group_lt_slice_validate(int unit, 316 _field_stage_t *stage_fc, 317 _field_group_t *fg, 318 int slice_id, 319 _field_lt_slice_t *lt_fs); 320 extern int 321 _bcm_field_th_priority_group_get_next(int unit, 322 int instance, 323 _field_stage_id_t stage_id, 324 int priority, 325 _field_group_t **curr_group, 326 _field_group_t **next_group); 327 extern int 328 _bcm_field_th_class_stage_add(int unit, _field_control_t *fc, 329 _field_stage_t *stage_fc); 330 extern int 331 _bcm_field_th_class_stage_status_init(int unit, _field_stage_t *stage_fc); 332 333 extern int 334 _bcm_field_th_class_stage_status_deinit(int unit, _field_stage_t *stage_fc); 335 336 extern int 337 _bcm_field_th_class_group_add(int unit, _field_group_add_fsm_t *fsm_ptr, 338 bcm_field_aset_t aset); 339 extern int 340 _bcm_field_th_data_qualifier_hw_alloc(int unit, 341 _field_stage_t *stage_fc, 342 _field_data_qualifier_t *f_dq); 343 extern int 344 _bcm_field_th_field_qset_data_qualifier_add(int unit, 345 bcm_field_qset_t *qset, 346 int qual_id); 347 extern int 348 _bcm_field_th_field_qset_data_qualifier_delete(int unit, bcm_field_qset_t *qset, 349 int qual_id); 350 extern int 351 _bcm_field_th_field_qset_data_qualifier_get(int idx, 352 bcm_field_qset_t qset, 353 bcm_field_qualify_t *qid); 354 extern int 355 _bcm_field_th_field_qualify_data_elem(int unit, bcm_field_entry_t eid, 356 _field_data_qualifier_t *f_dq, 357 uint8 qual_elem_idx, 358 uint32 data, uint32 mask); 359 extern int 360 _bcm_field_th_field_qualify_data_get(int unit, bcm_field_entry_t eid, int qual_id, 361 uint16 length_max, uint8 *data, uint8 *mask, 362 uint16 *length); 363 364 extern int 365 _bcm_field_group_flex_ctr_pool_bmp_update(int unit, 366 bcm_field_group_t group, 367 int pool_number); 368 extern int 369 _bcm_field_th_em_color_offset_get(int unit, 370 _field_stat_t *f_st, 371 uint32 *green_offset, 372 uint32 *yellow_offset, 373 uint32 *red_offset); 374 extern int 375 _bcm_field_group_flex_ctr_info_get(int unit, 376 bcm_field_group_t group, int *instance, 377 _field_counter_pool_bmp_t *counter_pool_bmp); 378 extern int 379 _bcm_field_th_ingress_slice_clear(int unit, 380 _field_group_t *fg, 381 _field_slice_t *fs); 382 extern int 383 _bcm_field_th_qualify_class_get(int unit, 384 bcm_field_entry_t entry, 385 bcm_field_qualify_t qual, 386 uint32 *data, 387 uint32 *mask); 388 extern int 389 _bcm_field_th_stat_attach(int unit, 390 bcm_field_group_t field_group, 391 uint32 flex_sid, uint32 *stat_id); 392 extern int 393 _bcm_field_th_write_slice_map(int unit, 394 _field_stage_t *stage_fc, 395 _field_group_t *fg); 396 extern void 397 _bcm_field_th_class_stage_dump(int unit, _field_stage_t *stage_fc); 398 399 extern int 400 _bcm_field_th_class_group_dump(int unit, _field_group_t *class_fg); 401 402 extern int 403 _bcm_field_th_class_group_brief_dump(int unit, _field_group_t *class_fg); 404 405 extern int 406 _bcm_field_th_class_entry_dump(int unit, _field_entry_t *class_ent); 407 408 extern int 409 _bcm_field_th_class_entry_create(int unit, bcm_field_group_t group, 410 bcm_field_entry_t entry); 411 412 extern int 413 _bcm_field_th_class_entry_destroy(int unit, _field_entry_t *entry); 414 415 extern int 416 _bcm_field_th_class_entry_prio_set(int unit, _field_entry_t *entry, int prio); 417 418 extern int 419 _bcm_field_th_class_entry_prio_get(int unit, _field_entry_t *entry); 420 421 extern int 422 _bcm_field_th_class_qualify_set(int unit, bcm_field_entry_t entry, 423 int qual, uint32 *data, uint32 *mask); 424 extern int 425 _bcm_field_th_class_qualify_clear(int unit, bcm_field_entry_t entry); 426 427 extern int 428 _bcm_field_th_class_entry_qualifier_key_get(int unit, 429 bcm_field_entry_t entry, 430 int qual_id, 431 _bcm_field_qual_data_t q_data, 432 _bcm_field_qual_data_t q_mask); 433 extern int 434 _bcm_field_th_class_type_qset_get(int unit, bcm_field_qset_t *qset, 435 _field_class_type_t *ctype); 436 extern int 437 _bcm_field_th_class_action_set(int unit, bcm_field_entry_t entry, 438 bcm_field_class_info_t *class_info); 439 extern int 440 _bcm_field_th_class_action_delete(int unit, bcm_field_entry_t entry, 441 bcm_field_action_t action); 442 extern int 443 _bcm_field_th_class_action_get(int unit, bcm_field_entry_t entry, 444 bcm_field_class_info_t *class_info); 445 extern int 446 _bcm_field_th_qual_class_size_get(int unit , bcm_field_qualify_t qual, 447 uint16 *class_size); 448 extern int 449 _bcm_field_th_class_entry_install(int unit, bcm_field_entry_t entry); 450 451 extern int 452 _bcm_field_th_class_entry_hwinstall(int unit, _field_entry_t *entry, 453 _field_class_type_t ctype); 454 extern int 455 _bcm_field_th_class_size_get(int unit, _field_class_type_t ctype, 456 int *memsize); 457 extern int 458 _bcm_field_th_class_entry_hwread(int unit, _field_entry_t *entry, 459 _field_class_type_t ctype, 460 uint32 *cdata); 461 extern int 462 _bcm_field_th_class_entry_remove(int unit, bcm_field_entry_t entry); 463 464 extern int 465 _bcm_field_th_udf_chunks_to_int_qset(int unit, uint32 udf_chunks_bmap, 466 bcm_field_qset_t *qset); 467 468 extern int 469 _bcm_field_th_qset_udf_offsets_alloc(int unit, _field_stage_id_t stage, 470 bcm_field_qset_t qset, int req_offsets, int offset_array[], int *max_chunks, 471 int pipe_num); 472 473 extern int 474 _bcm_field_th_qual_udf_offsets_get(int unit, int qid, 475 int chunk_order[], int *num_chunks, 476 uint32 udf_hw_bmap); 477 478 extern int 479 _bcm_field_th_qualify_udf_data_elem_get(int unit, int idx, 480 int max_chunks, 481 int *qid); 482 extern int 483 bcmi_field_th_qualify_udf_get(int unit, bcm_field_entry_t eid, 484 bcm_udf_id_t udf_id, int max_length, 485 uint8 *data, uint8 *mask, int *actual_length); 486 487 extern int _field_th_qset_comb_init(int unit, _field_control_t *fc); 488 489 490 extern int 491 _field_th_emstage_init(int unit, _field_control_t *fc, 492 _field_stage_t *stage_fc); 493 extern int 494 _field_th_em_entries_free_get(int unit, _field_group_t *fg, 495 int *free_count); 496 extern int 497 _field_th_emstage_update(int unit, _field_stage_t *stage_fc); 498 extern int 499 _field_th_em_group_lookup_get(int unit, int priority, 500 uint8 *lookup); 501 extern int 502 _field_th_em_qualifier_set(int unit, bcm_field_entry_t entry, 503 int qual, uint32 *data, uint32 *mask); 504 int 505 _field_th_em_ltid_based_groupid_get(int unit, int ltid, 506 bcm_field_group_t *group); 507 extern int 508 _field_th_em_group_priority_hintbased_qset_update(int unit, 509 _field_group_t *fg, 510 bcm_field_hint_t *hint_entry); 511 extern int 512 _field_th_emstage_deinit(int unit, _field_stage_t *stage_fc); 513 514 extern int 515 _field_th_exactmatch_slice_validate(int unit, _field_stage_t *stage_fc, 516 _field_group_t *fg, int slice_id); 517 extern int 518 _field_th_keygen_em_profile_entry_pack(int unit, _field_stage_t *stage_fc, 519 _field_group_t *fg, int part, soc_mem_t mem, 520 exact_match_key_gen_program_profile_entry_t *prof_entry); 521 extern int 522 _field_th_keygen_em_profile_mask_entry_pack(int unit, _field_stage_t *stage_fc, 523 _field_group_t *fg, int part, soc_mem_t mem, 524 exact_match_key_gen_mask_entry_t *prof_entry); 525 extern int 526 _field_th_em_entry_install(int unit, _field_entry_t *f_ent); 527 528 extern int 529 _field_th_em_entry_remove(int unit, _field_entry_t *f_ent); 530 531 extern int 532 _field_th_em_entry_action_size_get(int unit, _field_entry_t *f_ent, 533 int *action_size, uint32 *action_prof_idx); 534 extern int 535 _bcm_field_th_flex_counter_status_get(int unit, 536 _field_group_t *fg, 537 int *counters_total, 538 int *counters_free); 539 540 extern int 541 _bcm_field_th_egress_mode_get(int unit, _field_group_t *fg, uint8 *slice_mode); 542 543 544 extern int 545 _bcm_field_th_group_update(int unit, bcm_field_group_t group, bcm_field_qset_t *qset); 546 547 extern int 548 _bcm_field_th_entry_phys_dump(int unit, _field_entry_t *f_ent); 549 extern int _bcm_field_th_entry_tcam_index_get(int unit, bcm_field_entry_t eid, 550 int *logical_tcam_idx, 551 int *physical_tcam_idx); 552 extern int _bcm_field_th_ifp_slice_mode_get(int unit, int pipe, int slice_num, 553 int *slice_mode, int *slice_enabled); 554 #if defined(BCM_TOMAHAWK3_SUPPORT) 555 extern int 556 _bcm_field_th3_qualify_ip_type(int unit, bcm_field_entry_t entry, 557 bcm_field_IpType_t type, 558 bcm_field_qualify_t qual); 559 extern int 560 _bcm_field_th3_qualify_ip_type_encode_get(int unit, uint32 hw_data, 561 uint32 hw_mask, 562 bcm_field_IpType_t *type); 563 #endif 564 565 extern int 566 _field_th_stage_action_support_check(int unit, 567 unsigned stage, 568 bcm_field_action_t action, 569 int *result); 570 extern int 571 _bcm_field_th_qualify_PacketRes_get( 572 int unit, 573 bcm_field_entry_t entry, 574 uint32 *data, 575 uint32 *mask); 576 extern int 577 _bcm_field_th_qualify_PacketRes(int unit, 578 bcm_field_entry_t entry, 579 uint32 *data, 580 uint32 *mask 581 ); 582 583 #endif /* !BCM_FIELD_SUPPORT */ 584 585 #if defined(INCLUDE_L3) 586 #ifdef BCM_WARM_BOOT_SUPPORT 587 extern int bcm_th_ipmc_aggid_info_scache_size_get(int unit, uint32 *size); 588 extern int bcm_th_ipmc_aggid_info_sync(int unit, uint8 **scache_ptr); 589 extern int bcm_th_ipmc_aggid_info_recover(int unit, uint8 **scache_ptr); 590 #endif 591 extern bcm_error_t 592 _bcm_niv_gport_get(int unit, int is_trunk, int modid, 593 int port, int dst_vif, bcm_gport_t *niv_gport); 594 extern bcm_error_t 595 _bcm_extender_gport_get(int unit, int is_trunk, int modid, 596 int port, int etag_vid, bcm_gport_t *ext_gport); 597 extern void 598 _bcm_th_glp_resolve_embedded_nh(int unit, uint32 gport, 599 bcm_module_t *modid, bcm_port_t *port, 600 int *is_trunk); 601 extern int bcm_th_ipmc_repl_init(int unit); 602 extern int bcm_th_ipmc_repl_detach(int unit); 603 extern int bcm_th_ipmc_repl_set(int unit, int ipmc_id, bcm_port_t port, 604 bcm_vlan_vector_t vlan_vec); 605 extern int bcm_th_ipmc_repl_get(int unit, int index, bcm_port_t port, 606 bcm_vlan_vector_t vlan_vec); 607 extern int bcm_th_ipmc_repl_add(int unit, int index, bcm_port_t port, 608 bcm_vlan_t vlan); 609 extern int bcm_th_ipmc_repl_delete(int unit, int index, bcm_port_t port, 610 bcm_vlan_t vlan); 611 extern int bcm_th_ipmc_repl_delete_all(int unit, int index, 612 bcm_port_t port); 613 extern int bcm_th_ipmc_egress_intf_add(int unit, int index, bcm_port_t port, 614 bcm_l3_intf_t *l3_intf); 615 extern int bcm_th_ipmc_egress_intf_delete(int unit, int index, bcm_port_t port, 616 bcm_l3_intf_t *l3_intf); 617 extern int bcm_th_ipmc_egress_intf_set(int unit, int mc_index, 618 bcm_port_t port, int if_count, 619 bcm_if_t *if_array, int is_l3, 620 int check_port); 621 extern int bcm_th_ipmc_egress_intf_get(int unit, int mc_index, 622 bcm_port_t port, 623 int if_max, bcm_if_t *if_array, 624 int *if_count); 625 extern int _bcm_th_ipmc_egress_intf_add(int unit, int index, bcm_port_t port, 626 int encap_id, int is_l3); 627 extern int _bcm_th_ipmc_egress_intf_delete(int unit, int index, 628 bcm_port_t port, int if_max, 629 int encap_id, int is_l3); 630 extern int bcm_th_ipmc_trill_mac_update(int unit, uint32 mac_field, 631 uint8 flag); 632 extern int bcm_th_ipmc_l3_intf_next_hop_free(int unit, int intf); 633 extern int _bcm_th_ipmc_l3_intf_next_hop_get(int unit, int intf, int *nh_index); 634 extern int _bcm_th_ipmc_l3_intf_next_hop_l3_egress_set(int unit, int intf); 635 extern int _bcm_th_ipmc_l3_intf_next_hop_l3_egress_clear(int unit, int nh_idx); 636 637 638 /* IPMC replication per trunk function */ 639 extern int bcm_th_ipmc_egress_intf_set_for_trunk_first_member(int unit, 640 int repl_group, 641 bcm_port_t port, 642 int if_count, 643 bcm_if_t *if_array, 644 int is_l3, 645 int check_port, 646 bcm_trunk_t tgid); 647 extern int bcm_th_ipmc_egress_intf_set_for_same_pipe_member(int unit, 648 int repl_group, 649 bcm_port_t port, 650 bcm_port_t ori_port, 651 bcm_trunk_t tgid); 652 extern int bcm_th_ipmc_egress_intf_add_in_per_trunk_mode(int unit, 653 int repl_group, 654 bcm_port_t port, 655 int encap_id, 656 int is_l3); 657 extern int bcm_th_ipmc_egress_intf_del_in_per_trunk_mode(int unit, 658 int repl_group, 659 bcm_port_t port, 660 int if_max, 661 int encap_id, 662 int is_l3); 663 extern int bcm_th_ipmc_egress_intf_add_for_trunk(int unit, int repl_group, 664 bcm_trunk_t tgid, 665 int encap_id, int is_l3); 666 extern int bcm_th_ipmc_egress_intf_del_for_trunk(int unit, int repl_group, 667 bcm_trunk_t tgid, 668 int if_max, int encap_id, 669 int is_l3); 670 extern int bcm_th_ipmc_egress_intf_add_trunk_member(int unit, int repl_group, 671 bcm_port_t port); 672 extern int bcm_th_ipmc_egress_intf_del_trunk_member(int unit, int repl_group, 673 bcm_port_t port); 674 extern bcm_error_t _th_ipmc_info_get(int unit, int ipmc_index, bcm_ipmc_addr_t *ipmc, 675 ipmc_entry_t *entry, 676 _bcm_esw_ipmc_l3entry_t *use_ipmc_l3entry); 677 extern bcm_error_t _th_ipmc_glp_set(int unit, bcm_ipmc_addr_t *ipmc, 678 _bcm_l3_cfg_t *l3cfg); 679 extern bcm_error_t _th_ipmc_glp_get(int unit, bcm_ipmc_addr_t *ipmc, 680 _bcm_l3_cfg_t *l3cfg); 681 682 extern int _bcm_th_ipmc_src_port_compare(int unit, int ipmc_index, 683 bcm_ipmc_addr_t *ipmc, int *match); 684 extern int bcm_th_ipmc_repl_port_attach(int unit, bcm_port_t port); 685 extern int bcm_th_ipmc_repl_port_detach(int unit, bcm_port_t port); 686 extern bcm_error_t _bcm_th_macda_oui_profile_init(int unit); 687 extern void _bcm_th_macda_oui_profile_deinit(int unit); 688 extern bcm_error_t _bcm_th_vntag_etag_profile_init(int unit); 689 extern void _bcm_th_vntag_etag_profile_deinit(int unit); 690 extern bcm_error_t 691 _bcm_th_l3_vp_entry_add(int unit, soc_mem_t mem, _bcm_l3_cfg_t *l3cfg, 692 uint32 *buf_p, int *macda_oui_profile_index, 693 int *vntag_etag_profile_index); 694 extern bcm_error_t 695 _bcm_th_l3_vp_ent_parse(int unit, soc_mem_t mem, 696 _bcm_l3_cfg_t *l3cfg, void *l3x_entry); 697 extern bcm_error_t 698 _bcm_th_l3_vp_entry_del(int unit, _bcm_l3_cfg_t *l3cfg, 699 int macda_oui_profile_index ,int vntag_etag_profile_index); 700 extern bcm_error_t 701 _bcm_th_get_extended_profile_index(int unit, soc_mem_t mem_ext, 702 _bcm_l3_cfg_t *l3cfg, 703 int *macda_oui_profile_index, 704 int *vntag_etag_profile_index, 705 int *ref_count); 706 extern int _bcm_th_l3_ecmp_across_layers_move(int unit, int threshold, 707 int direction); 708 extern void bcm_th_l3_extended_required_scache_size_get(int unit, int *size); 709 extern bcm_error_t bcm_th_l3_extended_view_sync(int unit, uint8 **scache_ptr, 710 int offset); 711 extern bcm_error_t bcm_th_l3_extended_view_reinit(int unit, uint8 **scache_ptr, 712 int offset); 713 714 extern int bcm_th_aggid_info_detach(int unit); 715 extern int bcm_th_aggid_info_init(int unit); 716 extern int bcm_th_set_port_hw_agg_map(int unit, bcm_port_t port, int aggid); 717 extern int bcm_th_port_aggid_add(int unit, bcm_port_t port, bcm_trunk_t tgid, 718 int *aggid); 719 extern int bcm_th_port_aggid_del(int unit, bcm_port_t port); 720 721 extern int bcm_th_port_trunkid_get(int unit, bcm_port_t port, int *tgid); 722 extern int bcm_th_port_last_member_check(int unit, bcm_port_t port, int *val); 723 extern int bcm_th_port_to_aggid(int unit, bcm_port_t port, int *aggid); 724 725 #ifdef BCM_WARM_BOOT_SUPPORT 726 extern int _bcm_th_ipmc_repl_l3_intf_scache_size_get(int unit, uint32 *size); 727 extern int _bcm_th_ipmc_repl_l3_intf_sync(int unit, uint8 **scache_ptr); 728 extern int _bcm_th_ipmc_repl_l3_intf_scache_recover(int unit, uint8 **scache_ptr); 729 extern int _bcm_th_ipmc_repl_reload(int unit); 730 extern int _bcm_th_ipmc_repl_l3_intf_nh_map_scache_size_get(int unit, uint32 *size); 731 extern int _bcm_th_ipmc_repl_l3_intf_nh_map_sync(int unit, uint8 **scache_ptr); 732 extern int _bcm_th_ipmc_repl_l3_intf_nh_map_scache_recover(int unit, uint8 **scache_ptr); 733 extern int _bcm_th_ipmc_repl_l3_intf_trill_nh_map_scache_size_get(int unit, uint32 *size); 734 extern int _bcm_th_ipmc_repl_l3_intf_trill_nh_map_sync(int unit, uint8 **scache_ptr); 735 extern int _bcm_th_ipmc_repl_l3_intf_trill_nh_map_scache_recover(int unit, uint8 **scache_ptr); 736 #endif /* BCM_WARM_BOOT_SUPPORT */ 737 738 #ifndef BCM_SW_STATE_DUMP_DISABLE 739 extern void _bcm_th_ipmc_repl_sw_dump(int unit); 740 #endif /* BCM_SW_STATE_DUMP_DISABLE */ 741 742 /* Resilient Hashing funcitons */ 743 extern int bcm_opt_ecmp_rh_init(int unit); 744 extern int bcm_opt_ecmp_rh_deinit(int unit); 745 extern int bcm_opt_l3_egress_ecmp_rh_create(int unit, 746 bcm_l3_egress_ecmp_t *ecmp, 747 int intf_count, 748 bcm_if_t *intf_array, 749 int op, int count, 750 bcm_if_t *intf, 751 bcm_if_t *new_intf_array); 752 extern int bcm_opt_l3_egress_ecmp_rh_destroy(int unit, bcm_if_t mpintf); 753 extern int bcm_opt_l3_egress_ecmp_lb_get(int unit, bcm_l3_egress_ecmp_t *ecmp); 754 extern int bcm_opt_l3_egress_ecmp_rh_shared_copy(int unit, int old_ecmp_group, 755 int new_ecmp_group); 756 extern int bcm_opt_ecmp_rh_set_intf_arr(int unit, int intf_count, 757 bcm_if_t *intf_array, 758 int ecmp_group_idx, 759 int group_size, 760 int max_paths); 761 extern int bcm_opt_ecmp_rh_multipath_get(int unit, int ecmp_group_idx, int intf_size, 762 bcm_if_t *intf_array, int *intf_count, 763 int *max_paths); 764 extern int bcm_opt_l3_egress_rh_ecmp_find(int unit, int intf_count, 765 bcm_if_t *intf_array, bcm_if_t *mpintf); 766 extern int bcm_opt_ecmp_lb_mode_set(int unit, 767 int ecmp_group_idx, 768 uint8 lb_mode); 769 extern int bcm_opt_ecmp_lb_mode_reset(int unit, 770 bcm_if_t mpintf); 771 extern void bcm_opt_ecmp_group_rh_set(int unit, int ecmp_group_idx, int enable); 772 extern int bcm_opt_ecmp_group_is_rh(int unit, 773 int ecmp_group_idx); 774 extern int bcm_opt_l3_egress_ecmp_rh_shared_copy(int unit, int old_ecmp_group, 775 int new_ecmp_group); 776 777 #ifdef BCM_WARM_BOOT_SUPPORT 778 extern int bcm_opt_l3_ecmp_rh_member_sync(int unit, uint8 **scache_ptr, 779 int offset); 780 extern int bcm_opt_l3_ecmp_rh_member_recover(int unit, uint8 **scache_ptr, 781 int ecmp_max_paths, int offset); 782 #endif /* BCM_WARM_BOOT_SUPPORT */ 783 784 #ifndef BCM_SW_STATE_DUMP_DISABLE 785 extern void bcm_opt_ecmp_rh_sw_dump(int unit); 786 #endif /* BCM_SW_STATE_DUMP_DISABLE */ 787 788 #endif /* INCLUDE_L3 */ 789 790 extern bcm_error_t 791 _bcm_th_port_speed_supported(int unit, bcm_port_t port, int speed); 792 extern int bcm_th_phy_lb_check(int unit, bcm_port_t port, int loopback); 793 extern int bcm_th_phy_lb_set(int unit); 794 795 /* Cosq */ 796 extern int _bcm_th_cosq_port_resolve(int unit, bcm_gport_t gport, 797 bcm_module_t *modid, bcm_port_t *port, 798 bcm_trunk_t *trunk_id, int *id, int *qnum); 799 extern int bcm_th_cosq_gport_get(int unit, bcm_gport_t gport, bcm_gport_t *port, 800 int *numq, uint32 *flags); 801 extern int bcm_th_cosq_port_bandwidth_set(int unit, bcm_port_t port, 802 bcm_cos_queue_t cosq, 803 uint32 min_quantum, uint32 max_quantum, 804 uint32 burst_quantum, uint32 flags); 805 extern int bcm_th_cosq_port_bandwidth_get(int unit, bcm_port_t port, 806 bcm_cos_queue_t cosq, 807 uint32 *min_quantum, 808 uint32 *max_quantum, 809 uint32 *burst_quantum, 810 uint32 *flags); 811 812 extern int bcm_th_cosq_gport_bandwidth_burst_set(int unit, bcm_gport_t gport, 813 bcm_cos_queue_t cosq, 814 uint32 kbits_burst_min, 815 uint32 kbits_burst_max); 816 extern int bcm_th_cosq_gport_bandwidth_burst_get(int unit, bcm_gport_t gport, 817 bcm_cos_queue_t cosq, 818 uint32 *kbits_burst_min, 819 uint32 *kbits_burst_max); 820 821 extern int bcm_th_cosq_gport_sched_get(int unit, bcm_gport_t gport, 822 bcm_cos_queue_t cosq, int *mode, 823 int *weight); 824 extern int bcm_th_cosq_gport_sched_set(int unit, bcm_gport_t gport, 825 bcm_cos_queue_t cosq, int mode, 826 int weight); 827 extern int bcm_th_cosq_sched_weight_max_get(int unit, int mode, 828 int *weight_max); 829 830 extern int bcm_th_cosq_gport_traverse(int unit, bcm_cosq_gport_traverse_cb cb, 831 void *user_data); 832 833 extern int bcm_th_cosq_gport_traverse_by_port(int unit, bcm_gport_t port, 834 bcm_cosq_gport_traverse_cb cb, 835 void *user_data); 836 extern int bcm_th_cosq_gport_bandwidth_set(int unit, bcm_gport_t gport, 837 bcm_cos_queue_t cosq, 838 uint32 kbits_sec_min, 839 uint32 kbits_sec_max, 840 uint32 flags); 841 extern int bcm_th_cosq_gport_bandwidth_get(int unit, bcm_gport_t gport, 842 bcm_cos_queue_t cosq, 843 uint32 *kbits_sec_min, 844 uint32 *kbits_sec_max, 845 uint32 *flags); 846 extern int bcm_th_cosq_port_burst_set(int unit, bcm_port_t port, 847 bcm_cos_queue_t cosq, int burst); 848 extern int bcm_th_cosq_port_burst_get(int unit, bcm_port_t port, 849 bcm_cos_queue_t cosq, 850 int *burst); 851 852 extern int bcm_th_port_rate_egress_set(int unit, bcm_port_t port, 853 uint32 bandwidth, uint32 burst, 854 uint32 mode); 855 extern int bcm_th_port_rate_egress_get(int unit, bcm_port_t port, 856 uint32 *bandwidth, uint32 *burst, 857 uint32 *mode); 858 extern int bcm_th_port_drain_cells(int unit, int port); 859 860 extern int bcm_th_cosq_port_pps_set(int unit, bcm_port_t port, 861 bcm_cos_queue_t cosq, int pps); 862 extern int bcm_th_cosq_port_pps_get(int unit, bcm_port_t port, 863 bcm_cos_queue_t cosq, int *pps); 864 865 extern int bcm_th_cosq_discard_set(int unit, uint32 flags); 866 extern int bcm_th_cosq_discard_get(int unit, uint32 *flags); 867 868 extern int bcm_th_cosq_discard_port_get(int unit, bcm_port_t port, 869 bcm_cos_queue_t cosq, uint32 color, 870 int *drop_start, 871 int *drop_slope, int *average_time); 872 extern int bcm_th_cosq_discard_port_set(int unit, bcm_port_t port, 873 bcm_cos_queue_t cosq, 874 uint32 color, int drop_start, 875 int drop_slope, 876 int average_time); 877 878 extern int bcm_th_cosq_gport_discard_set(int unit, bcm_gport_t gport, 879 bcm_cos_queue_t cosq, 880 bcm_cosq_buffer_id_t buffer, 881 bcm_cosq_gport_discard_t *discard); 882 extern int bcm_th_cosq_gport_discard_get(int unit, bcm_gport_t gport, 883 bcm_cos_queue_t cosq, 884 bcm_cosq_buffer_id_t buffer, 885 bcm_cosq_gport_discard_t *discard); 886 887 extern int bcm_th_cosq_wred_resolution_entry_create(int unit, int *index); 888 extern int bcm_th_cosq_wred_resolution_entry_destroy(int unit, int index); 889 extern int bcm_th_cosq_wred_resolution_set(int unit, int index, 890 bcm_cosq_discard_rule_t *rule); 891 extern int bcm_th_cosq_wred_resolution_get(int unit, int index, int max, 892 bcm_cosq_discard_rule_t *rule, 893 int *count); 894 895 extern int bcm_th_cosq_port_pfc_op(int unit, bcm_port_t port, 896 bcm_switch_control_t sctype, 897 _bcm_cosq_op_t op, 898 bcm_gport_t *gport, 899 int gport_count); 900 extern int bcm_th_cosq_port_pfc_get(int unit, bcm_port_t port, 901 bcm_switch_control_t sctype, 902 bcm_gport_t *gport, 903 int gport_count, 904 int *actual_gport_count); 905 extern int 906 bcm_th_pfc_deadlock_ignore_pfc_xoff_gen(int unit, int priority, 907 bcm_port_t port, uint32 *rval32); 908 extern int 909 bcm_th_cosq_pfc_class_mapping_set(int unit, bcm_gport_t port, 910 int array_count, 911 bcm_cosq_pfc_class_mapping_t *mapping_array); 912 913 extern int 914 bcm_th_cosq_pfc_class_mapping_get(int unit, bcm_gport_t port, 915 int array_max, 916 bcm_cosq_pfc_class_mapping_t *mapping_array, 917 int *array_count); 918 extern int 919 bcm_th_cosq_safc_class_mapping_set(int unit, bcm_gport_t port, 920 int array_count, 921 bcm_cosq_safc_class_mapping_t *mapping_array); 922 923 extern int 924 bcm_th_cosq_safc_class_mapping_get(int unit, bcm_gport_t port, 925 int array_max, 926 bcm_cosq_safc_class_mapping_t *mapping_array, 927 int *array_count); 928 929 extern int 930 bcm_th_port_priority_group_mapping_set(int unit, bcm_gport_t gport, 931 int prio, int priority_group); 932 extern int 933 bcm_th_port_priority_group_mapping_get(int unit, bcm_gport_t gport, 934 int prio, int *priority_group); 935 extern int 936 bcm_th_port_priority_group_config_set(int unit, bcm_gport_t gport, 937 int priority_group, bcm_port_priority_group_config_t *prigrp_config); 938 extern int 939 bcm_th_port_priority_group_config_get(int unit, bcm_gport_t gport, 940 int priority_group, bcm_port_priority_group_config_t *prigrp_config); 941 942 extern int bcm_th_cosq_port_sched_set(int unit, bcm_pbmp_t pbm, 943 int mode, const int *weights, int delay); 944 extern int bcm_th_cosq_port_sched_get(int unit, bcm_pbmp_t pbm, 945 int *mode, int *weights, int *delay); 946 947 extern int bcm_th_cosq_gport_add(int unit, bcm_gport_t port, int numq, 948 uint32 flags, bcm_gport_t *gport); 949 extern int bcm_th_cosq_gport_delete(int unit, bcm_gport_t gport); 950 extern int bcm_th_cosq_gport_attach(int unit, bcm_gport_t input_gport, 951 bcm_gport_t parent_gport, 952 bcm_cos_queue_t cosq); 953 extern int bcm_th_rx_queue_channel_set_test(int unit, 954 bcm_cos_queue_t queue_id, 955 bcm_rx_chan_t chan_id); 956 extern int bcm_th_cosq_gport_detach(int unit, bcm_gport_t input_gport, 957 bcm_gport_t parent_gport, 958 bcm_cos_queue_t cosq); 959 extern int 960 bcm_th_cosq_gport_attach_get(int unit, bcm_gport_t sched_gport, 961 bcm_gport_t *input_gport, bcm_cos_queue_t *cosq); 962 extern int 963 bcm_th_cosq_gport_child_get(int unit, bcm_gport_t in_gport, 964 bcm_cos_queue_t cosq, bcm_gport_t *out_gport); 965 966 extern int bcm_th_cosq_mapping_set(int unit, bcm_port_t gport, 967 bcm_cos_t priority, bcm_cos_queue_t cosq); 968 extern int bcm_th_cosq_mapping_get(int unit, bcm_port_t gport, 969 bcm_cos_t priority, bcm_cos_queue_t *cosq); 970 971 extern int bcm_th_cosq_control_set(int unit, bcm_gport_t gport, 972 bcm_cos_queue_t cosq, 973 bcm_cosq_buffer_id_t buffer, 974 bcm_cosq_control_t type, int arg); 975 extern int bcm_th_cosq_control_get(int unit, bcm_gport_t gport, 976 bcm_cos_queue_t cosq, 977 bcm_cosq_buffer_id_t buffer, 978 bcm_cosq_control_t type, int *arg); 979 980 extern int bcm_th_cosq_stat_set(int unit, bcm_gport_t port, 981 bcm_cos_queue_t cosq, 982 bcm_cosq_stat_t stat, uint64 value); 983 extern int bcm_th_cosq_stat_get(int unit, bcm_port_t port, 984 bcm_cos_queue_t cosq, 985 bcm_cosq_stat_t stat, int sync_mode, 986 uint64 *value); 987 988 extern int bcm_th_cosq_gport_mapping_set(int unit, bcm_port_t ing_port, 989 bcm_cos_t int_pri, uint32 flags, 990 bcm_gport_t gport, 991 bcm_cos_queue_t cosq); 992 extern int bcm_th_cosq_gport_mapping_get(int unit, bcm_port_t ing_port, 993 bcm_cos_t int_pri, uint32 flags, 994 bcm_gport_t *gport, 995 bcm_cos_queue_t *cosq); 996 extern int bcm_th_cosq_priority_mapping_get_all(int unit, bcm_gport_t gport, 997 int index, 998 bcm_cosq_priority_mapping_t type, 999 int pri_max, int *pri_array, 1000 int *pri_count); 1001 1002 extern int bcm_th_cosq_config_set(int unit, int numq); 1003 extern int bcm_th_cosq_config_get(int unit, int *numq); 1004 extern int bcm_th_cosq_buffer_id_multi_get(int unit, bcm_gport_t gport, 1005 bcm_cos_queue_t cosq, bcm_cosq_dir_t direction, 1006 int array_max, bcm_cosq_buffer_id_t *buf_id_array, 1007 int *array_count); 1008 extern int 1009 bcm_th_cosq_field_classifier_get( 1010 int unit, int classifier_id, bcm_cosq_classifier_t *classifier); 1011 1012 extern int 1013 bcm_th_cosq_field_classifier_id_create( 1014 int unit, bcm_cosq_classifier_t *classifier, int *classifier_id); 1015 1016 extern int 1017 bcm_th_cosq_field_classifier_id_destroy( 1018 int unit, int classifier_id); 1019 1020 extern int 1021 bcm_th_cosq_field_classifier_map_set( 1022 int unit, int classifier_id, int count, 1023 bcm_cos_t *priority_array, bcm_cos_queue_t *cosq_array); 1024 1025 extern int 1026 bcm_th_cosq_field_classifier_map_get( 1027 int unit, int classifier_id, 1028 int array_max, bcm_cos_t *priority_array, 1029 bcm_cos_queue_t *cosq_array, int *array_count); 1030 1031 extern int 1032 bcm_th_cosq_field_classifier_map_clear( 1033 int unit, int classifier_id); 1034 1035 extern int bcm_th_cosq_init(int unit); 1036 extern int bcm_th_cosq_detach(int unit, int software_state_only); 1037 extern int _bcm_th_pfc_deadlock_init(int unit); 1038 extern int bcm_th_pfc_deadlock_recovery_start(int unit, 1039 bcm_port_t port, int pri); 1040 extern int bcm_th_pfc_deadlock_recovery_exit(int unit, 1041 bcm_port_t port, int pri); 1042 1043 extern int 1044 bcm_th_cosq_bst_profile_set(int unit, 1045 bcm_gport_t port, 1046 bcm_cos_queue_t cosq, 1047 bcm_bst_stat_id_t bid, 1048 bcm_cosq_bst_profile_t *profile); 1049 1050 extern int 1051 bcm_th_cosq_bst_profile_get(int unit, 1052 bcm_gport_t port, 1053 bcm_cos_queue_t cosq, 1054 bcm_bst_stat_id_t bid, 1055 bcm_cosq_bst_profile_t *profile); 1056 1057 extern int 1058 bcm_th_cosq_bst_multi_profile_set(int unit, 1059 bcm_gport_t gport, 1060 bcm_cos_queue_t cosq, 1061 bcm_bst_stat_id_t bid, 1062 int array_size, 1063 bcm_cosq_bst_profile_t *profile_array); 1064 1065 extern int 1066 bcm_th_cosq_bst_multi_profile_get(int unit, 1067 bcm_gport_t gport, 1068 bcm_cos_queue_t cosq, 1069 bcm_bst_stat_id_t bid, 1070 int array_size, 1071 bcm_cosq_bst_profile_t *profile_array, 1072 int *count); 1073 1074 extern int 1075 bcm_th_cosq_bst_stat_get(int unit, 1076 bcm_gport_t port, 1077 bcm_cos_queue_t cosq, 1078 bcm_cosq_buffer_id_t buffer, 1079 bcm_bst_stat_id_t bid, 1080 uint32 options, 1081 uint64 *pvalue); 1082 1083 extern int 1084 bcm_th_cosq_bst_stat_multi_get(int unit, 1085 bcm_gport_t port, 1086 bcm_cos_queue_t cosq, 1087 uint32 options, 1088 int max_values, 1089 bcm_bst_stat_id_t *id_list, 1090 uint64 *pvalues); 1091 1092 extern int 1093 bcm_th_cosq_bst_stat_clear(int unit, bcm_gport_t port, 1094 bcm_cos_queue_t cosq, bcm_cosq_buffer_id_t buffer, 1095 bcm_bst_stat_id_t bid); 1096 1097 extern int bcm_th_cosq_bst_stat_sync(int unit, bcm_bst_stat_id_t bid); 1098 1099 extern int 1100 _bcm_th_bst_hdrm_stat_clear(int unit, 1101 bcm_gport_t gport, 1102 bcm_cos_queue_t cosq, 1103 bcm_cosq_buffer_id_t buffer); 1104 1105 extern int 1106 _bcm_th_cosq_bst_hdrm_stat_get(int unit, 1107 bcm_gport_t gport, 1108 bcm_cos_queue_t cosq, 1109 bcm_cosq_buffer_id_t buffer, 1110 uint32 options, 1111 uint64 *pvalue); 1112 1113 extern int 1114 _bcm_th_port_enqueue_set(int unit, bcm_port_t gport, int enable); 1115 1116 extern int 1117 _bcm_th_port_enqueue_get(int unit, bcm_port_t gport, int *enable); 1118 1119 extern int bcm_th_cosq_cpu_cosq_enable_set(int unit, bcm_cos_queue_t cosq, 1120 int enable); 1121 extern int bcm_th_cosq_cpu_cosq_enable_get(int unit, bcm_cos_queue_t cosq, 1122 int *enable); 1123 extern void bcm_th_cosq_sw_dump(int unit); 1124 1125 #ifdef BCM_WARM_BOOT_SUPPORT 1126 extern int bcm_th_cosq_sync(int unit); 1127 extern int bcm_th_cosq_reinit(int unit); 1128 #endif /* BCM_WARM_BOOT_SUPPORT */ 1129 1130 typedef enum { 1131 _BCM_TH_COSQ_INDEX_STYLE_WRED_QUEUE, 1132 _BCM_TH_COSQ_INDEX_STYLE_WRED_PORT, 1133 _BCM_TH_COSQ_INDEX_STYLE_WRED_DEVICE, 1134 _BCM_TH_COSQ_INDEX_STYLE_UCAST_QUEUE, 1135 _BCM_TH_COSQ_INDEX_STYLE_MCAST_QUEUE, 1136 _BCM_TH_COSQ_INDEX_STYLE_EGR_POOL, 1137 _BCM_TH_COSQ_INDEX_STYLE_COS, 1138 _BCM_TH_COSQ_INDEX_STYLE_COUNT 1139 } _bcm_th_cosq_index_style_t; 1140 1141 extern int _bcm_th_cosq_index_resolve(int unit, bcm_port_t port, 1142 bcm_cos_queue_t cosq, _bcm_th_cosq_index_style_t style, 1143 bcm_port_t *local_port, int *index, int *count); 1144 1145 extern int _bcm_th_cosq_port_cos_resolve(int unit, bcm_port_t port, bcm_cos_t cos, 1146 _bcm_th_cosq_index_style_t style, 1147 bcm_gport_t *gport); 1148 extern int _bcm_th_cosq_inv_mapping_get(int unit, bcm_gport_t gport, 1149 bcm_cos_queue_t cosq, 1150 uint32 flags, bcm_port_t *ing_port, 1151 bcm_cos_t *priority); 1152 1153 extern int bcm_th_cosq_port_attach(int unit, bcm_port_t port); 1154 extern int bcm_th_cosq_port_detach(int unit, bcm_port_t port); 1155 1156 /* OOB FC Tx side global configuration API */ 1157 extern int bcm_th_oob_fc_tx_config_set( 1158 int unit, 1159 bcm_oob_fc_tx_config_t *config); 1160 1161 /* OOB FC Tx side global configuration get API */ 1162 extern int bcm_th_oob_fc_tx_config_get( 1163 int unit, 1164 bcm_oob_fc_tx_config_t *config); 1165 1166 extern int 1167 _bcm_th_oob_fc_tx_port_control_set(int unit, bcm_port_t port, 1168 int status, int dir); 1169 extern int 1170 _bcm_th_oob_fc_tx_port_control_get(int unit, bcm_port_t port, 1171 int *status, int dir); 1172 1173 /* OOB FC Tx side global info get API */ 1174 extern int bcm_th_oob_fc_tx_info_get( 1175 int unit, 1176 bcm_oob_fc_tx_info_t *info); 1177 1178 /* 1179 * OOB FC Rx Interface side Traffic Class to Priority Mapping Multi Set 1180 * API 1181 */ 1182 extern int bcm_th_oob_fc_rx_port_tc_mapping_multi_set( 1183 int unit, 1184 bcm_oob_fc_rx_intf_id_t intf_id, 1185 bcm_gport_t gport, 1186 int array_count, 1187 uint32 *tc, 1188 uint32 *pri_bmp); 1189 1190 /* 1191 * OOB FC Rx Interface side Traffic Class to Priority Mapping Multi Get 1192 * API 1193 */ 1194 extern int bcm_th_oob_fc_rx_port_tc_mapping_multi_get( 1195 int unit, 1196 bcm_oob_fc_rx_intf_id_t intf_id, 1197 bcm_gport_t gport, 1198 int array_max, 1199 uint32 *tc, 1200 uint32 *pri_bmp, 1201 int *array_count); 1202 1203 /* OOB FC Rx Interface side Traffic Class to Priority Mapping set API */ 1204 extern int bcm_th_oob_fc_rx_port_tc_mapping_set( 1205 int unit, 1206 bcm_oob_fc_rx_intf_id_t intf_id, 1207 bcm_gport_t gport, 1208 uint32 tc, 1209 uint32 pri_bmp); 1210 1211 /* OOB FC Rx Interface side Traffic Class to Priority Mapping get API */ 1212 extern int bcm_th_oob_fc_rx_port_tc_mapping_get( 1213 int unit, 1214 bcm_oob_fc_rx_intf_id_t intf_id, 1215 bcm_gport_t gport, 1216 uint32 tc, 1217 uint32 *pri_bmp); 1218 1219 /* OOB FC Rx Interface side Configuration set API */ 1220 extern int bcm_th_oob_fc_rx_config_set( 1221 int unit, 1222 bcm_oob_fc_rx_intf_id_t intf_id, 1223 bcm_oob_fc_rx_config_t *config, 1224 int array_count, 1225 bcm_gport_t *gport_array); 1226 1227 /* OOB FC Rx Interface side Configuration get API */ 1228 extern int bcm_th_oob_fc_rx_config_get( 1229 int unit, 1230 bcm_oob_fc_rx_intf_id_t intf_id, 1231 bcm_oob_fc_rx_config_t *config, 1232 int array_max, 1233 bcm_gport_t *gport_array, 1234 int *array_count); 1235 1236 /* OOB FC Rx Interface side Channel offset value for a port */ 1237 extern int bcm_th_oob_fc_rx_port_offset_get( 1238 int unit, 1239 bcm_oob_fc_rx_intf_id_t intf_id, 1240 bcm_gport_t gport, 1241 uint32 *offset); 1242 1243 /* OOB STATS global configuration set API */ 1244 extern int bcm_th_oob_stats_config_set( 1245 int unit, 1246 bcm_oob_stats_config_t *config); 1247 1248 /* OOB STATS global configuration get API */ 1249 extern int bcm_th_oob_stats_config_get( 1250 int unit, 1251 bcm_oob_stats_config_t *config); 1252 1253 1254 /* OOB STATS configuration of service pool list multi set API */ 1255 extern int bcm_th_oob_stats_pool_mapping_multi_set( 1256 int unit, 1257 int array_count, 1258 int *offset_array, 1259 uint8 *dir_array, 1260 bcm_service_pool_id_t *pool_array); 1261 1262 /* OOB STATS configuration of service pool list multi get API */ 1263 extern int bcm_th_oob_stats_pool_mapping_multi_get( 1264 int unit, 1265 int array_max, 1266 int *offset_array, 1267 uint8 *dir_array, 1268 bcm_service_pool_id_t *pool_array, 1269 int *array_count); 1270 1271 /* OOB STATS configuration of service pool list set API */ 1272 extern int bcm_th_oob_stats_pool_mapping_set( 1273 int unit, 1274 int offset, 1275 uint8 dir, 1276 bcm_service_pool_id_t pool); 1277 1278 /* OOB STATS configuration of service pool list get API */ 1279 extern int bcm_th_oob_stats_pool_mapping_get( 1280 int unit, 1281 int offset, 1282 uint8 *dir, 1283 bcm_service_pool_id_t *pool); 1284 1285 /* OOB STATS configuration of Queue list set API */ 1286 extern int bcm_th_oob_stats_queue_mapping_multi_set( 1287 int unit, 1288 int array_count, 1289 int *offset_array, 1290 bcm_gport_t *gport_array); 1291 1292 /* OOB STATS configuration of Queue list get API */ 1293 extern int bcm_th_oob_stats_queue_mapping_multi_get( 1294 int unit, 1295 int array_max, 1296 int *offset_array, 1297 bcm_gport_t *gport_array, 1298 int *array_count); 1299 1300 /* OOB STATS configuration of Queue list set API */ 1301 extern int bcm_th_oob_stats_queue_mapping_set( 1302 int unit, 1303 int offset, 1304 bcm_gport_t gport); 1305 1306 /* OOB STATS configuration of Queue list get API */ 1307 extern int bcm_th_oob_stats_queue_mapping_get( 1308 int unit, 1309 int offset, 1310 bcm_gport_t *gport); 1311 1312 /* QoS */ 1313 extern int bcm_th_qos_init(int unit); 1314 extern int bcm_th_qos_detach(int unit); 1315 extern int bcm_th_qos_map_create(int unit, uint32 flags, int *map_id); 1316 extern int bcm_th_qos_map_destroy(int unit, int map_id); 1317 extern int bcm_th_qos_map_add(int unit, 1318 uint32 flags, 1319 bcm_qos_map_t *map, 1320 int map_id); 1321 extern int bcm_th_qos_map_delete(int unit, 1322 uint32 flags, 1323 bcm_qos_map_t *map, 1324 int map_id); 1325 extern int bcm_th_qos_port_map_set(int unit, 1326 bcm_gport_t port, 1327 int ing_map, 1328 int egr_map); 1329 extern int bcm_th_qos_map_multi_get(int unit, 1330 uint32 flags, 1331 int map_id, 1332 int array_size, 1333 bcm_qos_map_t *array, 1334 int *array_count); 1335 extern int _bcm_th_qos_multi_get(int unit, 1336 int array_size, 1337 int *map_ids_array, 1338 int *flags_array, 1339 int *array_count); 1340 extern int bcm_th_qos_port_map_type_get(int unit, bcm_gport_t port, 1341 uint32 flags, int *map_id); 1342 #ifdef BCM_WARM_BOOT_SUPPORT_SW_DUMP 1343 extern void _bcm_th_qos_sw_dump(int unit); 1344 #endif /* BCM_WARM_BOOT_SUPPORT_SW_DUMP */ 1345 #ifdef BCM_WARM_BOOT_SUPPORT 1346 extern int _bcm_th_qos_reinit_scache_len_get(int unit, uint32 *scache_len); 1347 extern int _bcm_th_qos_reinit_from_hw_state(int unit, soc_mem_t mem, 1348 soc_field_t field, uint8 map_type, 1349 SHR_BITDCL *hw_idx_bmp, int hw_idx_bmp_len); 1350 extern int _bcm_th_qos_unsynchronized_reinit(int unit); 1351 extern int _bcm_th_qos_extended_reinit(int unit, uint8 **scache_ptr); 1352 extern int _bcm_th_qos_reinit_hw_profiles_update(int unit); 1353 extern int _bcm_th_qos_sync(int unit, uint8 **scache_ptr); 1354 #endif /* BCM_WARM_BOOT_SUPPORT */ 1355 extern int _bcm_field_th_qualify_LoopbackType(int unit, 1356 bcm_field_LoopbackType_t loopback_type, 1357 uint32 *tcam_data, 1358 uint32 *tcam_mask); 1359 extern int _bcm_field_th_qualify_LoopbackType_get(uint8 tcam_data, 1360 uint8 tcam_mask, 1361 bcm_field_LoopbackType_t *loopback_type); 1362 extern int _bcm_field_th_qual_part_offset_get(int unit, _field_entry_t *f_ent, 1363 int entry_part, int qid, 1364 _bcm_field_qual_offset_t *offset); 1365 1366 extern int _field_th_stage_entry_enable_set(int unit, _field_entry_t *f_ent, 1367 int enable_flag); 1368 extern int _field_th_group_qual_info_get(int unit, 1369 _field_stage_t *stage_fc, 1370 _field_group_t *fg, 1371 bcm_field_qset_t *qset_req, 1372 bcmi_keygen_qual_info_t **qual_info_arr, 1373 uint16 *qual_info_count); 1374 /* 1375 * 8 Priority Groups supported. 1376 */ 1377 #define TH_PRIOROTY_GROUP_ID_MIN 0 1378 #define TH_PRIOROTY_GROUP_ID_MAX 7 1379 /* 1380 * Inpur priority range. 1381 * PFC : 0-7 1382 * SAFC : 0-15 1383 */ 1384 #define TH_PFC_INPUT_PRIORITY_MIN 0 1385 #define TH_PFC_INPUT_PRIORITY_MAX 7 1386 #define TH_SAFC_INPUT_PRIORITY_MIN TH_PFC_INPUT_PRIORITY_MIN 1387 #define TH_SAFC_INPUT_PRIORITY_MAX 15 1388 1389 1390 #if defined(INCLUDE_FLOWTRACKER) 1391 /* Flowtracker module APIs */ 1392 extern int _bcm_th_ft_init(int unit); 1393 1394 extern int _bcm_th_ft_detach(int unit); 1395 1396 extern int 1397 _bcm_th_ft_export_template_create( 1398 int unit, 1399 uint32 options, 1400 bcm_flowtracker_export_template_t *id, 1401 uint16 set_id, 1402 int num_export_elements, 1403 bcm_flowtracker_export_element_info_t *list_of_export_elements); 1404 1405 extern int 1406 _bcm_th_ft_export_template_get( 1407 int unit, 1408 bcm_flowtracker_export_template_t id, 1409 uint16 *set_id, 1410 int max_size, 1411 bcm_flowtracker_export_element_info_t *list_of_export_elements, 1412 int *list_size); 1413 1414 extern int 1415 _bcm_th_ft_export_template_destroy(int unit, 1416 bcm_flowtracker_export_template_t id); 1417 1418 extern int 1419 _bcm_th_ft_group_clear(int unit, 1420 bcm_flowtracker_group_t id, 1421 uint32 flags); 1422 1423 extern int 1424 _bcm_th_ft_collector_create(int unit, 1425 uint32 options, 1426 bcm_flowtracker_collector_t *id, 1427 bcm_flowtracker_collector_info_t *collector_info); 1428 1429 extern int 1430 _bcm_th_ft_collector_get(int unit, 1431 bcm_flowtracker_collector_t id, 1432 bcm_flowtracker_collector_info_t *collector_info); 1433 1434 extern int 1435 _bcm_th_ft_collector_get_all( 1436 int unit, 1437 int max_size, 1438 bcm_flowtracker_collector_t *collector_list, 1439 int *list_size); 1440 1441 extern int _bcm_th_ft_collector_destroy(int unit, 1442 bcm_flowtracker_collector_t id); 1443 1444 extern int _bcm_th_ft_group_collector_attach( 1445 int unit, 1446 bcm_flowtracker_group_t flow_group_id, 1447 bcm_collector_t collector_id, 1448 int export_profile_id, 1449 bcm_flowtracker_export_template_t template_id); 1450 1451 extern int _bcm_th_ft_group_collector_detach( 1452 int unit, 1453 bcm_flowtracker_group_t flow_group_id, 1454 bcm_collector_t collector_id, 1455 int export_profile_id, 1456 bcm_flowtracker_export_template_t template_id); 1457 1458 extern int _bcm_th_ft_group_collector_attach_get_all( 1459 int unit, 1460 bcm_flowtracker_group_t flow_group_id, 1461 int max_list_size, 1462 bcm_flowtracker_collector_t *list_of_collectors, 1463 int *list_of_export_profile_ids, 1464 bcm_flowtracker_export_template_t *list_of_templates, 1465 int *list_size); 1466 1467 extern int 1468 _bcm_th_ft_flow_group_create(int unit, 1469 uint32 options, 1470 bcm_flowtracker_group_t *id, 1471 bcm_flowtracker_group_info_t *flow_group_info); 1472 1473 extern int 1474 _bcm_th_ft_flow_group_get(int unit, 1475 bcm_flowtracker_group_t id, 1476 bcm_flowtracker_group_info_t *flow_group_info); 1477 1478 extern int 1479 _bcm_th_ft_flow_group_get_all(int unit, 1480 int max_size, 1481 bcm_flowtracker_group_t *flow_group_list, 1482 int *list_size); 1483 1484 extern int _bcm_th_ft_flow_group_flow_limit_set(int unit, 1485 bcm_flowtracker_group_t id, 1486 uint32 flow_limit); 1487 1488 extern int _bcm_th_ft_flow_group_flow_limit_get(int unit, 1489 bcm_flowtracker_group_t id, 1490 uint32 *flow_limit); 1491 1492 extern int _bcm_th_ft_flow_group_stat_modeid_set(int unit, 1493 bcm_flowtracker_group_t id, 1494 uint32 stat_modeid); 1495 1496 extern int _bcm_th_ft_flow_group_stat_modeid_get(int unit, 1497 bcm_flowtracker_group_t id, 1498 uint32 *stat_modeid); 1499 1500 extern int _bcm_th_ft_flow_group_age_timer_set(int unit, 1501 bcm_flowtracker_group_t id, 1502 uint32 aging_interval_ms); 1503 1504 extern int _bcm_th_ft_flow_group_age_timer_get(int unit, 1505 bcm_flowtracker_group_t id, 1506 uint32 *aging_interval_ms); 1507 1508 extern int 1509 _bcm_th_ft_flow_group_export_trigger_set( 1510 int unit, 1511 bcm_flowtracker_group_t id, 1512 bcm_flowtracker_export_trigger_info_t *export_trigger_info); 1513 1514 extern int 1515 _bcm_th_ft_flow_group_export_trigger_get( 1516 int unit, 1517 bcm_flowtracker_group_t id, 1518 bcm_flowtracker_export_trigger_info_t *export_trigger_info); 1519 1520 extern int _bcm_th_ft_flow_group_flow_count_get(int unit, 1521 bcm_flowtracker_group_t id, 1522 uint32 *flow_count); 1523 1524 extern int _bcm_th_ft_flow_group_destroy(int unit, 1525 bcm_flowtracker_group_t id); 1526 1527 extern int 1528 _bcm_th_ft_flow_group_collector_add(int unit, 1529 bcm_flowtracker_group_t flow_group_id, 1530 bcm_flowtracker_collector_t collector_id, 1531 bcm_flowtracker_export_template_t template_id); 1532 1533 extern int 1534 _bcm_th_ft_flow_group_collector_delete(int unit, 1535 bcm_flowtracker_group_t flow_group_id, 1536 bcm_flowtracker_collector_t collector_id, 1537 bcm_flowtracker_export_template_t template_id); 1538 1539 extern int _bcm_th_ft_flow_group_collector_get_all( 1540 int unit, 1541 bcm_flowtracker_group_t flow_group_id, 1542 int max_list_size, 1543 bcm_flowtracker_collector_t *list_of_collectors, 1544 bcm_flowtracker_export_template_t *list_of_templates, 1545 int *list_size); 1546 1547 extern int _bcm_th_ft_group_data_get( 1548 int unit, 1549 bcm_flowtracker_group_t flow_group_id, 1550 bcm_flowtracker_flow_key_t *flow_key, 1551 bcm_flowtracker_flow_data_t *flow_data); 1552 1553 extern int 1554 _bcm_th_ft_group_actions_set( 1555 int unit, 1556 bcm_flowtracker_group_t flow_group_id, 1557 uint32 flags, 1558 int num_actions, 1559 bcm_flowtracker_group_action_info_t *action_list); 1560 1561 extern int 1562 _bcm_th_ft_group_actions_get( 1563 int unit, 1564 bcm_flowtracker_group_t flow_group_id, 1565 uint32 flags, 1566 int max_actions, 1567 bcm_flowtracker_group_action_info_t *action_list, 1568 int *num_actions); 1569 1570 extern int 1571 _bcm_th_ft_template_transmit_config_set( 1572 int unit, 1573 bcm_flowtracker_export_template_t template_id, 1574 bcm_flowtracker_collector_t collector_id, 1575 bcm_flowtracker_template_transmit_config_t *config); 1576 extern int 1577 _bcm_th_ft_template_transmit_config_get( 1578 int unit, 1579 bcm_flowtracker_export_template_t template_id, 1580 bcm_flowtracker_collector_t collector_id, 1581 bcm_flowtracker_template_transmit_config_t *config); 1582 1583 extern int 1584 _bcm_th_ft_elephant_profile_create( 1585 int unit, 1586 uint32 options, 1587 bcm_flowtracker_elephant_profile_info_t *profile, 1588 bcm_flowtracker_elephant_profile_t *profile_id); 1589 1590 extern int 1591 _bcm_th_ft_elephant_profile_destroy( 1592 int unit, 1593 bcm_flowtracker_elephant_profile_t profile_id); 1594 1595 extern int 1596 _bcm_th_ft_elephant_profile_get( 1597 int unit, 1598 bcm_flowtracker_elephant_profile_t profile_id, 1599 bcm_flowtracker_elephant_profile_info_t *profile); 1600 1601 extern int 1602 _bcm_th_ft_elephant_profile_get_all( 1603 int unit, 1604 int max, 1605 bcm_flowtracker_elephant_profile_t *profile_list, 1606 int *count); 1607 1608 extern int 1609 _bcm_th_ft_group_elephant_profile_attach( 1610 int unit, 1611 bcm_flowtracker_group_t flow_group_id, 1612 bcm_flowtracker_elephant_profile_t profile_id); 1613 1614 extern int 1615 _bcm_th_ft_group_elephant_profile_attach_get( 1616 int unit, 1617 bcm_flowtracker_group_t flow_group_id, 1618 bcm_flowtracker_elephant_profile_t *profile_id); 1619 1620 extern int 1621 _bcm_th_ft_group_elephant_profile_detach(int unit, 1622 bcm_flowtracker_group_t flow_group_id); 1623 1624 extern int _bcm_th_ft_sync(int unit); 1625 1626 extern int 1627 _bcm_th_ft_flow_group_tracking_params_set( 1628 int unit, 1629 bcm_flowtracker_group_t id, 1630 int num_tracking_params, 1631 bcm_flowtracker_tracking_param_info_t *list_of_tracking_params); 1632 1633 extern int 1634 _bcm_th_ft_flow_group_tracking_params_get( 1635 int unit, 1636 bcm_flowtracker_group_t id, 1637 int max_size, 1638 int *list_size, 1639 bcm_flowtracker_tracking_param_info_t *list_of_tracking_params); 1640 1641 #endif /* INCLUDE_FLOWTRACKER */ 1642 1643 /* Congestion Monitoring App Microburst detection APIs */ 1644 extern int bcm_th_cosq_burst_monitor_init(int unit); 1645 extern int bcm_th_cosq_burst_monitor_detach(int unit); 1646 extern int bcm_th_cosq_burst_monitor_flow_view_config_set(int unit, 1647 uint32 options, bcm_cosq_burst_monitor_flow_view_info_t *flow_view); 1648 extern int bcm_th_cosq_burst_monitor_flow_view_config_get(int unit, 1649 bcm_cosq_burst_monitor_flow_view_info_t *flow_view); 1650 extern int bcm_th_cosq_burst_monitor_flow_view_data_clear(int unit); 1651 extern int bcm_th_cosq_burst_monitor_flow_view_data_get(int unit, 1652 uint32 usr_mem_size, uint8 *usr_mem_add); 1653 extern int bcm_th_cosq_burst_monitor_get_current_time(int unit, uint64 *time_usecs); 1654 extern int bcm_th_cosq_burst_monitor_view_summary_get(int unit, uint32 mem_size, 1655 uint8 *mem_addr, int max_num_views, int *num_views); 1656 extern int bcm_th_cosq_burst_monitor_flow_view_stats_get(int unit, uint32 mem_size, 1657 uint8 *mem_addr, int max_num_flows, int view_id, uint32 flags, int *num_flows); 1658 extern int bcm_th_cosq_burst_monitor_dma_config_set(int unit, 1659 uint32 host_mem_size, 1660 uint32 **host_mem_add); 1661 extern int bcm_th_cosq_burst_monitor_dma_config_get(int unit, 1662 uint32 *host_mem_size, 1663 uint32 **host_mem_add); 1664 extern int bcm_th_cosq_burst_monitor_set(int unit, int num_gports, 1665 bcm_gport_t *gport_list); 1666 extern int bcm_th_cosq_burst_monitor_get(int unit, int max_gports, 1667 bcm_gport_t *gport_list, 1668 int *num_gports); 1669 extern int bcm_th_cosq_burst_monitor_dma_config_reset(int unit, 1670 uint8 wb_flag); 1671 1672 extern int 1673 _bcm_field_th_ddrop_profile_alloc(int unit, _field_entry_t *f_ent, 1674 _field_action_t *fa); 1675 extern int 1676 _bcm_field_th_dredirect_profile_alloc(int unit, _field_entry_t *f_ent, 1677 _field_action_t *fa); 1678 1679 #if defined(BCM_CHANNELIZED_SWITCHING_SUPPORT) 1680 extern int 1681 bcmi_ipmc_chn_repl_port_attach(int unit); 1682 1683 extern int 1684 bcmi_ipmc_chn_repl_port_detach(int unit); 1685 1686 #endif 1687 1688 1689 #endif /* BCM_TOMAHAWK_SUPPORT */ 1690 1691 #endif /* !_BCM_INT_TOMAHAWK_H_ */