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

flexctr.h (14193B)


      1 /*
      2  * DO NOT EDIT THIS FILE!
      3  * This file is auto-generated.
      4  * Edits to this file will be lost when it is regenerated.
      5  *
      6  * This license is set out in https://raw.githubusercontent.com/Broadcom-Network-Switching-Software/OpenBCM/master/Legal/LICENSE file.
      7  * 
      8  * Copyright 2007-2020 Broadcom Inc. All rights reserved.
      9  */
     10 
     11 #ifndef BCMINT_LTSW_MBCM_FLEXCTR_H
     12 #define BCMINT_LTSW_MBCM_FLEXCTR_H
     13 
     14 #include <bcm/flexctr.h>
     15 
     16 #include <bcm_int/ltsw/flexctr_int.h>
     17 
     18 #include <sal/sal_types.h>
     19 
     20 /*!
     21  * \brief Get flex counter source information.
     22  *
     23  * \param [in] unit Unit Number.
     24  * \param [in] source Flex source.
     25  * \param [out] source_info Flex counter source info.
     26  *
     27  * \retval SHR_E_NONE No errors.
     28  * \retval !SHR_E_NONE Failure.
     29  */
     30 typedef int (*flexctr_source_info_get_f)(
     31     int unit,
     32     int source,
     33     bcmint_flexctr_source_info_t **source_info);
     34 
     35 /*!
     36  * \brief Get flex counter object information.
     37  *
     38  * \param [in] unit Unit Number.
     39  * \param [in] object Flex object.
     40  * \param [out] object_info Flex counter object info.
     41  *
     42  * \retval SHR_E_NONE No errors.
     43  * \retval !SHR_E_NONE Failure.
     44  */
     45 typedef int (*flexctr_object_info_get_f)(
     46     int unit,
     47     int object,
     48     bcmint_flexctr_object_info_t **object_info);
     49 
     50 /*!
     51  * \brief Get overlaid objects for a specified flexctr object.
     52  *
     53  * \param [in] unit Unit Number.
     54  * \param [in] object Flex counter object.
     55  * \param [in] array_size Number of elements in overlay object array, 0 to query.
     56  * \param [out] overlay_object_array Overlay object array.
     57  * \param [out] count The actual number of overlaid objects.
     58  *
     59  * \retval SHR_E_NONE No errors.
     60  * \retval !SHR_E_NONE Failure.
     61  */
     62 typedef int (*flexctr_object_overlay_multi_get_f)(
     63     int unit,
     64     bcm_flexctr_object_t object,
     65     int array_size,
     66     bcm_flexctr_object_t *overlay_object_array,
     67     int *count);
     68 
     69 /*!
     70  * \brief Get flex counter object enumeration for given object ID.
     71  *
     72  * \param [in] unit Unit Number.
     73  * \param [in] object Flex counter object.
     74  * \param [in] object_id Flex counter object ID.
     75  * \param [out] symbol Object symbol in SDKLT.
     76  *
     77  * \retval SHR_E_NONE No errors.
     78  * \retval !SHR_E_NONE Failure.
     79  */
     80 typedef int (*flexctr_object_enum_get_f)(
     81     int unit,
     82     int object,
     83     uint32_t object_id,
     84     const char **symbol);
     85 
     86 /*!
     87  * \brief Flex counter trigger interval validation function.
     88  *
     89  * \param [in] unit Unit Number.
     90  * \param [in] interval Flex counter trigger interval.
     91  *
     92  * \retval SHR_E_NONE No errors.
     93  * \retval !SHR_E_NONE Failure.
     94  */
     95 typedef int (*flexctr_trigger_interval_validate_f)(
     96     int unit,
     97     int interval);
     98 
     99 /*!
    100  * \brief Flex counter flex action range get function.
    101  *
    102  * \param [in] unit Unit Number.
    103  * \param [in] stage Stage id.
    104  * \param [out] min Minimum flex action ID.
    105  * \param [out] max Maximum flex action ID.
    106  *
    107  * \retval SHR_E_NONE No errors.
    108  * \retval !SHR_E_NONE Failure.
    109  */
    110 typedef int (*flexctr_flex_action_range_get_f)(
    111     int unit,
    112     int stage,
    113     uint32_t *min,
    114     uint32_t *max);
    115 
    116 /*!
    117  * \brief Get flex counter packet attribute information.
    118  *
    119  * \param [in] unit Unit Number.
    120  * \param [in] attr_type Packet attribute selector type.
    121  * \param [out] pkt_attr_info Flex counter packet attribute info.
    122  *
    123  * \retval SHR_E_NONE No errors.
    124  * \retval !SHR_E_NONE Failure.
    125  */
    126 typedef int (*flexctr_pkt_attr_info_get_f)(
    127     int unit,
    128     int attr_type,
    129     bcmint_flexctr_pkt_attr_info_t **pkt_attr_info);
    130 
    131 /*!
    132  * \brief Get flex counter packet attribute bus information.
    133  *
    134  * \param [in] unit Unit Number.
    135  * \param [in] stage Stage id.
    136  * \param [in] bit_pos Bit position in packet attribute bus.
    137  * \param [out] pkt_attr_bus_info Flex counter packet attribute bus info.
    138  *
    139  * \retval SHR_E_NONE No errors.
    140  * \retval !SHR_E_NONE Failure.
    141  */
    142 typedef int (*flexctr_pkt_attr_bus_info_get_f)(
    143     int unit,
    144     int stage,
    145     int bit_pos,
    146     bcmint_flexctr_pkt_attr_bus_info_t **pkt_attr_bus_info);
    147 
    148 /*!
    149  * \brief Get flex counter packet type attribute value.
    150  *
    151  * \param [in] unit Unit Number.
    152  * \param [in] pkt_type Flex counter packet type enumeration in HSDK API.
    153  * \param [out] value Flex counter packet type attribute value.
    154  *
    155  * \retval SHR_E_NONE No errors.
    156  * \retval !SHR_E_NONE Failure.
    157  */
    158 typedef int (*flexctr_pkt_type_value_get_f)(
    159     int unit,
    160     int pkt_type,
    161     uint32_t *value);
    162 
    163 /*!
    164  * \brief Get flex counter VLAN tag attribute value.
    165  *
    166  * \param [in] unit Unit Number.
    167  * \param [in] vlan_tag Flex counter VLAN tag enumeration in HSDK API.
    168  * \param [out] value Flex counter VLAN tag attribute value.
    169  *
    170  * \retval SHR_E_NONE No errors.
    171  * \retval !SHR_E_NONE Failure.
    172  */
    173 typedef int (*flexctr_vlan_tag_value_get_f)(
    174     int unit,
    175     int vlan_tag,
    176     uint32_t *value);
    177 
    178 /*!
    179  * \brief Get field opaque object value for specific flex counter action and counter index.
    180  *
    181  * \param [in] unit Unit Number.
    182  * \param [in] stat_counter_id Flex counter action identifier.
    183  * \param [in] counter_index Flex counter index.
    184  * \param [in] size Element number of object value array.
    185  * \param [out] obj_val Object value array.
    186  *
    187  * \retval SHR_E_NONE No errors.
    188  * \retval !SHR_E_NONE Failure.
    189  */
    190 typedef int (*flexctr_field_opaque_object_value_get_f)(
    191     int unit,
    192     uint32_t stat_counter_id,
    193     uint32_t counter_index,
    194     uint32_t size,
    195     uint32_t *obj_val);
    196 
    197 /*!
    198  * \brief Egress flex counter pre-select set.
    199  *
    200  * \param [in] unit Unit Number.
    201  * \param [in] val Pre-select value.
    202  *
    203  * \retval SHR_E_NONE No errors.
    204  * \retval !SHR_E_NONE Failure.
    205  */
    206 typedef int (*flexctr_egr_presel_set_f)(
    207     int unit,
    208     int val);
    209 
    210 /*!
    211  * \brief Egress flex counter pre-select get.
    212  *
    213  * \param [in] unit Unit Number.
    214  * \param [out] val Pre-select value.
    215  *
    216  * \retval SHR_E_NONE No errors.
    217  * \retval !SHR_E_NONE Failure.
    218  */
    219 typedef int (*flexctr_egr_presel_get_f)(
    220     int unit,
    221     int *val);
    222 
    223 /*!
    224  * \brief Get chip specific action scale enum map.
    225  *
    226  * \param [in] unit Unit Number.
    227  * \param [out] map Flexctr scale enum map.
    228  * \param [out] count Element count of scale enum array.
    229  *
    230  * \retval SHR_E_NONE No errors.
    231  * \retval !SHR_E_NONE Failure.
    232  */
    233 typedef int (*flexctr_action_scale_enum_map_get_f)(
    234     int unit,
    235     const bcmint_flexctr_enum_map_t **map,
    236     uint32_t *count);
    237 
    238 /*!
    239  * \brief Flexctr driver structure.
    240  */
    241 typedef struct mbcm_ltsw_flexctr_drv_s {
    242 
    243     /*! Get flex counter source information. */
    244     flexctr_source_info_get_f flexctr_source_info_get;
    245 
    246     /*! Get flex counter object information. */
    247     flexctr_object_info_get_f flexctr_object_info_get;
    248 
    249     /*! Get overlaid objects for a specified flexctr object. */
    250     flexctr_object_overlay_multi_get_f flexctr_object_overlay_multi_get;
    251 
    252     /*! Get flex counter object enumeration for given object ID. */
    253     flexctr_object_enum_get_f flexctr_object_enum_get;
    254 
    255     /*! Flex counter trigger interval validation function. */
    256     flexctr_trigger_interval_validate_f flexctr_trigger_interval_validate;
    257 
    258     /*! Flex counter flex action range get function. */
    259     flexctr_flex_action_range_get_f flexctr_flex_action_range_get;
    260 
    261     /*! Get flex counter packet attribute information. */
    262     flexctr_pkt_attr_info_get_f flexctr_pkt_attr_info_get;
    263 
    264     /*! Get flex counter packet attribute bus information. */
    265     flexctr_pkt_attr_bus_info_get_f flexctr_pkt_attr_bus_info_get;
    266 
    267     /*! Get flex counter packet type attribute value. */
    268     flexctr_pkt_type_value_get_f flexctr_pkt_type_value_get;
    269 
    270     /*! Get flex counter VLAN tag attribute value. */
    271     flexctr_vlan_tag_value_get_f flexctr_vlan_tag_value_get;
    272 
    273     /*! Get field opaque object value for specific flex counter action and counter index. */
    274     flexctr_field_opaque_object_value_get_f flexctr_field_opaque_object_value_get;
    275 
    276     /*! Egress flex counter pre-select set. */
    277     flexctr_egr_presel_set_f flexctr_egr_presel_set;
    278 
    279     /*! Egress flex counter pre-select get. */
    280     flexctr_egr_presel_get_f flexctr_egr_presel_get;
    281 
    282     /*! Get chip specific action scale enum map. */
    283     flexctr_action_scale_enum_map_get_f flexctr_action_scale_enum_map_get;
    284 
    285 } mbcm_ltsw_flexctr_drv_t;
    286 
    287 /*!
    288  * \brief Set the FLEXCTR driver of the device.
    289  *
    290  * \param [in] unit Unit Number.
    291  * \param [in] drv Flexctr driver to set.
    292  *
    293  * \retval SHR_E_NONE No errors.
    294  * \retval !SHR_E_NONE Failure.
    295  */
    296 extern int
    297 mbcm_ltsw_flexctr_drv_set(
    298     int unit,
    299     mbcm_ltsw_flexctr_drv_t *drv);
    300 
    301 /*!
    302  * \brief Get flex counter source information.
    303  *
    304  * \param [in] unit Unit Number.
    305  * \param [in] source Flex source.
    306  * \param [out] source_info Flex counter source info.
    307  *
    308  * \retval SHR_E_NONE No errors.
    309  * \retval !SHR_E_NONE Failure.
    310  */
    311 extern int
    312 mbcm_ltsw_flexctr_source_info_get(
    313     int unit,
    314     int source,
    315     bcmint_flexctr_source_info_t **source_info);
    316 
    317 /*!
    318  * \brief Get flex counter object information.
    319  *
    320  * \param [in] unit Unit Number.
    321  * \param [in] object Flex object.
    322  * \param [out] object_info Flex counter object info.
    323  *
    324  * \retval SHR_E_NONE No errors.
    325  * \retval !SHR_E_NONE Failure.
    326  */
    327 extern int
    328 mbcm_ltsw_flexctr_object_info_get(
    329     int unit,
    330     int object,
    331     bcmint_flexctr_object_info_t **object_info);
    332 
    333 /*!
    334  * \brief Get overlaid objects for a specified flexctr object.
    335  *
    336  * \param [in] unit Unit Number.
    337  * \param [in] object Flex counter object.
    338  * \param [in] array_size Number of elements in overlay object array, 0 to query.
    339  * \param [out] overlay_object_array Overlay object array.
    340  * \param [out] count The actual number of overlaid objects.
    341  *
    342  * \retval SHR_E_NONE No errors.
    343  * \retval !SHR_E_NONE Failure.
    344  */
    345 extern int
    346 mbcm_ltsw_flexctr_object_overlay_multi_get(
    347     int unit,
    348     bcm_flexctr_object_t object,
    349     int array_size,
    350     bcm_flexctr_object_t *overlay_object_array,
    351     int *count);
    352 
    353 /*!
    354  * \brief Get flex counter object enumeration for given object ID.
    355  *
    356  * \param [in] unit Unit Number.
    357  * \param [in] object Flex counter object.
    358  * \param [in] object_id Flex counter object ID.
    359  * \param [out] symbol Object symbol in SDKLT.
    360  *
    361  * \retval SHR_E_NONE No errors.
    362  * \retval !SHR_E_NONE Failure.
    363  */
    364 extern int
    365 mbcm_ltsw_flexctr_object_enum_get(
    366     int unit,
    367     int object,
    368     uint32_t object_id,
    369     const char **symbol);
    370 
    371 /*!
    372  * \brief Flex counter trigger interval validation function.
    373  *
    374  * \param [in] unit Unit Number.
    375  * \param [in] interval Flex counter trigger interval.
    376  *
    377  * \retval SHR_E_NONE No errors.
    378  * \retval !SHR_E_NONE Failure.
    379  */
    380 extern int
    381 mbcm_ltsw_flexctr_trigger_interval_validate(
    382     int unit,
    383     int interval);
    384 
    385 /*!
    386  * \brief Flex counter flex action range get function.
    387  *
    388  * \param [in] unit Unit Number.
    389  * \param [in] stage Stage id.
    390  * \param [out] min Minimum flex action ID.
    391  * \param [out] max Maximum flex action ID.
    392  *
    393  * \retval SHR_E_NONE No errors.
    394  * \retval !SHR_E_NONE Failure.
    395  */
    396 extern int
    397 mbcm_ltsw_flexctr_flex_action_range_get(
    398     int unit,
    399     int stage,
    400     uint32_t *min,
    401     uint32_t *max);
    402 
    403 /*!
    404  * \brief Get flex counter packet attribute information.
    405  *
    406  * \param [in] unit Unit Number.
    407  * \param [in] attr_type Packet attribute selector type.
    408  * \param [out] pkt_attr_info Flex counter packet attribute info.
    409  *
    410  * \retval SHR_E_NONE No errors.
    411  * \retval !SHR_E_NONE Failure.
    412  */
    413 extern int
    414 mbcm_ltsw_flexctr_pkt_attr_info_get(
    415     int unit,
    416     int attr_type,
    417     bcmint_flexctr_pkt_attr_info_t **pkt_attr_info);
    418 
    419 /*!
    420  * \brief Get flex counter packet attribute bus information.
    421  *
    422  * \param [in] unit Unit Number.
    423  * \param [in] stage Stage id.
    424  * \param [in] bit_pos Bit position in packet attribute bus.
    425  * \param [out] pkt_attr_bus_info Flex counter packet attribute bus info.
    426  *
    427  * \retval SHR_E_NONE No errors.
    428  * \retval !SHR_E_NONE Failure.
    429  */
    430 extern int
    431 mbcm_ltsw_flexctr_pkt_attr_bus_info_get(
    432     int unit,
    433     int stage,
    434     int bit_pos,
    435     bcmint_flexctr_pkt_attr_bus_info_t **pkt_attr_bus_info);
    436 
    437 /*!
    438  * \brief Get flex counter packet type attribute value.
    439  *
    440  * \param [in] unit Unit Number.
    441  * \param [in] pkt_type Flex counter packet type enumeration in HSDK API.
    442  * \param [out] value Flex counter packet type attribute value.
    443  *
    444  * \retval SHR_E_NONE No errors.
    445  * \retval !SHR_E_NONE Failure.
    446  */
    447 extern int
    448 mbcm_ltsw_flexctr_pkt_type_value_get(
    449     int unit,
    450     int pkt_type,
    451     uint32_t *value);
    452 
    453 /*!
    454  * \brief Get flex counter VLAN tag attribute value.
    455  *
    456  * \param [in] unit Unit Number.
    457  * \param [in] vlan_tag Flex counter VLAN tag enumeration in HSDK API.
    458  * \param [out] value Flex counter VLAN tag attribute value.
    459  *
    460  * \retval SHR_E_NONE No errors.
    461  * \retval !SHR_E_NONE Failure.
    462  */
    463 extern int
    464 mbcm_ltsw_flexctr_vlan_tag_value_get(
    465     int unit,
    466     int vlan_tag,
    467     uint32_t *value);
    468 
    469 /*!
    470  * \brief Get field opaque object value for specific flex counter action and counter index.
    471  *
    472  * \param [in] unit Unit Number.
    473  * \param [in] stat_counter_id Flex counter action identifier.
    474  * \param [in] counter_index Flex counter index.
    475  * \param [in] size Element number of object value array.
    476  * \param [out] obj_val Object value array.
    477  *
    478  * \retval SHR_E_NONE No errors.
    479  * \retval !SHR_E_NONE Failure.
    480  */
    481 extern int
    482 mbcm_ltsw_flexctr_field_opaque_object_value_get(
    483     int unit,
    484     uint32_t stat_counter_id,
    485     uint32_t counter_index,
    486     uint32_t size,
    487     uint32_t *obj_val);
    488 
    489 /*!
    490  * \brief Egress flex counter pre-select set.
    491  *
    492  * \param [in] unit Unit Number.
    493  * \param [in] val Pre-select value.
    494  *
    495  * \retval SHR_E_NONE No errors.
    496  * \retval !SHR_E_NONE Failure.
    497  */
    498 extern int
    499 mbcm_ltsw_flexctr_egr_presel_set(
    500     int unit,
    501     int val);
    502 
    503 /*!
    504  * \brief Egress flex counter pre-select get.
    505  *
    506  * \param [in] unit Unit Number.
    507  * \param [out] val Pre-select value.
    508  *
    509  * \retval SHR_E_NONE No errors.
    510  * \retval !SHR_E_NONE Failure.
    511  */
    512 extern int
    513 mbcm_ltsw_flexctr_egr_presel_get(
    514     int unit,
    515     int *val);
    516 
    517 /*!
    518  * \brief Get chip specific action scale enum map.
    519  *
    520  * \param [in] unit Unit Number.
    521  * \param [out] map Flexctr scale enum map.
    522  * \param [out] count Element count of scale enum array.
    523  *
    524  * \retval SHR_E_NONE No errors.
    525  * \retval !SHR_E_NONE Failure.
    526  */
    527 extern int
    528 mbcm_ltsw_flexctr_action_scale_enum_map_get(
    529     int unit,
    530     const bcmint_flexctr_enum_map_t **map,
    531     uint32_t *count);
    532 
    533 #endif /* BCMINT_LTSW_MBCM_FLEXCTR_H */