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