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