tizen 2.4 release
[profile/mobile/platform/kernel/u-boot-tm1.git] / arch / arm / cpu / ixp / npe / include / IxOsalBufferMgt.h
1 /**
2  * @file IxOsalBufferMgt.h
3  *
4  * @brief OSAL Buffer pool management and buffer management definitions.
5  *
6  * Design Notes:
7  *
8  * @par
9  * IXP400 SW Release version 2.0
10  * 
11  * -- Copyright Notice --
12  * 
13  * @par
14  * Copyright 2001-2005, Intel Corporation.
15  * All rights reserved.
16  * 
17  * @par
18  * Redistribution and use in source and binary forms, with or without
19  * modification, are permitted provided that the following conditions
20  * are met:
21  * 1. Redistributions of source code must retain the above copyright
22  *    notice, this list of conditions and the following disclaimer.
23  * 2. Redistributions in binary form must reproduce the above copyright
24  *    notice, this list of conditions and the following disclaimer in the
25  *    documentation and/or other materials provided with the distribution.
26  * 3. Neither the name of the Intel Corporation nor the names of its contributors
27  *    may be used to endorse or promote products derived from this software
28  *    without specific prior written permission.
29  * 
30  * @par
31  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
32  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
33  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
34  * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
35  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
36  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
37  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
38  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
39  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
40  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
41  * SUCH DAMAGE.
42  * 
43  * @par
44  * -- End of Copyright Notice --
45  */
46 /* @par
47  * -- Copyright Notice --
48  *
49  * @par
50  * Copyright 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994 
51  *      The Regents of the University of California. All rights reserved.
52  *
53  * @par
54  * Redistribution and use in source and binary forms, with or without
55  * modification, are permitted provided that the following conditions
56  * are met:
57  * 1. Redistributions of source code must retain the above copyright
58  *    notice, this list of conditions and the following disclaimer.
59  * 2. Redistributions in binary form must reproduce the above copyright
60  *    notice, this list of conditions and the following disclaimer in the
61  *    documentation and/or other materials provided with the distribution.
62  * 3. Neither the name of the University nor the names of its contributors
63  *    may be used to endorse or promote products derived from this software
64  *    without specific prior written permission.
65  *
66  * @par
67  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
68  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
69  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
70  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
71  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
72  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
73  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
74  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
75  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
76  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
77  * SUCH DAMAGE.
78  *
79  * @par
80  * -- End of Copyright Notice --
81  */
82
83 #ifndef IxOsalBufferMgt_H
84 #define IxOsalBufferMgt_H
85
86 #include "IxOsal.h"
87 /**
88  * @defgroup IxOsalBufferMgt OSAL Buffer Management Module.
89  *
90  * @brief Buffer management module for IxOsal
91  *
92  * @{ 
93  */
94
95 /**
96  * @ingroup IxOsalBufferMgt
97  *
98  * @def IX_OSAL_MBUF_MAX_POOLS
99  *
100  * @brief The maximum number of pools that can be allocated, must be 
101  *        a multiple of 32 as required by implementation logic.
102  * @note  This can safely be increased if more pools are required.
103  */
104 #define IX_OSAL_MBUF_MAX_POOLS      32
105
106 /**
107  * @ingroup IxOsalBufferMgt
108  *
109  * @def IX_OSAL_MBUF_POOL_NAME_LEN
110  *
111  * @brief The maximum string length of the pool name
112  */
113 #define IX_OSAL_MBUF_POOL_NAME_LEN  64
114
115
116
117 /**
118  *  Define IX_OSAL_MBUF
119  */
120
121
122 /* forward declaration of internal structure */
123 struct __IXP_BUF;
124
125 /* 
126  * OS can define it in IxOsalOs.h to skip the following
127  * definition.
128  */
129 #ifndef IX_OSAL_ATTRIBUTE_ALIGN32
130 #define IX_OSAL_ATTRIBUTE_ALIGN32 __attribute__ ((aligned(32)))
131 #endif
132
133 /* release v1.4 backward compatible definitions */
134 struct __IX_MBUF
135 {
136     struct __IXP_BUF *ix_next IX_OSAL_ATTRIBUTE_ALIGN32;
137     struct __IXP_BUF *ix_nextPacket;
138     UINT8 *ix_data;
139     UINT32 ix_len;  
140     unsigned char ix_type;
141     unsigned char ix_flags;
142     unsigned short ix_reserved;
143     UINT32 ix_rsvd;
144     UINT32 ix_PktLen; 
145     void *ix_priv;     
146 };
147
148 struct __IX_CTRL
149 {
150     UINT32 ix_reserved[2];        /**< Reserved field */
151     UINT32 ix_signature;          /**< Field to indicate if buffers are allocated by the system */    
152     UINT32 ix_allocated_len;      /**< Allocated buffer length */  
153     UINT32 ix_allocated_data;     /**< Allocated buffer data pointer */  
154     void *ix_pool;                /**< pointer to the buffer pool */
155     struct __IXP_BUF *ix_chain;   /**< chaining */ 
156     void *ix_osbuf_ptr;           /**< Storage for OS-specific buffer pointer */
157 };
158
159 struct __IX_NE_SHARED
160 {
161     UINT32 reserved[8] IX_OSAL_ATTRIBUTE_ALIGN32;   /**< Reserved area for NPE Service-specific usage */
162 };
163
164
165 /* 
166  * IXP buffer structure 
167  */
168 typedef struct __IXP_BUF
169 {
170     struct __IX_MBUF ix_mbuf IX_OSAL_ATTRIBUTE_ALIGN32; /**< buffer header */
171     struct __IX_CTRL ix_ctrl;                           /**< buffer management */
172     struct __IX_NE_SHARED ix_ne;                        /**< Reserved area for NPE Service-specific usage*/
173 } IXP_BUF;
174
175
176
177 /**
178  * @ingroup IxOsalBufferMgt
179  *
180  * @def typedef IX_OSAL_MBUF
181  *
182  * @brief Generic IXP mbuf format.
183  */
184 typedef IXP_BUF IX_OSAL_MBUF;
185
186
187 /**
188  * @ingroup IxOsalBufferMgt
189  *
190  * @def IX_OSAL_IXP_NEXT_BUFFER_IN_PKT_PTR(m_blk_ptr)
191  *
192  * @brief Return pointer to the next mbuf in a single packet
193  */
194 #define IX_OSAL_MBUF_NEXT_BUFFER_IN_PKT_PTR(m_blk_ptr)  \
195         (m_blk_ptr)->ix_mbuf.ix_next
196
197
198 /**
199  * @ingroup IxOsalBufferMgt
200  *
201  * @def IX_OSAL_MBUF_NEXT_PKT_IN_CHAIN_PTR(m_blk_ptr)
202  *
203  * @brief Return pointer to the next packet in the chain
204  */
205 #define IX_OSAL_MBUF_NEXT_PKT_IN_CHAIN_PTR(m_blk_ptr)  \
206         (m_blk_ptr)->ix_mbuf.ix_nextPacket
207
208
209 /**
210  * @ingroup IxOsalBufferMgt
211  *
212  * @def IX_OSAL_MBUF_MDATA(m_blk_ptr)
213  *
214  * @brief Return pointer to the data in the mbuf
215  */
216 #define IX_OSAL_MBUF_MDATA(m_blk_ptr)       (m_blk_ptr)->ix_mbuf.ix_data
217
218 /**
219  * @ingroup IxOsalBufferMgt
220  *
221  * @def IX_OSAL_MBUF_MLEN(m_blk_ptr)
222  *
223  * @brief Return the data length
224  */
225 #define IX_OSAL_MBUF_MLEN(m_blk_ptr) \
226     (m_blk_ptr)->ix_mbuf.ix_len
227
228 /**
229  * @ingroup IxOsalBufferMgt
230  *
231  * @def IX_OSAL_MBUF_MTYPE(m_blk_ptr)
232  *
233  * @brief Return the data type in the mbuf
234  */
235 #define IX_OSAL_MBUF_MTYPE(m_blk_ptr) \
236     (m_blk_ptr)->ix_mbuf.ix_type
237
238
239 /**
240  * @ingroup IxOsalBufferMgt
241  *
242  * @def IX_OSAL_MBUF_FLAGS(m_blk_ptr)
243  *
244  * @brief Return the buffer flags
245  */
246 #define IX_OSAL_MBUF_FLAGS(m_blk_ptr)       \
247         (m_blk_ptr)->ix_mbuf.ix_flags
248
249
250 /**
251  * @ingroup IxOsalBufferMgt
252  *
253  * @def IX_OSAL_MBUF_NET_POOL(m_blk_ptr)
254  *
255  * @brief Return pointer to a network pool
256  */
257 #define IX_OSAL_MBUF_NET_POOL(m_blk_ptr)        \
258         (m_blk_ptr)->ix_ctrl.ix_pool
259
260
261
262 /**
263  * @ingroup IxOsalBufferMgt
264  *
265  * @def IX_OSAL_MBUF_PKT_LEN(m_blk_ptr)
266  *
267  * @brief Return the total length of all the data in
268  * the mbuf chain for this packet
269  */
270 #define IX_OSAL_MBUF_PKT_LEN(m_blk_ptr) \
271         (m_blk_ptr)->ix_mbuf.ix_PktLen
272
273
274
275
276 /**
277  * @ingroup IxOsalBufferMgt
278  *
279  * @def IX_OSAL_MBUF_PRIV(m_blk_ptr)
280  *
281  * @brief Return the private field
282  */
283 #define IX_OSAL_MBUF_PRIV(m_blk_ptr)        \
284         (m_blk_ptr)->ix_mbuf.ix_priv
285
286
287
288 /**
289  * @ingroup IxOsalBufferMgt
290  *
291  * @def IX_OSAL_MBUF_SIGNATURE(m_blk_ptr)
292  *
293  * @brief Return the signature field of IX_OSAL_MBUF
294  */
295 #define IX_OSAL_MBUF_SIGNATURE(m_blk_ptr)  \
296         (m_blk_ptr)->ix_ctrl.ix_signature
297
298
299 /**
300  * @ingroup IxOsalBufferMgt
301  *
302  * @def IX_OSAL_MBUF_OSBUF_PTR(m_blk_ptr)
303  *
304  * @brief Return ix_osbuf_ptr field of IX_OSAL_MBUF, which is used to store OS-specific buffer pointer during a buffer conversion.
305  */
306 #define IX_OSAL_MBUF_OSBUF_PTR(m_blk_ptr)  \
307         (m_blk_ptr)->ix_ctrl.ix_osbuf_ptr
308
309
310 /**
311  * @ingroup IxOsalBufferMgt
312  *
313  * @def IX_OSAL_MBUF_ALLOCATED_BUFF_LEN(m_blk_ptr)
314  *
315  * @brief Return the allocated buffer size
316  */
317 #define IX_OSAL_MBUF_ALLOCATED_BUFF_LEN(m_blk_ptr)  \
318         (m_blk_ptr)->ix_ctrl.ix_allocated_len
319
320 /**
321  * @ingroup IxOsalBufferMgt
322  *
323  * @def IX_OSAL_MBUF_ALLOCATED_BUFF_DATA(m_blk_ptr)
324  *
325  * @brief Return the allocated buffer pointer
326  */
327 #define IX_OSAL_MBUF_ALLOCATED_BUFF_DATA(m_blk_ptr)  \
328         (m_blk_ptr)->ix_ctrl.ix_allocated_data
329
330
331
332 /* Name length */
333 #define IX_OSAL_MBUF_POOL_NAME_LEN  64
334
335
336 /****************************************************
337  * Macros for buffer pool management
338  ****************************************************/
339
340 /**
341  * @ingroup IxOsalBufferMgt
342  *
343  * @def IX_OSAL_MBUF_POOL_FREE_COUNT(m_pool_ptr
344  *
345  * @brief Return the total number of freed buffers left in the pool.
346  */
347 #define IX_OSAL_MBUF_POOL_FREE_COUNT(m_pool_ptr) \
348                     ixOsalBuffPoolFreeCountGet(m_pool_ptr)
349
350 /**
351  * @ingroup IxOsalBufferMgt
352  *
353  * @def IX_OSAL_MBUF_POOL_SIZE_ALIGN
354  *
355  * @brief This macro takes an integer as an argument and
356  * rounds it up to be a multiple of the memory cache-line 
357  * size.
358  *
359  * @param int [in] size - the size integer to be rounded up
360  *
361  * @return int - the size, rounded up to a multiple of
362  *               the cache-line size
363  */
364 #define IX_OSAL_MBUF_POOL_SIZE_ALIGN(size)                 \
365     ((((size) + (IX_OSAL_CACHE_LINE_SIZE - 1)) /      \
366         IX_OSAL_CACHE_LINE_SIZE) *                  \
367             IX_OSAL_CACHE_LINE_SIZE)
368
369 /* Don't use this directly, use macro */
370 PUBLIC UINT32 ixOsalBuffPoolMbufAreaSizeGet (int count);
371
372
373 /**
374  * @ingroup IxOsalBufferMgt
375  *
376  * @def IX_OSAL_MBUF_POOL_MBUF_AREA_SIZE_ALIGNED
377  *
378  * @brief This macro calculates, from the number of mbufs required, the 
379  * size of the memory area required to contain the mbuf headers for the
380  * buffers in the pool.  The size to be used for each mbuf header is 
381  * rounded up to a multiple of the cache-line size, to ensure
382  * each mbuf header aligns on a cache-line boundary.
383  * This macro is used by IX_OSAL_MBUF_POOL_MBUF_AREA_ALLOC()
384  *
385  * @param int [in] count - the number of buffers the pool will contain
386  *
387  * @return int - the total size required for the pool mbuf area (aligned)
388  */
389 #define IX_OSAL_MBUF_POOL_MBUF_AREA_SIZE_ALIGNED(count) \
390         ixOsalBuffPoolMbufAreaSizeGet(count)
391
392
393 /* Don't use this directly, use macro */
394 PUBLIC UINT32 ixOsalBuffPoolDataAreaSizeGet (int count, int size);
395
396
397 /**
398  * @ingroup IxOsalBufferMgt
399  *
400  * @def IX_OSAL_MBUF_POOL_DATA_AREA_SIZE_ALIGNED
401  *
402  * @brief This macro calculates, from the number of mbufs required and the
403  * size of the data portion for each mbuf, the size of the data memory area
404  * required. The size is adjusted to ensure alignment on cache line boundaries.
405  * This macro is used by IX_OSAL_MBUF_POOL_DATA_AREA_ALLOC()
406  *
407  *
408  * @param int [in] count - The number of mbufs in the pool.
409  * @param int [in] size  - The desired size for each mbuf data portion.
410  *                         This size will be rounded up to a multiple of the
411  *                         cache-line size to ensure alignment on cache-line
412  *                         boundaries for each data block.
413  *
414  * @return int - the total size required for the pool data area (aligned)
415  */
416 #define IX_OSAL_MBUF_POOL_DATA_AREA_SIZE_ALIGNED(count, size) \
417         ixOsalBuffPoolDataAreaSizeGet((count), (size))
418
419
420 /**
421  * @ingroup IxOsalBufferMgt
422  *
423  * @def IX_OSAL_MBUF_POOL_MBUF_AREA_ALLOC
424  *
425  * @brief Allocates the memory area needed for the number of mbuf headers
426  * specified by <i>count</i>.
427  * This macro ensures the mbuf headers align on cache line boundaries.
428  * This macro evaluates to a pointer to the memory allocated.
429  *
430  * @param int [in] count - the number of mbufs the pool will contain
431  * @param int [out] memAreaSize - the total amount of memory allocated
432  *
433  * @return void * - a pointer to the allocated memory area
434  */
435 #define IX_OSAL_MBUF_POOL_MBUF_AREA_ALLOC(count, memAreaSize) \
436     IX_OSAL_CACHE_DMA_MALLOC((memAreaSize =                 \
437         IX_OSAL_MBUF_POOL_MBUF_AREA_SIZE_ALIGNED(count)))
438
439 /**
440  * @ingroup IxOsalBufferMgt
441  *
442  * @def IX_OSAL_MBUF_POOL_DATA_AREA_ALLOC
443  *
444  * @brief Allocates the memory pool for the data portion of the pool mbufs.
445  * The number of mbufs is specified by <i>count</i>.  The size of the data
446  * portion of each mbuf is specified by <i>size</i>.
447  * This macro ensures the mbufs are aligned on cache line boundaries
448  * This macro evaluates to a pointer to the memory allocated.
449  *
450  * @param int [in] count - the number of mbufs the pool will contain
451  * @param int [in] size - the desired size (in bytes) required for the data
452  *                        portion of each mbuf.  Note that this size may be
453  *                        rounded up to ensure alignment on cache-line
454  *                        boundaries.
455  * @param int [out] memAreaSize - the total amount of memory allocated
456  *
457  * @return void * - a pointer to the allocated memory area
458  */
459 #define IX_OSAL_MBUF_POOL_DATA_AREA_ALLOC(count, size, memAreaSize) \
460     IX_OSAL_CACHE_DMA_MALLOC((memAreaSize =                     \
461         IX_OSAL_MBUF_POOL_DATA_AREA_SIZE_ALIGNED(count,size)))
462
463
464
465 /**
466  * @ingroup IxOsalBufferMgt
467  *
468  * @def IX_OSAL_MBUF_POOL_INIT
469  *
470  * @brief Wrapper macro for ixOsalPoolInit() 
471  * See function description below for details.
472  */
473 #define IX_OSAL_MBUF_POOL_INIT(count, size, name) \
474     ixOsalPoolInit((count), (size), (name))
475
476 /**
477  * @ingroup IxOsalBufferMgt
478  *
479  * @def IX_OSAL_MBUF_NO_ALLOC_POOL_INIT
480  *
481  * @return Pointer to the new pool or NULL if the initialization failed.
482  *
483  * @brief Wrapper macro for ixOsalNoAllocPoolInit() 
484  * See function description below for details.
485  * 
486  */
487 #define IX_OSAL_MBUF_NO_ALLOC_POOL_INIT(bufPtr, dataPtr, count, size, name) \
488     ixOsalNoAllocPoolInit( (bufPtr), (dataPtr), (count), (size), (name))
489
490 /**
491  * @ingroup IxOsalBufferMgt
492  *
493  * @def IX_OSAL_MBUF_POOL_GET
494  *
495  * @brief Wrapper macro for ixOsalMbufAlloc() 
496  * See function description below for details.
497  */
498 #define IX_OSAL_MBUF_POOL_GET(poolPtr) \
499         ixOsalMbufAlloc(poolPtr)
500
501 /**
502  * @ingroup IxOsalBufferMgt
503  *
504  * @def IX_OSAL_MBUF_POOL_PUT
505  *
506  * @brief Wrapper macro for ixOsalMbufFree() 
507  * See function description below for details.
508  */
509 #define IX_OSAL_MBUF_POOL_PUT(bufPtr) \
510     ixOsalMbufFree(bufPtr)
511
512 /**
513  * @ingroup IxOsalBufferMgt
514  *
515  * @def IX_OSAL_MBUF_POOL_PUT_CHAIN
516  *
517  * @brief Wrapper macro for ixOsalMbufChainFree() 
518  * See function description below for details.
519  */
520 #define IX_OSAL_MBUF_POOL_PUT_CHAIN(bufPtr) \
521     ixOsalMbufChainFree(bufPtr)
522
523 /**
524  * @ingroup IxOsalBufferMgt
525  *
526  * @def IX_OSAL_MBUF_POOL_SHOW
527  *
528  * @brief Wrapper macro for ixOsalMbufPoolShow() 
529  * See function description below for details.
530  */
531 #define IX_OSAL_MBUF_POOL_SHOW(poolPtr) \
532     ixOsalMbufPoolShow(poolPtr)
533
534 /**
535  * @ingroup IxOsalBufferMgt
536  *
537  * @def IX_OSAL_MBUF_POOL_MDATA_RESET
538  *
539  * @brief Wrapper macro for ixOsalMbufDataPtrReset() 
540  * See function description below for details.
541  */
542 #define IX_OSAL_MBUF_POOL_MDATA_RESET(bufPtr) \
543     ixOsalMbufDataPtrReset(bufPtr)
544
545 /**
546  * @ingroup IxOsalBufferMgt
547  *
548  * @def IX_OSAL_MBUF_POOL_UNINIT
549  *
550  * @brief Wrapper macro for ixOsalBuffPoolUninit() 
551  * See function description below for details.
552  */
553 #define IX_OSAL_MBUF_POOL_UNINIT(m_pool_ptr)  \
554         ixOsalBuffPoolUninit(m_pool_ptr)
555
556 /* 
557  * Include OS-specific bufferMgt definitions 
558  */
559 #include "IxOsalOsBufferMgt.h"
560
561
562 /**
563  * @ingroup IxOsalBufferMgt
564  *
565  * @def IX_OSAL_CONVERT_OSBUF_TO_IXPBUF( osBufPtr, ixpBufPtr)
566  *
567  * @brief Convert pre-allocated os-specific buffer format to OSAL IXP_BUF (IX_OSAL_MBUF) format. 
568  * It is users' responsibility to provide pre-allocated and valid buffer pointers.
569  * @param osBufPtr (in) - a pre-allocated os-specific buffer pointer.
570  * @param ixpBufPtr (in)- a pre-allocated OSAL IXP_BUF pointer
571  * @return None
572  */
573 #define IX_OSAL_CONVERT_OSBUF_TO_IXPBUF( osBufPtr, ixpBufPtr) \
574         IX_OSAL_OS_CONVERT_OSBUF_TO_IXPBUF( osBufPtr, ixpBufPtr)        
575
576
577 /**
578  * @ingroup IxOsalBufferMgt
579  *
580  * @def IX_OSAL_CONVERT_IXPBUF_TO_OSBUF( ixpBufPtr, osBufPtr)
581  *
582  * @brief Convert pre-allocated OSAL IXP_BUF (IX_OSAL_MBUF) format to os-specific buffer pointers.
583  * @param ixpBufPtr (in) - OSAL IXP_BUF pointer
584  * @param osBufPtr (out) - os-specific buffer pointer.
585  * @return None
586  */
587
588 #define IX_OSAL_CONVERT_IXPBUF_TO_OSBUF( ixpBufPtr, osBufPtr)  \
589         IX_OSAL_OS_CONVERT_IXPBUF_TO_OSBUF( ixpBufPtr, osBufPtr)
590
591
592 PUBLIC IX_OSAL_MBUF_POOL *ixOsalPoolInit (UINT32 count,
593                       UINT32 size, const char *name);
594
595 PUBLIC IX_OSAL_MBUF_POOL *ixOsalNoAllocPoolInit (void *poolBufPtr,
596                          void *poolDataPtr,
597                                                  UINT32 count,
598                                                  UINT32 size,
599                                                  const char *name);
600
601 PUBLIC IX_OSAL_MBUF *ixOsalMbufAlloc (IX_OSAL_MBUF_POOL * pool);
602
603 PUBLIC IX_OSAL_MBUF *ixOsalMbufFree (IX_OSAL_MBUF * mbuf);
604
605 PUBLIC void ixOsalMbufChainFree (IX_OSAL_MBUF * mbuf);
606
607 PUBLIC void ixOsalMbufDataPtrReset (IX_OSAL_MBUF * mbuf);
608
609 PUBLIC void ixOsalMbufPoolShow (IX_OSAL_MBUF_POOL * pool);
610
611 PUBLIC IX_STATUS ixOsalBuffPoolUninit (IX_OSAL_MBUF_POOL * pool);
612
613 PUBLIC UINT32 ixOsalBuffPoolFreeCountGet(IX_OSAL_MBUF_POOL * pool);
614
615
616 /**
617  * @} IxOsalBufferMgt
618  */
619
620
621 #endif /* IxOsalBufferMgt_H */