1 /****************************************************************************** 2 3 � 1995-2003, 2004, 2005-2011 Freescale Semiconductor, Inc. 4 All rights reserved. 5 6 This is proprietary source code of Freescale Semiconductor Inc., 7 and its use is subject to the NetComm Device Drivers EULA. 8 The copyright notice above does not evidence any actual or intended 9 publication of such source code. 10 11 ALTERNATIVELY, redistribution and use in source and binary forms, with 12 or without modification, are permitted provided that the following 13 conditions are met: 14 * Redistributions of source code must retain the above copyright 15 notice, this list of conditions and the following disclaimer. 16 * Redistributions in binary form must reproduce the above copyright 17 notice, this list of conditions and the following disclaimer in the 18 documentation and/or other materials provided with the distribution. 19 * Neither the name of Freescale Semiconductor nor the 20 names of its contributors may be used to endorse or promote products 21 derived from this software without specific prior written permission. 22 23 THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY 24 EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 25 WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 26 DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY 27 DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 28 (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 29 LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 30 ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 31 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 32 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 33 * 34 35 **************************************************************************/ 36 /****************************************************************************** 37 @File bm_ext.h 38 39 @Description BM API 40 *//***************************************************************************/ 41 #ifndef __BM_EXT_H 42 #define __BM_EXT_H 43 44 #include "error_ext.h" 45 #include "std_ext.h" 46 47 48 /**************************************************************************//** 49 @Group BM_grp Buffer Manager API 50 51 @Description BM API functions, definitions and enums. 52 53 @{ 54 *//***************************************************************************/ 55 56 /**************************************************************************//** 57 @Description This callback type is used when handling pool depletion entry/exit. 58 59 User provides this function. Driver invokes it. 60 61 @Param[in] h_App - User's application descriptor. 62 @Param[in] in - TRUE when entered depletion state 63 FALSE when exit the depletion state. 64 *//***************************************************************************/ 65 typedef void (t_BmDepletionCallback)(t_Handle h_App, bool in); 66 67 /**************************************************************************//** 68 @Group BM_lib_grp BM common API 69 70 @Description BM common API functions, definitions and enums. 71 72 @{ 73 *//***************************************************************************/ 74 75 /**************************************************************************//** 76 @Description BM Exceptions 77 *//***************************************************************************/ 78 typedef enum e_BmExceptions { 79 e_BM_EX_INVALID_COMMAND = 0 , /**< Invalid Command Verb Interrupt */ 80 e_BM_EX_FBPR_THRESHOLD, /**< FBPR Low Watermark Interrupt. */ 81 e_BM_EX_SINGLE_ECC, /**< Single Bit ECC Error Interrupt. */ 82 e_BM_EX_MULTI_ECC /**< Multi Bit ECC Error Interrupt */ 83 } e_BmExceptions; 84 85 86 /**************************************************************************//** 87 @Group BM_init_grp BM (common) Initialization Unit 88 89 @Description BM (common) Initialization Unit 90 91 @{ 92 *//***************************************************************************/ 93 94 /**************************************************************************//** 95 @Function t_BmExceptionsCallback 96 97 @Description Exceptions user callback routine, will be called upon an 98 exception passing the exception identification. 99 100 @Param[in] h_App - User's application descriptor. 101 @Param[in] exception - The exception. 102 *//***************************************************************************/ 103 typedef void (t_BmExceptionsCallback) (t_Handle h_App, 104 e_BmExceptions exception); 105 106 /**************************************************************************//** 107 @Description structure representing BM initialization parameters 108 *//***************************************************************************/ 109 typedef struct { 110 uint8_t guestId; /**< BM Partition Id */ 111 112 uintptr_t baseAddress; /**< Bm base address (virtual). 113 NOTE: this parameter relevant only for BM in master mode ('guestId'=NCSW_MASTER_ID). */ 114 uint16_t liodn; /**< This value is attached to every transaction initiated by 115 BMan when accessing its private data structures 116 NOTE: this parameter relevant only for BM in master mode ('guestId'=NCSW_MASTER_ID). */ 117 uint32_t totalNumOfBuffers; /**< Total number of buffers 118 NOTE: this parameter relevant only for BM in master mode ('guestId'=NCSW_MASTER_ID). */ 119 uint32_t fbprMemPartitionId; /**< FBPR's mem partition id; 120 NOTE: The memory partition must be non-cacheable and no-coherent area. 121 NOTE: this parameter relevant only for BM in master mode ('guestId'=NCSW_MASTER_ID). */ 122 t_BmExceptionsCallback *f_Exception; /**< An application callback routine to handle exceptions. 123 NOTE: this parameter relevant only for BM in master mode ('guestId'=NCSW_MASTER_ID). */ 124 t_Handle h_App; /**< A handle to an application layer object; This handle will 125 be passed by the driver upon calling the above callbacks. 126 NOTE: this parameter relevant only for BM in master mode ('guestId'=NCSW_MASTER_ID). */ 127 uintptr_t errIrq; /**< BM error interrupt line; NO_IRQ if interrupts not used. 128 NOTE: this parameter relevant only for BM in master mode ('guestId'=NCSW_MASTER_ID). */ 129 130 uint8_t partBpidBase; /**< The first buffer-pool-id dedicated to this partition. 131 NOTE: this parameter relevant only when working with multiple partitions. */ 132 uint8_t partNumOfPools; /**< Number of Pools dedicated to this partition. 133 NOTE: this parameter relevant only when working with multiple partitions. */ 134 } t_BmParam; 135 136 137 /**************************************************************************//** 138 @Function BM_Config 139 140 @Description Creates descriptor for the BM module and initializes the BM module. 141 142 The routine returns a handle (descriptor) to the BM object. 143 This descriptor must be passed as first parameter to all other 144 BM function calls. 145 146 @Param[in] p_BmParam - A pointer to data structure of parameters 147 148 @Return Handle to BM object, or NULL for Failure. 149 *//***************************************************************************/ 150 t_Handle BM_Config(t_BmParam *p_BmParam); 151 152 /**************************************************************************//** 153 @Function BM_Init 154 155 @Description Initializes the BM module 156 157 @Param[in] h_Bm - A handle to the BM module 158 159 @Return E_OK on success; Error code otherwise. 160 161 @Cautions Allowed only following BM_Config(). 162 *//***************************************************************************/ 163 t_Error BM_Init(t_Handle h_Bm); 164 165 /**************************************************************************//** 166 @Function BM_Free 167 168 @Description Frees all resources that were assigned to BM module. 169 170 Calling this routine invalidates the descriptor. 171 172 @Param[in] h_Bm - A handle to the BM module 173 174 @Return E_OK on success; Error code otherwise. 175 *//***************************************************************************/ 176 t_Error BM_Free(t_Handle h_Bm); 177 178 /**************************************************************************//** 179 @Group BM_advanced_init_grp BM (common) Advanced Configuration Unit 180 181 @Description Configuration functions used to change default values. 182 183 @{ 184 *//***************************************************************************/ 185 186 /**************************************************************************//** 187 @Function BM_ConfigFbprThreshold 188 189 @Description Change the fbpr threshold from its default 190 configuration [0]. 191 An interrupt if enables is asserted when the number of FBPRs is below this threshold. 192 NOTE: this parameter relevant only for BM in master mode ('guestId'=NCSW_MASTER_ID). 193 194 @Param[in] h_Bm - A handle to the BM module 195 @Param[in] threshold - threshold value. 196 197 @Return E_OK on success; Error code otherwise. 198 199 @Cautions Allowed only following BM_Config() and before BM_Init(). 200 *//***************************************************************************/ 201 t_Error BM_ConfigFbprThreshold(t_Handle h_Bm, uint32_t threshold); 202 203 /** @} */ /* end of BM_advanced_init_grp group */ 204 /** @} */ /* end of BM_init_grp group */ 205 206 /**************************************************************************//** 207 @Group BM_runtime_control_grp BM (common) Runtime Control Unit 208 209 @Description BM (common) Runtime control unit API functions, definitions and enums. 210 211 @{ 212 *//***************************************************************************/ 213 214 /**************************************************************************//** 215 @Description enum for defining BM counters 216 *//***************************************************************************/ 217 typedef enum e_BmCounters { 218 e_BM_COUNTERS_FBPR = 0 /**< Total Free Buffer Proxy Record (FBPR) Free Pool Count in external memory */ 219 } e_BmCounters; 220 221 /**************************************************************************//** 222 @Description structure for returning revision information 223 *//***************************************************************************/ 224 typedef struct t_BmRevisionInfo { 225 uint8_t majorRev; /**< Major revision */ 226 uint8_t minorRev; /**< Minor revision */ 227 } t_BmRevisionInfo; 228 229 #if (defined(DEBUG_ERRORS) && (DEBUG_ERRORS > 0)) 230 /**************************************************************************//** 231 @Function BM_DumpRegs 232 233 @Description Dumps all BM registers 234 NOTE: this parameter relevant only for BM in master mode ('guestId'=NCSW_MASTER_ID). 235 236 @Param[in] h_Bm A handle to an BM Module. 237 238 @Return E_OK on success; 239 240 @Cautions Allowed only after BM_Init(). 241 *//***************************************************************************/ 242 t_Error BM_DumpRegs(t_Handle h_Bm); 243 #endif /* (defined(DEBUG_ERRORS) && ... */ 244 245 /**************************************************************************//** 246 @Function BM_SetException 247 248 @Description Calling this routine enables/disables the specified exception. 249 NOTE: this parameter relevant only for BM in master mode ('guestId'=NCSW_MASTER_ID). 250 251 @Param[in] h_Bm - A handle to the BM Module. 252 @Param[in] exception - The exception to be selected. 253 @Param[in] enable - TRUE to enable interrupt, FALSE to mask it. 254 255 @Cautions Allowed only following BM_Init(). 256 *//***************************************************************************/ 257 t_Error BM_SetException(t_Handle h_Bm, e_BmExceptions exception, bool enable); 258 259 /**************************************************************************//** 260 @Function BM_ErrorIsr 261 262 @Description BM interrupt-service-routine for errors. 263 NOTE: this parameter relevant only for BM in master mode ('guestId'=NCSW_MASTER_ID). 264 265 @Param[in] h_Bm - A handle to the BM Module. 266 267 @Cautions Allowed only following BM_Init(). 268 *//***************************************************************************/ 269 void BM_ErrorIsr(t_Handle h_Bm); 270 271 /**************************************************************************//** 272 @Function BM_GetCounter 273 274 @Description Reads one of the BM counters. 275 276 @Param[in] h_Bm - A handle to the BM Module. 277 @Param[in] counter - The requested counter. 278 279 @Return Counter's current value. 280 *//***************************************************************************/ 281 uint32_t BM_GetCounter(t_Handle h_Bm, e_BmCounters counter); 282 283 /**************************************************************************//** 284 @Function BM_GetRevision 285 286 @Description Returns the BM revision 287 288 @Param[in] h_Bm A handle to a BM Module. 289 @Param[out] p_BmRevisionInfo A structure of revision information parameters. 290 291 @Return E_OK on success; Error code otherwise. 292 293 @Cautions Allowed only following QM_Init(). 294 *//***************************************************************************/ 295 t_Error BM_GetRevision(t_Handle h_Bm, t_BmRevisionInfo *p_BmRevisionInfo); 296 297 /** @} */ /* end of BM_runtime_control_grp group */ 298 /** @} */ /* end of BM_lib_grp group */ 299 300 301 /**************************************************************************//** 302 @Group BM_portal_grp BM-Portal API 303 304 @Description BM-Portal API functions, definitions and enums. 305 306 @{ 307 *//***************************************************************************/ 308 309 /**************************************************************************//** 310 @Group BM_portal_init_grp BM-Portal Initialization Unit 311 312 @Description BM-Portal Initialization Unit 313 314 @{ 315 *//***************************************************************************/ 316 317 /**************************************************************************//** 318 @Description structure representing BM Portal initialization parameters 319 *//***************************************************************************/ 320 typedef struct { 321 uintptr_t ceBaseAddress; /**< Cache-enabled base address (virtual) */ 322 uintptr_t ciBaseAddress; /**< Cache-inhibited base address (virtual) */ 323 t_Handle h_Bm; /**< Bm Handle */ 324 e_DpaaSwPortal swPortalId; /**< Portal id */ 325 int irq; /**< portal interrupt line; NO_IRQ if interrupts not used */ 326 } t_BmPortalParam; 327 328 329 /**************************************************************************//** 330 @Function BM_PORTAL_Config 331 332 @Description Creates descriptor for the BM Portal; 333 334 The routine returns a handle (descriptor) to a BM-Portal object; 335 This descriptor must be passed as first parameter to all other 336 BM-Portal function calls. 337 338 No actual initialization or configuration of QM-Portal hardware is 339 done by this routine. 340 341 @Param[in] p_BmPortalParam - Pointer to data structure of parameters 342 343 @Retval Handle to a BM-Portal object, or NULL for Failure. 344 *//***************************************************************************/ 345 t_Handle BM_PORTAL_Config(t_BmPortalParam *p_BmPortalParam); 346 347 /**************************************************************************//** 348 @Function BM_PORTAL_Init 349 350 @Description Initializes a BM-Portal module 351 352 @Param[in] h_BmPortal - A handle to a BM-Portal module 353 354 @Return E_OK on success; Error code otherwise. 355 *//***************************************************************************/ 356 t_Error BM_PORTAL_Init(t_Handle h_BmPortal); 357 358 /**************************************************************************//** 359 @Function BM_PortalFree 360 361 @Description Frees all resources that were assigned to BM Portal module. 362 363 Calling this routine invalidates the descriptor. 364 365 @Param[in] h_BmPortal - BM Portal module descriptor 366 367 @Return E_OK on success; Error code otherwise. 368 *//***************************************************************************/ 369 t_Error BM_PORTAL_Free(t_Handle h_BmPortal); 370 371 /**************************************************************************//** 372 @Function BM_PORTAL_ConfigMemAttr 373 374 @Description Change the memory attributes 375 from its default configuration [MEMORY_ATTR_CACHEABLE]. 376 377 @Param[in] h_BmPortal - A handle to a BM-Portal module 378 @Param[in] hwExtStructsMemAttr - memory attributes (cache/non-cache, etc.) 379 380 @Return E_OK on success; Error code otherwise. 381 382 @Cautions Allowed only following BM_PORTAL_Config() and before BM_PORTAL_Init(). 383 *//***************************************************************************/ 384 t_Error BM_PORTAL_ConfigMemAttr(t_Handle h_BmPortal, uint32_t hwExtStructsMemAttr); 385 386 /** @} */ /* end of BM_portal_init_grp group */ 387 /** @} */ /* end of BM_portal_grp group */ 388 389 390 /**************************************************************************//** 391 @Group BM_pool_grp BM-Pool API 392 393 @Description BM-Pool API functions, definitions and enums. 394 395 @{ 396 *//***************************************************************************/ 397 398 /**************************************************************************//** 399 @Group BM_pool_init_grp BM-Pool Initialization Unit 400 401 @Description BM-Pool Initialization Unit 402 403 @{ 404 *//***************************************************************************/ 405 406 /**************************************************************************//** 407 @Collection BM Pool Depletion Thresholds macros 408 The thresholds are represent by an array of size MAX_DEPLETION_THRESHOLDS 409 Use the following macros to access the appropriate location in the array. 410 *//***************************************************************************/ 411 #define BM_POOL_DEP_THRESH_SW_ENTRY 0 412 #define BM_POOL_DEP_THRESH_SW_EXIT 1 413 #define BM_POOL_DEP_THRESH_HW_ENTRY 2 414 #define BM_POOL_DEP_THRESH_HW_EXIT 3 415 416 #define MAX_DEPLETION_THRESHOLDS 4 417 /* @} */ 418 419 420 /**************************************************************************//** 421 @Description structure representing BM Pool initialization parameters 422 *//***************************************************************************/ 423 typedef struct { 424 t_Handle h_Bm; /**< A handle to a BM Module. */ 425 t_Handle h_BmPortal; /**< A handle to a BM Portal Module. 426 will be used only for Init and Free routines. 427 NOTE: if NULL, assuming affinity */ 428 uint32_t numOfBuffers; /**< Number of buffers use by this pool 429 NOTE: If zero, empty pool buffer is created. */ 430 t_BufferPoolInfo bufferPoolInfo; /**< Data buffers pool information */ 431 t_Handle h_App; /**< opaque user value passed as a parameter to callbacks */ 432 bool shadowMode; /**< If TRUE, numOfBuffers will be set to '0'. */ 433 uint8_t bpid; /**< index of the shadow buffer pool (0-BM_MAX_NUM_OF_POOLS). 434 valid only if shadowMode='TRUE'. */ 435 } t_BmPoolParam; 436 437 438 /**************************************************************************//** 439 @Function BM_POOL_Config 440 441 @Description Creates descriptor for the BM Pool; 442 443 The routine returns a handle (descriptor) to the BM Pool object. 444 445 @Param[in] p_BmPoolParam - A pointer to data structure of parameters 446 447 @Return Handle to BM Portal object, or NULL for Failure. 448 *//***************************************************************************/ 449 t_Handle BM_POOL_Config(t_BmPoolParam *p_BmPoolParam); 450 451 /**************************************************************************//** 452 @Function BM_POOL_Init 453 454 @Description Initializes a BM-Pool module 455 456 @Param[in] h_BmPool - A handle to a BM-Pool module 457 458 @Return E_OK on success; Error code otherwise. 459 *//***************************************************************************/ 460 t_Error BM_POOL_Init(t_Handle h_BmPool); 461 462 /**************************************************************************//** 463 @Function BM_PoolFree 464 465 @Description Frees all resources that were assigned to BM Pool module. 466 467 Calling this routine invalidates the descriptor. 468 469 @Param[in] h_BmPool - BM Pool module descriptor 470 471 @Return E_OK on success; Error code otherwise. 472 *//***************************************************************************/ 473 t_Error BM_POOL_Free(t_Handle h_BmPool); 474 475 /**************************************************************************//** 476 @Function BM_POOL_ConfigBpid 477 478 @Description Config a specific pool id rather than dynamic pool id. 479 480 @Param[in] h_BmPool - A handle to a BM-Pool module 481 @Param[in] bpid - index of the buffer pool (0-BM_MAX_NUM_OF_POOLS). 482 483 @Return E_OK on success; Error code otherwise. 484 485 @Cautions Allowed only following BM_POOL_Config() and before BM_POOL_Init(). 486 *//***************************************************************************/ 487 t_Error BM_POOL_ConfigBpid(t_Handle h_BmPool, uint8_t bpid); 488 489 /**************************************************************************//** 490 @Function BM_POOL_ConfigDepletion 491 492 @Description Config depletion-entry/exit thresholds and callback. 493 494 @Param[in] h_BmPool - A handle to a BM-Pool module 495 @Param[in] f_Depletion - depletion-entry/exit callback. 496 @Param[in] thresholds - depletion-entry/exit thresholds. 497 498 @Return E_OK on success; Error code otherwise. 499 500 @Cautions Allowed only following BM_POOL_Config() and before BM_POOL_Init(); 501 Allowed only if shadowMode='FALSE'. 502 Allowed only if BM in master mode ('guestId'=NCSW_MASTER_ID), or 503 the BM is in guest mode BUT than this routine will invoke IPC 504 call to the master. 505 *//***************************************************************************/ 506 t_Error BM_POOL_ConfigDepletion(t_Handle h_BmPool, 507 t_BmDepletionCallback *f_Depletion, 508 uint32_t thresholds[MAX_DEPLETION_THRESHOLDS]); 509 510 /**************************************************************************//** 511 @Function BM_POOL_ConfigStockpile 512 513 @Description Config software stockpile. 514 515 @Param[in] h_BmPool - A handle to a BM-Pool module 516 @Param[in] maxBuffers - the software data structure size saved for stockpile; 517 when reached this value, release to hw command performed. 518 @Param[in] minBuffers - if current capacity is equal or lower then this value, 519 acquire from hw command performed. 520 521 @Return E_OK on success; Error code otherwise. 522 523 @Cautions Allowed only following BM_POOL_Config() and before BM_POOL_Init(). 524 *//***************************************************************************/ 525 t_Error BM_POOL_ConfigStockpile(t_Handle h_BmPool, uint16_t maxBuffers, uint16_t minBuffers); 526 527 /**************************************************************************//** 528 @Function BM_POOL_ConfigBuffContextMode 529 530 @Description Config the BM pool to set/unset buffer-context 531 532 @Param[in] h_BmPool - A handle to a BM-Pool module 533 @Param[in] en - enable/disable buffer context mode 534 535 @Return E_OK on success; Error code otherwise. 536 537 @Cautions Allowed only following BM_POOL_Config() and before BM_POOL_Init(). 538 *//***************************************************************************/ 539 t_Error BM_POOL_ConfigBuffContextMode(t_Handle h_BmPool, bool en); 540 541 /** @} */ /* end of BM_pool_init_grp group */ 542 543 544 /**************************************************************************//** 545 @Group BM_pool_runtime_control_grp BM-Pool Runtime Control Unit 546 547 @Description BM-Pool Runtime control unit API functions, definitions and enums. 548 549 @{ 550 *//***************************************************************************/ 551 552 /**************************************************************************//** 553 @Description enum for defining BM Pool counters 554 *//***************************************************************************/ 555 typedef enum e_BmPoolCounters { 556 e_BM_POOL_COUNTERS_CONTENT = 0, /**< number of free buffers for a particular pool */ 557 e_BM_POOL_COUNTERS_SW_DEPLETION, /**< number of times pool entered sw depletion */ 558 e_BM_POOL_COUNTERS_HW_DEPLETION /**< number of times pool entered hw depletion */ 559 } e_BmPoolCounters; 560 561 /**************************************************************************//** 562 @Function BM_POOL_GetId 563 564 @Description return a buffer pool id. 565 566 @Param[in] h_BmPool - A handle to a BM-pool 567 568 @Return Pool ID. 569 *//***************************************************************************/ 570 uint8_t BM_POOL_GetId(t_Handle h_BmPool); 571 572 /**************************************************************************//** 573 @Function BM_POOL_GetBufferSize 574 575 @Description returns the pool's buffer size. 576 577 @Param[in] h_BmPool - A handle to a BM-pool 578 579 @Return pool's buffer size. 580 *//***************************************************************************/ 581 uint16_t BM_POOL_GetBufferSize(t_Handle h_BmPool); 582 583 /**************************************************************************//** 584 @Function BM_POOL_GetBufferContext 585 586 @Description Returns the user's private context that 587 should be associated with the buffer. 588 589 @Param[in] h_BmPool - A handle to a BM-pool 590 @Param[in] p_Buff - A Pointer to the buffer 591 592 @Return user's private context. 593 *//***************************************************************************/ 594 t_Handle BM_POOL_GetBufferContext(t_Handle h_BmPool, void *p_Buff); 595 596 /**************************************************************************//** 597 @Function BM_POOL_PhysToVirt 598 599 @Description Translates a physical address to the matching virtual address. 600 601 @Param[in] h_BmPool - A handle to a BM-pool 602 @Param[in] addr - The physical address to translate 603 604 @Return Virtual address. 605 *//***************************************************************************/ 606 void * BM_POOL_PhysToVirt(t_Handle h_BmPool, physAddress_t addr); 607 608 /**************************************************************************//** 609 @Function BM_POOL_VirtToPhys 610 611 @Description Translates a virtual address to the matching physical address. 612 613 @Param[in] h_BmPool - A handle to a BM-pool 614 @Param[in] addr - The virtual address to translate 615 616 @Return Physical address. 617 *//***************************************************************************/ 618 physAddress_t BM_POOL_VirtToPhys(t_Handle h_BmPool, void *addr); 619 620 /**************************************************************************//** 621 @Function BM_POOL_GetCounter 622 623 @Description Reads one of the BM Pool counters. 624 625 @Param[in] h_BmPool - A handle to a BM-pool 626 @Param[in] counter - The requested counter. 627 628 @Return Counter's current value. 629 *//***************************************************************************/ 630 uint32_t BM_POOL_GetCounter(t_Handle h_BmPool, e_BmPoolCounters counter); 631 632 /** @} */ /* end of BM_pool_runtime_control_grp group */ 633 634 635 /**************************************************************************//** 636 @Group BM_pool_runtime_data_grp BM-Pool Runtime Data Unit 637 638 @Description BM-Pool Runtime data unit API functions, definitions and enums. 639 640 @{ 641 *//***************************************************************************/ 642 643 /**************************************************************************//** 644 @Function BM_POOL_GetBuf 645 646 @Description Allocate buffer from a buffer pool. 647 648 @Param[in] h_BmPool - A handle to a BM-pool 649 @Param[in] h_BmPortal - A handle to a BM Portal Module; 650 NOTE : if NULL, assuming affinity. 651 652 @Return A Pointer to the allocated buffer. 653 *//***************************************************************************/ 654 void * BM_POOL_GetBuf(t_Handle h_BmPool, t_Handle h_BmPortal); 655 656 /**************************************************************************//** 657 @Function BM_POOL_PutBuf 658 659 @Description Deallocate buffer to a buffer pool. 660 661 @Param[in] h_BmPool - A handle to a BM-pool 662 @Param[in] h_BmPortal - A handle to a BM Portal Module; 663 NOTE : if NULL, assuming affinity. 664 @Param[in] p_Buff - A Pointer to the buffer. 665 666 @Return E_OK on success; Error code otherwise. 667 *//***************************************************************************/ 668 t_Error BM_POOL_PutBuf(t_Handle h_BmPool, t_Handle h_BmPortal, void *p_Buff); 669 670 /**************************************************************************//** 671 @Function BM_POOL_FillBufs 672 673 @Description Fill a BM pool with new buffers. 674 675 @Param[in] h_BmPool - A handle to a BM-pool 676 @Param[in] h_BmPortal - A handle to a BM Portal Module; 677 NOTE : if NULL, assuming affinity. 678 @Param[in] numBufs - How many buffers to fill into the pool. 679 680 @Return E_OK on success; Error code otherwise. 681 *//***************************************************************************/ 682 t_Error BM_POOL_FillBufs(t_Handle h_BmPool, t_Handle h_BmPortal, uint32_t numBufs); 683 684 /** @} */ /* end of BM_pool_runtime_data_grp group */ 685 /** @} */ /* end of BM_pool_grp group */ 686 /** @} */ /* end of BM_grp group */ 687 688 #endif /* __BM_EXT_H */ 689