tomahawk.h (77341B)
1 /* 2 * 3 * This license is set out in https://raw.githubusercontent.com/Broadcom-Network-Switching-Software/OpenBCM/master/Legal/LICENSE file. 4 * 5 * Copyright 2007-2019 Broadcom Inc. All rights reserved. 6 * 7 * File: 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 extern bcm_error_t bcm_th_l3_extended_view_reinit(int unit, uint8 **scache_ptr); 711 712 extern int bcm_th_aggid_info_detach(int unit); 713 extern int bcm_th_aggid_info_init(int unit); 714 extern int bcm_th_set_port_hw_agg_map(int unit, bcm_port_t port, int aggid); 715 extern int bcm_th_port_aggid_add(int unit, bcm_port_t port, bcm_trunk_t tgid, 716 int *aggid); 717 extern int bcm_th_port_aggid_del(int unit, bcm_port_t port); 718 719 extern int bcm_th_port_trunkid_get(int unit, bcm_port_t port, int *tgid); 720 extern int bcm_th_port_last_member_check(int unit, bcm_port_t port, int *val); 721 extern int bcm_th_port_to_aggid(int unit, bcm_port_t port, int *aggid); 722 723 #ifdef BCM_WARM_BOOT_SUPPORT 724 extern int _bcm_th_ipmc_repl_l3_intf_scache_size_get(int unit, uint32 *size); 725 extern int _bcm_th_ipmc_repl_l3_intf_sync(int unit, uint8 **scache_ptr); 726 extern int _bcm_th_ipmc_repl_l3_intf_scache_recover(int unit, uint8 **scache_ptr); 727 extern int _bcm_th_ipmc_repl_reload(int unit); 728 extern int _bcm_th_ipmc_repl_l3_intf_nh_map_scache_size_get(int unit, uint32 *size); 729 extern int _bcm_th_ipmc_repl_l3_intf_nh_map_sync(int unit, uint8 **scache_ptr); 730 extern int _bcm_th_ipmc_repl_l3_intf_nh_map_scache_recover(int unit, uint8 **scache_ptr); 731 extern int _bcm_th_ipmc_repl_l3_intf_trill_nh_map_scache_size_get(int unit, uint32 *size); 732 extern int _bcm_th_ipmc_repl_l3_intf_trill_nh_map_sync(int unit, uint8 **scache_ptr); 733 extern int _bcm_th_ipmc_repl_l3_intf_trill_nh_map_scache_recover(int unit, uint8 **scache_ptr); 734 #endif /* BCM_WARM_BOOT_SUPPORT */ 735 736 #ifndef BCM_SW_STATE_DUMP_DISABLE 737 extern void _bcm_th_ipmc_repl_sw_dump(int unit); 738 #endif /* BCM_SW_STATE_DUMP_DISABLE */ 739 740 /* Resilient Hashing funcitons */ 741 extern int bcm_opt_ecmp_rh_init(int unit); 742 extern int bcm_opt_ecmp_rh_deinit(int unit); 743 extern int bcm_opt_l3_egress_ecmp_rh_create(int unit, 744 bcm_l3_egress_ecmp_t *ecmp, 745 int intf_count, 746 bcm_if_t *intf_array, 747 int op, int count, 748 bcm_if_t *intf, 749 bcm_if_t *new_intf_array); 750 extern int bcm_opt_l3_egress_ecmp_rh_destroy(int unit, bcm_if_t mpintf); 751 extern int bcm_opt_l3_egress_ecmp_lb_get(int unit, bcm_l3_egress_ecmp_t *ecmp); 752 extern int bcm_opt_l3_egress_ecmp_rh_shared_copy(int unit, int old_ecmp_group, 753 int new_ecmp_group); 754 extern int bcm_opt_ecmp_rh_set_intf_arr(int unit, int intf_count, 755 bcm_if_t *intf_array, 756 int ecmp_group_idx, 757 int group_size, 758 int max_paths); 759 extern int bcm_opt_ecmp_rh_multipath_get(int unit, int ecmp_group_idx, int intf_size, 760 bcm_if_t *intf_array, int *intf_count, 761 int *max_paths); 762 extern int bcm_opt_l3_egress_rh_ecmp_find(int unit, int intf_count, 763 bcm_if_t *intf_array, bcm_if_t *mpintf); 764 extern int bcm_opt_ecmp_lb_mode_set(int unit, 765 int ecmp_group_idx, 766 uint8 lb_mode); 767 extern int bcm_opt_ecmp_lb_mode_reset(int unit, 768 bcm_if_t mpintf); 769 extern void bcm_opt_ecmp_group_rh_set(int unit, int ecmp_group_idx, int enable); 770 extern int bcm_opt_ecmp_group_is_rh(int unit, 771 int ecmp_group_idx); 772 extern int bcm_opt_l3_egress_ecmp_rh_shared_copy(int unit, int old_ecmp_group, 773 int new_ecmp_group); 774 775 #ifdef BCM_WARM_BOOT_SUPPORT 776 extern int bcm_opt_l3_ecmp_rh_member_sync(int unit, uint8 **scache_ptr); 777 extern int bcm_opt_l3_ecmp_rh_member_recover(int unit, uint8 **scache_ptr, 778 int ecmp_max_paths); 779 #endif /* BCM_WARM_BOOT_SUPPORT */ 780 781 #ifndef BCM_SW_STATE_DUMP_DISABLE 782 extern void bcm_opt_ecmp_rh_sw_dump(int unit); 783 #endif /* BCM_SW_STATE_DUMP_DISABLE */ 784 785 #endif /* INCLUDE_L3 */ 786 787 extern bcm_error_t 788 _bcm_th_port_speed_supported(int unit, bcm_port_t port, int speed); 789 extern int bcm_th_phy_lb_check(int unit, bcm_port_t port, int loopback); 790 extern int bcm_th_phy_lb_set(int unit); 791 792 /* Cosq */ 793 extern int _bcm_th_cosq_port_resolve(int unit, bcm_gport_t gport, 794 bcm_module_t *modid, bcm_port_t *port, 795 bcm_trunk_t *trunk_id, int *id, int *qnum); 796 extern int bcm_th_cosq_gport_get(int unit, bcm_gport_t gport, bcm_gport_t *port, 797 int *numq, uint32 *flags); 798 extern int bcm_th_cosq_port_bandwidth_set(int unit, bcm_port_t port, 799 bcm_cos_queue_t cosq, 800 uint32 min_quantum, uint32 max_quantum, 801 uint32 burst_quantum, uint32 flags); 802 extern int bcm_th_cosq_port_bandwidth_get(int unit, bcm_port_t port, 803 bcm_cos_queue_t cosq, 804 uint32 *min_quantum, 805 uint32 *max_quantum, 806 uint32 *burst_quantum, 807 uint32 *flags); 808 809 extern int bcm_th_cosq_gport_bandwidth_burst_set(int unit, bcm_gport_t gport, 810 bcm_cos_queue_t cosq, 811 uint32 kbits_burst_min, 812 uint32 kbits_burst_max); 813 extern int bcm_th_cosq_gport_bandwidth_burst_get(int unit, bcm_gport_t gport, 814 bcm_cos_queue_t cosq, 815 uint32 *kbits_burst_min, 816 uint32 *kbits_burst_max); 817 818 extern int bcm_th_cosq_gport_sched_get(int unit, bcm_gport_t gport, 819 bcm_cos_queue_t cosq, int *mode, 820 int *weight); 821 extern int bcm_th_cosq_gport_sched_set(int unit, bcm_gport_t gport, 822 bcm_cos_queue_t cosq, int mode, 823 int weight); 824 extern int bcm_th_cosq_sched_weight_max_get(int unit, int mode, 825 int *weight_max); 826 827 extern int bcm_th_cosq_gport_traverse(int unit, bcm_cosq_gport_traverse_cb cb, 828 void *user_data); 829 830 extern int bcm_th_cosq_gport_traverse_by_port(int unit, bcm_gport_t port, 831 bcm_cosq_gport_traverse_cb cb, 832 void *user_data); 833 extern int bcm_th_cosq_gport_bandwidth_set(int unit, bcm_gport_t gport, 834 bcm_cos_queue_t cosq, 835 uint32 kbits_sec_min, 836 uint32 kbits_sec_max, 837 uint32 flags); 838 extern int bcm_th_cosq_gport_bandwidth_get(int unit, bcm_gport_t gport, 839 bcm_cos_queue_t cosq, 840 uint32 *kbits_sec_min, 841 uint32 *kbits_sec_max, 842 uint32 *flags); 843 extern int bcm_th_cosq_port_burst_set(int unit, bcm_port_t port, 844 bcm_cos_queue_t cosq, int burst); 845 extern int bcm_th_cosq_port_burst_get(int unit, bcm_port_t port, 846 bcm_cos_queue_t cosq, 847 int *burst); 848 849 extern int bcm_th_port_rate_egress_set(int unit, bcm_port_t port, 850 uint32 bandwidth, uint32 burst, 851 uint32 mode); 852 extern int bcm_th_port_rate_egress_get(int unit, bcm_port_t port, 853 uint32 *bandwidth, uint32 *burst, 854 uint32 *mode); 855 extern int bcm_th_port_drain_cells(int unit, int port); 856 857 extern int bcm_th_cosq_port_pps_set(int unit, bcm_port_t port, 858 bcm_cos_queue_t cosq, int pps); 859 extern int bcm_th_cosq_port_pps_get(int unit, bcm_port_t port, 860 bcm_cos_queue_t cosq, int *pps); 861 862 extern int bcm_th_cosq_discard_set(int unit, uint32 flags); 863 extern int bcm_th_cosq_discard_get(int unit, uint32 *flags); 864 865 extern int bcm_th_cosq_discard_port_get(int unit, bcm_port_t port, 866 bcm_cos_queue_t cosq, uint32 color, 867 int *drop_start, 868 int *drop_slope, int *average_time); 869 extern int bcm_th_cosq_discard_port_set(int unit, bcm_port_t port, 870 bcm_cos_queue_t cosq, 871 uint32 color, int drop_start, 872 int drop_slope, 873 int average_time); 874 875 extern int bcm_th_cosq_gport_discard_set(int unit, bcm_gport_t gport, 876 bcm_cos_queue_t cosq, 877 bcm_cosq_buffer_id_t buffer, 878 bcm_cosq_gport_discard_t *discard); 879 extern int bcm_th_cosq_gport_discard_get(int unit, bcm_gport_t gport, 880 bcm_cos_queue_t cosq, 881 bcm_cosq_buffer_id_t buffer, 882 bcm_cosq_gport_discard_t *discard); 883 884 extern int bcm_th_cosq_wred_resolution_entry_create(int unit, int *index); 885 extern int bcm_th_cosq_wred_resolution_entry_destroy(int unit, int index); 886 extern int bcm_th_cosq_wred_resolution_set(int unit, int index, 887 bcm_cosq_discard_rule_t *rule); 888 extern int bcm_th_cosq_wred_resolution_get(int unit, int index, int max, 889 bcm_cosq_discard_rule_t *rule, 890 int *count); 891 892 extern int bcm_th_cosq_port_pfc_op(int unit, bcm_port_t port, 893 bcm_switch_control_t sctype, 894 _bcm_cosq_op_t op, 895 bcm_gport_t *gport, 896 int gport_count); 897 extern int bcm_th_cosq_port_pfc_get(int unit, bcm_port_t port, 898 bcm_switch_control_t sctype, 899 bcm_gport_t *gport, 900 int gport_count, 901 int *actual_gport_count); 902 extern int 903 bcm_th_pfc_deadlock_ignore_pfc_xoff_gen(int unit, int priority, 904 bcm_port_t port, uint32 *rval32); 905 extern int 906 bcm_th_cosq_pfc_class_mapping_set(int unit, bcm_gport_t port, 907 int array_count, 908 bcm_cosq_pfc_class_mapping_t *mapping_array); 909 910 extern int 911 bcm_th_cosq_pfc_class_mapping_get(int unit, bcm_gport_t port, 912 int array_max, 913 bcm_cosq_pfc_class_mapping_t *mapping_array, 914 int *array_count); 915 extern int 916 bcm_th_cosq_safc_class_mapping_set(int unit, bcm_gport_t port, 917 int array_count, 918 bcm_cosq_safc_class_mapping_t *mapping_array); 919 920 extern int 921 bcm_th_cosq_safc_class_mapping_get(int unit, bcm_gport_t port, 922 int array_max, 923 bcm_cosq_safc_class_mapping_t *mapping_array, 924 int *array_count); 925 926 extern int 927 bcm_th_port_priority_group_mapping_set(int unit, bcm_gport_t gport, 928 int prio, int priority_group); 929 extern int 930 bcm_th_port_priority_group_mapping_get(int unit, bcm_gport_t gport, 931 int prio, int *priority_group); 932 extern int 933 bcm_th_port_priority_group_config_set(int unit, bcm_gport_t gport, 934 int priority_group, bcm_port_priority_group_config_t *prigrp_config); 935 extern int 936 bcm_th_port_priority_group_config_get(int unit, bcm_gport_t gport, 937 int priority_group, bcm_port_priority_group_config_t *prigrp_config); 938 939 extern int bcm_th_cosq_port_sched_set(int unit, bcm_pbmp_t pbm, 940 int mode, const int *weights, int delay); 941 extern int bcm_th_cosq_port_sched_get(int unit, bcm_pbmp_t pbm, 942 int *mode, int *weights, int *delay); 943 944 extern int bcm_th_cosq_gport_add(int unit, bcm_gport_t port, int numq, 945 uint32 flags, bcm_gport_t *gport); 946 extern int bcm_th_cosq_gport_delete(int unit, bcm_gport_t gport); 947 extern int bcm_th_cosq_gport_attach(int unit, bcm_gport_t input_gport, 948 bcm_gport_t parent_gport, 949 bcm_cos_queue_t cosq); 950 extern int bcm_th_rx_queue_channel_set_test(int unit, 951 bcm_cos_queue_t queue_id, 952 bcm_rx_chan_t chan_id); 953 extern int bcm_th_cosq_gport_detach(int unit, bcm_gport_t input_gport, 954 bcm_gport_t parent_gport, 955 bcm_cos_queue_t cosq); 956 extern int 957 bcm_th_cosq_gport_attach_get(int unit, bcm_gport_t sched_gport, 958 bcm_gport_t *input_gport, bcm_cos_queue_t *cosq); 959 extern int 960 bcm_th_cosq_gport_child_get(int unit, bcm_gport_t in_gport, 961 bcm_cos_queue_t cosq, bcm_gport_t *out_gport); 962 963 extern int bcm_th_cosq_mapping_set(int unit, bcm_port_t gport, 964 bcm_cos_t priority, bcm_cos_queue_t cosq); 965 extern int bcm_th_cosq_mapping_get(int unit, bcm_port_t gport, 966 bcm_cos_t priority, bcm_cos_queue_t *cosq); 967 968 extern int bcm_th_cosq_control_set(int unit, bcm_gport_t gport, 969 bcm_cos_queue_t cosq, 970 bcm_cosq_buffer_id_t buffer, 971 bcm_cosq_control_t type, int arg); 972 extern int bcm_th_cosq_control_get(int unit, bcm_gport_t gport, 973 bcm_cos_queue_t cosq, 974 bcm_cosq_buffer_id_t buffer, 975 bcm_cosq_control_t type, int *arg); 976 977 extern int bcm_th_cosq_stat_set(int unit, bcm_gport_t port, 978 bcm_cos_queue_t cosq, 979 bcm_cosq_stat_t stat, uint64 value); 980 extern int bcm_th_cosq_stat_get(int unit, bcm_port_t port, 981 bcm_cos_queue_t cosq, 982 bcm_cosq_stat_t stat, int sync_mode, 983 uint64 *value); 984 985 extern int bcm_th_cosq_gport_mapping_set(int unit, bcm_port_t ing_port, 986 bcm_cos_t int_pri, uint32 flags, 987 bcm_gport_t gport, 988 bcm_cos_queue_t cosq); 989 extern int bcm_th_cosq_gport_mapping_get(int unit, bcm_port_t ing_port, 990 bcm_cos_t int_pri, uint32 flags, 991 bcm_gport_t *gport, 992 bcm_cos_queue_t *cosq); 993 extern int bcm_th_cosq_priority_mapping_get_all(int unit, bcm_gport_t gport, 994 int index, 995 bcm_cosq_priority_mapping_t type, 996 int pri_max, int *pri_array, 997 int *pri_count); 998 999 extern int bcm_th_cosq_config_set(int unit, int numq); 1000 extern int bcm_th_cosq_config_get(int unit, int *numq); 1001 extern int bcm_th_cosq_buffer_id_multi_get(int unit, bcm_gport_t gport, 1002 bcm_cos_queue_t cosq, bcm_cosq_dir_t direction, 1003 int array_max, bcm_cosq_buffer_id_t *buf_id_array, 1004 int *array_count); 1005 extern int 1006 bcm_th_cosq_field_classifier_get( 1007 int unit, int classifier_id, bcm_cosq_classifier_t *classifier); 1008 1009 extern int 1010 bcm_th_cosq_field_classifier_id_create( 1011 int unit, bcm_cosq_classifier_t *classifier, int *classifier_id); 1012 1013 extern int 1014 bcm_th_cosq_field_classifier_id_destroy( 1015 int unit, int classifier_id); 1016 1017 extern int 1018 bcm_th_cosq_field_classifier_map_set( 1019 int unit, int classifier_id, int count, 1020 bcm_cos_t *priority_array, bcm_cos_queue_t *cosq_array); 1021 1022 extern int 1023 bcm_th_cosq_field_classifier_map_get( 1024 int unit, int classifier_id, 1025 int array_max, bcm_cos_t *priority_array, 1026 bcm_cos_queue_t *cosq_array, int *array_count); 1027 1028 extern int 1029 bcm_th_cosq_field_classifier_map_clear( 1030 int unit, int classifier_id); 1031 1032 extern int bcm_th_cosq_init(int unit); 1033 extern int bcm_th_cosq_detach(int unit, int software_state_only); 1034 extern int _bcm_th_pfc_deadlock_init(int unit); 1035 extern int bcm_th_pfc_deadlock_recovery_start(int unit, 1036 bcm_port_t port, int pri); 1037 extern int bcm_th_pfc_deadlock_recovery_exit(int unit, 1038 bcm_port_t port, int pri); 1039 1040 extern int 1041 bcm_th_cosq_bst_profile_set(int unit, 1042 bcm_gport_t port, 1043 bcm_cos_queue_t cosq, 1044 bcm_bst_stat_id_t bid, 1045 bcm_cosq_bst_profile_t *profile); 1046 1047 extern int 1048 bcm_th_cosq_bst_profile_get(int unit, 1049 bcm_gport_t port, 1050 bcm_cos_queue_t cosq, 1051 bcm_bst_stat_id_t bid, 1052 bcm_cosq_bst_profile_t *profile); 1053 1054 extern int 1055 bcm_th_cosq_bst_multi_profile_set(int unit, 1056 bcm_gport_t gport, 1057 bcm_cos_queue_t cosq, 1058 bcm_bst_stat_id_t bid, 1059 int array_size, 1060 bcm_cosq_bst_profile_t *profile_array); 1061 1062 extern int 1063 bcm_th_cosq_bst_multi_profile_get(int unit, 1064 bcm_gport_t gport, 1065 bcm_cos_queue_t cosq, 1066 bcm_bst_stat_id_t bid, 1067 int array_size, 1068 bcm_cosq_bst_profile_t *profile_array, 1069 int *count); 1070 1071 extern int 1072 bcm_th_cosq_bst_stat_get(int unit, 1073 bcm_gport_t port, 1074 bcm_cos_queue_t cosq, 1075 bcm_cosq_buffer_id_t buffer, 1076 bcm_bst_stat_id_t bid, 1077 uint32 options, 1078 uint64 *pvalue); 1079 1080 extern int 1081 bcm_th_cosq_bst_stat_multi_get(int unit, 1082 bcm_gport_t port, 1083 bcm_cos_queue_t cosq, 1084 uint32 options, 1085 int max_values, 1086 bcm_bst_stat_id_t *id_list, 1087 uint64 *pvalues); 1088 1089 extern int 1090 bcm_th_cosq_bst_stat_clear(int unit, bcm_gport_t port, 1091 bcm_cos_queue_t cosq, bcm_cosq_buffer_id_t buffer, 1092 bcm_bst_stat_id_t bid); 1093 1094 extern int bcm_th_cosq_bst_stat_sync(int unit, bcm_bst_stat_id_t bid); 1095 1096 extern int 1097 _bcm_th_bst_hdrm_stat_clear(int unit, 1098 bcm_gport_t gport, 1099 bcm_cos_queue_t cosq, 1100 bcm_cosq_buffer_id_t buffer); 1101 1102 extern int 1103 _bcm_th_cosq_bst_hdrm_stat_get(int unit, 1104 bcm_gport_t gport, 1105 bcm_cos_queue_t cosq, 1106 bcm_cosq_buffer_id_t buffer, 1107 uint32 options, 1108 uint64 *pvalue); 1109 1110 extern int 1111 _bcm_th_port_enqueue_set(int unit, bcm_port_t gport, int enable); 1112 1113 extern int 1114 _bcm_th_port_enqueue_get(int unit, bcm_port_t gport, int *enable); 1115 1116 extern int bcm_th_cosq_cpu_cosq_enable_set(int unit, bcm_cos_queue_t cosq, 1117 int enable); 1118 extern int bcm_th_cosq_cpu_cosq_enable_get(int unit, bcm_cos_queue_t cosq, 1119 int *enable); 1120 extern void bcm_th_cosq_sw_dump(int unit); 1121 1122 #ifdef BCM_WARM_BOOT_SUPPORT 1123 extern int bcm_th_cosq_sync(int unit); 1124 extern int bcm_th_cosq_reinit(int unit); 1125 #endif /* BCM_WARM_BOOT_SUPPORT */ 1126 1127 typedef enum { 1128 _BCM_TH_COSQ_INDEX_STYLE_WRED_QUEUE, 1129 _BCM_TH_COSQ_INDEX_STYLE_WRED_PORT, 1130 _BCM_TH_COSQ_INDEX_STYLE_WRED_DEVICE, 1131 _BCM_TH_COSQ_INDEX_STYLE_UCAST_QUEUE, 1132 _BCM_TH_COSQ_INDEX_STYLE_MCAST_QUEUE, 1133 _BCM_TH_COSQ_INDEX_STYLE_EGR_POOL, 1134 _BCM_TH_COSQ_INDEX_STYLE_COS, 1135 _BCM_TH_COSQ_INDEX_STYLE_COUNT 1136 } _bcm_th_cosq_index_style_t; 1137 1138 extern int _bcm_th_cosq_index_resolve(int unit, bcm_port_t port, 1139 bcm_cos_queue_t cosq, _bcm_th_cosq_index_style_t style, 1140 bcm_port_t *local_port, int *index, int *count); 1141 1142 extern int _bcm_th_cosq_port_cos_resolve(int unit, bcm_port_t port, bcm_cos_t cos, 1143 _bcm_th_cosq_index_style_t style, 1144 bcm_gport_t *gport); 1145 extern int _bcm_th_cosq_inv_mapping_get(int unit, bcm_gport_t gport, 1146 bcm_cos_queue_t cosq, 1147 uint32 flags, bcm_port_t *ing_port, 1148 bcm_cos_t *priority); 1149 1150 extern int bcm_th_cosq_port_attach(int unit, bcm_port_t port); 1151 extern int bcm_th_cosq_port_detach(int unit, bcm_port_t port); 1152 1153 /* OOB FC Tx side global configuration API */ 1154 extern int bcm_th_oob_fc_tx_config_set( 1155 int unit, 1156 bcm_oob_fc_tx_config_t *config); 1157 1158 /* OOB FC Tx side global configuration get API */ 1159 extern int bcm_th_oob_fc_tx_config_get( 1160 int unit, 1161 bcm_oob_fc_tx_config_t *config); 1162 1163 extern int 1164 _bcm_th_oob_fc_tx_port_control_set(int unit, bcm_port_t port, 1165 int status, int dir); 1166 extern int 1167 _bcm_th_oob_fc_tx_port_control_get(int unit, bcm_port_t port, 1168 int *status, int dir); 1169 1170 /* OOB FC Tx side global info get API */ 1171 extern int bcm_th_oob_fc_tx_info_get( 1172 int unit, 1173 bcm_oob_fc_tx_info_t *info); 1174 1175 /* 1176 * OOB FC Rx Interface side Traffic Class to Priority Mapping Multi Set 1177 * API 1178 */ 1179 extern int bcm_th_oob_fc_rx_port_tc_mapping_multi_set( 1180 int unit, 1181 bcm_oob_fc_rx_intf_id_t intf_id, 1182 bcm_gport_t gport, 1183 int array_count, 1184 uint32 *tc, 1185 uint32 *pri_bmp); 1186 1187 /* 1188 * OOB FC Rx Interface side Traffic Class to Priority Mapping Multi Get 1189 * API 1190 */ 1191 extern int bcm_th_oob_fc_rx_port_tc_mapping_multi_get( 1192 int unit, 1193 bcm_oob_fc_rx_intf_id_t intf_id, 1194 bcm_gport_t gport, 1195 int array_max, 1196 uint32 *tc, 1197 uint32 *pri_bmp, 1198 int *array_count); 1199 1200 /* OOB FC Rx Interface side Traffic Class to Priority Mapping set API */ 1201 extern int bcm_th_oob_fc_rx_port_tc_mapping_set( 1202 int unit, 1203 bcm_oob_fc_rx_intf_id_t intf_id, 1204 bcm_gport_t gport, 1205 uint32 tc, 1206 uint32 pri_bmp); 1207 1208 /* OOB FC Rx Interface side Traffic Class to Priority Mapping get API */ 1209 extern int bcm_th_oob_fc_rx_port_tc_mapping_get( 1210 int unit, 1211 bcm_oob_fc_rx_intf_id_t intf_id, 1212 bcm_gport_t gport, 1213 uint32 tc, 1214 uint32 *pri_bmp); 1215 1216 /* OOB FC Rx Interface side Configuration set API */ 1217 extern int bcm_th_oob_fc_rx_config_set( 1218 int unit, 1219 bcm_oob_fc_rx_intf_id_t intf_id, 1220 bcm_oob_fc_rx_config_t *config, 1221 int array_count, 1222 bcm_gport_t *gport_array); 1223 1224 /* OOB FC Rx Interface side Configuration get API */ 1225 extern int bcm_th_oob_fc_rx_config_get( 1226 int unit, 1227 bcm_oob_fc_rx_intf_id_t intf_id, 1228 bcm_oob_fc_rx_config_t *config, 1229 int array_max, 1230 bcm_gport_t *gport_array, 1231 int *array_count); 1232 1233 /* OOB FC Rx Interface side Channel offset value for a port */ 1234 extern int bcm_th_oob_fc_rx_port_offset_get( 1235 int unit, 1236 bcm_oob_fc_rx_intf_id_t intf_id, 1237 bcm_gport_t gport, 1238 uint32 *offset); 1239 1240 /* OOB STATS global configuration set API */ 1241 extern int bcm_th_oob_stats_config_set( 1242 int unit, 1243 bcm_oob_stats_config_t *config); 1244 1245 /* OOB STATS global configuration get API */ 1246 extern int bcm_th_oob_stats_config_get( 1247 int unit, 1248 bcm_oob_stats_config_t *config); 1249 1250 1251 /* OOB STATS configuration of service pool list multi set API */ 1252 extern int bcm_th_oob_stats_pool_mapping_multi_set( 1253 int unit, 1254 int array_count, 1255 int *offset_array, 1256 uint8 *dir_array, 1257 bcm_service_pool_id_t *pool_array); 1258 1259 /* OOB STATS configuration of service pool list multi get API */ 1260 extern int bcm_th_oob_stats_pool_mapping_multi_get( 1261 int unit, 1262 int array_max, 1263 int *offset_array, 1264 uint8 *dir_array, 1265 bcm_service_pool_id_t *pool_array, 1266 int *array_count); 1267 1268 /* OOB STATS configuration of service pool list set API */ 1269 extern int bcm_th_oob_stats_pool_mapping_set( 1270 int unit, 1271 int offset, 1272 uint8 dir, 1273 bcm_service_pool_id_t pool); 1274 1275 /* OOB STATS configuration of service pool list get API */ 1276 extern int bcm_th_oob_stats_pool_mapping_get( 1277 int unit, 1278 int offset, 1279 uint8 *dir, 1280 bcm_service_pool_id_t *pool); 1281 1282 /* OOB STATS configuration of Queue list set API */ 1283 extern int bcm_th_oob_stats_queue_mapping_multi_set( 1284 int unit, 1285 int array_count, 1286 int *offset_array, 1287 bcm_gport_t *gport_array); 1288 1289 /* OOB STATS configuration of Queue list get API */ 1290 extern int bcm_th_oob_stats_queue_mapping_multi_get( 1291 int unit, 1292 int array_max, 1293 int *offset_array, 1294 bcm_gport_t *gport_array, 1295 int *array_count); 1296 1297 /* OOB STATS configuration of Queue list set API */ 1298 extern int bcm_th_oob_stats_queue_mapping_set( 1299 int unit, 1300 int offset, 1301 bcm_gport_t gport); 1302 1303 /* OOB STATS configuration of Queue list get API */ 1304 extern int bcm_th_oob_stats_queue_mapping_get( 1305 int unit, 1306 int offset, 1307 bcm_gport_t *gport); 1308 1309 /* QoS */ 1310 extern int bcm_th_qos_init(int unit); 1311 extern int bcm_th_qos_detach(int unit); 1312 extern int bcm_th_qos_map_create(int unit, uint32 flags, int *map_id); 1313 extern int bcm_th_qos_map_destroy(int unit, int map_id); 1314 extern int bcm_th_qos_map_add(int unit, 1315 uint32 flags, 1316 bcm_qos_map_t *map, 1317 int map_id); 1318 extern int bcm_th_qos_map_delete(int unit, 1319 uint32 flags, 1320 bcm_qos_map_t *map, 1321 int map_id); 1322 extern int bcm_th_qos_port_map_set(int unit, 1323 bcm_gport_t port, 1324 int ing_map, 1325 int egr_map); 1326 extern int bcm_th_qos_map_multi_get(int unit, 1327 uint32 flags, 1328 int map_id, 1329 int array_size, 1330 bcm_qos_map_t *array, 1331 int *array_count); 1332 extern int _bcm_th_qos_multi_get(int unit, 1333 int array_size, 1334 int *map_ids_array, 1335 int *flags_array, 1336 int *array_count); 1337 extern int bcm_th_qos_port_map_type_get(int unit, bcm_gport_t port, 1338 uint32 flags, int *map_id); 1339 #ifdef BCM_WARM_BOOT_SUPPORT_SW_DUMP 1340 extern void _bcm_th_qos_sw_dump(int unit); 1341 #endif /* BCM_WARM_BOOT_SUPPORT_SW_DUMP */ 1342 #ifdef BCM_WARM_BOOT_SUPPORT 1343 extern int _bcm_th_qos_reinit_scache_len_get(int unit, uint32 *scache_len); 1344 extern int _bcm_th_qos_reinit_from_hw_state(int unit, soc_mem_t mem, 1345 soc_field_t field, uint8 map_type, 1346 SHR_BITDCL *hw_idx_bmp, int hw_idx_bmp_len); 1347 extern int _bcm_th_qos_unsynchronized_reinit(int unit); 1348 extern int _bcm_th_qos_extended_reinit(int unit, uint8 **scache_ptr); 1349 extern int _bcm_th_qos_reinit_hw_profiles_update(int unit); 1350 extern int _bcm_th_qos_sync(int unit, uint8 **scache_ptr); 1351 #endif /* BCM_WARM_BOOT_SUPPORT */ 1352 extern int _bcm_field_th_qualify_LoopbackType(int unit, 1353 bcm_field_LoopbackType_t loopback_type, 1354 uint32 *tcam_data, 1355 uint32 *tcam_mask); 1356 extern int _bcm_field_th_qualify_LoopbackType_get(uint8 tcam_data, 1357 uint8 tcam_mask, 1358 bcm_field_LoopbackType_t *loopback_type); 1359 extern int _bcm_field_th_qual_part_offset_get(int unit, _field_entry_t *f_ent, 1360 int entry_part, int qid, 1361 _bcm_field_qual_offset_t *offset); 1362 1363 extern int _field_th_stage_entry_enable_set(int unit, _field_entry_t *f_ent, 1364 int enable_flag); 1365 extern int _field_th_group_qual_info_get(int unit, 1366 _field_stage_t *stage_fc, 1367 _field_group_t *fg, 1368 bcm_field_qset_t *qset_req, 1369 bcmi_keygen_qual_info_t **qual_info_arr, 1370 uint16 *qual_info_count); 1371 /* 1372 * 8 Priority Groups supported. 1373 */ 1374 #define TH_PRIOROTY_GROUP_ID_MIN 0 1375 #define TH_PRIOROTY_GROUP_ID_MAX 7 1376 /* 1377 * Inpur priority range. 1378 * PFC : 0-7 1379 * SAFC : 0-15 1380 */ 1381 #define TH_PFC_INPUT_PRIORITY_MIN 0 1382 #define TH_PFC_INPUT_PRIORITY_MAX 7 1383 #define TH_SAFC_INPUT_PRIORITY_MIN TH_PFC_INPUT_PRIORITY_MIN 1384 #define TH_SAFC_INPUT_PRIORITY_MAX 15 1385 1386 1387 #if defined(INCLUDE_FLOWTRACKER) 1388 /* Flowtracker module APIs */ 1389 extern int _bcm_th_ft_init(int unit); 1390 1391 extern int _bcm_th_ft_detach(int unit); 1392 1393 extern int 1394 _bcm_th_ft_export_template_create( 1395 int unit, 1396 uint32 options, 1397 bcm_flowtracker_export_template_t *id, 1398 uint16 set_id, 1399 int num_export_elements, 1400 bcm_flowtracker_export_element_info_t *list_of_export_elements); 1401 1402 extern int 1403 _bcm_th_ft_export_template_get( 1404 int unit, 1405 bcm_flowtracker_export_template_t id, 1406 uint16 *set_id, 1407 int max_size, 1408 bcm_flowtracker_export_element_info_t *list_of_export_elements, 1409 int *list_size); 1410 1411 extern int 1412 _bcm_th_ft_export_template_destroy(int unit, 1413 bcm_flowtracker_export_template_t id); 1414 1415 extern int 1416 _bcm_th_ft_group_clear(int unit, 1417 bcm_flowtracker_group_t id, 1418 uint32 flags); 1419 1420 extern int 1421 _bcm_th_ft_collector_create(int unit, 1422 uint32 options, 1423 bcm_flowtracker_collector_t *id, 1424 bcm_flowtracker_collector_info_t *collector_info); 1425 1426 extern int 1427 _bcm_th_ft_collector_get(int unit, 1428 bcm_flowtracker_collector_t id, 1429 bcm_flowtracker_collector_info_t *collector_info); 1430 1431 extern int 1432 _bcm_th_ft_collector_get_all( 1433 int unit, 1434 int max_size, 1435 bcm_flowtracker_collector_t *collector_list, 1436 int *list_size); 1437 1438 extern int _bcm_th_ft_collector_destroy(int unit, 1439 bcm_flowtracker_collector_t id); 1440 1441 extern int _bcm_th_ft_group_collector_attach( 1442 int unit, 1443 bcm_flowtracker_group_t flow_group_id, 1444 bcm_collector_t collector_id, 1445 int export_profile_id, 1446 bcm_flowtracker_export_template_t template_id); 1447 1448 extern int _bcm_th_ft_group_collector_detach( 1449 int unit, 1450 bcm_flowtracker_group_t flow_group_id, 1451 bcm_collector_t collector_id, 1452 int export_profile_id, 1453 bcm_flowtracker_export_template_t template_id); 1454 1455 extern int _bcm_th_ft_group_collector_attach_get_all( 1456 int unit, 1457 bcm_flowtracker_group_t flow_group_id, 1458 int max_list_size, 1459 bcm_flowtracker_collector_t *list_of_collectors, 1460 int *list_of_export_profile_ids, 1461 bcm_flowtracker_export_template_t *list_of_templates, 1462 int *list_size); 1463 1464 extern int 1465 _bcm_th_ft_flow_group_create(int unit, 1466 uint32 options, 1467 bcm_flowtracker_group_t *id, 1468 bcm_flowtracker_group_info_t *flow_group_info); 1469 1470 extern int 1471 _bcm_th_ft_flow_group_get(int unit, 1472 bcm_flowtracker_group_t id, 1473 bcm_flowtracker_group_info_t *flow_group_info); 1474 1475 extern int 1476 _bcm_th_ft_flow_group_get_all(int unit, 1477 int max_size, 1478 bcm_flowtracker_group_t *flow_group_list, 1479 int *list_size); 1480 1481 extern int _bcm_th_ft_flow_group_flow_limit_set(int unit, 1482 bcm_flowtracker_group_t id, 1483 uint32 flow_limit); 1484 1485 extern int _bcm_th_ft_flow_group_flow_limit_get(int unit, 1486 bcm_flowtracker_group_t id, 1487 uint32 *flow_limit); 1488 1489 extern int _bcm_th_ft_flow_group_stat_modeid_set(int unit, 1490 bcm_flowtracker_group_t id, 1491 uint32 stat_modeid); 1492 1493 extern int _bcm_th_ft_flow_group_stat_modeid_get(int unit, 1494 bcm_flowtracker_group_t id, 1495 uint32 *stat_modeid); 1496 1497 extern int _bcm_th_ft_flow_group_age_timer_set(int unit, 1498 bcm_flowtracker_group_t id, 1499 uint32 aging_interval_ms); 1500 1501 extern int _bcm_th_ft_flow_group_age_timer_get(int unit, 1502 bcm_flowtracker_group_t id, 1503 uint32 *aging_interval_ms); 1504 1505 extern int 1506 _bcm_th_ft_flow_group_export_trigger_set( 1507 int unit, 1508 bcm_flowtracker_group_t id, 1509 bcm_flowtracker_export_trigger_info_t *export_trigger_info); 1510 1511 extern int 1512 _bcm_th_ft_flow_group_export_trigger_get( 1513 int unit, 1514 bcm_flowtracker_group_t id, 1515 bcm_flowtracker_export_trigger_info_t *export_trigger_info); 1516 1517 extern int _bcm_th_ft_flow_group_flow_count_get(int unit, 1518 bcm_flowtracker_group_t id, 1519 uint32 *flow_count); 1520 1521 extern int _bcm_th_ft_flow_group_destroy(int unit, 1522 bcm_flowtracker_group_t id); 1523 1524 extern int 1525 _bcm_th_ft_flow_group_collector_add(int unit, 1526 bcm_flowtracker_group_t flow_group_id, 1527 bcm_flowtracker_collector_t collector_id, 1528 bcm_flowtracker_export_template_t template_id); 1529 1530 extern int 1531 _bcm_th_ft_flow_group_collector_delete(int unit, 1532 bcm_flowtracker_group_t flow_group_id, 1533 bcm_flowtracker_collector_t collector_id, 1534 bcm_flowtracker_export_template_t template_id); 1535 1536 extern int _bcm_th_ft_flow_group_collector_get_all( 1537 int unit, 1538 bcm_flowtracker_group_t flow_group_id, 1539 int max_list_size, 1540 bcm_flowtracker_collector_t *list_of_collectors, 1541 bcm_flowtracker_export_template_t *list_of_templates, 1542 int *list_size); 1543 1544 extern int _bcm_th_ft_group_data_get( 1545 int unit, 1546 bcm_flowtracker_group_t flow_group_id, 1547 bcm_flowtracker_flow_key_t *flow_key, 1548 bcm_flowtracker_flow_data_t *flow_data); 1549 1550 extern int 1551 _bcm_th_ft_group_actions_set( 1552 int unit, 1553 bcm_flowtracker_group_t flow_group_id, 1554 uint32 flags, 1555 int num_actions, 1556 bcm_flowtracker_group_action_info_t *action_list); 1557 1558 extern int 1559 _bcm_th_ft_group_actions_get( 1560 int unit, 1561 bcm_flowtracker_group_t flow_group_id, 1562 uint32 flags, 1563 int max_actions, 1564 bcm_flowtracker_group_action_info_t *action_list, 1565 int *num_actions); 1566 1567 extern int 1568 _bcm_th_ft_template_transmit_config_set( 1569 int unit, 1570 bcm_flowtracker_export_template_t template_id, 1571 bcm_flowtracker_collector_t collector_id, 1572 bcm_flowtracker_template_transmit_config_t *config); 1573 extern int 1574 _bcm_th_ft_template_transmit_config_get( 1575 int unit, 1576 bcm_flowtracker_export_template_t template_id, 1577 bcm_flowtracker_collector_t collector_id, 1578 bcm_flowtracker_template_transmit_config_t *config); 1579 1580 extern int 1581 _bcm_th_ft_elephant_profile_create( 1582 int unit, 1583 uint32 options, 1584 bcm_flowtracker_elephant_profile_info_t *profile, 1585 bcm_flowtracker_elephant_profile_t *profile_id); 1586 1587 extern int 1588 _bcm_th_ft_elephant_profile_destroy( 1589 int unit, 1590 bcm_flowtracker_elephant_profile_t profile_id); 1591 1592 extern int 1593 _bcm_th_ft_elephant_profile_get( 1594 int unit, 1595 bcm_flowtracker_elephant_profile_t profile_id, 1596 bcm_flowtracker_elephant_profile_info_t *profile); 1597 1598 extern int 1599 _bcm_th_ft_elephant_profile_get_all( 1600 int unit, 1601 int max, 1602 bcm_flowtracker_elephant_profile_t *profile_list, 1603 int *count); 1604 1605 extern int 1606 _bcm_th_ft_group_elephant_profile_attach( 1607 int unit, 1608 bcm_flowtracker_group_t flow_group_id, 1609 bcm_flowtracker_elephant_profile_t profile_id); 1610 1611 extern int 1612 _bcm_th_ft_group_elephant_profile_attach_get( 1613 int unit, 1614 bcm_flowtracker_group_t flow_group_id, 1615 bcm_flowtracker_elephant_profile_t *profile_id); 1616 1617 extern int 1618 _bcm_th_ft_group_elephant_profile_detach(int unit, 1619 bcm_flowtracker_group_t flow_group_id); 1620 1621 extern int _bcm_th_ft_sync(int unit); 1622 1623 extern int 1624 _bcm_th_ft_flow_group_tracking_params_set( 1625 int unit, 1626 bcm_flowtracker_group_t id, 1627 int num_tracking_params, 1628 bcm_flowtracker_tracking_param_info_t *list_of_tracking_params); 1629 1630 extern int 1631 _bcm_th_ft_flow_group_tracking_params_get( 1632 int unit, 1633 bcm_flowtracker_group_t id, 1634 int max_size, 1635 int *list_size, 1636 bcm_flowtracker_tracking_param_info_t *list_of_tracking_params); 1637 1638 #endif /* INCLUDE_FLOWTRACKER */ 1639 1640 /* Congestion Monitoring App Microburst detection APIs */ 1641 extern int bcm_th_cosq_burst_monitor_dma_config_set(int unit, 1642 uint32 host_mem_size, 1643 uint32 **host_mem_add); 1644 extern int bcm_th_cosq_burst_monitor_dma_config_get(int unit, 1645 uint32 *host_mem_size, 1646 uint32 **host_mem_add); 1647 extern int bcm_th_cosq_burst_monitor_set(int unit, int num_gports, 1648 bcm_gport_t *gport_list); 1649 extern int bcm_th_cosq_burst_monitor_get(int unit, int max_gports, 1650 bcm_gport_t *gport_list, 1651 int *num_gports); 1652 extern int bcm_th_cosq_burst_monitor_dma_config_reset(int unit); 1653 1654 extern int 1655 _bcm_field_th_ddrop_profile_alloc(int unit, _field_entry_t *f_ent, 1656 _field_action_t *fa); 1657 extern int 1658 _bcm_field_th_dredirect_profile_alloc(int unit, _field_entry_t *f_ent, 1659 _field_action_t *fa); 1660 1661 #endif /* BCM_TOMAHAWK_SUPPORT */ 1662 1663 #endif /* !_BCM_INT_TOMAHAWK_H_ */