1 /*******************************************************************************
2 ################################################################################
3 # Copyright (c) [2017-2019] [Radisys] #
5 # Licensed under the Apache License, Version 2.0 (the "License"); #
6 # you may not use this file except in compliance with the License. #
7 # You may obtain a copy of the License at #
9 # http://www.apache.org/licenses/LICENSE-2.0 #
11 # Unless required by applicable law or agreed to in writing, software #
12 # distributed under the License is distributed on an "AS IS" BASIS, #
13 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #
14 # See the License for the specific language governing permissions and #
15 # limitations under the License. #
16 ################################################################################
17 *******************************************************************************/
19 /* Contains common utility definitions to be used at MAC */
21 #define MAX_SHORT_BSR_TABLE_ENTRIES 32
22 #define MAX_LONG_BSR_TABLE_ENTRIES 256
23 #define MAC_MEM_REGION 4
26 /* allocate and zero out a static buffer */
29 #define MAC_MEMORY_ALLOC_SIZE_LOG(_line, _func, _size) \
31 DU_LOG("\n MAC line = %d, func = %s, _size= %d ", _line, _func, _size); \
34 #define MAC_MEMORY_ALLOC_SIZE_LOG(_line, _func, _size) {}
37 #ifdef ODU_MEMORY_DEBUG_LOG
38 #define MAC_MEM_LOG(_macro, _file, _line, _func, _size, _datPtr)\
40 printf("\n%s,=== %s +%d, %s, %lu, %p \n", \
41 _macro, _file, _line, _func, (uint64_t)_size, _datPtr); \
44 #define MAC_MEM_LOG(_macro, _file, _line, _func, _size, _dataPtr) {}
47 /* allocate and zero out a MAC static buffer */
48 #define MAC_ALLOC(_datPtr, _size) \
50 MAC_MEMORY_ALLOC_SIZE_LOG(__LINE__, __FUNCTION__, _size); \
52 _ret = SGetSBuf(MAC_MEM_REGION, MAC_POOL, \
53 (Data **)&_datPtr, _size); \
56 memset(_datPtr, 0, _size); \
57 MAC_MEM_LOG("MAC,ALLOC", __FILE__, __LINE__, __FUNCTION__, _size, _datPtr);\
65 /* free a static buffer */
66 #define MAC_FREE(_datPtr, _size) \
70 MAC_MEM_LOG("MAC,FREE", __FILE__, __LINE__, __FUNCTION__, _size, _datPtr);\
71 SPutSBuf(MAC_MEM_REGION, MAC_POOL, \
72 (Data *)_datPtr, _size); \
77 /* Allocate shared memory to be used for LWLC
78 * during inter-layer communication */
79 #define MAC_ALLOC_SHRABL_BUF(_buf, _size) \
81 MAC_MEMORY_ALLOC_SIZE_LOG(__LINE__, __FUNCTION__, _size); \
82 if(SGetStaticBuffer(MAC_MEM_REGION, MAC_POOL, \
83 (Data **)&_buf, (Size) _size, 0) == ROK) \
85 MAC_MEM_LOG("MAC,ALLOC_SHRABL_BUF", __FILE__, __LINE__, __FUNCTION__, _size, _buf);\
86 memset((_buf), 0, _size); \
94 /* Free shared memory, received through LWLC */
95 #define MAC_FREE_SHRABL_BUF(_region, _pool,_buf, _size) \
99 MAC_MEM_LOG("MAC,FREE_SHRABL_BUF", __FILE__, __LINE__, __FUNCTION__, _size, _buf);\
100 (Void) SPutStaticBuffer(_region, _pool, \
101 (Data *) _buf, (Size) _size, 0); \
106 /* Fill Pst structure for sending msg from MAC to DU APP */
107 #define FILL_PST_MAC_TO_DUAPP(_pst, _event) \
109 _pst.selector = ODU_SELECTOR_LWLC; \
110 _pst.srcEnt = ENTMAC; \
111 _pst.dstEnt = ENTDUAPP; \
113 _pst.srcInst = macCb.macInst; \
114 _pst.dstProcId = macCb.procId; \
115 _pst.srcProcId = macCb.procId; \
116 _pst.region = MAC_MEM_REGION; \
117 _pst.pool = MAC_POOL; \
118 _pst.event = _event; \
124 /* Fill Pst structure for sending msg from MAC to SCH */
125 #define FILL_PST_MAC_TO_SCH(_pst, _event) \
127 _pst.selector = ODU_SELECTOR_TC; \
128 _pst.srcEnt = ENTMAC; \
129 _pst.dstEnt = ENTMAC; \
131 _pst.srcInst = macCb.macInst; \
132 _pst.dstProcId = macCb.procId; \
133 _pst.srcProcId = macCb.procId; \
134 _pst.region = MAC_MEM_REGION; \
135 _pst.pool = MAC_POOL; \
136 _pst.event = _event; \
142 /* Fills Pst to send msg to RLC */
143 #define FILL_PST_MAC_TO_RLC(_pst, _dstInst, _event) \
145 pst.selector = ODU_SELECTOR_LWLC; \
146 pst.srcEnt = ENTMAC; \
147 pst.dstEnt = ENTRLC; \
148 pst.dstInst = _dstInst; \
149 pst.srcInst = macCb.macInst; \
150 pst.dstProcId = macCb.procId; \
151 pst.srcProcId = macCb.procId; \
152 pst.region = MAC_MEM_REGION; \
153 pst.pool = MAC_POOL; \
154 pst.event = _event; \
160 /* Function declaration */
161 extern uint32_t shortBsrBytesTable[MAX_SHORT_BSR_TABLE_ENTRIES];
162 extern uint32_t longBsrBytesTable[MAX_LONG_BSR_TABLE_ENTRIES];
164 /**********************************************************************
166 **********************************************************************/