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

policer.h (10615B)


      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_POLICER_H
     12 #define BCMINT_LTSW_MBCM_POLICER_H
     13 
     14 #include <bcm/policer.h>
     15 #include <bcm_int/ltsw/policer.h>
     16 #include <bcm_int/ltsw/policer_int.h>
     17 
     18 #include <sal/sal_types.h>
     19 
     20 /*!
     21  * \brief Deinit Policer module.
     22  *
     23  * \param [in] unit Unit Number.
     24  *
     25  * \retval SHR_E_NONE No errors.
     26  * \retval !SHR_E_NONE Failure.
     27  */
     28 typedef int (*policer_deinit_f)(int unit);
     29 
     30 /*!
     31  * \brief Init Policer module.
     32  *
     33  * \param [in] unit Unit Number.
     34  *
     35  * \retval SHR_E_NONE No errors.
     36  * \retval !SHR_E_NONE Failure.
     37  */
     38 typedef int (*policer_init_f)(int unit);
     39 
     40 /*!
     41  * \brief Create a policer entry.
     42  *
     43  * \param [in] unit Unit Number.
     44  * \param [in] pol_cfg Policer configuration.
     45  * \param [out] policer_id Policer ID.
     46  *
     47  * \retval SHR_E_NONE No errors.
     48  * \retval !SHR_E_NONE Failure.
     49  */
     50 typedef int (*policer_create_f)(
     51     int unit,
     52     bcm_policer_config_t *pol_cfg,
     53     bcm_policer_t *policer_id);
     54 
     55 /*!
     56  * \brief Destroy a policer entry.
     57  *
     58  * \param [in] unit Unit Number.
     59  * \param [in] policer_id Policer ID.
     60  *
     61  * \retval SHR_E_NONE No errors.
     62  * \retval !SHR_E_NONE Failure.
     63  */
     64 typedef int (*policer_destroy_f)(
     65     int unit,
     66     bcm_policer_t policer_id);
     67 
     68 /*!
     69  * \brief Destroy all policer entries.
     70  *
     71  * \param [in] unit Unit Number.
     72  *
     73  * \retval SHR_E_NONE No errors.
     74  * \retval !SHR_E_NONE Failure.
     75  */
     76 typedef int (*policer_destroy_all_f)(int unit);
     77 
     78 /*!
     79  * \brief Set the config settings for a policer entry.
     80  *
     81  * \param [in] unit Unit Number.
     82  * \param [in] policer_id Policer ID.
     83  * \param [in] pol_cfg Policer configuration.
     84  *
     85  * \retval SHR_E_NONE No errors.
     86  * \retval !SHR_E_NONE Failure.
     87  */
     88 typedef int (*policer_set_f)(
     89     int unit,
     90     bcm_policer_t policer_id,
     91     bcm_policer_config_t *pol_cfg);
     92 
     93 /*!
     94  * \brief Get the config settings for a policer entry.
     95  *
     96  * \param [in] unit Unit Number.
     97  * \param [in] policer_id Policer ID.
     98  * \param [out] pol_cfg Policer configuration.
     99  *
    100  * \retval SHR_E_NONE No errors.
    101  * \retval !SHR_E_NONE Failure.
    102  */
    103 typedef int (*policer_get_f)(
    104     int unit,
    105     bcm_policer_t policer_id,
    106     bcm_policer_config_t *pol_cfg);
    107 
    108 /*!
    109  * \brief Traverse all existing policer entries and call supplied callback function.
    110  *
    111  * \param [in] unit Unit Number.
    112  * \param [in] cb Callback function.
    113  * \param [in] user_data User data.
    114  *
    115  * \retval SHR_E_NONE No errors.
    116  * \retval !SHR_E_NONE Failure.
    117  */
    118 typedef int (*policer_traverse_f)(
    119     int unit,
    120     bcm_policer_traverse_cb cb,
    121     void *user_data);
    122 
    123 /*!
    124  * \brief Get the maximum number of policers supported.
    125  *
    126  * \param [in] unit Unit Number.
    127  * \param [in] stage Policer stage.
    128  * \param [out] num_meters Number of meters.
    129  *
    130  * \retval SHR_E_NONE No errors.
    131  * \retval !SHR_E_NONE Failure.
    132  */
    133 typedef int (*policer_capacity_get_f)(
    134     int unit,
    135     bcmi_ltsw_policer_stage_t stage,
    136     uint32_t *num_meters);
    137 
    138 /*!
    139  * \brief Get the maximum number of meter pools.
    140  *
    141  * \param [in] unit Unit Number.
    142  * \param [in] stage Policer stage.
    143  * \param [out] max_idx Maximum pool index.
    144  *
    145  * \retval SHR_E_NONE No errors.
    146  * \retval !SHR_E_NONE Failure.
    147  */
    148 typedef int (*policer_max_pool_idx_get_f)(
    149     int unit,
    150     bcmi_ltsw_policer_stage_t stage,
    151     uint32_t *max_idx);
    152 
    153 /*!
    154  * \brief Install a policer entry.
    155  *
    156  * \param [in] unit Unit Number.
    157  * \param [in] policer_id Policer ID.
    158  * \param [in] pol_cfg Policer configuration.
    159  * \param [in] pipe Pipe instance.
    160  * \param [in] pool Pool number.
    161  *
    162  * \retval SHR_E_NONE No errors.
    163  * \retval !SHR_E_NONE Failure.
    164  */
    165 typedef int (*policer_install_f)(
    166     int unit,
    167     bcm_policer_t policer_id,
    168     bcm_policer_config_t *pol_cfg,
    169     int pipe,
    170     int pool);
    171 
    172 /*!
    173  * \brief Check if policers are supported in this stage.
    174  *
    175  * \param [in] unit Unit Number.
    176  * \param [in] stage Policer stage.
    177  * \param [out] support Policer support status.
    178  *
    179  * \retval SHR_E_NONE No errors.
    180  * \retval !SHR_E_NONE Failure.
    181  */
    182 typedef int (*policer_supported_f)(
    183     int unit,
    184     bcmi_ltsw_policer_stage_t stage,
    185     bool *support);
    186 
    187 /*!
    188  * \brief Initialize mode of policer pools.
    189  *
    190  * \param [in] unit Unit Number.
    191  * \param [in] state Policer pool state.
    192  * \param [in] num_pipes Number of pipes.
    193  * \param [in] max_pools Number of pools.
    194  *
    195  * \retval SHR_E_NONE No errors.
    196  * \retval !SHR_E_NONE Failure.
    197  */
    198 typedef int (*policer_pool_init_f)(
    199     int unit,
    200     bcmint_policer_pool_state_t *pool_state,
    201     int num_pipes,
    202     int max_pools);
    203 
    204 /*!
    205  * \brief Policer driver structure.
    206  */
    207 typedef struct mbcm_ltsw_policer_drv_s {
    208 
    209     /*! Deinit Policer module. */
    210     policer_deinit_f policer_deinit;
    211 
    212     /*! Init Policer module. */
    213     policer_init_f policer_init;
    214 
    215     /*! Create a policer entry. */
    216     policer_create_f policer_create;
    217 
    218     /*! Destroy a policer entry. */
    219     policer_destroy_f policer_destroy;
    220 
    221     /*! Destroy all policer entries. */
    222     policer_destroy_all_f policer_destroy_all;
    223 
    224     /*! Set the config settings for a policer entry. */
    225     policer_set_f policer_set;
    226 
    227     /*! Get the config settings for a policer entry. */
    228     policer_get_f policer_get;
    229 
    230     /*! Traverse all existing policer entries and call supplied callback function. */
    231     policer_traverse_f policer_traverse;
    232 
    233     /*! Get the maximum number of policers supported. */
    234     policer_capacity_get_f policer_capacity_get;
    235 
    236     /*! Get the maximum number of meter pools. */
    237     policer_max_pool_idx_get_f policer_max_pool_idx_get;
    238 
    239     /*! Install a policer entry. */
    240     policer_install_f policer_install;
    241 
    242     /*! Check if policers are supported. */
    243     policer_supported_f policer_supported;
    244 
    245     /*! Initialize policer pools. */
    246     policer_pool_init_f policer_pool_init;
    247 } mbcm_ltsw_policer_drv_t;
    248 
    249 /*!
    250  * \brief Set the POLICER driver of the device.
    251  *
    252  * \param [in] unit Unit Number.
    253  * \param [in] drv Policer driver to set.
    254  *
    255  * \retval SHR_E_NONE No errors.
    256  * \retval !SHR_E_NONE Failure.
    257  */
    258 extern int
    259 mbcm_ltsw_policer_drv_set(
    260     int unit,
    261     mbcm_ltsw_policer_drv_t *drv);
    262 
    263 /*!
    264  * \brief Deinit Policer module.
    265  *
    266  * \param [in] unit Unit Number.
    267  *
    268  * \retval SHR_E_NONE No errors.
    269  * \retval !SHR_E_NONE Failure.
    270  */
    271 extern int
    272 mbcm_ltsw_policer_deinit(int unit);
    273 
    274 /*!
    275  * \brief Init Policer module.
    276  *
    277  * \param [in] unit Unit Number.
    278  *
    279  * \retval SHR_E_NONE No errors.
    280  * \retval !SHR_E_NONE Failure.
    281  */
    282 extern int
    283 mbcm_ltsw_policer_init(int unit);
    284 
    285 /*!
    286  * \brief Create a policer entry.
    287  *
    288  * \param [in] unit Unit Number.
    289  * \param [in] pol_cfg Policer configuration.
    290  * \param [out] policer_id Policer ID.
    291  *
    292  * \retval SHR_E_NONE No errors.
    293  * \retval !SHR_E_NONE Failure.
    294  */
    295 extern int
    296 mbcm_ltsw_policer_create(
    297     int unit,
    298     bcm_policer_config_t *pol_cfg,
    299     bcm_policer_t *policer_id);
    300 
    301 /*!
    302  * \brief Destroy a policer entry.
    303  *
    304  * \param [in] unit Unit Number.
    305  * \param [in] policer_id Policer ID.
    306  *
    307  * \retval SHR_E_NONE No errors.
    308  * \retval !SHR_E_NONE Failure.
    309  */
    310 extern int
    311 mbcm_ltsw_policer_destroy(
    312     int unit,
    313     bcm_policer_t policer_id);
    314 
    315 /*!
    316  * \brief Destroy all policer entries.
    317  *
    318  * \param [in] unit Unit Number.
    319  *
    320  * \retval SHR_E_NONE No errors.
    321  * \retval !SHR_E_NONE Failure.
    322  */
    323 extern int
    324 mbcm_ltsw_policer_destroy_all(int unit);
    325 
    326 /*!
    327  * \brief Set the config settings for a policer entry.
    328  *
    329  * \param [in] unit Unit Number.
    330  * \param [in] policer_id Policer ID.
    331  * \param [in] pol_cfg Policer configuration.
    332  *
    333  * \retval SHR_E_NONE No errors.
    334  * \retval !SHR_E_NONE Failure.
    335  */
    336 extern int
    337 mbcm_ltsw_policer_set(
    338     int unit,
    339     bcm_policer_t policer_id,
    340     bcm_policer_config_t *pol_cfg);
    341 
    342 /*!
    343  * \brief Get the config settings for a policer entry.
    344  *
    345  * \param [in] unit Unit Number.
    346  * \param [in] policer_id Policer ID.
    347  * \param [out] pol_cfg Policer configuration.
    348  *
    349  * \retval SHR_E_NONE No errors.
    350  * \retval !SHR_E_NONE Failure.
    351  */
    352 extern int
    353 mbcm_ltsw_policer_get(
    354     int unit,
    355     bcm_policer_t policer_id,
    356     bcm_policer_config_t *pol_cfg);
    357 
    358 /*!
    359  * \brief Traverse all existing policer entries and call supplied callback function.
    360  *
    361  * \param [in] unit Unit Number.
    362  * \param [in] cb Callback function.
    363  * \param [in] user_data User data.
    364  *
    365  * \retval SHR_E_NONE No errors.
    366  * \retval !SHR_E_NONE Failure.
    367  */
    368 extern int
    369 mbcm_ltsw_policer_traverse(
    370     int unit,
    371     bcm_policer_traverse_cb cb,
    372     void *user_data);
    373 
    374 /*!
    375  * \brief Get the maximum number of policers supported.
    376  *
    377  * \param [in] unit Unit Number.
    378  * \param [in] stage Policer stage.
    379  * \param [out] num_meters Number of meters.
    380  *
    381  * \retval SHR_E_NONE No errors.
    382  * \retval !SHR_E_NONE Failure.
    383  */
    384 extern int
    385 mbcm_ltsw_policer_capacity_get(
    386     int unit,
    387     bcmi_ltsw_policer_stage_t stage,
    388     uint32_t *num_meters);
    389 
    390 /*!
    391  * \brief Get the maximum number of meter pools.
    392  *
    393  * \param [in] unit Unit Number.
    394  * \param [in] stage Policer stage.
    395  * \param [out] max_idx Maximum pool index.
    396  *
    397  * \retval SHR_E_NONE No errors.
    398  * \retval !SHR_E_NONE Failure.
    399  */
    400 extern int
    401 mbcm_ltsw_policer_max_pool_idx_get(
    402     int unit,
    403     bcmi_ltsw_policer_stage_t stage,
    404     uint32_t *max_idx);
    405 
    406 /*!
    407  * \brief Install a policer entry.
    408  *
    409  * \param [in] unit Unit Number.
    410  * \param [in] policer_id Policer ID.
    411  * \param [in] pol_cfg Policer configuration.
    412  * \param [in] pipe Pipe instance.
    413  * \param [in] pool Pool number.
    414  *
    415  * \retval SHR_E_NONE No errors.
    416  * \retval !SHR_E_NONE Failure.
    417  */
    418 extern int
    419 mbcm_ltsw_policer_install(
    420     int unit,
    421     bcm_policer_t policer_id,
    422     bcm_policer_config_t *pol_cfg,
    423     int pipe,
    424     int pool);
    425 
    426 /*!
    427  * \brief Check if polices are supported in this stage.
    428  *
    429  * \param [in] unit Unit Number.
    430  * \param [in] stage Policer stage.
    431  * \param [out] support Policer support status.
    432  *
    433  * \retval SHR_E_NONE No errors.
    434  * \retval !SHR_E_NONE Failure.
    435  */
    436 extern int
    437 mbcm_ltsw_policer_supported(
    438     int unit,
    439     bcmi_ltsw_policer_stage_t stage,
    440     bool *support);
    441 
    442 /*!
    443  * \brief Initialize mode of policer pools.
    444  *
    445  * \param [in] unit Unit Number.
    446  * \param [in] state Policer pool state.
    447  * \param [in] num_pipes Number of pipes.
    448  * \param [in] max_pools Number of pools.
    449  *
    450  * \retval SHR_E_NONE No errors.
    451  * \retval !SHR_E_NONE Failure.
    452  */
    453 extern int
    454 mbcm_ltsw_policer_pool_init(
    455     int unit,
    456     bcmint_policer_pool_state_t *pool_state,
    457     int num_pipes,
    458     int max_pools);
    459 
    460 #endif /* BCMINT_LTSW_MBCM_POLICER_H */