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 /**********************************************************************
25 Desc: Defines required by LTE-MAC
29 **********************************************************************/
32 @brief This file contains definitons for Mac.
39 #include "rl_interface.h"
40 #include "rl_common.h"
44 #include "gen.x" /* general layer */
45 #include "ssi.x" /* system service interface */
53 #define RG_MAC_HDR_SIZE 250
54 #define RG_MAC_CE_SIZE 250
58 #define RG_ADD_DBuf(_dBuf,_size,_mBuf)\
60 SsMsgInfo *mInfo = NULLP; \
61 mInfo = (SsMsgInfo *)_mBuf->b_rptr; \
62 ssGetDBufOfSize(mInfo->region,_size, &_dBuf); \
63 SUpdMsg(_mBuf, _dBuf,0);\
64 _dBuf->b_wptr = _dBuf->b_rptr = (_dBuf->b_datap->db_base + 5);\
65 MacPtrAddress = (U32)_dBuf->b_wptr;\
71 #define RGLAYERNAME "MAC"
72 #define RG_MAX_TB_PER_UE 2
73 #define RG_MAX_BCCH_DLSCH 2
74 #define RG_INVALID_RNTI 0x0000
76 #define RG_MAX_NUM_DED_LC 10 /* maximum dedicated logical channels in a UE */
77 #define RG_MAX_NUM_CMN_LC 5 /* maximum number of common logical
79 #define RG_MAX_LCG_PER_UE 4
80 #define RG_CON_RES_ID_SZ 6
81 #define RG_MAX_RA_RNTI 60
83 /* Added support for SPS*/
85 #define RG_ADDL_SPS_OCC_FOR_EXP_REL 2
87 #define RG_SPS_SID_PACKET_SIZE 10
88 #define RG_SPS_LCG_ID 1
92 /* Well known RNTIS */
93 #define RG_SI_RNTI 0xffff
94 #define RG_P_RNTI 0xfffe
96 #define RG_MAX_UPPERSAP 3
97 #define RG_MAX_LOWERSAP 1
98 #define RG_TQ_SIZE 10 /* Timing Queue Size */
99 #define RG_MAX_TIMER RG_MAX_LOWERSAP /* MAX number of MAC timers */
100 #define RG_NMB_CELL_HASHBIN 10 /* Number of Hash Bins for cell hash
102 #define RG_NMB_UE_HASHBIN 10 /* Number of Hash Bins for UE hash
104 #define RG_BNDREQ_TMR 1 /* Bind Request timer event value */
105 #define RG_MAX_BNDRETRY 2 /* Max number of Bind Retries for TFU SAP */
108 #define RG_UE_TQ_SIZE 10 /* Timing Queue Size */
110 #define RG_INVALID_SCHD_TYPE 255
111 #define RG_MAX_UE_PER_CELL 0xFFFF /*!< Maximum number of UEs per cell */
112 #ifdef EIGHT_UE_PER_TTI_CHANGES
113 #define RG_MAX_UE_BIN_PER_CELL 1024 /*!< Maximum number of UE bins per cell */
115 #define RG_MAX_UE_BIN_PER_CELL 128 /*!< Maximum number of UE bins per cell */
117 #define RG_MIN_DL_BW 6 /*!< Minimum Downlink bandwidth in RBs */
118 #define RG_MAX_DL_BW 110 /*!< Maximum Downlink bandwidth in RBs */
119 #define RG_MIN_UL_BW 6 /*!< Minimum Uplink bandwidth in RBs */
120 #define RG_MAX_UL_BW 110 /*!< Maximum Uplink bandwidth in RBs */
121 #define RG_MIN_CFI_VAL 1 /*!< Minimum value for CFI */
122 #define RG_MAX_CFI_VAL 3 /*!< Maximum value for CFI */
123 #define RG_QM_BPSK 2 /*!< Qm value for BPSK */
124 #define RG_QM_QPSK 4 /*!< Qm value for QPSK */
125 #define RG_QM_64QAM 6 /*!< Qm value for 64QAM */
126 #define RG_MIN_SRS_SFCFG_IDX 0 /*!< Minimum value for SRS subframe
127 configurtion index */
128 #define RG_MAX_SRS_SFCFG_IDX 15 /*!< Maximum value for SRS subframe
129 configurtion index */
130 #define RG_MAX_SRS_TX_OFFSET 8 /*!< Maximum number of SRS transmission
132 #define RG_MIN_MAC_RNTI 10 /*!< Minimum value of RNTI to be managed by
135 /* HARQ related MACROs */
136 #define RG_NUM_DL_HQ_PROC 8
137 #define RG_NUM_UL_HQ_PROC 8
138 #define RG_MIN_HQ_TX 1
140 /* Group power related MACROs */
141 #define RG_MAX_GRP_PWR_FMT3_IDX 15 /*!< Maximum index value for group power format 3 */
142 #define RG_MAX_GRP_PWR_FMT3A_IDX 31 /*!< Maximum index value for group power format 3A */
144 /* MACROs to indicate cell specific config for cell to be active */
145 #define RG_BCCH_BCH_CFG_DONE (1<<0)
146 #define RG_BCCH_DLSCH_CFG1_DONE (1<<1)
147 #define RG_BCCH_DLSCH_CFG2_DONE (1<<2)
148 #define RG_PCCH_CFG_DONE (1<<3)
149 #define RG_UL_CCCH_CFG_DONE (1<<4)
150 #define RG_DL_CCCH_CFG_DONE (1<<5)
151 #define RG_SCHD_CFG_DONE (1<<6)
152 #define RG_CELL_ACTIVE (RG_BCCH_BCH_CFG_DONE | RG_BCCH_DLSCH_CFG1_DONE | RG_BCCH_DLSCH_CFG2_DONE | RG_PCCH_CFG_DONE | RG_UL_CCCH_CFG_DONE | RG_DL_CCCH_CFG_DONE)
153 /* Logical channel realated MACROs */
154 #define RG_INVALID_LCG_ID 255
155 #define RG_INVALID_LC_ID 255
156 #define RG_BCCH_BCH_IDX 0
157 #define RG_BCCH_DLSCH_IDX 1
158 #define RG_PCCH_IDX 2
160 /* constants for MIN & MAX qci*/
164 /* PUCCH related macros */
165 #define RG_PUCCH_MAXVAL_CS 7 /*!< Maximum value for cyclic shift of PUCCH */
166 #define RG_PUCCH_MINVAL_DS 1 /*!< Mininmum value for delta shift of PUCCH */
167 #define RG_PUCCH_MAXVAL_DS 3 /*!< Maximum value for delta shift of PUCCH */
169 /* DUX related macros */
170 #define RG_LCID_MASK 0x3F
172 #define RG_LCID_LEN 0x6
173 #define RG_CCCH_LCID 0x00
174 #define RG_DEDLC_MIN_LCID 0x01
175 #define RG_DEDLC_MAX_LCID 0x0A
176 #define RG_RES_MIN_LCID 0x0B
177 #define RG_RES_MAX_LCID 0x18
178 #define RG_EXT_PHR_LCID 0x19
179 #define RG_PHR_LCID 0x1A
180 #define RG_CRNTI_LCID 0X1B
181 #define RG_TRUNC_BSR_LCID 0X1C
182 #define RG_SHORT_BSR_LCID 0X1D
183 #define RG_LONG_BSR_LCID 0X1E
184 #define RG_PAD_LCID 0x3F
185 #define RG_MAX_EXTN_PAD_SUBHDRS 0x02
186 #define RG_REF_PCMAX 0xFF
188 #define RG_CCCH_SDU_PRSNT (1<<0)
189 #define RG_CRNTI_CE_PRSNT (1<<1)
190 #define RG_PHR_CE_PRSNT (1<<2)
191 #define RG_TRUNC_BSR_CE_PRSNT (1<<3)
192 #define RG_SHORT_BSR_CE_PRSNT (1<<4)
193 #define RG_LONG_BSR_CE_PRSNT (1<<5)
195 #define RG_ACTIVE_LC_PRSNT (1<<6)
198 #define RG_UL_SPS_ACT_PRSNT (1<<7)
200 #define RG_EXT_PHR_CE_PRSNT (1<<8)
202 /* LOGICAL CHANNEL */
203 #define RG_MAX_LC_PER_UE 10
204 /* Maximum number of common logical channel control blocks */
205 #define RG_MAX_CMN_LC_CB 3
206 #define RG_MAX_BCCH 2
209 #define RG_MAX_SCELL_PER_UE 7 /*!< MAX SCell can be Added per Cell */
212 #define RG_OPTM_NUM_DED_LC 3
214 /* Random access related MACROs */
215 #define RG_MAX_RA_PREAMBLE_FMT 3 /*!< Maximun value of Random access preamble
217 #define RG_MAX_RA_WINSIZE 10 /*!< Maximum size of Random access response
218 window in subframes */
219 #define RG_MIN_RA_WINSIZE 2 /*!< Minimum size of Random access response
220 window in subframes */
221 #define RG_MIN_NUM_RA_PREAMBLE 4 /*!< Minimum number of Random access
223 #define RG_MAX_NUM_RA_PREAMBLE 64 /*!< Maximim number of Random access
225 #define RG_NUM_RA_RB 6
227 #define RG_MAX_RA_RSP_ALLOC 4 /*!< Maximum number of Random access
229 #define RG_CRG_CFG 1 /* CRG configuration element */
230 #define RG_RGR_CFG 2 /* RGR configuration element */
232 #define RG_NUM_ITBS 27
233 #define RG_MAX_NUM_RB 110
235 #define RG_MAX_NUM_PAD_HDRS 2
237 /* Changes for MIMO feature addition */
238 /* Removed dependency on MIMO compile-time flag */
239 #define RG_MAX_LYR_PERCW 2
242 #define RG_MAX_DL_HARQ_NUM 15
244 #define RG_MAX_DL_HARQ_NUM 8
247 #define MAC_MEM_REGION 4
249 /* allocate and zero out a MAC static buffer */
250 #define MAC_ALLOC(_datPtr, _size) \
253 _ret = SGetSBuf(MAC_MEM_REGION, MAC_POOL, \
254 (Data **)&_datPtr, _size); \
256 cmMemset((U8*)_datPtr, 0, _size); \
261 /* free a static buffer */
262 #define MAC_FREE(_datPtr, _size) \
264 SPutSBuf(MAC_MEM_REGION, MAC_POOL, \
265 (Data *)_datPtr, _size);
267 /* Allocate shared memory to be used for LWLC
268 * during inter-layer communication */
269 #define MAC_ALLOC_SHRABL_BUF(_buf, _size) \
271 if(SGetStaticBuffer(MAC_MEM_REGION, MAC_POOL, \
272 (Data **)&_buf, (Size) _size, 0) == ROK) \
274 cmMemset((U8 *)(_buf), 0, _size); \
282 /* Free shared memory, received through LWLC */
283 #define MAC_FREE_SHRABL_BUF(_region, _pool,_buf, _size) \
287 (Void) SPutStaticBuffer(_region, _pool, \
288 (Data *) _buf, (Size) _size, 0); \
293 /* Free shared memory, received through LWLC */
294 #define MAC_FREE_MEM(_region, _pool, _datPtr, _size) \
296 SPutSBuf(_region, _pool,(Data *)_datPtr, _size); \
299 #define RG_LCG_ISCFGD(lcg) ((lcg)->lcgId != RG_INVALID_LCG_ID)
300 /* Corrected the check for dlCcchId */
301 #define RG_DLCCCH_ISCFGD(cell) ((cell)->dlCcchId != RG_INVALID_LC_ID)
302 #define RG_ULCCCH_ISCFGD(cell) ((cell)->ulCcchId != RG_INVALID_LC_ID)
303 /* After merging from 2.1 to 2.2 */
304 #define RG_CALC_SF_DIFF(_time1, _time2)\
305 (_time1.sfn*RG_NUM_SUB_FRAMES_5G+_time1.slot) < (_time2.sfn*RG_NUM_SUB_FRAMES_5G+_time2.slot)?\
306 ((_time1.sfn+RG_MAX_SFN)*RG_NUM_SUB_FRAMES_5G+_time1.slot) -\
307 (_time2.sfn*RG_NUM_SUB_FRAMES_5G+_time2.slot) : \
308 (_time1.sfn*RG_NUM_SUB_FRAMES_5G+_time1.slot) - (_time2.sfn*RG_NUM_SUB_FRAMES_5G+_time2.slot)
309 /*LTE_L2_MEAS_PHASE2*/
310 #define RG_CALC_SFN_SF_DIFF(_time1,_sfnCycle, _time2)\
311 (((_time1.sfn+RG_MAX_SFN * _sfnCycle)*RG_NUM_SUB_FRAMES_5G) + _time1.slot -\
312 (_time2.sfn*RG_NUM_SUB_FRAMES_5G + _time2.slot))
314 #define RG_EXT_LCID(_lcId, _byte) {\
315 (_lcId) = (_byte) & RG_LCID_MASK; \
317 #define RG_EXT_FORMT_BIT(_fmtBit, _byte) {\
318 (_fmtBit) = ((_byte) >> RG_LCID_LEN) & 0x01; \
321 #define RG_EXT_EXTN_BIT(_extnBit, _byte) {\
322 (_extnBit) = ((_byte) >> RG_LCID_LEN) & 0x01; \
325 #ifndef MS_MBUF_CORRUPTION
326 #define MS_BUF_ADD_ALLOC_CALLER()
329 #define RG_PACK_PAD(_padBuf,_size,_sduBuf) { \
330 Buffer *sduEnd = NULLP; \
331 SsMsgInfo *mInfo = NULLP; \
332 mInfo = (SsMsgInfo *)_sduBuf->b_rptr; \
333 ssGetDBufOfSize(mInfo->region,_size, &_padBuf); \
334 if (_padBuf == NULLP) \
336 RLOG0(L_ERROR, "RGERR_MUX_BLD_CEHDR_FAIL");\
339 if (mInfo->endptr == NULLP) { \
344 sduEnd = mInfo->endptr; \
346 sduEnd->b_cont = _padBuf; \
347 padBuf->b_wptr += _size; \
348 mInfo = (SsMsgInfo *)_sduBuf->b_rptr; \
349 mInfo->endptr = _padBuf; \
350 mInfo->len += _size; \
353 #define RG_PACK_SDU(_sdusBuf, _sduBuf, _ret) {\
354 _ret = SCatMsg(_sdusBuf, _sduBuf, M1M2);\
357 #define RG_PACK_LAST_SDU_SHDR(_subHdr, _lcId, _mBuf, _ret) {\
360 _subHdr.shData[0] = (0x1F & _lcId);\
361 MS_BUF_ADD_ALLOC_CALLER(); \
362 _ret = SAddPstMsgMult(&_subHdr.shData[0], _subHdr.shLen, _mBuf);\
365 #define RGADDTOCRNTTIME(crntTime, toFill, incr) \
366 if ((crntTime.slot + incr) > (RG_NUM_SUB_FRAMES_5G - 1)) \
367 toFill.sfn = (crntTime.sfn + 1); \
369 toFill.sfn = crntTime.sfn; \
370 toFill.slot = (crntTime.slot + incr) % RG_NUM_SUB_FRAMES_5G; \
371 if (toFill.sfn >= RG_MAX_SFN) \
373 toFill.sfn%=RG_MAX_SFN; \
376 #define RGSUBFRMCRNTTIME(crntTime, toFill, dcr) \
378 if (crntTime.sfn == 0) \
380 if ((crntTime.slot - (dcr)) < 0) \
382 toFill.sfn = RG_MAX_SFN - 1; \
386 toFill.sfn = crntTime.sfn; \
391 if ((crntTime.slot - (dcr)) < 0) \
393 toFill.sfn = crntTime.sfn - 1; \
396 toFill.sfn = crntTime.sfn; \
398 toFill.slot = (RG_NUM_SUB_FRAMES_5G + crntTime.slot - (dcr)) % (RG_NUM_SUB_FRAMES_5G); \
401 #define RGCPYTIMEINFO(src, dst) \
404 #define RG_TIMEINFO_SAME(x, y) ((x.sfn == y.sfn) && (x.slot == y.slot))
407 #define rgPBuf(_inst) rgCb[_inst].rgInit.prntBuf
409 /* Debug Prints for MAC */
411 #define RGDBGERRNEW(_inst,_args) \
412 DBGP(&rgCb[_inst].rgInit, RGLAYERNAME, DBGMASK_ERR, _args)
413 #define RGDBGINFONEW(_inst,_args) \
414 DBGP(&rgCb[_inst].rgInit, RGLAYERNAME, DBGMASK_INFO, _args)
416 #define RGDBGERRNEW(_inst,_args)
417 #define RGDBGINFONEW(_inst,_args)
418 #endif /* #ifdef DEBUGP */
419 #define RGDBGPRM(_inst,_args)
420 #define RGDBGERR(_inst,_args)
421 #define RGDBGINFO(_inst,_args)
424 #define RG_NULL_CHECK(_inst, _ptr ) \
425 if((_ptr) == NULLP) \
427 RGDBGERRNEW(_inst, (rgPBuf(_inst),"Null Pointer detected"));\
430 #define RG_ARRAY_BOUND_CHECK(_inst, _array, _idxVal) \
431 if((_idxVal) >= (sizeof(_array)/sizeof(_array[0]))) \
433 RGDBGERRNEW(_inst, (rgPBuf(_inst),"Array Bound Check Failed"));\
437 #define RG_NULL_CHECK(_inst, _ptr )
438 #define RG_ARRAY_BOUND_CHECK(_inst, _array, _idxVal)
441 /* Macro to free the message buffer and initialize it to zero */
442 /***********************************************************
446 * Desc : Macro to free the message buffer and initialize it to zero
448 * Input : mBuf - message buffer pointer to be retunrned
454 **********************************************************/
455 #define RG_FREE_MSG(_buf)\
457 if (NULLP != (_buf)) \
464 #define RG_FREE_MEM(_mem)\
466 if (NULLP != (_mem)) \
474 #define RG_FREE_TB(_tb)\
477 SResetMBuf(_tb->macHdr);\
478 SResetMBuf(_tb->macCes);\
479 _tb->tbPres = FALSE;\
482 for(lchIdx = 0; lchIdx < _tb->numLch; lchIdx++) \
484 for(pduIdx = 0; pduIdx < _tb->lchInfo[lchIdx].numPdu; pduIdx++)\
486 if(_tb->lchInfo[lchIdx].mBuf[pduIdx] != NULL)\
488 SPutMsg(_tb->lchInfo[lchIdx].mBuf[pduIdx]);\
489 _tb->lchInfo[lchIdx].freeBuff = FALSE;\
491 _tb->lchInfo[lchIdx].mBuf[pduIdx] = NULL;\
493 _tb->lchInfo[lchIdx].numPdu = 0;\
498 #define RG_FREE_SAVED_TB(_tb)\
501 RG_FREE_MSG(_tb->macHdr);\
502 RG_FREE_MSG(_tb->macCes);\
503 _tb->tbPres = FALSE;\
506 for(lchIdx = 0; lchIdx < 10; lchIdx++) \
508 for(pduIdx = 0; pduIdx < 4; pduIdx++)\
510 if(_tb->lchInfo[lchIdx].freeBuff == TRUE)\
512 SPutMsg(_tb->lchInfo[lchIdx].mBuf[pduIdx]);\
513 _tb->lchInfo[lchIdx].freeBuff = FALSE;\
515 _tb->lchInfo[lchIdx].mBuf[pduIdx] = NULL;\
517 _tb->lchInfo[lchIdx].numPdu = 0;\
524 /***********************************************************
526 * Name : RG_DROP_RGUDDATREQ_MBUF
528 * Desc : Macro to free the message buffers and initialize them to zero
530 * Input : _datreq - Dedicated Data Request pointer which has mBufs
537 **********************************************************/
538 #define RG_DROP_RGUDDATREQ_MBUF(_datReq)\
541 for (idx5=0; idx5 < _datReq.nmbOfTbs; idx5++)\
543 for (idx6=0; idx6 < _datReq.datReqTb[idx5].nmbLch; idx6++)\
546 idx7 < _datReq.datReqTb[idx5].lchData[idx6].pdu.numPdu; \
549 RG_FREE_MSG(_datReq.datReqTb[idx5].\
550 lchData[idx6].pdu.mBuf[idx7]);\
556 /***********************************************************
558 * Name : RG_DROP_RGUCDATREQ_MBUF
560 * Desc : Macro to free the message buffers and initialize them to zero
562 * Input : _datreq - Common Data Request pointer which has mBufs
569 **********************************************************/
570 #define RG_DROP_RGUCDATREQ_MBUF(_datReq)\
572 if (_datReq != NULLP)\
574 RG_FREE_MSG(_datReq->pdu);\
579 #define RG_UPD_GBR_PRB(_cellCb, _qci, _prbUsed) {\
580 if(_qci <= RG_MAX_QCI_REPORTS)\
582 _cellCb->qcisUlPrbCnt[_qci-1] += _prbUsed;\
587 /* Macros for memory region and pool determination */
588 #define RG_GET_MEM_REGION(rgCb) (rgCb.rgInit.region)
589 #define RG_GET_MEM_POOL(rgCb) (rgCb.rgInit.pool)
592 /* MUX related macros */
593 #define RG_RAR_SHDR_LEN 1
594 #define RG_RAR_ELEM_LEN 6
595 #define RG_MAX_SDU_SUB_HDR_LEN 3
596 #define RG_MAX_PAD_ARR_SZ 4096 /* Changing from 400 to 4096 */
597 #define RG_PAD_BYTE 0x00
599 #define RG_HDR_TYPE_CRES 1
600 #define RG_HDR_TYPE_TA 2
602 #define RG_HDR_TYPE_SCELL_ACT 3
605 #define RG_SDU_SHDR_LEN 1
606 #define RG_FIXDSZ_CE_SHDR_LEN 1
607 #define RG_PAD_SHDR_LEN 1
608 #define RG_CRES_LEN 6
611 #define RG_SCELL_ACT_CE_LEN 1
612 #define RG_SCELL_CE_ELM_LEN (RG_FIXDSZ_CE_SHDR_LEN+RG_SCELL_ACT_CE_LEN)
614 #define RG_CRES_ELM_LEN (RG_FIXDSZ_CE_SHDR_LEN+RG_CRES_LEN)
615 #define RG_TA_ELM_LEN (RG_FIXDSZ_CE_SHDR_LEN+RG_TA_LEN)
618 /* Values of below macros not yet defined in 5G-NR hence using LTE values till
621 #define RG_CRES_LCID_IDX 0x1C
622 #define RG_TA_LCID_IDX 0x1D
624 #define RG_SCELL_LCID_IDX 0x1B
626 #define RG_PAD_LCID_IDX 0x3F
628 /* Structure member offset computation macro */
629 #define OffsetOf(type, field) \
630 (PTR) (&(((type *) NULLP)->field))
632 #define RG_MAX_SUBFRAMES_IN_SFN 9
633 #define RG_MAX_SFN 1024
635 #define RG_NUM_SUB_FRAMES 50
637 #define RG_NUM_SUB_FRAMES 10
639 #define RG_NUM_SUB_FRAMES_5G 50
641 #define RG_MAX_QCI_REPORTS 4
645 #define RG_NUM_UL_SUB_FRAMES 16
646 #define RG_MAX_QCI_VALUE 10
648 #ifdef EIGHT_UE_PER_TTI_CHANGES
649 /* Tuned according to TDD Cfg Mode2 and 2UE/TTI.
650 * * Need to tune if NumUE/TTI is increased */
651 #define RG_MAX_DFRD_FREE_BUFS 64 /* 64 - 8UE/TTI */
652 #define RG_MAX_FREE_BUFS_PERTTI 16 /* 16 - 8UE/TTI */
655 #define RG_CALC_SF_DIFF(_time1, _time2)\
656 (_time1.sfn*RG_NUM_SUB_FRAMES_5G+_time1.slot) < (_time2.sfn*RG_NUM_SUB_FRAMES_5G+_time2.slot)?\
657 ((_time1.sfn+RG_MAX_SFN)*RG_NUM_SUB_FRAMES_5G+_time1.slot) -\
658 (_time2.sfn*RG_NUM_SUB_FRAMES_5G+_time2.slot) : \
659 (_time1.sfn*RG_NUM_SUB_FRAMES_5G+_time1.slot) - (_time2.sfn*RG_NUM_SUB_FRAMES_5G+_time2.slot)
661 #define RG_TTI_CYCLE_INVLD 0xFFFFFFFF
662 #define RG_CALC_TTI_CNT(_cellCb, _ttiCnt)\
663 _ttiCnt = (RG_NUM_SUB_FRAMES_5G * (_cellCb->crntTime.sfn + (_cellCb->ttiCycle * 1024)) )+\
664 _cellCb->crntTime.slot;
665 #endif /* LTE_L2_MEAS */
667 /* Tuned according to TDD Cfg Mode2 and 2UE/TTI.
668 * Need to tune if NumUE/TTI is increased */
669 #define RG_MAX_DFRD_FREE_BUFS 32 /* 16- 2 UE per TTI 32 - 4UE/TTI */
670 #define RG_MAX_FREE_BUFS_PERTTI 8 /* 4 - 2 Ue per TTI, 8 - 4UE/TTI */
673 /* Define for the block size for memory allocation */
674 /* RG_BLKSZ changed from 2048 to 1500*/
675 #define RG_BLKSZ 1500
677 /* Defines for RGU Statistics types */
678 #define RG_RGU_SDU_DROP 1
679 #define RG_RGU_SDU_RCVD 2
681 /* MACROS for General Statistics */
685 #define RG_HQ_FDB_IND_CB_TYPE_HQ_ENT 1
686 #define RG_HQ_FDB_IND_CB_TYPE_RA_CB 2
688 /* MACRO for validating the mac instance id */
689 #define RG_IS_INST_VALID(_inst)\
691 if(_inst >= RG_MAX_INST)\
698 * Removed unused hash-define which defines the
699 * index for releasing the subframe.
702 /* Value used to set nDmrs in uplink grant if nDmrs is not applicable */
703 #define RG_INVALID_NDMRS 10
705 #define RG_SEND_TRC_IND(_inst,_mBuf, _event) rgLMMTrcInd(_inst,_mBuf, _event)
707 /* Note: Any changes to these enums should reflect to */
708 /** @details Enums for special argument
717 #define RG_DIAG_LVL0(_inst,_tknId, _splArgEnum, _splArg, _string, _arg1, _arg2, _arg3, _arg4) \
719 if(rgCb[_inst].rgInit.logMask & SS_DIAG_LVL0) \
721 ssDiagFix(_tknId, _splArgEnum, ENTRG, rgCb[_inst].rgInit.inst, SS_DIAG_LVL0, SS_DIAG_MSG_TYPE_FIXED, _splArg, _arg1, _arg2, _arg3, _arg4, _string);\
725 /** @details Macro definition for LTE-MAC error logs
728 #define RG_DIAG_LVL1(_inst,_tknId, _splArgEnum, _splArg, _string, _arg1, _arg2, _arg3, _arg4) \
730 if(rgCb[_inst].rgInit.logMask & SS_DIAG_LVL1) \
732 ssDiagFix(_tknId, _splArgEnum, ENTRG, rgCb[_inst].rgInit.inst, SS_DIAG_LVL1, SS_DIAG_MSG_TYPE_FIXED, _splArg, _arg1, _arg2, _arg3, _arg4, _string);\
736 /** @details Macro definition for LTE-MAC critical logs
739 #define RG_DIAG_LVL2(_inst,_tknId, _splArgEnum, _splArg, _string, _arg1, _arg2, _arg3, _arg4) \
741 if(rgCb[_inst].rgInit.logMask & SS_DIAG_LVL2) \
743 ssDiagFix(_tknId, _splArgEnum, ENTRG, rgCb[_inst].rgInit.inst, SS_DIAG_LVL2, SS_DIAG_MSG_TYPE_FIXED, _splArg, _arg1, _arg2, _arg3, _arg4, _string);\
747 /** @details Macro definition for LTE-MAC logs
750 #define RG_DIAG_LVL3(_inst,_tknId, _splArgEnum, _splArg, _string, _arg1, _arg2, _arg3, _arg4) \
752 if(rgCb[_inst].rgInit.logMask & SS_DIAG_LVL3) \
754 ssDiagFix(_tknId, _splArgEnum, ENTRG, rgCb[_inst].rgInit.inst, SS_DIAG_LVL3, SS_DIAG_MSG_TYPE_FIXED, _splArg, _arg1, _arg2, _arg3, _arg4, _string);\
758 /** @details Macro definition for LTE-MAC logs
761 #define RG_DIAG_LVL4(_inst,_tknId, _splArgEnum, _splArg, _string, _arg1, _arg2, _arg3, _arg4) \
763 if(rgCb[_inst].rgInit.logMask & SS_DIAG_LVL4) \
765 ssDiagFix(_tknId, _splArgEnum, ENTRG, rgCb[_inst].rgInit.inst, SS_DIAG_LVL4, SS_DIAG_MSG_TYPE_FIXED, _splArg, _arg1, _arg2, _arg3, _arg4, _string);\
771 #define RG_DIAG_LVL0(_inst,_tknId, _splArgEnum, _splArg, _string, _arg1, _arg2, _arg3, _arg4) \
775 /** @details Macro definition for LTE-MAC error logs
778 #define RG_DIAG_LVL1(_inst,_tknId, _splArgEnum, _splArg, _string, _arg1, _arg2, _arg3, _arg4) \
782 /** @details Macro definition for LTE-MAC critical logs
785 #define RG_DIAG_LVL2(_inst,_tknId, _splArgEnum, _splArg, _string, _arg1, _arg2, _arg3, _arg4) \
789 /** @details Macro definition for LTE-MAC logs
792 #define RG_DIAG_LVL3(_inst,_tknId, _splArgEnum, _splArg, _string, _arg1, _arg2, _arg3, _arg4) \
796 /** @details Macro definition for LTE-MAC logs
799 #define RG_DIAG_LVL4(_inst,_tknId, _splArgEnum, _splArg, _string, _arg1, _arg2, _arg3, _arg4) \
803 #define DEFAULT_CELLS 1
806 /**********************************************************************
808 **********************************************************************/