[Epic-ID: ODUHIGH-461][Task-ID: ODUHIGH-468]Unused files and functions removed/disabled
[o-du/l2.git] / src / 5gnrmac / rg_mux.c
diff --git a/src/5gnrmac/rg_mux.c b/src/5gnrmac/rg_mux.c
deleted file mode 100755 (executable)
index 22b8f1e..0000000
+++ /dev/null
@@ -1,1159 +0,0 @@
-/*******************************************************************************
-################################################################################
-#   Copyright (c) [2017-2019] [Radisys]                                        #
-#                                                                              #
-#   Licensed under the Apache License, Version 2.0 (the "License");            #
-#   you may not use this file except in compliance with the License.           #
-#   You may obtain a copy of the License at                                    #
-#                                                                              #
-#       http://www.apache.org/licenses/LICENSE-2.0                             #
-#                                                                              #
-#   Unless required by applicable law or agreed to in writing, software        #
-#   distributed under the License is distributed on an "AS IS" BASIS,          #
-#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.   #
-#   See the License for the specific language governing permissions and        #
-#   limitations under the License.                                             #
-################################################################################
-*******************************************************************************/
-
-/************************************************************************
-     Name:     LTE-MAC layer
-  
-     Type:     C source file
-  
-     Desc:     C source code for Entry point fucntions
-  
-     File:     rg_mux.c 
-  
-**********************************************************************/
-
-/** @file rg_mux.c
-@brief MAC Multiplexing API.
-*/
-
-
-/* header include files -- defines (.h) */
-#include "common_def.h"
-#include "rg_env.h"        /* MAC Environment Defines */
-#include "tfu.h"           /* TFU Interface defines */
-#include "crg.h"           /* CRG Interface defines */
-#include "rg_sch_inf.h"           /* RGR Interface defines */
-#include "rgu.h"           /* RGU Interface defines */
-#include "lrg.h"           /* LRG Interface defines */
-
-#include "rg_err.h"        /* MAC error defines */
-#include "rg.h"            /* MAC defines */
-
-/* header/extern include files (.x) */
-
-#include "rgu.x"           /* RGU Interface includes */
-#include "tfu.x"           /* CRG Interface includes */
-#include "crg.x"           /* CRG Interface includes */
-#include "rg_sch_inf.x"    /* SCH Interface includes */
-#include "rg_prg.x"        /* PRG Interface includes */
-#include "rgu.x"           /* RGU Interface includes */
-#include "lrg.x"           /* LRG Interface includes */
-
-#include "du_app_mac_inf.h"
-#include "rg.x"            /* MAC includes */
-#include "ss_queue.h"
-#include "ss_queue.x"
-#include "ss_task.x"
-#include "ss_msg.x"            /* MAC includes */
-/* local defines */
-#ifndef T2K_MEM_LEAK_DBG
- S16 ssGetDBufOfSize(Region region,Size size,Buffer **dBuf);
-#else
-char* file = __FILE__;
-uint32_t line = __LINE__;
-#endif
-
-/* local typedefs */
-
-/* global variables */
-uint32_t rgDlrate_rgu;
-
-/* local externs */
-
-static Void rgMUXGet20bitRarGrnt ARGS((uint8_t ulBw,
-                                        RgInfRarUlGrnt *msg3Grnt,
-                                        uint8_t *grnt));
-uint16_t rgMUXCalcRiv ARGS((uint8_t bw,
-                                uint8_t rbStart,
-                                uint8_t numRb));
-#ifndef MS_MBUF_CORRUPTION
-#define MS_BUF_ADD_ALLOC_CALLER()
-#endif
-/* forward references */
-
-#define RG_PACK_SHDR_FIXD_SZ(_subHdr, _lcId, _mBuf, _ret) {\
-   _subHdr.shLen = RG_FIXDSZ_CE_SHDR_LEN;\
-   _subHdr.shData[0] = (0x3F & _lcId);\
-   MS_BUF_ADD_ALLOC_CALLER(); \
-   _ret = SAddPstMsgMult(&_subHdr.shData[0], _subHdr.shLen, _mBuf);\
-}
-
-#define RG_PACK_CE(_ce, _len, _ceBuf, _ret) {\
-   MS_BUF_ADD_ALLOC_CALLER(); \
-   _ret = SAddPstMsgMult((uint8_t *)(&(_ce)), _len, _ceBuf);\
-}
-
-#define RG_MUX_CALC_LEN(_len,_lenBytes,_elmTotLen) {\
-   uint8_t _hdrLen;\
-   _lenBytes    = (_len <= 255) ? 1 : 2;\
-   _hdrLen      = _lenBytes + RG_SDU_SHDR_LEN;\
-   _elmTotLen   = _hdrLen + _len;\
-}
-
-#define RG_PACK_VAR_SZ_CE_SDU_SHDR(_subHdr, _lcId, _len,_mBuf, _ret) {\
-   _ret = ROK;\
-   if(_len <= 255)\
-   {\
-      _subHdr.shData[0] = (0x3F & _lcId);\
-      _subHdr.shLen = 2;\
-      _subHdr.shData[1] = (0xFF & _len);\
-      _subHdr.shData[2] = 0;\
-   }\
-   else\
-   {\
-   _subHdr.shData[0] = (0x7F & ((0x40) | _lcId));\
-      _subHdr.shLen = 3;\
-      _subHdr.shData[1] = (0xFF & (_len >> 8));\
-      _subHdr.shData[2] = (0xFF & _len);\
-   }\
-   MS_BUF_ADD_ALLOC_CALLER(); \
-   _ret = SAddPstMsgMult(&_subHdr.shData[0], _subHdr.shLen, _mBuf);\
-}
-
-#define RG_PACK_PAD_SHDR(_mBuf, _ret) {\
-      _ret = SAddPreMsg(0x3F, _mBuf);\
-}
-
-#define RG_PACK_RAR_SHDR(_byte, _mBuf, _ret) {\
-   _ret = SAddPstMsg(_byte, _mBuf);\
-}
-
-
-/**
- * @brief Function to add ces along with subhdrs.
- * This function packs first CE sub-hdr and then CE in ceBuf pointer 
- *
- * @details
- *
- *     Function : rgMUXAddCes
- *     
- *  @param[in]  Inst        inst
- *  @param[in] RgBldPduInfo   *pdu
- *  @param[in] Buffer        *ceBuf 
- *  @param[in] RgErrInfo     *err 
- *  @return    S16
- *      -# ROK 
- *      -# RFAILED 
- **/
-static S16 rgMUXAddCes
-(
-Inst           inst,
-RgBldPduInfo   *pdu,
-Buffer         *ceBuf,
-RgErrInfo      *err
-)
-{
-   S16            ret;
-   RgMUXSubHdr    subHdr;
-
-   if (NULLP != pdu->contResId)
-   {
-      if(pdu->schdTbSz >= RG_CRES_ELM_LEN)
-      {
-         RG_PACK_SHDR_FIXD_SZ(subHdr, RG_CRES_LCID_IDX, ceBuf, ret);
-
-         if(ret != ROK)
-         {
-            err->errCause = RGERR_MUX_BLD_CEHDR_FAIL;
-            DU_LOG("\nERROR  -->  MAC : Muxing of Contention Resolution CE sub-header is failed");
-            return RFAILED;
-         }
-
-         RG_PACK_CE(pdu->contResId->resId[0], RG_CRES_LEN, ceBuf, ret);
-
-         if(ret != ROK)
-         {
-            err->errCause = RGERR_MUX_BLD_CE_FAIL;
-            DU_LOG("\nERROR  -->  MAC : Muxing of Contention Resolution CE is failed");
-            return RFAILED;
-         }
-         pdu->schdTbSz -= RG_CRES_ELM_LEN;
-      }
-   }
-   if (TRUE == pdu->ta.pres)
-   {
-      if(pdu->schdTbSz >= RG_TA_ELM_LEN)
-      {
-         uint8_t taVal; /* Moving from outer scope to available scope */
-         RG_PACK_SHDR_FIXD_SZ(subHdr, RG_TA_LCID_IDX, ceBuf, ret);
-
-         if(ret != ROK)
-         {
-            err->errCause = RGERR_MUX_BLD_CEHDR_FAIL;
-            DU_LOG("\nERROR  -->  MAC : Muxing of TA CE sub-hdr is failed");
-            return RFAILED;
-         }
-
-         taVal = pdu->ta.val;
-         RG_PACK_CE(taVal, RG_TA_LEN, ceBuf, ret);
-
-         if(ret != ROK)
-         {
-            err->errCause = RGERR_MUX_BLD_CE_FAIL;
-            DU_LOG("\nERROR  -->  MAC : Muxing of TA CE is failed");
-            return RFAILED;
-         }
-         pdu->schdTbSz -= RG_TA_ELM_LEN;
-         DU_LOG("\nDEBUG  -->  MAC : TA muxed by MAC: %u", pdu->ta.val);
-      }
-   }
-#ifdef LTE_ADV
-   if(TRUE == pdu->sCellActCe.pres)
-   {
-      if(pdu->schdTbSz >= RG_SCELL_CE_ELM_LEN)
-      {
-         /* Adding the subheader for ACT CE */
-         RG_PACK_SHDR_FIXD_SZ(subHdr, RG_SCELL_LCID_IDX, ceBuf, ret);
-
-         if(ret != ROK)
-         {
-            err->errCause = RGERR_MUX_BLD_CEHDR_FAIL;
-            DU_LOG("\nERROR  -->  MAC : Muxing of SCELL Activation CE sub-hdr is failed")
-            return RFAILED;
-         }
-
-         /* Adding the ACT CE */
-         RG_PACK_CE(pdu->sCellActCe.val, RG_SCELL_ACT_CE_LEN, ceBuf, ret);
-
-         if(ret != ROK)
-         {
-            err->errCause = RGERR_MUX_BLD_CE_FAIL;
-            DU_LOG("\nERROR  -->  MAC : Muxing of SCELL Activation CE is failed")
-            return RFAILED;
-         }
-         pdu->schdTbSz -= RG_SCELL_CE_ELM_LEN;
-
-      }
-   }
-#endif
-  
-  /*LcId is not yet decided in 5G-NR spec for MAC CEs Hence, not writing code
-   * new MAC CEs. */
-
-   return ROK;
-} /* rgMUXAddCes */
-
-/**
- * @brief Function to insert SDU along with sub headers.
- *
- * @details
- *
- *     Function : rgMUXInsSdu
- *     
- *  @param[in]       Inst        inst
- *  @param[in]       MsgLen      *schdTbSz
- *  @param[in]       uint8_t          lcId
- *  @param[in]       Buffer      *sdu
- *  @param[out]      Buffer      *sduBuf 
- *  @param[out]      RgErrInfo   *err 
- *  @return    S16
- *      -# ROK 
- *      -# RFAILED
- **/
-static S16 rgMUXInsSdu
-(
-Inst           inst,
-MsgLen         *schdTbSz,
-uint8_t        lcId,
-Buffer         *sdu,
-Buffer         *sduBuf,
-RgErrInfo      *err
-)
-{
-   S16            ret;
-   MsgLen         msgLen = 0;
-   uint8_t        lenBytes;
-   MsgLen         elmTotLen;
-
-   SFndLenMsg(sdu, &msgLen);
-
-   RG_MUX_CALC_LEN(msgLen,lenBytes,elmTotLen);
-   
-   if (lcId == 3)
-   {
-     rgDlrate_rgu += msgLen; 
-   }
-   if (*schdTbSz >= elmTotLen)
-   {
-      RgMUXSubHdr    subHdr;
-      RG_PACK_VAR_SZ_CE_SDU_SHDR(subHdr, lcId, msgLen,sduBuf, ret);
-      if(ret != ROK)
-      {
-         err->errCause = RGERR_MUX_BLD_SDUHDR_FAIL;
-         DU_LOG("\nERROR  -->  MAC : RGERR_MUX_BLD_SDUHDR_FAIL for LCID:%d",lcId);
-         return RFAILED;
-      }
-
-#ifndef L2_OPTMZ /* no need to pack as passing not muxing all LCs PDUs to 1*/
-      RG_PACK_SDU(sduBuf, sdu, ret);
-#else
-  //UDAY
-      ret = ROK;
-      UNUSED(sduBuf);
-#endif
-
-      if(ret != ROK)
-      {
-         err->errCause = RGERR_MUX_BLD_SDU_FAIL;
-         DU_LOG("\nERROR  -->  MAC : RGERR_MUX_BLD_SDU_FAIL for LCID:%d",lcId);
-         return RFAILED;
-      }
-
-      *schdTbSz -= elmTotLen;
-   }
-   else
-   {
-      /* This Sub-PDU can not be accodmodated at all */
-      DU_LOG("\nERROR  -->  MAC : Failed lcId %u, elmTotLen %d lenBytes %d LCID:%d",
-               lcId, ((S16)elmTotLen), lenBytes,lcId);
-      DU_LOG("\nERROR  -->  MAC : msglen %d schdTbSz %d LCID:%d",
-               ((S16)msgLen), ((S16)*schdTbSz),lcId);
-      return RFAILED;
-   }
-   return ROK;
-}
-
-/**
- * @brief Function to insert SDU along with sub headers.
- *
- * @details
- *
- *     Function : rgMUXAddPadd
- *     
- *  @param[in]  Inst        inst
- *  @param[in]       RgBldPduInfo   *pdu
- *  @param[out]      Buffer        *mBuf 
- *  @param[out]      Buffer        *sduBuf 
- *  @return    S16
- *      -# ROK 
- *      -# RFAILED
- **/
-#ifdef L2_OPTMZ
-uint32_t padSize = 0;
-#endif
-S16 rgMUXAddPadd
-(
-Inst           inst,
-MsgLen         *schdTbSz,
-Buffer         *sduBuf,
-Bool           isRar,
-RgErrInfo      *err
-)
-{
-   S16     ret = ROK;
-   Buffer         *padBuf = NULLP;
-   RgMUXSubHdr    subHdr;
-
-#ifdef L2_OPTMZ
-   padSize = 0;
-#endif
-   if(*schdTbSz)
-   {
-#ifndef L2_OPTMZ
-      if(FALSE == isRar)
-#else
-      if((FALSE == isRar) && (NULL != sHdrBuf))
-#endif
-
-      {
-         RG_PACK_SHDR_FIXD_SZ(subHdr, RG_PAD_LCID_IDX, sduBuf, ret);  
-
-         if(ret != ROK)
-         {
-            err->errCause = RGERR_MUX_BLD_PADHDR_FAIL;
-            DU_LOG("\nERROR  -->  MAC : RGERR_MUX_BLD_PADHDR_FAIL");
-            return RFAILED;
-         }
-
-         *schdTbSz -= 1;
-      }
-
-      if (*schdTbSz)
-      {
-         if (*schdTbSz <= RG_MAX_PAD_ARR_SZ)
-         {
-#ifndef L2_OPTMZ
-            RG_PACK_PAD(padBuf,*schdTbSz,sduBuf);
-#else
-            if(sduBuf)
-            {
-               RG_PACK_PAD(padBuf,*schdTbSz,sduBuf);
-            }
-            else
-               padSize += *schdTbSz;
-#endif
-            if(ret != ROK)
-            {
-               err->errCause = RGERR_MUX_BLD_PAD_FAIL;
-               DU_LOG("\nERROR  -->  MAC : RGERR_MUX_BLD_PAD_FAIL");
-               return RFAILED;
-            }
-            *schdTbSz = 0;
-         }
-         else
-         {
-            while (*schdTbSz)
-            {
-               if (*schdTbSz > RG_MAX_PAD_ARR_SZ)
-               {
-#ifndef L2_OPTMZ
-                  RG_PACK_PAD(padBuf,RG_MAX_PAD_ARR_SZ,sduBuf);
-#else
-                  if(sduBuf)
-                  {
-                     RG_PACK_PAD(padBuf,RG_MAX_PAD_ARR_SZ,sduBuf);
-                  }
-                  else
-                     padSize += RG_MAX_PAD_ARR_SZ;
-#endif
-
-                  if(ret != ROK)
-                  {
-                     err->errCause = RGERR_MUX_BLD_PAD_FAIL;
-                     DU_LOG("\nERROR  -->  MAC : RGERR_MUX_BLD_PAD_FAIL");
-                     return RFAILED;
-                  }
-
-                  *schdTbSz -= RG_MAX_PAD_ARR_SZ;
-               }
-               else
-               {
-#ifndef L2_OPTMZ
-                  RG_PACK_PAD(padBuf,*schdTbSz,sduBuf);
-#else
-                  if(sduBuf)
-                  {
-                     RG_PACK_PAD(padBuf,*schdTbSz,sduBuf);
-                  }
-                  else
-                     padSize += *schdTbSz;
-#endif
-
-                  if(ret != ROK)
-                  {
-                     err->errCause = RGERR_MUX_BLD_PAD_FAIL;
-                     DU_LOG("\nERROR  -->  MAC : RGERR_MUX_BLD_PAD_FAIL");
-                     return RFAILED;
-
-                  }
-                  *schdTbSz = 0;
-               }
-            }
-         }
-      }
-   }
-
-   return ROK;
-} /* rgMUXAddPadd */
-
-#ifndef L2_OPTMZ
-/**
- * @brief Function to add SDU along with sub headers.
- *
- * @details
- *
- *     Function : rgMUXAddSdus
- *     
- *  @param[in]  Inst        inst
- *  @param[in]       RgBldPduInfo   *pdu
- *  @param[out]      Buffer        *mBuf 
- *  @param[out]      Buffer        *sduBuf 
- *  @return    S16
- *      -# ROK 
- *      -# RFAILED
- **/
-static S16 rgMUXAddSdus
-(
-Inst           inst,
-RgBldPduInfo   *pdu,
-Buffer         *sduBuf,
-RgErrInfo      *err
-)
-{
-   RgRguDDatReqPerUe *dDatReq;
-   RgRguCmnDatReq    *cDatReq;
-
-   switch(pdu->reqType)
-   {
-      case EVTRGUCDATREQ:
-         cDatReq = (RgRguCmnDatReq *)(pdu->datReq);
-         /* Add sdu(s) to the Message Buffer */
-         if (NULLP != cDatReq)
-         {
-            if(rgMUXInsSdu(inst,&pdu->schdTbSz, 
-                     RG_CCCH_LCID, cDatReq->pdu, sduBuf, err) != ROK)
-            {
-               return RFAILED;
-            }
-            RG_FREE_MSG(cDatReq->pdu);
-         }
-         break;
-
-      case EVTRGUDDATREQ:
-         dDatReq = (RgRguDDatReqPerUe *)(pdu->datReq);
-         /* Add sdu(s) to the Message Buffer */
-         if (NULLP != dDatReq)
-         {
-            if(pdu->tbIndex == 1)
-            {
-               uint16_t idx1, idx2;
-               /* Adding this temporary variable for optimization */
-               RguDatReqTb *datReqTb = &dDatReq->datReqTb[0];
-
-               for (idx1=0; (idx1 < datReqTb->nmbLch); idx1++)
-               {
-                  for(idx2=0;
-                     (idx2 < datReqTb->lchData[idx1].pdu.numPdu);
-                     idx2++)
-                  {
-                     if(pdu->schdTbSz)
-                     {
-                        if(rgMUXInsSdu(inst,&pdu->schdTbSz,
-                           datReqTb->lchData[idx1].lcId, 
-                           datReqTb->lchData[idx1].pdu.mBuf[idx2],
-                           sduBuf, err) != ROK)
-                        {
-                           DU_LOG("\nERROR  -->  MAC : FAILED for LCID:%d",datReqTb->lchData[idx1].lcId);
-                           return RFAILED;
-                        }
-                     }
-                     RG_FREE_MSG(datReqTb->lchData[idx1].pdu.mBuf[idx2]);
-                  }
-               }
-            }
-            else if(pdu->tbIndex == 2)
-            {
-               uint16_t idx1, idx2;
-               RguDatReqTb *datReqTb = &dDatReq->datReqTb[1];
-               for (idx1=0; (idx1 < datReqTb->nmbLch); idx1++)
-               {
-                  for(idx2=0;
-                     (idx2 < datReqTb->lchData[idx1].pdu.numPdu);
-                     idx2++)
-                  {
-                     if(pdu->schdTbSz)
-                     {
-                        if(rgMUXInsSdu(inst,&pdu->schdTbSz,
-                           datReqTb->lchData[idx1].lcId, 
-                           datReqTb->lchData[idx1].pdu.mBuf[idx2],
-                           sduBuf, err) != ROK)
-                        {
-                           DU_LOG("\nERROR  -->  MAC : FAILED TB Size %d LCID:%d",
-                                    ((S16)pdu->schdTbSz),datReqTb->lchData[idx1].lcId);
-                           return RFAILED;
-                        }
-                     }
-                     RG_FREE_MSG(datReqTb->lchData[idx1].pdu.mBuf[idx2]);
-                  }
-               }
-            }
-         }
-         break;
-
-      default:
-         break;
-   } /* End of switch(reqType) */
-   if(rgMUXAddPadd(inst,&pdu->schdTbSz, sduBuf, FALSE, err) != ROK)
-   {
-      DU_LOG("\nERROR  -->  MAC : FAILED for TB Size:%d",(S16)pdu->schdTbSz);
-      return RFAILED;
-   }
-   return ROK;
-}
-
-/**
- * @brief Function to create MAC PDU from RLC SDUs and control elements, if any. 
- *
- * @details
- *
- *     Function : rgMUXBldPdu
- *     
- *     -# This function shall be invoked by Downlink Harq Module as soon as a
- *        Data request is received from RLC for a UE along with its stored 
- *        control elements to create a MAC PDU.
- *     -# It shall create subheaders for the control elements (timing advance
- *        and contention resolution ID) and pack sub-header before each CE,
- *        if given, and then shall run through all the logical channels and
- *        create subheader for each of the SDUs given on that logical channel
- *        and pack corresponding sub-header before the each SDU 
- *     -# It shall invoke rgMUXPadPdu if the total length of the created 
- *        buffer is less than the scheduled TB size. 
- *     
- *           
- *  @param[in]  Inst           *inst
- *  @param[in]  RgBldPduInfo   *bldPdu
- *  @param[in]  Buffer         **txPdu
- *  @param[out] RgErrInfo      *err
- *  @return  S16
- *      -# ROK 
- *      -# RFAILED 
- **/
-S16 rgMUXBldPdu
-(
-Inst           inst,
-RgBldPduInfo   *pdu,
-Buffer         **txPdu,
-RgErrInfo      *err
-)
-{
-   Buffer         *mBuf = NULLP;
-
-   if (rgGetMsg(inst, &mBuf) != ROK)
-   {
-      /* Buffer couldnt get allocated. Return a failure */
-      err->errCause = RGERR_MUX_MEM_ALLOC_FAIL;
-      err->errType = RGERR_MUX_BLD_PDU;
-      DU_LOG("\nERROR  -->  MAC : Memory allocation failed during MUXing of MAC TB: MacInst %d", inst);
-      return RFAILED;
-   }
-
-   if(rgMUXAddCes(inst, pdu, mBuf, err) != ROK)
-   {
-      RG_FREE_MSG(mBuf);
-      err->errType = RGERR_MUX_BLD_PDU;
-      DU_LOG("\nERROR  -->  MAC : Failed to Multiplex MAC CEs: MacInst %d", inst);
-      return RFAILED;
-   }
-
-   if(rgMUXAddSdus(inst, pdu, mBuf, err) != ROK)
-   {
-      RG_FREE_MSG(mBuf);
-      err->errType = RGERR_MUX_BLD_PDU;
-      DU_LOG("\nERROR  -->  MAC : FAILED to Multiplex MAC SDU: MacInst %d", inst);
-      return RFAILED;
-   }
-
-   *txPdu = mBuf;
-
-   return ROK;
-
-}  /* rgMUXBldPdu */
-
-#else /* else of ifndef L2_OPTMZ */
-
-/**
- * @brief Function to add SDU along with sub headers.
- *
- * @details
- *
- *     Function : rgMUXAddSdus
- *     
- *  @param[in]       RgBldPduInfo   *pdu
- *  @param[out]      Buffer        *mBuf 
- *  @param[out]      Buffer        *sduBuf 
- *  @return    S16
- *      -# ROK 
- *      -# RFAILED
- **/
-static S16 rgMUXAddSdus
-(
-Inst                inst,
-RgBldPduInfo        *pdu,
-Buffer              *sHdrBuf,
-RgTfuDatReqTbInfo   *tb,
-RgErrInfo           *err
-)
-{
-   RgRguDDatReqPerUe  *dDatReq;
-   RgRguCmnDatReq     *cDatReq;
-   uint32_t lchIdx, pduIdx;
-
-   switch(pdu->reqType)
-   {
-      case EVTRGUCDATREQ:
-         cDatReq = (RgRguCmnDatReq *)(pdu->datReq);
-         /* Add sdu(s) to the Message Buffer */
-         if (NULLP != cDatReq)
-         {
-            if(rgMUXInsSdu(inst, &pdu->schdTbSz, 
-                     RG_CCCH_LCID, cDatReq->pdu, 
-                     sHdrBuf, NULLP, err) != ROK)
-            {
-               return RFAILED;
-            }
-            /* L2 Optimization for mUe/Tti: RLC pdu mbuf pointer will be passed
-             * to CL it is stored in DlHqProc->TbInfo and it will be used in
-             * case of harq retransmission. Store CCCH data at 0th index of
-             * lch array*/
-            tb->lchInfo[tb->numLch].mBuf[(tb->lchInfo[tb->numLch].numPdu)]\
-               = cDatReq->pdu;
-            tb->lchInfo[tb->numLch].numPdu++;
-            tb->numLch++;
-            DU_LOG("\nINFO   -->  MAC : MSG4 is muxed  numLch=%ld numPdu=%ld tbaddr =%p",\
-           tb->numLch,tb->lchInfo[tb->numLch-1].numPdu, (uint32_t)tb);
-         }
-         break;
-
-      case EVTRGUDDATREQ:
-         dDatReq = (RgRguDDatReqPerUe *)(pdu->datReq);
-         /* Add sdu(s) to the Message Buffer */
-         if (NULLP != dDatReq)
-         {
-            if(pdu->tbIndex == 1)
-            {
-               uint16_t idx1, idx2;
-               /* Adding this temporary variable for optimization */
-               RguDatReqTb *datReqTb = &dDatReq->datReqTb[0];
-             
-               tb->numLch = lchIdx = 0;
-
-               for (idx1=0; (idx1 < datReqTb->nmbLch); idx1++)
-               {
-                  tb->lchInfo[lchIdx].numPdu = pduIdx = 0;
-
-                  for(idx2=0;
-                     (idx2 < datReqTb->lchData[idx1].pdu.numPdu);
-                     idx2++)
-                  {
-                     if(pdu->schdTbSz)
-                     {
-                        if(rgMUXInsSdu(inst, &pdu->schdTbSz,
-                           datReqTb->lchData[idx1].lcId, 
-                           datReqTb->lchData[idx1].pdu.mBuf[idx2],
-                           sHdrBuf, NULLP, err) != ROK)
-                        {
-                           DU_LOG("\nERROR   -->  MAC : Failed to insert SDU in rgMUXAddSdus\n");
-                           return RFAILED;
-                        }
-
-                        /* L2 Optimization for mUe/Tti:Increment numPdu by 1
-                         * Store pdu buffer in tb to send it to CL/PHY. Increment
-                         * numPdu by 1*/
-                        tb->lchInfo[lchIdx].mBuf[pduIdx] = datReqTb->lchData[idx1].pdu.mBuf[idx2];
-
-#ifdef L2_OPTMZ
-                        if(datReqTb->lchData[idx1].freeBuff == FALSE)
-                        {/* Not incrementing refCnt for UM Mode. */
-                           tb->lchInfo[lchIdx].mBuf[pduIdx]->refCnt++;
-                        }
-#endif
-//UDAY 
-                        if(NULL != datReqTb->lchData[idx1].pdu.mBuf[idx2]->b_cont)
-                        {
-                             Buffer *tmp;
-                             tmp = datReqTb->lchData[idx1].pdu.mBuf[idx2]->b_cont;
-                             if(NULL == tmp->b_rptr)
-                             {
-                                DU_LOG("\nERROR   -->  MAC : rgMUXAddSdus failed in EVTRGUDDATREQ");
-                             }
-                        }
-                        else
-                        {
-                            DU_LOG("\nERROR   -->  MAC : rgMUXAddSdus failed in EVTRGUDDATREQ");
-                        }
-                        pduIdx++;
-                        //tb->lchInfo[tb->numLch].numPdu++;
-                        //tb->numLch++;
-
-                    }
-                  }
-                  
-                  if(pduIdx)
-                  {
-                    tb->lchInfo[lchIdx].numPdu = pduIdx;
-                    /* If Bearer is UM then MBUF to be free by MAC layer */
-                    tb->lchInfo[lchIdx].freeBuff = datReqTb->lchData[idx1].freeBuff;
-                    lchIdx++;
-                  }
-               }
-               tb->numLch = lchIdx;
-            }
-            else if(pdu->tbIndex == 2)
-            {
-               uint16_t idx1, idx2;
-               RguDatReqTb *datReqTb = &dDatReq->datReqTb[1];
-               tb->numLch = lchIdx = 0;
-         //      prc_trace_format_string(0x40,3,": AddSdus: numOfLch=%d numOfPdu=%d, schdSz=%d", datReqTb->nmbLch, datReqTb->lchData[0].pdu.numPdu, pdu->schdTbSz);
-              for (idx1=0; (idx1 < datReqTb->nmbLch); idx1++)
-               {
-                 tb->lchInfo[lchIdx].numPdu = pduIdx = 0;
-                 for(idx2=0;
-                     (idx2 < datReqTb->lchData[idx1].pdu.numPdu);
-                     idx2++)
-                  {
-                     if(pdu->schdTbSz)
-                     {
-                        if(rgMUXInsSdu(inst, &pdu->schdTbSz,
-                           datReqTb->lchData[idx1].lcId, 
-                           datReqTb->lchData[idx1].pdu.mBuf[idx2],
-                           sHdrBuf, NULLP, err) != ROK)
-                        {
-                           DU_LOG("\nERROR  -->  MAC : FAILED TB Size %d\n",
-                                    ((S16)pdu->schdTbSz));
-                           return RFAILED;
-                        }
-                         /* L2 Optimization for mUe/Tti:Increment numPdu by 1
-                         * Store pdu buffer in tb to send it to CL/PHY. Increment
-                         * numPdu by 1*/
-                        tb->lchInfo[lchIdx].mBuf[pduIdx] = datReqTb->lchData[idx1].pdu.mBuf[idx2];
-#ifdef L2_OPTMZ
-                        if(datReqTb->lchData[idx1].freeBuff == FALSE)
-                        {/* Not incrementing refCnt for UM Mode. */
-                           tb->lchInfo[lchIdx].mBuf[pduIdx]->refCnt++;
-                        }
-#endif
-                        if(NULL != datReqTb->lchData[idx1].pdu.mBuf[idx2]->b_cont)
-                        {
-                             Buffer *tmp;
-                             tmp = datReqTb->lchData[idx1].pdu.mBuf[idx2]->b_cont;
-                             if(NULL == tmp->b_rptr)
-                             {
-                                DU_LOG("\nERROR   -->  MAC : rgMUXAddSdus failed in EVTRGUDDATREQ");
-                             }
-                        }
-                        else
-                        {
-                            DU_LOG("\nERROR   -->  MAC : rgMUXAddSdus failed in EVTRGUDDATREQ");
-                        }
-                        pduIdx++;
-                       // tb->lchInfo[tb->numLch].numPdu++;
-                       // tb->numLch++;
-
-                     }
-                  }
-
-                  if(pduIdx)
-                  {
-                    tb->lchInfo[lchIdx].numPdu = pduIdx;
-                    /* If Bearer is UM then MBUF to be free by MAC layer */
-                    tb->lchInfo[lchIdx].freeBuff = datReqTb->lchData[idx1].freeBuff;
-                    lchIdx++;
-                  }
-               }
-
-               tb->numLch = lchIdx;
-           }
-         }
-         break;
-
-      case EVENT_SLOT_IND_TO_MAC:
-         break;
-      default:
-         break;
-   } /* End of switch(reqType) */
-
-   
-   if(rgMUXAddPadd(inst, &pdu->schdTbSz, sduBuf, NULLP, FALSE, err) != ROK)
-   {
-      //RGDBGERRNEW((rgPBuf, "FAILED"));
-      return RFAILED;
-   }
-   tb->padSize = padSize;
-
-   return ROK;
-}
-
-/**
- * @brief Function to create MAC PDU from RLC SDUs and control elements, if any. 
- *
- * @details
- *
- *     Function : rgMUXBldPdu
- *     -# This function shall be invoked by Downlink Harq Module as soon as a
- *        Data request is received from RLC for a UE along with its stored 
- *        control elements to create a MAC PDU.
- *     -# It shall create subheaders for the control elements (timing advance
- *        and contention resolution ID), if given, and then shall run through
- *        all the logical channels and create subheader for each of the SDUs
- *        given on that logical channel.
- *     -# L2 Optimization for mUe/Tti: Avoiding muxing to reduce overhead of 
- *           additional Mbuf allocation memory related operation.
-       -# MAC header, MAC CEs, MAC PDUs and MAC padding are stored in pre-
-            allocated mBufs. These pointers will not be freed by CL    
- *     -# It shall invoke rgMUXPadPdu if the total length of the created 
- *        buffer is less than the scheduled TB size.
- *     -# At successfull operation of this function tb->macHdr, will have
- *        complete MAC Header. tb->macCes will have MAC CEs if any. tb->
- *        lchInfo[idx].mBuf[idx] will have MAC SDU per LCH per TB per UE 
- *     
- *           
- *  @param[in]  RgBldPduInfo   *bldPdu
- *  @param[out] RgTbInfo       *tb
- *  @param[out] RgErrInfo      *err
- *  @return  S16
- *      -# ROK 
- *      -# RFAILED 
- **/
-S16 rgMUXBldPdu
-(
-Inst               inst,
-RgBldPduInfo       *pdu,
-RgTfuDatReqTbInfo  *tb,
-RgErrInfo          *err
-)
-{
-   Buffer         *mBuf1; /* MAC hearder */
-   Buffer         *mBuf2; /* MAC CEs */
-   //uint32_t            lchIdx, pduIdx;
-
-  /* Reseting macHdr and macCes pointers */
-  if(tb->macHdr)
-   SResetMBuf(tb->macHdr);
-   if(tb->macCes)
-   SResetMBuf(tb->macCes);
-   
-   mBuf1 = tb->macHdr; /* MAC hearder */
-   mBuf2 = tb->macCes; /* MAC CEs */
-   tb->tbSize  = pdu->schdTbSz;
-
-   if(rgMUXAddCes(inst, pdu, mBuf1, mBuf2, err) != ROK)
-   {
-      /* Reset rPtr and wPtr to the base of data buffer(db_base)*/
-      DU_LOG("\nERROR  -->  MAC : rgMUXBldPdu: rgMUXAddCes is Failed \n");
-      RG_FREE_TB(tb);
-      err->errType = RGERR_MUX_BLD_PDU;
-      //RGDBGERRNEW((rgPBuf, "FAILED"));
-      return RFAILED;
-   }
-   if(rgMUXAddSdus(inst, pdu, mBuf1, tb, err) != ROK)
-   {
-      /*TODO:MP Reset rPtr and wPtr to the base of data buffer(db_base)
-       * Reset numLch and numPdu to zero and set MAC SDU buf to NULLP */
-      DU_LOG("\nERROR  -->  MAC : rgMUXBldPdu: rgMUXAddSdus is Failed \n");
-      RG_FREE_TB(tb);
-
-      err->errType = RGERR_MUX_BLD_PDU;
-      //RGDBGERRNEW((rgPBuf, "FAILED"));
-      return RFAILED;
-   }
-// UDAY 
-//      SPrntMsg(tb->macHdr, 0, 0);
-//   prc_trace_format_string(0x40,3,": padSize=%ld", tb->padSize);
-
-   tb->tbPres = TRUE;
-   return ROK;
-
-}  /* rgMUXBldPdu */
-
-#endif /* end of L2_OPTMZ */
-
-/**
- * @brief Function to create RAR PDU. 
- *
- * @details
- *
- *     Function : rgMUXBldRarPdu
- *                This function is used to build RAR PDUs and is being 
- *                invoked by the scheduler.
- *     
- *  @param[out]RgCellCb       *cellCb
- *  @param[in] RgRaRspAlloc   *bldPdu
- *  @param[in] Buffer         **txPdu 
- *  @param[out] RgErrInfo     *err
- *  @return    S16
- *      -# ROK 
- *      -# RFAILED 
- **/
-S16 rgMUXBldRarPdu
-(
-RgCellCb        *cell,
-RgInfRaRntiInfo *alloc,
-Buffer          **txPdu,
-RgErrInfo       *err
-)
-{
-   Buffer      *datBuf = NULLP;
-   S16         ret; 
-   uint8_t     data[RG_RAR_ELEM_LEN];
-   uint8_t     hdrByte;
-   MsgLen      schdTbSz;
-   uint8_t     idx;
-   Inst        inst = cell->macInst - RG_INST_START;
-
-   schdTbSz = alloc->schdTbSz;
-   /* RAR PDU Requirements */
-   /*
-   1. SubHeader - R/T/RAPID. //5GNR, changed E to R
-   2. TA ( if applicable)
-   3. Ul Grant:
-         a. Hopping Flag - 1 Bit.
-         b. Fixed Size RB Assignment. - 10 Bits.
-         c. Truncated Modulation and coding scheme - 4 Bits.
-         d. TPC command for scheduled PUSCH. - 3 Bits.
-         e. UL Delay - 1 Bit.
-         f. CQI Request - 1 Bit.
-   4. Temporary Crnti.
-   */
-
-   /* Initialize the error type */
-   err->errType = RGERR_MUX_BLD_RAR_PDU;
-  
-   if ((ret = rgGetMsg(inst,&datBuf)) != ROK)
-   {
-      /* Buffer couldnt get allocated. Return a failure */
-      err->errCause = RGERR_MUX_MEM_ALLOC_FAIL;
-      DU_LOG("\nERROR  -->  MAC : FAILED to getMsg");
-      return RFAILED;
-   }
-
-   if (TRUE == alloc->backOffInd.pres)
-   {
-      /*Set T Bit , NO E bit Required */
-      hdrByte = 0x00;
-      /* Add the bi */
-      hdrByte |= (0x0F & (alloc->backOffInd.val));
-
-      /* Add the header */
-      RG_PACK_RAR_SHDR(hdrByte, datBuf, ret);
-      if(ret != ROK)
-      {
-         err->errCause = RGERR_MUX_BLD_BI_FAIL;
-         DU_LOG("\nERROR  -->  MAC : RGERR_MUX_BLD_BI_FAIL");
-         RG_FREE_MSG(datBuf);
-         return RFAILED;
-      }
-      schdTbSz--;
-   }
-
-   for (idx=0; idx < (alloc->numCrnti) && 
-         (schdTbSz >= RG_RAR_ELEM_LEN+RG_RAR_SHDR_LEN); idx++)
-   {
-      /* Add the tBit */
-      hdrByte = 0x40; 
-      /* Add the rapId */
-      hdrByte |= (0x3F & (alloc->crntiInfo[idx].rapId));
-
-         /* Add the header */
-         RG_PACK_RAR_SHDR(hdrByte, datBuf, ret);
-         if(ret != ROK)
-         {
-            err->errCause = RGERR_MUX_BLD_RAPIDHDR_FAIL;
-            DU_LOG("\nERROR  -->  MAC : RGERR_MUX_BLD_RAPIDHDR_FAIL");
-            RG_FREE_MSG(datBuf);
-            return RFAILED;
-         }
-
-      /* Prepare the data */
-      data[0]  =  0x7F & ((alloc->crntiInfo[idx].ta.val) >> 4);
-      data[1] = 0;
-      data[2] = 0;
-      data[3] = 0;
-      {    
-         rgMUXGet20bitRarGrnt(cell->bwCfg.ulTotalBw, &(alloc->crntiInfo[idx].grnt), &data[1]);
-      }
-      data[1] |=  ((uint8_t)((alloc->crntiInfo[idx].ta.val) << 4));
-      data[4]  =  (alloc->crntiInfo[idx].tmpCrnti) >> 8;
-      data[5]  =  (uint8_t) (alloc->crntiInfo[idx].tmpCrnti);
-
-      DU_LOG("\nDEBUG  -->  MAC : Rar,Rapid=%d, Temp CRNTI:%d", 
-                alloc->crntiInfo[idx].rapId,
-                alloc->crntiInfo[idx].tmpCrnti);
-     MS_BUF_ADD_ALLOC_CALLER();
-      if(SAddPstMsgMult(&data[0], RG_RAR_ELEM_LEN, datBuf) != ROK)
-      {
-         err->errCause = RGERR_MUX_BLD_RAPID_FAIL;
-         DU_LOG("\nERROR  -->  MAC : RGERR_MUX_BLD_RAPID_FAIL");
-         RG_FREE_MSG(datBuf);
-         return RFAILED;
-      }
-      schdTbSz -= RG_RAR_ELEM_LEN+RG_RAR_SHDR_LEN;
-   }
-
-   if(rgMUXAddPadd(inst,&schdTbSz, datBuf, TRUE, err) != ROK)
-   {
-      RG_FREE_MSG(datBuf);
-      DU_LOG("\nERROR  -->  MAC : FAILED to mux add padding");
-      return RFAILED;
-   }
-
-   *txPdu = datBuf;
-
-   return ROK;
-} /* rgMUXBldRarPdu */
-
-/***********************************************************
- *
- *     Func : rgMUXGet20bitRarGrnt
- *
- *     Desc : This function fills up the 20-bit grant
- *            for RA response.
- *
- *     Ret  : None.
- *
- *     Notes: None.
- *
- *     File : rg_mux.c
- *
- **********************************************************/
-static Void rgMUXGet20bitRarGrnt
-(
-uint8_t             ulBw,
-RgInfRarUlGrnt *msg3Grnt,
-uint8_t             *grnt
-)
-{
-   uint16_t       riv = rgMUXCalcRiv(ulBw, msg3Grnt->rbStart, msg3Grnt->numRb);
-
-   grnt[2]  = msg3Grnt->cqiBit;   /* cqi bit is 0, output from sched */
-   grnt[2] |= (msg3Grnt->delayBit << 1);
-   grnt[2] |= (msg3Grnt->tpc << 2);
-   grnt[2] |= (msg3Grnt->iMcsCrnt << 5);
-
-   grnt[1]  = (msg3Grnt->iMcsCrnt >> 3);
-   /* Forcing right shift to insert 0 as the LSB: 
-    * since this is assumed in the computation */
-   grnt[1] |= (uint8_t)((riv << 1) & 0xFE);
-
-   grnt[0]  = (uint8_t)((riv >> 7) & 0x07);
-   grnt[0] |= ((msg3Grnt->hop & 0x01) << 3);
-
-   return;
-} /* rgMUXGet20bitRarGrnt */
-
-/***********************************************************
- *
- *     Func : rgMUXCalcRiv
- *
- *     Desc : This function calculates RIV.
- *
- *     Ret  : None.
- *
- *     Notes: None.
- *
- *     File : rg_mux.c
- *
- **********************************************************/
-uint16_t rgMUXCalcRiv
-(
-uint8_t           bw,
-uint8_t           rbStart,
-uint8_t           numRb
-)
-{
-   uint8_t           numRbMinus1 = numRb - 1;
-   uint16_t          riv;
-
-   if (numRbMinus1 <= bw/2)
-   {
-      riv = bw * numRbMinus1 + rbStart;
-   }
-   else
-   {
-      riv = bw * (bw - numRbMinus1) + (bw - rbStart - 1);
-   }
-   return (riv);
-} /* rgMUXCalcRiv */
-
-
-
-/**********************************************************************
-         End of file
-**********************************************************************/