openbcm

Git mirror of https://github.com/Broadcom-Network-Switching-Software/OpenBCM
git clone git://git.finwo.net/mirror/broadcom/openbcm
Log | Files | Refs | README

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