flowtracker_int.h (25903B)
1 /*! \file flowtracker_int.h 2 * 3 * Flowtracker module internal header file. 4 * This file contains Flowtracker definitions internal 5 * to the flowtracker module itself. 6 */ 7 /* 8 * This license is set out in https://raw.githubusercontent.com/Broadcom-Network-Switching-Software/OpenBCM/master/Legal/LICENSE file. 9 * 10 * Copyright 2007-2020 Broadcom Inc. All rights reserved. 11 */ 12 13 #ifndef BCMINT_LTSW_FLOWTRACKER_INT_H 14 #define BCMINT_LTSW_FLOWTRACKER_INT_H 15 16 #include <sal/sal_types.h> 17 #include <bcm/types.h> 18 #include <bcm/flowtracker.h> 19 #include <bcmltd/chip/bcmltd_mon_constants.h> 20 #include <bcm_int/ltsw/collector.h> 21 22 /* Get the FT_INFO struct for the unit */ 23 #define FT_INFO_GET(_u) ft_glb_info[(_u)] 24 25 /* Max number of EM groups supported */ 26 #define FT_MAX_EM_GROUPS 4 27 28 /* Max number of flow groups supported */ 29 #define FT_MAX_FLOW_GROUPS 256 30 31 /* Max number of action parameters for a flow group action */ 32 #define FT_MAX_GROUP_ACTION_PARAMS 2 33 34 /* Max number of collectors */ 35 #define FT_MAX_COLLECTORS 1 36 37 /* Max number of export profiles */ 38 #define FT_MAX_EXPORT_PROFILES 1 39 40 /* Max number of export templates */ 41 #define FT_MAX_EXPORT_TEMPLATES 4 42 43 /* Max number of elephant profiles */ 44 #define FT_MAX_ELEPHANT_PROFILES 4 45 46 /* Default value of export interval in elephant mode. 50 ms */ 47 #define FT_ELPH_DEF_EXPORT_INTERVAL_MSECS (50) 48 49 /* Default value of export interval. 100 ms */ 50 #define FT_DEF_EXPORT_INTERVAL_MSECS (100) 51 52 /* Default value for collector id */ 53 #define FT_COLLECTOR_INVALID_COLLECTOR_ID 0xffffffff 54 55 /* Elephant rate thresholds must be configured in steps of 80 kbits/sec */ 56 #define FT_ELPH_RATE_THRESHOLD_STEP 80 57 58 /* Miscellaneous Flowtracker Elephant defines. */ 59 #define FT_ELEPHANT_MAX_PROMOTION_FILTERS 2 60 61 /* Maximum number of elephant profiles */ 62 #define FT_MAX_ELEPHANT_PROFILES 4 63 64 /* Aging interval must be in steps of 1 sec */ 65 #define FT_AGING_INTERVAL_STEP_MSECS (1000) 66 67 /* Aging interval can be up to 255 times scan interval */ 68 #define FT_AGING_INTERVAL_SCAN_MULTIPLE (255) 69 70 /* Valid range of Set_ID is 256 to 65535. 71 * Not checking 65535 condition since its satisfied 72 * by the fact that set_id is uint16 73 */ 74 #define FT_TEMPLATE_SET_ID_VALID(set_id) (set_id >=256) 75 76 /* Max value of scan interval. 500 ms */ 77 #define FT_MAX_SCAN_INTERVAL_USECS (500 * 1000) 78 79 /* Internal data structures */ 80 81 typedef enum _ft_ha_sub_comp_id_e { 82 FT_SUB_COMP_ID_GLOBAL = 0, 83 FT_SUB_COMP_ID_FLOW_GROUP_POOL = 1, 84 FT_SUB_COMP_ID_COLLECTOR_POOL = 2, 85 FT_SUB_COMP_ID_EXPORT_TEMPLATE_POOL = 3, 86 FT_SUB_COMP_ID_EXPORT_PROFILE_POOL = 4, 87 FT_SUB_COMP_ID_ELEPHANT_PROFILE_POOL = 5 88 }ft_ha_sub_comp_id_t; 89 90 #define FT_HA_SUB_COMP_ID_STRINGS { \ 91 "bcmFtGlobal", \ 92 "bcmFtFlowGroup", \ 93 "bcmFtColloctor", \ 94 "bcmFtExportTemplate", \ 95 "bcmFtExportProfile", \ 96 "bcmFtElephantProfile" \ 97 } 98 99 typedef enum _ft_hitbit_type_e { 100 FT_HITBIT_TYPE_1x = 1, 101 FT_HITBIT_TYPE_2x = 2, 102 FT_HITBIT_TYPE_4x = 3, 103 FT_HITBIT_TYPE_MAX 104 }ft_hitbit_type_t; 105 106 typedef enum ft_hw_learn_flow_cmd_type_e { 107 FT_HW_LEARN_FLOW_CMD_DELETE = 1, 108 FT_HW_LEARN_FLOW_CMD_MODIFY = 2 109 }ft_hw_learn_flow_cmd_type_t; 110 111 typedef enum ft_hw_learn_type_e { 112 FT_HW_LEARN_DISABLE = 0, 113 FT_HW_LEARN_ENABLE = 1, 114 FT_HW_LEARN_ENABLE_WO_EAPP = 2 115 }ft_hw_learn_type_t; 116 117 #define FT_GRP_ACTION_GPORT_MPLS (1<<0) 118 #define FT_GRP_ACTION_GPORT_WLAN (1<<1) 119 #define FT_GRP_ACTION_GPORT_VXLAN (1<<2) 120 #define FT_GRP_ACTION_GPORT_VLAN (1<<3) 121 #define FT_GRP_ACTION_GPORT_NIV (1<<4) 122 #define FT_GRP_ACTION_GPORT_MIM (1<<5) 123 #define FT_GRP_ACTION_GPORT_FLOW (1<<6) 124 #define FT_GRP_ACTION_GPORT_MODPORT (1<<7) 125 #define FT_GRP_ACTION_EGR_OBJ_OVERLAY (1<<8) 126 #define FT_GRP_ACTION_EGR_OBJ_ECMP_GROUP_OVERLAY (1<<9) 127 #define FT_GRP_ACTION_L2_MCAST (1<<10) 128 #define FT_GRP_ACTION_L3_MCAST (1<<11) 129 130 /* Internal data structure to store 131 * global flowtracker information. 132 */ 133 typedef struct _bcm_int_flowtracker_info_s { 134 /* Flowtracker enable/disable */ 135 uint32_t enable; 136 137 /* Is flowtracker initialized ? */ 138 bool init; 139 140 /* Is flowtracker app using host mem ? */ 141 bool host_mem; 142 143 /* Is elephant mode enabled */ 144 bool elph_mode; 145 146 /* Num pipes in the devices */ 147 int num_pipes; 148 149 /* IPFIX observation domain Id */ 150 bcm_flowtracker_ipfix_observation_domain_t observation_domain_id; 151 152 /* Max flows */ 153 uint32_t max_flows[BCM_PIPES_MAX]; 154 155 /* Total max flows */ 156 uint32_t max_flows_total; 157 158 /* Scan interval in microseconds */ 159 uint32_t scan_interval_usecs; 160 161 /* Is flow start timestamp feature enable */ 162 bool flow_start_ts; 163 164 /* Max number of flow groups. */ 165 uint32_t max_flow_groups; 166 167 /* The maximum MTU size that is possible for export packets*/ 168 uint16_t max_export_pkt_length; 169 170 /* Flex counter id */ 171 uint32_t flex_counter_id; 172 173 /* 2x hitbit flex counter id */ 174 uint32_t db_wide_flex_counter_id; 175 176 /* 4x hitbit flex counter id */ 177 uint32_t qd_wide_flex_counter_id; 178 179 /* 2x hitbit flex counter group action hw idx */ 180 uint32_t db_wide_flex_counter_grp_act_hw_idx; 181 182 /* 4x hitbit flex counter group action hw idx */ 183 uint32_t qd_wide_flex_counter_grp_act_hw_idx; 184 185 /* Flex counter stat id */ 186 uint32_t flex_ctr_stat_id; 187 188 /* 2x Hit bit flex counter stat id */ 189 uint32_t db_wide_hitbit_flex_ctr_stat_id; 190 191 /* 4x Hit bit flex counter stat id */ 192 uint32_t qd_wide_hitbit_flex_ctr_stat_id; 193 194 /* 2x Hit bit flex counter grp action stat id */ 195 uint32_t db_wide_hitbit_flex_ctr_grp_act_stat_id; 196 197 /* 4x Hit bit flex counter grp action stat id */ 198 uint32_t qd_wide_hitbit_flex_ctr_grp_act_stat_id; 199 200 /* HW learning enabled */ 201 uint8_t hw_learn_en; 202 203 /* UFT mode */ 204 uint8_t uft_mode; 205 206 /* Group flags */ 207 uint32_t grp_action_flags[FT_MAX_FLOW_GROUPS]; 208 } bcm_int_ft_info_t; 209 210 /* Group actions info */ 211 typedef struct _bcm_int_ft_group_action_info_s { 212 /* Action */ 213 bcm_flowtracker_group_action_t action; 214 215 /* Params */ 216 uint32 params[FT_MAX_GROUP_ACTION_PARAMS]; 217 } bcm_int_ft_group_action_info_t; 218 219 /* 220 * Internal data structure to store per flow_group information 221 */ 222 typedef struct _bcm_int_ft_flow_group_info_s { 223 /* Software ID of the flow_group */ 224 bcm_flowtracker_group_t flow_group_id; 225 /* Aging interval in msecs */ 226 uint32 aging_interval_msecs; 227 /* Max flows that can be learned on this group */ 228 uint32 flow_limit; 229 /* Collector associated with the flow group */ 230 int collector_id; 231 /* Collector associated with the flow group */ 232 int export_profile_id; 233 /* Template associated with the flow group */ 234 uint16 template_id; 235 236 /* Elephant profle Id */ 237 bcm_flowtracker_elephant_profile_t elph_profile_id; 238 239 /* QoS profile Id */ 240 uint32 qos_profile_id; 241 242 /* Number of actions on the group */ 243 uint16 num_actions; 244 245 bcm_int_ft_group_action_info_t action_list[FLOWTRACKER_ACTIONS_MAX]; 246 247 /* 248 * Number of export triggers which will result in 249 * the export of the packets 250 */ 251 uint32 num_export_triggers; 252 253 /* 254 * List of export triggers which will result in 255 * the export of the packets 256 */ 257 bcm_flowtracker_export_trigger_t 258 export_triggers[FLOWTRACKER_EXPORT_TRIGGERS_MAX]; 259 260 /* Field group corresponding to the flow group. */ 261 bcm_field_group_t field_group[BCM_PIPES_MAX]; 262 263 /* Number of Tracking Params on the group */ 264 int num_tracking_params; 265 266 /* List of tracking params */ 267 bcm_flowtracker_tracking_param_info_t 268 tracking_params[FLOWTRACKER_TRACKING_PARAMETERS_MAX]; 269 270 /* Flow count */ 271 uint32_t flow_count; 272 273 /* Enable/disable the group */ 274 bool enable; 275 } bcm_int_ft_flow_group_info_t; 276 277 typedef struct bcm_int_ft_template_transmit_config_s { 278 uint32_t export_template_id; 279 280 bcm_ltsw_collector_transport_type_t collector_type; 281 282 uint32_t collector_ipv4_id; 283 284 uint32_t collector_ipv6_id; 285 286 uint32_t transmit_interval; 287 288 uint32_t initial_burst; 289 290 } bcm_int_ft_template_transmit_config_t; 291 292 typedef struct bcm_int_ft_group_col_map_s { 293 294 uint32_t group_col_map_id; 295 296 uint32_t ft_group_id; 297 298 bcm_ltsw_collector_transport_type_t collector_type; 299 300 uint32_t collector_ipv4_id; 301 302 303 uint32_t collector_ipv6_id; 304 305 uint32_t export_template_id; 306 307 uint32_t export_profile_id; 308 } bcm_int_ft_group_col_map_t; 309 310 /* List of supported Info elements that can be exported by app */ 311 typedef enum ft_template_info_elem_e { 312 FT_TEMPLATE_INFO_ELEM_SRC_IPV4 = 0, 313 FT_TEMPLATE_INFO_ELEM_DST_IPV4 = 1, 314 FT_TEMPLATE_INFO_ELEM_L4_SRC_PORT = 2, 315 FT_TEMPLATE_INFO_ELEM_L4_DST_PORT = 3, 316 FT_TEMPLATE_INFO_ELEM_IP_PROTOCOL = 4, 317 FT_TEMPLATE_INFO_ELEM_PKT_TOTAL_COUNT = 5, 318 FT_TEMPLATE_INFO_ELEM_BYTE_TOTAL_COUNT = 6, 319 FT_TEMPLATE_INFO_ELEM_FLOW_START_TS_MSEC = 7, 320 FT_TEMPLATE_INFO_ELEM_OBS_TS_MSEC = 8, 321 FT_TEMPLATE_INFO_ELEM_GROUP_ID = 9, 322 FT_TEMPLATE_INFO_ELEM_VNID = 10, 323 FT_TEMPLATE_INFO_ELEM_CUSTOM = 11, 324 FT_TEMPLATE_INFO_ELEM_INNER_SRC_IPV4 = 12, 325 FT_TEMPLATE_INFO_ELEM_INNER_DST_IPV4 = 13, 326 FT_TEMPLATE_INFO_ELEM_INNER_L4_SRC_PORT = 14, 327 FT_TEMPLATE_INFO_ELEM_INNER_L4_DST_PORT = 15, 328 FT_TEMPLATE_INFO_ELEM_INNER_IP_PROTOCOL = 16, 329 FT_TEMPLATE_INFO_ELEM_FLOW_VIEW_ID = 17, 330 FT_TEMPLATE_INFO_ELEM_FLOW_VIEW_START_TS = 18, 331 FT_TEMPLATE_INFO_ELEM_SAMPLE_COUNT = 19, 332 FT_TEMPLATE_INFO_ELEM_FLOW_COUNT = 20, 333 FT_TEMPLATE_INFO_ELEM_DROP_PKT_COUNT = 21, 334 FT_TEMPLATE_INFO_ELEM_DROP_BYTE_COUNT = 22, 335 FT_TEMPLATE_INFO_ELEM_EGR_PORT = 23, 336 FT_TEMPLATE_INFO_ELEM_QUEUE_ID = 24, 337 FT_TEMPLATE_INFO_ELEM_QUEUE_BUF_USAGE = 25, 338 FT_TEMPLATE_INFO_ELEM_INNER_SRC_IPV6 = 26, 339 FT_TEMPLATE_INFO_ELEM_INNER_DST_IPV6 = 27, 340 FT_TEMPLATE_MAX_INFO_ELEMENTS 341 } ft_template_info_elem_t; 342 343 /* Map export elements to internal names */ 344 typedef struct bcm_ltsw_ft_template_support_mapping_s { 345 bcm_flowtracker_export_element_type_t element; 346 ft_template_info_elem_t int_element; 347 uint16_t data_size; 348 } bcm_ltsw_ft_template_support_mapping_t; 349 350 typedef struct bcm_int_ft_export_element_s { 351 352 ft_template_info_elem_t element; 353 354 uint16 data_size; 355 356 uint16 id; 357 358 uint8 enterprise; 359 } bcm_int_ft_export_element_t; 360 361 typedef struct bcm_int_ft_export_template_info_s { 362 bcm_flowtracker_export_template_t template_id; 363 364 uint16_t set_id; 365 366 int interval_secs; 367 368 int initial_burst; 369 370 int num_export_elements; 371 372 bcm_int_ft_export_element_t elements[FT_TEMPLATE_MAX_INFO_ELEMENTS]; 373 } bcm_int_ft_export_template_info_t; 374 375 /* Externs to global variables */ 376 extern bcm_int_ft_info_t *ft_glb_info[BCM_MAX_NUM_UNITS]; 377 378 /* Chip common driver routines */ 379 extern int 380 bcm_ltsw_flowtracker_init_common(int unit); 381 382 extern int 383 bcm_ltsw_flowtracker_detach_common(int unit); 384 385 extern int 386 bcm_ltsw_flowtracker_group_create_common( 387 int unit, 388 uint32 options, 389 bcm_flowtracker_group_t *flow_group_id, 390 bcm_flowtracker_group_info_t *flow_group_info); 391 392 extern int bcm_ltsw_flowtracker_group_get_common( 393 int unit, 394 bcm_flowtracker_group_t id, 395 bcm_flowtracker_group_info_t *flow_group_info); 396 397 extern int bcm_ltsw_flowtracker_group_get_all_common( 398 int unit, 399 int max_size, 400 bcm_flowtracker_group_t *flow_group_list, 401 int *list_size); 402 403 extern int bcm_ltsw_flowtracker_group_data_get_common( 404 int unit, 405 bcm_flowtracker_group_t flow_group_id, 406 bcm_flowtracker_flow_key_t *flow_key, 407 bcm_flowtracker_flow_data_t *flow_data); 408 409 extern int bcm_ltsw_flowtracker_group_flow_count_get_common( 410 int unit, 411 bcm_flowtracker_group_t id, 412 uint32 *flow_count); 413 414 extern int bcm_ltsw_flowtracker_group_actions_set_common( 415 int unit, 416 bcm_flowtracker_group_t id, 417 uint32 flags, 418 int num_actions, 419 bcm_flowtracker_group_action_info_t *action_list); 420 421 extern int bcm_ltsw_flowtracker_group_age_timer_set_common( 422 int unit, 423 bcm_flowtracker_group_t id, 424 uint32 aging_interval_ms); 425 426 extern int bcm_ltsw_flowtracker_group_flow_limit_set_common( 427 int unit, 428 bcm_flowtracker_group_t id, 429 uint32 flow_limit); 430 431 extern int bcm_ltsw_flowtracker_group_export_trigger_set_common( 432 int unit, 433 bcm_flowtracker_group_t id, 434 bcm_flowtracker_export_trigger_info_t *export_trigger_info); 435 436 extern int 437 bcm_ltsw_flowtracker_group_tracking_params_set_common( 438 int unit, 439 bcm_flowtracker_group_t id, 440 int num_tracking_params, 441 bcm_flowtracker_tracking_param_info_t *list_of_tracking_params); 442 443 extern int bcm_ltsw_flowtracker_elephant_profile_create_common( 444 int unit, 445 uint32_t options, 446 bcm_flowtracker_elephant_profile_info_t *profile, 447 bcm_flowtracker_elephant_profile_t *profile_id); 448 449 extern int 450 bcm_ltsw_flowtracker_group_collector_detach_common( 451 int unit, 452 bcm_flowtracker_group_t flow_group_id, 453 bcm_collector_t collector_id, 454 int export_profile_id, 455 bcm_flowtracker_export_template_t template_id); 456 457 extern int bcm_ltsw_flowtracker_group_elephant_profile_attach_get_common( 458 int unit, 459 bcm_flowtracker_group_t flow_group_id, 460 bcm_flowtracker_elephant_profile_t *profile_id); 461 462 extern int bcm_ltsw_flowtracker_group_elephant_profile_detach_common( 463 int unit, 464 bcm_flowtracker_group_t flow_group_id); 465 466 extern int 467 bcm_ltsw_flowtracker_group_collector_attach_common( 468 int unit, 469 bcm_flowtracker_group_t flow_group_id, 470 bcm_collector_t collector_id, 471 int export_profile_id, 472 bcm_flowtracker_export_template_t template_id); 473 474 extern int 475 bcm_ltsw_flowtracker_template_transmit_config_set_common( 476 int unit, 477 bcm_flowtracker_export_template_t template_id, 478 bcm_flowtracker_collector_t collector_id, 479 bcm_flowtracker_template_transmit_config_t *config); 480 481 extern int 482 bcm_ltsw_flowtracker_template_transmit_config_get_common( 483 int unit, 484 bcm_flowtracker_export_template_t template_id, 485 bcm_flowtracker_collector_t collector_id, 486 bcm_flowtracker_template_transmit_config_t *config); 487 488 extern int 489 bcm_ltsw_flowtracker_group_elephant_profile_attach_common( 490 int unit, 491 bcm_flowtracker_group_t flow_group_id, 492 bcm_flowtracker_elephant_profile_t profile_id); 493 494 extern int bcm_ltsw_flowtracker_group_actions_get_common( 495 int unit, 496 bcm_flowtracker_group_t flow_group_id, 497 uint32 flags, 498 int max_actions, 499 bcm_flowtracker_group_action_info_t *action_list, 500 int *num_actions); 501 502 extern int bcm_ltsw_flowtracker_group_age_timer_get_common( 503 int unit, 504 bcm_flowtracker_group_t id, 505 uint32 *aging_interval_ms); 506 507 extern int bcm_ltsw_flowtracker_group_export_trigger_get_common( 508 int unit, 509 bcm_flowtracker_group_t id, 510 bcm_flowtracker_export_trigger_info_t *export_trigger_info); 511 512 extern int bcm_ltsw_flowtracker_group_flow_limit_get_common( 513 int unit, 514 bcm_flowtracker_group_t id, 515 uint32 *flow_limit); 516 517 extern int 518 bcm_ltsw_flowtracker_group_tracking_params_get_common( 519 int unit, 520 bcm_flowtracker_group_t id, 521 int max_size, 522 bcm_flowtracker_tracking_param_info_t *list_of_tracking_params, 523 int *list_size); 524 525 extern int bcm_ltsw_flowtracker_elephant_profile_get_common( 526 int unit, 527 bcm_flowtracker_elephant_profile_t profile_id, 528 bcm_flowtracker_elephant_profile_info_t *profile); 529 530 extern int bcm_ltsw_flowtracker_export_template_destroy_common(int unit, 531 bcm_flowtracker_export_template_t id); 532 533 extern int bcm_ltsw_flowtracker_export_template_get_common( 534 int unit, 535 bcm_flowtracker_export_template_t id, 536 uint16 *set_id, 537 int max_size, 538 bcm_flowtracker_export_element_info_t *list_of_export_elements, 539 int *list_size); 540 541 extern int 542 bcm_ltsw_flowtracker_export_template_create_common( 543 int unit, 544 uint32 options, 545 bcm_flowtracker_export_template_t *id, 546 uint16 set_id, 547 int num_export_elements, 548 bcm_flowtracker_export_element_info_t *list_of_export_elements); 549 550 extern int bcm_ltsw_flowtracker_elephant_profile_destroy_common(int unit, 551 bcm_flowtracker_elephant_profile_t profile_id); 552 553 extern int bcm_ltsw_flowtracker_elephant_profile_destroy_common(int unit, 554 bcm_flowtracker_elephant_profile_t profile_id); 555 556 extern int bcm_ltsw_flowtracker_elephant_profile_get_all_common( 557 int unit, 558 int max, 559 bcm_flowtracker_elephant_profile_t *profile_list, 560 int *count); 561 562 extern int bcm_ltsw_flowtracker_elephant_profile_create_common(int unit, 563 uint32_t options, 564 bcm_flowtracker_elephant_profile_info_t *profile, 565 bcm_flowtracker_elephant_profile_t *profile_id); 566 567 extern int bcm_ltsw_flowtracker_group_elephant_profile_attach_get_common( 568 int unit, 569 bcm_flowtracker_group_t flow_group_id, 570 bcm_flowtracker_elephant_profile_t *profile_id); 571 572 extern int 573 bcm_ltsw_flowtracker_group_collector_detach_common(int unit, 574 bcm_flowtracker_group_t flow_group_id, 575 bcm_collector_t collector_id, 576 int export_profile_id, 577 bcm_flowtracker_export_template_t template_id); 578 579 extern int 580 bcm_ltsw_flowtracker_template_transmit_config_set_common(int unit, 581 bcm_flowtracker_export_template_t template_id, 582 bcm_flowtracker_collector_t collector_id, 583 bcm_flowtracker_template_transmit_config_t *config); 584 585 extern int 586 bcm_ltsw_flowtracker_template_transmit_config_get_common(int unit, 587 bcm_flowtracker_export_template_t template_id, 588 bcm_flowtracker_collector_t collector_id, 589 bcm_flowtracker_template_transmit_config_t *config); 590 591 extern int 592 bcm_ltsw_flowtracker_group_elephant_profile_attach_common(int unit, 593 bcm_flowtracker_group_t flow_group_id, 594 bcm_flowtracker_elephant_profile_t profile_id); 595 596 extern int bcm_ltsw_flowtracker_group_elephant_profile_detach_common( 597 int unit, 598 bcm_flowtracker_group_t flow_group_id); 599 600 extern int 601 bcm_ltsw_flowtracker_group_collector_attach_common(int unit, 602 bcm_flowtracker_group_t flow_group_id, 603 bcm_collector_t collector_id, 604 int export_profile_id, 605 bcm_flowtracker_export_template_t template_id); 606 607 extern int bcm_ltsw_flowtracker_group_collector_attach_get_all_common( 608 int unit, 609 bcm_flowtracker_group_t flow_group_id, 610 int max_list_size, 611 bcm_flowtracker_collector_t *list_of_collectors, 612 int *list_of_export_profile_ids, 613 bcm_flowtracker_export_template_t *list_of_templates, 614 int *list_size); 615 extern int bcm_ltsw_flowtracker_group_destroy_common( 616 int unit, 617 bcm_flowtracker_group_t id); 618 619 extern int bcm_ltsw_flowtracker_group_clear_common( 620 int unit, 621 bcm_flowtracker_group_t id, 622 uint32 flags); 623 624 extern int bcm_ltsw_flowtracker_static_flow_get_all_common( 625 int unit, 626 bcm_flowtracker_group_t flow_group_id, 627 int max_size, 628 bcm_flowtracker_flow_key_t *flow_key_arr, 629 int *list_size); 630 631 extern int bcm_ltsw_flowtracker_static_flow_delete_all_common( 632 int unit, 633 bcm_flowtracker_group_t flow_group_id); 634 635 extern int bcm_ltsw_flowtracker_static_flow_delete_common( 636 int unit, 637 bcm_flowtracker_group_t flow_group_id, 638 bcm_flowtracker_flow_key_t *flow_key); 639 640 extern int bcm_ltsw_flowtracker_static_flow_add_common( 641 int unit, 642 bcm_flowtracker_group_t flow_group_id, 643 bcm_flowtracker_flow_key_t *flow_key); 644 645 extern int bcm_ltsw_flowtracker_group_flow_delete_common( 646 int unit, 647 bcm_flowtracker_group_t flow_group_id, 648 bcm_flowtracker_group_flow_action_info_t *action_info); 649 650 extern int bcm_ltsw_flowtracker_group_flow_action_update_common( 651 int unit, 652 bcm_flowtracker_group_t flow_group_id, 653 bcm_flowtracker_group_flow_action_info_t *action_info, 654 int num_actions, 655 bcm_flowtracker_group_action_info_t *action_list); 656 657 /* Logical tables access routines */ 658 659 extern int 660 bcm_ltsw_flowtracker_hw_learn_global_enable_set(int unit, bool enable); 661 662 extern int 663 bcm_ltsw_flowtracker_control_entry_get(int unit, 664 bcm_int_ft_info_t *entry); 665 extern int 666 bcm_ltsw_flowtracker_control_entry_set(int unit, 667 bool update, 668 bcm_int_ft_info_t *entry); 669 extern int 670 bcm_ltsw_flowtracker_group_entry_get(int unit, 671 bcm_int_ft_flow_group_info_t *entry); 672 extern int 673 bcm_ltsw_flowtracker_group_entry_set(int unit, 674 bool update, 675 bcm_int_ft_flow_group_info_t *entry); 676 extern int 677 bcm_ltsw_flowtracker_group_entry_delete(int unit, 678 int flow_group_id); 679 extern int 680 bcm_ltsw_flowtracker_group_status_get(int unit, 681 bcm_int_ft_flow_group_info_t *entry); 682 683 extern int 684 bcm_ltsw_flowtracker_group_flow_data_get( 685 int unit, 686 bcm_flowtracker_group_t flow_group_id, 687 bcm_flowtracker_flow_key_t *flow_key, 688 bcm_flowtracker_flow_data_t *flow_data); 689 690 extern int bcm_ltsw_flowtracker_group_collector_map_entry_set(int unit, 691 bool update, 692 bcm_int_ft_group_col_map_t *entry); 693 694 extern int 695 bcm_ltsw_flowtracker_group_collector_map_delete(int unit, 696 int flow_group_id); 697 698 extern int bcm_ltsw_flowtracker_is_collector_attached(int unit, 699 uint32_t flow_group_id); 700 701 extern int bcm_ltsw_flowtracker_elephant_profile_entry_set(int unit, 702 bool update, 703 int *id, 704 uint32_t options, 705 bcm_flowtracker_elephant_profile_info_t *entry); 706 707 extern int bcm_ltsw_flowtracker_template_transmit_config_entry_get(int unit, 708 bcm_int_ft_template_transmit_config_t *entry); 709 710 extern int bcm_ltsw_flowtracker_export_template_entry_update(int unit, 711 bcm_int_ft_template_transmit_config_t * entry); 712 713 extern int bcm_ltsw_flowtracker_group_collector_map_entry_set(int unit, 714 bool update, 715 bcm_int_ft_group_col_map_t *entry); 716 717 extern int 718 bcm_ltsw_flowtracker_group_collector_map_delete(int unit, 719 int flow_group_id); 720 721 extern int bcm_ltsw_flowtracker_is_collector_attached(int unit, 722 uint32_t flow_group_id); 723 724 extern int bcm_ltsw_flowtracker_elephant_profile_entry_set(int unit, 725 bool update, 726 int *id, 727 uint32_t options, 728 bcm_flowtracker_elephant_profile_info_t *entry); 729 730 extern int bcm_ltsw_flowtracker_is_elephant_profile_used( int unit, uint32_t id, bool *is_used); 731 732 extern int bcm_ltsw_flowtracker_elephant_profile_entry_delete(int unit, int id); 733 734 extern int bcm_ltsw_flowtracker_elephant_profile_entry_get(int unit, 735 int id, 736 bcm_flowtracker_elephant_profile_info_t *entry); 737 738 extern int bcm_ltsw_flowtracker_export_template_entry_insert(int unit, 739 bcm_int_ft_export_template_info_t *entry); 740 741 extern int bcm_ltsw_flowtracker_export_template_entry_get(int unit, 742 int id, 743 bcm_int_ft_export_template_info_t *entry); 744 745 extern int bcm_ltsw_flowtracker_is_export_template_used( int unit, uint32_t id, bool *is_used); 746 747 extern int bcm_ltsw_flowtracker_export_template_entry_delete( 748 int unit, 749 bcm_flowtracker_export_template_t id); 750 751 extern int bcm_ltsw_flowtracker_group_collector_map_entry_get(int unit, 752 bcm_int_ft_group_col_map_t *entry); 753 754 extern int 755 bcm_ltsw_flowtracker_group_flow_data_clear_all( 756 int unit, 757 bcm_flowtracker_group_t flow_group_id); 758 759 extern int 760 bcm_ltsw_flowtracker_group_static_flow_entry_delete_all( 761 int unit, 762 bcm_flowtracker_group_t flow_group_id); 763 764 extern int 765 bcm_ltsw_flowtracker_group_static_flow_entry_get_all( 766 int unit, 767 bcm_flowtracker_group_t flow_group_id, 768 int max_size, 769 bcm_flowtracker_flow_key_t *flow_key, 770 int *list_size); 771 extern int 772 bcm_ltsw_flowtracker_group_static_flow_entry_set( 773 int unit, 774 bool del, 775 bcm_flowtracker_group_t flow_group_id, 776 bcm_flowtracker_flow_key_t *flow_key); 777 extern int 778 bcm_ltsw_flowtracker_hw_learn_flow_action_control_set( 779 int unit, 780 ft_hw_learn_flow_cmd_type_t cmd_type, 781 bcm_flowtracker_group_t id, 782 bcm_flowtracker_group_flow_action_info_t *action_info, 783 int num_actions, 784 bcm_int_ft_group_action_info_t *action_list); 785 786 extern int 787 bcm_ltsw_flowtracker_hw_learn_flow_action_state_get( 788 int unit, 789 uint8_t pipe_idx); 790 #endif /* BCMINT_LTSW_FLOWTRACKER_INT_H */