Merge "Revert "[Epic-ID: ODUHIGH-462][Task-ID: ODUHIGH-472] Implementation of drx...
authorHarshita Lal <harshita.lal@radisys.com>
Tue, 15 Nov 2022 05:43:43 +0000 (05:43 +0000)
committerGerrit Code Review <gerrit@o-ran-sc.org>
Tue, 15 Nov 2022 05:43:43 +0000 (05:43 +0000)
1  2 
src/5gnrsch/sch.c
src/5gnrsch/sch_ue_mgr.c
src/cm/du_app_mac_inf.h
src/cm/mac_sch_interface.h
src/cu_stub/cu_f1ap_msg_hdl.c
src/du_app/du_f1ap_msg_hdl.c
src/du_app/du_mgr_main.c

diff --combined src/5gnrsch/sch.c
@@@ -66,11 -66,11 +66,11 @@@ SchSliceCfgRspFunc SchSliceCfgRspOpts[
  
  };
  
 -SchSliceReCfgRspFunc SchSliceReCfgRspOpts[] =
 +SchSliceRecfgRspFunc SchSliceRecfgRspOpts[] =
  {
 -   packSchSliceReCfgRsp,     /* LC */
 -   MacProcSchSliceReCfgRsp,  /* TC */
 -   packSchSliceReCfgRsp      /* LWLC */
 +   packSchSliceRecfgRsp,     /* LC */
 +   MacProcSchSliceRecfgRsp,  /* TC */
 +   packSchSliceRecfgRsp      /* LWLC */
  };
  
  /**
@@@ -666,10 -666,6 +666,6 @@@ uint8_t schInitCellCb(Inst inst, SchCel
     cell->firstSib1Transmitted = false;
     fillSsbStartSymb(cell);
     cmLListInit(&cell->ueToBeScheduled);
- #ifdef NR_DRX
-    memset(cell->drxCb, 0, MAX_DRX_SIZE*sizeof(SchDrxCb));
- #endif   
     schCb[inst].cells[inst] = cell;
  
     DU_LOG("\nINFO  -->  SCH : Cell init completed for cellId:%d", cell->cellId);
@@@ -1118,13 -1114,6 +1114,6 @@@ uint8_t MacSchSrUciInd(Pst *pst, SrUciI
        DU_LOG("\nINFO --> SCH: UL Data transmission not allowed for UE %d", ueCb->ueCfg.ueId);
        return ROK;
     }
- #ifdef NR_DRX
-    if(ueCb->ueDrxInfoPres)
-    {
-       if(!ueCb->drxUeCb.drxUlUeActiveStatus)
-          ueCb->drxUeCb.drxUlUeActiveStatus = true;
-    }
- #endif
     if(uciInd->numSrBits)
     {
        ueCb->srRcvd = true;      
  
  /*******************************************************************
   *
 - * @brief Processes HARQ UCI indication from MAC 
 + * @brief Processes DL HARQ indication from MAC 
   *
   * @details
   *
 - *    Function : MacSchHarqUciInd
 + *    Function : MacSchDlHarqInd
   *
   *    Functionality:
 - *      Processes HARQ UCI indication from MAC
 + *      Processes DL HARQ indication from MAC
   *
   * @params[in] Post structure
 - *             UCI Indication
 + *             DL HARQ Indication
   * @return ROK     - success
   *         RFAILED - failure
   *
   * ****************************************************************/
 -uint8_t MacSchHarqUciInd(Pst *pst, HarqUciIndInfo *uciInd)
 +uint8_t MacSchDlHarqInd(Pst *pst, DlHarqInd *dlHarqInd)
  {
     Inst  inst = pst->dstInst-SCH_INST_START;
     SchUeCb   *ueCb;
     SchCellCb *cellCb = schCb[inst].cells[inst];
  
  #ifdef CALL_FLOW_DEBUG_LOG
 -   DU_LOG("\nCall Flow: ENTMAC -> ENTSCH : EVENT_UCI_IND_TO_SCH\n");
 +   DU_LOG("\nCall Flow: ENTMAC -> ENTSCH : EVENT_DL_HARQ_IND_TO_SCH\n");
  #endif
  
     DU_LOG("\nDEBUG  -->  SCH : Received HARQ");
  
 -   ueCb = schGetUeCb(cellCb, uciInd->crnti);
 +   ueCb = schGetUeCb(cellCb, dlHarqInd->crnti);
  
     if(ueCb->state == SCH_UE_STATE_INACTIVE)
     {
 -      DU_LOG("\nERROR  -->  SCH : Crnti %d is inactive", uciInd->crnti);
 +      DU_LOG("\nERROR  -->  SCH : Crnti %d is inactive", dlHarqInd->crnti);
        return ROK;
     }
  
 -   schUpdateHarqFdbk(ueCb, uciInd->numHarq, uciInd->harqPayload, &uciInd->slotInd);
 +   schUpdateHarqFdbk(ueCb, dlHarqInd->numHarq, dlHarqInd->harqPayload, &dlHarqInd->slotInd);
  
     return ROK;
  }
@@@ -1681,7 -1670,7 +1670,7 @@@ void SchSendSliceCfgRspToMac(Inst inst
   *        RFAILED - Failure
   *
   * ********************************************************************************/
 -uint8_t fillSliceCfgRsp(bool sliceReCfg, SchSliceCfg *storedSliceCfg, SchCellCb *cellCb, SchSliceCfgReq *schSliceCfgReq, SchSliceCfgRsp *schSliceCfgRsp, uint8_t *count)
 +uint8_t fillSliceCfgRsp(bool sliceRecfg, SchSliceCfg *storedSliceCfg, SchCellCb *cellCb, SchSliceCfgReq *schSliceCfgReq, SchSliceCfgRsp *schSliceCfgRsp, uint8_t *count)
  {
     bool sliceFound = false;
     uint8_t cfgIdx = 0, sliceIdx = 0;
     {
        sliceFound = false;
        /* Here comparing the slice cfg request with the slice stored in cellCfg */
 -      if(sliceReCfg != true)
 +      if(sliceRecfg != true)
        {
           for(sliceIdx = 0; sliceIdx<cellCb->cellCfg.plmnInfoList.numSliceSupport; sliceIdx++)
           {
@@@ -1826,25 -1815,25 +1815,25 @@@ uint8_t addSliceCfgInSchDb(SchSliceCfg 
   *        ROK - Success
   *        RFAILED - Failure
   * ********************************************************************************/
 -void freeSchSliceCfgReq(SchSliceCfgReq *cfgReq)
 +void freeSchSliceCfgReq(SchSliceCfgReq *sliceCfgReq)
  {
     uint8_t cfgIdx = 0;
     
 -   if(cfgReq)
 +   if(sliceCfgReq)
     {
 -      if(cfgReq->numOfConfiguredSlice)
 +      if(sliceCfgReq->numOfConfiguredSlice)
        {
 -         for(cfgIdx = 0; cfgIdx<cfgReq->numOfConfiguredSlice; cfgIdx++)
 +         for(cfgIdx = 0; cfgIdx<sliceCfgReq->numOfConfiguredSlice; cfgIdx++)
           {
 -            if(cfgReq->listOfConfirguration[cfgIdx])
 +            if(sliceCfgReq->listOfConfirguration[cfgIdx])
              {
 -               SCH_FREE(cfgReq->listOfConfirguration[cfgIdx]->rrmPolicyRatioInfo, sizeof(SchRrmPolicyRatio));
 -               SCH_FREE(cfgReq->listOfConfirguration[cfgIdx], sizeof(SchRrmPolicyOfSlice));
 +               SCH_FREE(sliceCfgReq->listOfConfirguration[cfgIdx]->rrmPolicyRatioInfo, sizeof(SchRrmPolicyRatio));
 +               SCH_FREE(sliceCfgReq->listOfConfirguration[cfgIdx], sizeof(SchRrmPolicyOfSlice));
              }
           }
 -         SCH_FREE(cfgReq->listOfConfirguration, cfgReq->numOfConfiguredSlice * sizeof(SchRrmPolicyOfSlice*));
 +         SCH_FREE(sliceCfgReq->listOfConfirguration, sliceCfgReq->numOfConfiguredSlice * sizeof(SchRrmPolicyOfSlice*));
        }
 -      SCH_FREE(cfgReq, sizeof(SchSliceCfgReq));
 +      SCH_FREE(sliceCfgReq, sizeof(SchSliceCfgReq));
     }
  }
  /*******************************************************************************
@@@ -1917,7 -1906,7 +1906,7 @@@ uint8_t MacSchSliceCfgReq(Pst *pst, Sch
   *        RFAILED - Failure
   *
   * ********************************************************************************/
 -uint8_t modifySliceCfgInSchDb(SchSliceCfg *storeSliceCfg, SchSliceCfgReq *cfgReq, SchSliceCfgRsp cfgRsp, uint8_t count)
 +uint8_t modifySliceCfgInSchDb(SchSliceCfg *storeSliceCfg, SchSliceRecfgReq *recfgReq, SchSliceRecfgRsp recfgRsp, uint8_t count)
  {
     uint8_t cfgIdx = 0, sliceIdx = 0; 
  
           return RFAILED;
        }
  
 -      for(cfgIdx = 0; cfgIdx<cfgReq->numOfConfiguredSlice; cfgIdx++)
 +      for(cfgIdx = 0; cfgIdx<recfgReq->numOfConfiguredSlice; cfgIdx++)
        {
 -         if(cfgRsp.listOfSliceCfgRsp[cfgIdx]->rsp == RSP_OK)
 +         if(recfgRsp.listOfSliceCfgRsp[cfgIdx]->rsp == RSP_OK)
           {
              for(sliceIdx = 0; sliceIdx<storeSliceCfg->numOfSliceConfigured; sliceIdx++)
              {
 -               if(!memcmp(&storeSliceCfg->listOfConfirguration[sliceIdx]->snssai, &cfgReq->listOfConfirguration[cfgIdx]->snssai, sizeof(Snssai)))
 +               if(!memcmp(&storeSliceCfg->listOfConfirguration[sliceIdx]->snssai, &recfgReq->listOfConfirguration[cfgIdx]->snssai, sizeof(Snssai)))
                 {
 -                  memcpy(storeSliceCfg->listOfConfirguration[sliceIdx]->rrmPolicyRatioInfo, cfgReq->listOfConfirguration[cfgIdx]->rrmPolicyRatioInfo,
 +                  memcpy(storeSliceCfg->listOfConfirguration[sliceIdx]->rrmPolicyRatioInfo, recfgReq->listOfConfirguration[cfgIdx]->rrmPolicyRatioInfo,
                             sizeof(SchRrmPolicyRatio));
                    break;
                 }
           }
        }
     }
 -   freeSchSliceCfgReq(cfgReq);
 +   freeSchSliceCfgReq(recfgReq);
     return ROK;
  }
  /*******************************************************************************
   *
   * @details
   *
 - *    Function : SchSendSliceCfgRspToMac
 + *    Function : SchSendSliceRecfgRspToMac
   *
   *    Functionality:
   *     function is used to send Slice re Cfg rsp to MAC
   *
 - * @params[in] Pst *pst, SchSliceCfgRsp schSliceReCfgRsp
 + * @params[in] Pst *pst, SchSliceRecfgRsp schSliceRecfgRsp
   *
   * @return- void
   *
   * ********************************************************************************/
 -void SchSendSliceReCfgRspToMac(Inst inst, SchSliceCfgRsp schSliceReCfgRsp)
 +void SchSendSliceRecfgRspToMac(Inst inst, SchSliceRecfgRsp schSliceRecfgRsp)
  {
     Pst rspPst;
     
     FILL_PST_SCH_TO_MAC(rspPst, inst);
     rspPst.event = EVENT_SLICE_RECFG_RSP_TO_MAC;
     
 -   SchSliceReCfgRspOpts[rspPst.selector](&rspPst, &schSliceReCfgRsp);
 +   SchSliceRecfgRspOpts[rspPst.selector](&rspPst, &schSliceRecfgRsp);
  }
  /*******************************************************************************
   *
   *
   * @details
   *
 - *    Function : MacSchSliceReCfgReq 
 + *    Function : MacSchSliceRecfgReq 
   *
   *    Functionality:
   *     function is used to store the slice re configuration Sch DB
   *
 - * @params[in] Pst *pst, SchSliceCfgReq *schSliceReCfgReq
 + * @params[in] Pst *pst, SchSliceRecfgReq *schSliceRecfgReq
   *
   * @return
   *        ROK - Success
   *        RFAILED - Failure
   *
   * ********************************************************************************/
 -uint8_t MacSchSliceReCfgReq(Pst *pst, SchSliceCfgReq *schSliceReCfgReq)
 +uint8_t MacSchSliceRecfgReq(Pst *pst, SchSliceRecfgReq *schSliceRecfgReq)
  {
     uint8_t count = 0;
     Inst   inst = pst->dstInst - SCH_INST_START;
 -   SchSliceCfgRsp schSliceReCfgRsp;
 +   SchSliceRecfgRsp schSliceRecfgRsp;
  
     DU_LOG("\nINFO  -->  SCH : Received Slice ReCfg request from MAC");
 -   if(schSliceReCfgReq)
 +   if(schSliceRecfgReq)
     {
 -      if(schSliceReCfgReq->listOfConfirguration)
 +      if(schSliceRecfgReq->listOfConfirguration)
        {
           /* filling the slice configuration response of each slice */
 -         if(fillSliceCfgRsp(true, &schCb[inst].sliceCfg, NULLP, schSliceReCfgReq, &schSliceReCfgRsp, &count) != ROK)
 +         if(fillSliceCfgRsp(true, &schCb[inst].sliceCfg, NULLP, schSliceRecfgReq, &schSliceRecfgRsp, &count) != ROK)
           {
              DU_LOG("\nERROR  -->  SCH : Failed to fill sch slice cfg response");
              return RFAILED;
           }
           
           /* Modify the slice configuration stored in schCb */
 -         if(modifySliceCfgInSchDb(&schCb[inst].sliceCfg, schSliceReCfgReq, schSliceReCfgRsp, count) != ROK)
 +         if(modifySliceCfgInSchDb(&schCb[inst].sliceCfg, schSliceRecfgReq, schSliceRecfgRsp, count) != ROK)
           {
              DU_LOG("\nERROR  -->  SCH : Failed to modify slice cfg of SchDb");
              return RFAILED;
           }
 -         SchSendSliceReCfgRspToMac(inst, schSliceReCfgRsp);
 +         SchSendSliceRecfgRspToMac(inst, schSliceRecfgRsp);
        }
     }
     else
     {
 -      DU_LOG("\nERROR  -->  SCH : Received SchSliceCfgReq is NULL");
 +      DU_LOG("\nERROR  -->  SCH : Received SchSliceRecfgReq is NULL");
     }
     return ROK;
  }
diff --combined src/5gnrsch/sch_ue_mgr.c
@@@ -28,9 -28,6 +28,6 @@@
  #include "mac_sch_interface.h"
  #include "sch.h"
  #include "sch_utils.h"
- #ifdef NR_DRX 
- #include "sch_drx.h"
- #endif
  
  /* local defines */
  SchUeCfgRspFunc SchUeCfgRspOpts[] =
@@@ -259,56 -256,8 +256,8 @@@ uint8_t fillSchUeCb(Inst inst, SchUeCb 
     {
        memcpy(&ueCb->ueCfg.macCellGrpCfg , &ueCfg->macCellGrpCfg, sizeof(SchMacCellGrpCfg)); 
        ueCb->ueCfg.macCellGrpCfgPres = true;
- #ifdef NR_DRX
-       if(ueCfg->macCellGrpCfg.drxCfgPresent == true)
-       {
-          if(ueCb->ueDrxInfoPres == false)
-          {
-             ueCb->ueDrxInfoPres = true;
-             /* intialize the drxUeCb */
-             schInitDrxUeCb(ueCb);
-             
-             /* intialize the Dl drxHarqCb */
-             for(idx =0; idx<ueCb->dlHqEnt.numHqPrcs; idx++)
-             {
-                schInitDrxHarqCb(&ueCb->dlHqEnt.procs[idx].drxHarqCb);
-             }
-             /* intialize the Ul drxHarqCb */
-             for(idx =0; idx<ueCb->ulHqEnt.numHqPrcs; idx++)
-             {
-                schInitDrxHarqCb(&ueCb->ulHqEnt.procs[idx].drxHarqCb);
-             }
-             /* convert all the drx configuration recived in ms/subms into number of slots and store into the drxUeCb */
-             schFillDrxUeCb(ueCb->cellCb->cellCfg.numerology, ueCfg->macCellGrpCfg.drxCfg, &ueCb->drxUeCb);
-             /* Calculate the onduration timer and short cycle timer (if shortcycle configuration is present) as soon as we 
-              * recived ueCfg request */
-             schAddUeInOndurationAndShortCycleList(ueCb->cellCb, ueCb, 0);
-          }
-          else
-          {
-             /* convert all the drx configuration recived in ms/subms into number
-              * of slots and store into the drxUeCb */
-             schFillDrxUeCb(ueCb->cellCb->cellCfg.numerology, ueCfg->macCellGrpCfg.drxCfg, &ueCb->drxUeCb);
-             /* Recalculate/Restart timer based on their presence */
-             schDrxUeReCfgTimer(ueCb->cellCb, ueCb);
-          }
-       }
- #endif
     }
  
- #ifdef NR_DRX
-    if(ueCfg->drxConfigIndicatorRelease == true)
-    {
-       if(ueCb->ueDrxInfoPres == true)
-       {
-          schDeleteUeDrxInfo(ueCb->cellCb, ueCb);
-          ueCb->ueDrxInfoPres = false;
-       }
-    }
- #endif
-    
     if(ueCfg->phyCellGrpCfgPres == true)
     {
        memcpy(&ueCb->ueCfg.phyCellGrpCfg ,  &ueCfg->phyCellGrpCfg, sizeof(SchPhyCellGrpCfg));
@@@ -1190,14 -1139,7 +1139,7 @@@ void deleteSchUeCb(SchUeCb *ueCb
           SCH_FREE(ueCb->ulInfo.ulLcCtxt[ueLcIdx].snssai, sizeof(Snssai));
           SCH_FREE(ueCb->dlInfo.dlLcCtxt[ueLcIdx].snssai, sizeof(Snssai));
        }
- #ifdef NR_DRX
-       if(ueCb->ueDrxInfoPres)
-       {
-          /* Removing all the calculated drx configuration timer list */ 
-          schDeleteUeDrxInfo(ueCb->cellCb, ueCb);
-          ueCb->ueDrxInfoPres = false;
-       }
- #endif
        memset(ueCb, 0, sizeof(SchUeCb));
     }
  }
@@@ -1301,7 -1243,7 +1243,7 @@@ uint8_t MacSchUeDeleteReq(Pst *pst, Sch
   *         RFAILED - failure
   *
   * ****************************************************************/
 -uint8_t SchSendCellDeleteRspToMac(SchCellDelete  *ueDelete, Inst inst, SchMacRsp result)
 +uint8_t SchSendCellDeleteRspToMac(SchCellDeleteReq  *ueDelete, Inst inst, SchMacRsp result)
  {
     Pst rspPst;
     uint8_t ret=0;
@@@ -1442,7 -1384,7 +1384,7 @@@ void deleteSchCellCb(SchCellCb *cellCb
   *
   * ****************************************************************/
  
 -uint8_t MacSchCellDeleteReq(Pst *pst, SchCellDelete  *cellDelete)
 +uint8_t MacSchCellDeleteReq(Pst *pst, SchCellDeleteReq  *cellDelete)
  {
     uint8_t   cellIdx=0, ret = RFAILED;
     Inst      inst = pst->dstInst - SCH_INST_START;
diff --combined src/cm/du_app_mac_inf.h
@@@ -843,7 -843,6 +843,6 @@@ typedef struct macCellGrpCf
     bool        phrCfgSetupPres;   /* true/false: phrCfgSetup/phrCfgRelease */
     PhrCfg      phrCfg;
  #ifdef NR_DRX
-    bool        drxCfgPresent;
     DrxCfg      drxCfg;
  #endif
  }MacCellGrpCfg;
@@@ -1301,9 -1300,6 +1300,6 @@@ typedef struct macUeCf
     LcCfg lcCfgList[MAX_NUM_LC];
     UeCfgState macUeCfgState;    /* InActive / Completed */
     DataTransmissionAction transmissionAction;
- #ifdef NR_DRX   
-    bool     drxConfigIndicatorRelease;
- #endif
  }MacUeCfg;
  
  typedef struct nrcgi
@@@ -1393,10 -1389,10 +1389,10 @@@ typedef struct ueDeleteRs
     UeDeleteStatus result;
  }MacUeDeleteRsp;
  
 -typedef struct macCellDelete
 +typedef struct macCellDeleteReq
  {
     uint16_t cellId;
 -}MacCellDelete;
 +}MacCellDeleteReq;
  
  typedef struct macCellDeleteRsp
  {
@@@ -1436,27 -1432,14 +1432,27 @@@ typedef struct macSliceCfgRs
     MacSliceRsp  **listOfSliceCfgRsp;
  }MacSliceCfgRsp;
  
 -typedef struct macPcchInd
 +/*As per ORAN-WG8, Slice Cfg and ReCfg are same structures*/
 +typedef struct macSliceCfgReq MacSliceRecfgReq;
 +typedef struct macSliceCfgRsp MacSliceRecfgRsp;
 +
 +typedef struct dlPcchInd
  {
     uint16_t  cellId;
     uint16_t  pf;
     uint8_t   i_s;
     uint16_t  pduLen;
     uint8_t  *pcchPdu;
 -}MacPcchInd;
 +}DlPcchInd;
 +
 +typedef struct cellInfo
 +{
 +    SlotTimingInfo slotInfo;
 +    uint16_t       cellId;
 +}CellInfo;
 +
 +typedef struct cellInfo CellStartInfo;
 +typedef struct cellInfo CellStopInfo;
  
  /* Functions for CellUp Ind from MAC to DU APP*/
  typedef uint8_t (*DuMacCellUpInd) ARGS((
@@@ -1476,12 -1459,12 +1472,12 @@@ typedef uint8_t (*DuMacStopInd) ARGS(
  /* Functions for mac cell start req */
  typedef uint8_t (*DuMacCellStart) ARGS((
         Pst        *pst, 
 -       OduCellId  *cellId));
 +       CellStartInfo  *cellId));
  
  /* Functions for mac cell stop request */
  typedef uint8_t (*DuMacCellStop) ARGS((
         Pst        *pst,
 -       OduCellId  *cellId ));
 +       CellStopInfo  *cellId ));
  
  /* Function pointers for packing macCellCfg Request and Confirm */
  typedef uint8_t (*packMacCellCfgReq) ARGS((
@@@ -1553,7 -1536,7 +1549,7 @@@ typedef uint8_t (*MacDuUeDeleteRspFunc
  /* Cell Delete Request from DU APP to MAC*/
  typedef uint8_t (*DuMacCellDeleteReq) ARGS((
       Pst           *pst,
 -     MacCellDelete *cellDelete ));
 +     MacCellDeleteReq *cellDelete ));
  
  /* Cell Delete Response from MAC to DU APP*/
  typedef uint8_t (*MacDuCellDeleteRspFunc) ARGS((
@@@ -1573,29 -1556,29 +1569,29 @@@ typedef uint8_t (*MacDuSliceCfgRspFunc
  /* Slice ReReCfg Request from DU APP to MAC*/
  typedef uint8_t (*DuMacSliceRecfgReq) ARGS((
       Pst           *pst,
 -     MacSliceCfgReq *CfgReq));
 +     MacSliceRecfgReq *CfgReq));
  
  /* Slice ReReCfg Response from MAC to DU APP */
 -typedef uint8_t (*MacDuSliceReCfgRspFunc) ARGS((
 +typedef uint8_t (*MacDuSliceRecfgRspFunc) ARGS((
          Pst           *pst,
 -        MacSliceCfgRsp   *cfgRsp));
 +        MacSliceRecfgRsp   *cfgRsp));
  
  /* Pcch indication from DU APP to MAC*/
  typedef uint8_t (*DuMacDlPcchInd) ARGS((
       Pst        *pst,
 -     MacPcchInd *pcchInd));
 +     DlPcchInd *pcchInd));
  
  uint64_t ueBitMapPerCell[MAX_NUM_CELL]; /* Bit Map to store used/free UE-IDX per Cell */
  
  uint8_t packMacCellUpInd(Pst *pst, OduCellId *cellId);
  uint8_t unpackMacCellUpInd(DuMacCellUpInd func, Pst *pst, Buffer *mBuf);
  uint8_t duHandleCellUpInd(Pst *pst, OduCellId *cellId);
 -uint8_t packMacCellStart(Pst *pst, OduCellId *cellId);
 +uint8_t packMacCellStart(Pst *pst, CellStartInfo *cellStartInfo);
  uint8_t unpackMacCellStart(DuMacCellStart func, Pst *pst, Buffer *mBuf);
 -uint8_t MacProcCellStart(Pst *pst, OduCellId *cellId);
 -uint8_t packMacCellStop(Pst *pst, OduCellId *cellId);
 +uint8_t MacProcCellStart(Pst *pst, CellStartInfo *cellStartInfo);
 +uint8_t packMacCellStop(Pst *pst, CellStopInfo *cellStopInfo);
  uint8_t unpackMacCellStop(DuMacCellStop func, Pst *pst, Buffer *mBuf);
 -uint8_t MacProcCellStop(Pst *pst, OduCellId *cellId);
 +uint8_t MacProcCellStop(Pst *pst, CellStopInfo *cellStopInfo);
  uint8_t packMacCellCfg(Pst *pst, MacCellCfg *macCellCfg);
  uint8_t unpackDuMacCellCfg(DuMacCellCfgReq func,  Pst *pst,  Buffer *mBuf);
  uint8_t MacProcCellCfgReq(Pst *pst, MacCellCfg *macCellCfg);
@@@ -1636,8 -1619,8 +1632,8 @@@ uint8_t unpackMacUeDeleteReq(DuMacUeDel
  uint8_t packDuMacUeDeleteRsp(Pst *pst, MacUeDeleteRsp *deleteRsp);
  uint8_t DuProcMacUeDeleteRsp(Pst *pst, MacUeDeleteRsp *deleteRsp);
  uint8_t unpackDuMacUeDeleteRsp(MacDuUeDeleteRspFunc func, Pst *pst, Buffer *mBuf);
 -uint8_t packDuMacCellDeleteReq(Pst *pst, MacCellDelete *cellDelete);
 -uint8_t MacProcCellDeleteReq(Pst *pst, MacCellDelete *cellDelete);
 +uint8_t packDuMacCellDeleteReq(Pst *pst, MacCellDeleteReq *cellDelete);
 +uint8_t MacProcCellDeleteReq(Pst *pst, MacCellDeleteReq *cellDelete);
  uint8_t unpackMacCellDeleteReq(DuMacCellDeleteReq func, Pst *pst, Buffer *mBuf);
  uint8_t packDuMacCellDeleteRsp(Pst *pst, MacCellDeleteRsp *cellDeleteRsp);
  uint8_t DuProcMacCellDeleteRsp(Pst *pst, MacCellDeleteRsp *cellDeleteRsp);
@@@ -1648,17 -1631,17 +1644,17 @@@ uint8_t unpackMacSliceCfgReq(DuMacSlice
  uint8_t DuProcMacSliceCfgRsp(Pst *pst,  MacSliceCfgRsp *cfgRsp);
  uint8_t packDuMacSliceCfgRsp(Pst *pst, MacSliceCfgRsp *cfgRsp);
  uint8_t unpackDuMacSliceCfgRsp(MacDuSliceCfgRspFunc func, Pst *pst, Buffer *mBuf);
 -uint8_t packDuMacSliceRecfgReq(Pst *pst, MacSliceCfgReq *sliceReCfgReq);
 -uint8_t MacProcSliceReCfgReq(Pst *pst, MacSliceCfgReq *sliceReCfgReq);
 -uint8_t unpackMacSliceReCfgReq(DuMacSliceRecfgReq func, Pst *pst, Buffer *mBuf);
 -uint8_t DuProcMacSliceReCfgRsp(Pst *pst,  MacSliceCfgRsp *cfgRsp);
 -uint8_t packDuMacSliceReCfgRsp(Pst *pst, MacSliceCfgRsp *cfgRsp);
 -uint8_t unpackDuMacSliceReCfgRsp(MacDuSliceReCfgRspFunc func, Pst *pst, Buffer *mBuf);
 +uint8_t packDuMacSliceRecfgReq(Pst *pst, MacSliceRecfgReq *sliceRecfgReq);
 +uint8_t MacProcSliceRecfgReq(Pst *pst, MacSliceRecfgReq *sliceRecfgReq);
 +uint8_t unpackMacSliceRecfgReq(DuMacSliceRecfgReq func, Pst *pst, Buffer *mBuf);
 +uint8_t DuProcMacSliceRecfgRsp(Pst *pst,  MacSliceRecfgRsp *sliceRecfgRsp);
 +uint8_t packDuMacSliceRecfgRsp(Pst *pst, MacSliceRecfgRsp *sliceRecfgRsp);
 +uint8_t unpackDuMacSliceRecfgRsp(MacDuSliceRecfgRspFunc func, Pst *pst, Buffer *mBuf);
  uint8_t duHandleSlotInd(Pst *pst, SlotTimingInfo *slotIndInfo);
  uint8_t packMacSlotInd(Pst *pst, SlotTimingInfo *slotIndInfo);
  uint8_t unpackDuMacSlotInd(DuMacSlotInd func, Pst *pst, Buffer *mBuf);
 -uint8_t packDuMacDlPcchInd(Pst *pst, MacPcchInd *pcchInd);
 -uint8_t MacProcDlPcchInd(Pst *pst, MacPcchInd *pcchInd);
 +uint8_t packDuMacDlPcchInd(Pst *pst, DlPcchInd *pcchInd);
 +uint8_t MacProcDlPcchInd(Pst *pst, DlPcchInd *pcchInd);
  uint8_t unpackMacDlPcchInd(DuMacDlPcchInd func, Pst *pst, Buffer *mBuf);
  int8_t getFreeBitFromUeBitMap(uint16_t cellId);
  void unsetBitInUeBitMap(uint16_t cellId, uint8_t bitPos);
@@@ -47,7 -47,6 +47,7 @@@
  #define EVENT_PAGING_IND_TO_SCH      28
  #define EVENT_DL_PAGING_ALLOC        29
  #define EVENT_DL_REL_HQ_PROC         30 
 +#define EVENT_DL_HARQ_IND_TO_SCH     31
  /*macros*/
  #define MAX_SSB_IDX 1 /* forcing it as 1 for now. Right value is 64 */
  #define SCH_SSB_MASK_SIZE   1
@@@ -837,8 -836,7 +837,8 @@@ typedef struct schCellCf
  typedef struct schCellCfgCfm
  {
     uint16_t         cellId;     /* Cell Id */
 -   SchMacRsp   rsp;   
 +   SchMacRsp        rsp;   
 +   SchFailureCause  cause;
  }SchCellCfgCfm;
  
  typedef struct ssbInfo
@@@ -1202,7 -1200,6 +1202,6 @@@ typedef struct schMacCellGrpCf
     SchTagCfg        tagCfg;
     SchPhrCfg        phrCfg;             /* To be used only if phrCfgSetupPres is true */      
  #ifdef NR_DRX
-    bool             drxCfgPresent;
     SchDrxCfg        drxCfg;          /* Drx configuration */
  #endif
  }SchMacCellGrpCfg;
@@@ -1657,9 -1654,6 +1656,6 @@@ typedef struct schUeCf
     uint8_t            numLcs;
     SchLcCfg           schLcCfg[MAX_NUM_LC];
     SchDataTransmission dataTransmissionInfo;
- #ifdef NR_DRX   
-    bool     drxConfigIndicatorRelease;
- #endif
  }SchUeCfg;
  
  typedef struct schUeCfgRsp
  
  typedef struct schRachRsrcReq
  {
 -   uint16_t cellId;
 -   uint16_t crnti;
 -   uint8_t  numSsb;
 -   uint8_t  ssbIdx[MAX_NUM_SSB];
 +   SlotTimingInfo slotInd;
 +   uint16_t       cellId;
 +   uint16_t       crnti;
 +   uint8_t        numSsb;
 +   uint8_t        ssbIdx[MAX_NUM_SSB];
  }SchRachRsrcReq;
  
  typedef struct schCfraSsbResource
@@@ -1702,7 -1695,6 +1698,7 @@@ typedef struct schRachRsrcRs
  
  typedef struct schRachRsrcRel
  {
 +   SlotTimingInfo slotInd;
     uint16_t   cellId;
     uint16_t   crnti;
     SchCfraResource  cfraResource;
@@@ -1722,17 -1714,16 +1718,17 @@@ typedef struct schUeDeleteRs
     ErrorCause cause;
  }SchUeDeleteRsp;
  
 -typedef struct schCellDelete 
 +typedef struct schCellDeleteReq 
  {
     uint16_t   cellId;
 -}SchCellDelete;
 +}SchCellDeleteReq;
  
  
  typedef struct schCellDeleteRsp
  {
 -   uint16_t   cellId;
 -   SchMacRsp  rsp;
 +   uint16_t        cellId;
 +   SchMacRsp       rsp;
 +   SchFailureCause cause;
  }SchCellDeleteRsp;
  
  typedef struct dataVolInfo
@@@ -1759,14 -1750,14 +1755,14 @@@ typedef struct srUciIndInf
     uint8_t     srPayload[MAX_SR_BITS_IN_BYTES];
  }SrUciIndInfo;
  
 -typedef struct harqUciIndInfo
 +typedef struct dlHarqInd
  {
     uint16_t    cellId;
     uint16_t    crnti;
     SlotTimingInfo slotInd;
     uint8_t     numHarq;
     uint8_t     harqPayload[MAX_HARQ_BITS_IN_BYTES];
 -}HarqUciIndInfo;
 +}DlHarqInd;
  
  typedef struct schRrmPolicyRatio
  {
@@@ -1794,16 -1785,12 +1790,16 @@@ typedef struct sliceRs
     RspCause   cause;
  }SliceRsp;
  
 -typedef struct schSliceRsp
 +typedef struct schSliceCfgRsp
  {
     uint8_t    numSliceCfgRsp;
     SliceRsp   **listOfSliceCfgRsp;
  }SchSliceCfgRsp;
  
 +/*As per ORAN-WG8, Slice Cfg and ReCfg are same structures*/
 +typedef struct schSliceCfgReq SchSliceRecfgReq;
 +typedef struct schSliceCfgRsp SchSliceRecfgRsp;
 +
  typedef struct schPageInd
  {
     uint16_t  cellId;
@@@ -1881,9 -1868,9 +1877,9 @@@ typedef uint8_t (*MacSchBsrFunc)       
     UlBufferStatusRptInd *bsrInd
  ));
  
 -typedef uint8_t (*MacSchHarqUciIndFunc) ARGS((
 +typedef uint8_t (*MacSchDlHarqIndFunc) ARGS((
         Pst         *pst,         /* Post structure */
 -       HarqUciIndInfo  *uciInd));    /* UCI IND Info */
 +       DlHarqInd  *dlHarqInd));  /* Dl HARQ IND Info */
  
  typedef uint8_t (*MacSchSrUciIndFunc) ARGS(( 
         Pst         *pst,         /* Post structure */
@@@ -1919,7 -1906,7 +1915,7 @@@ typedef uint8_t (*SchUeDeleteRspFunc) A
  
  typedef uint8_t (*MacSchCellDeleteReqFunc) ARGS((
     Pst         *pst,           /* Post structure */
 -   SchCellDelete *schCellDelete)); /*Scheduler UE Del*/
 +   SchCellDeleteReq *schCellDelete)); /*Scheduler UE Del*/
  
  typedef uint8_t (*SchCellDeleteRspFunc) ARGS((
     Pst          *pst,           /* Post structure */
@@@ -1934,13 -1921,13 +1930,13 @@@ typedef uint8_t (*SchSliceCfgRspFunc
         SchSliceCfgRsp  *schSliceCfgRsp /* Cell Cfg Cfm */
         ));
  
 -typedef uint8_t (*MacSchSliceReCfgReqFunc) ARGS((
 +typedef uint8_t (*MacSchSliceRecfgReqFunc) ARGS((
     Pst          *pst,           /* Post structure */
 -   SchSliceCfgReq *schSliceReCfgReq));  /* Scheduler Slice ReCfg Req */
 +   SchSliceRecfgReq *schSliceRecfgReq));  /* Scheduler Slice ReCfg Req */
  
 -typedef uint8_t (*SchSliceReCfgRspFunc)    ARGS((
 +typedef uint8_t (*SchSliceRecfgRspFunc)    ARGS((
         Pst            *pst,            /* Post Structure */                         
 -       SchSliceCfgRsp  *schSliceReCfgRsp /* Cell ReCfg Cfm */
 +       SchSliceRecfgRsp  *schSliceRecfgRsp /* Cell ReCfg Cfm */
         ));
  
  typedef uint8_t (*MacSchPagingIndFunc) ARGS((
@@@ -1979,8 -1966,8 +1975,8 @@@ uint8_t unpackMacSchSlotInd(MacSchSlotI
  uint8_t packMacSchBsr(Pst *pst, UlBufferStatusRptInd *bsrInd);
  uint8_t MacSchBsr(Pst *pst, UlBufferStatusRptInd *bsrInd);
  uint8_t packMacSchSrUciInd(Pst *pst, SrUciIndInfo *uciInd);
 -uint8_t packMacSchHarqUciInd(Pst *pst, HarqUciIndInfo *uciInd);
 -uint8_t MacSchHarqUciInd(Pst *pst, HarqUciIndInfo *uciInd);
 +uint8_t packMacSchDlHarqInd(Pst *pst, DlHarqInd *dlHarqInd);
 +uint8_t MacSchDlHarqInd(Pst *pst, DlHarqInd *dlHarqInd);
  uint8_t MacSchSrUciInd(Pst *pst, SrUciIndInfo *uciInd);
  uint8_t packMacSchModUeConfigReq(Pst *pst, SchUeCfg *ueCfgToSch);
  uint8_t MacSchModUeConfigReq(Pst *pst, SchUeCfg *ueCfgToSch);
@@@ -1996,18 -1983,18 +1992,18 @@@ uint8_t packMacSchUeDeleteReq(Pst *pst
  uint8_t MacSchUeDeleteReq(Pst *pst, SchUeDelete  *ueDelete);
  uint8_t packSchUeDeleteRsp(Pst *pst, SchUeDeleteRsp  *delRsp);
  uint8_t MacProcSchUeDeleteRsp(Pst *pst, SchUeDeleteRsp *schUeDelRsp);
 -uint8_t packMacSchCellDeleteReq(Pst *pst,  SchCellDelete *schCellDelete);
 -uint8_t MacSchCellDeleteReq(Pst *pst, SchCellDelete  *schCellDelete);
 +uint8_t packMacSchCellDeleteReq(Pst *pst,  SchCellDeleteReq *schCellDelete);
 +uint8_t MacSchCellDeleteReq(Pst *pst, SchCellDeleteReq  *schCellDelete);
  uint8_t packSchCellDeleteRsp(Pst *pst, SchCellDeleteRsp  *schCellDeleteRsp);
  uint8_t MacProcSchCellDeleteRsp(Pst *pst, SchCellDeleteRsp *schCellDeleteRsp);
  uint8_t packMacSchSliceCfgReq(Pst *pst, SchSliceCfgReq *cfgReq);
  uint8_t MacSchSliceCfgReq(Pst *pst, SchSliceCfgReq *schSliceCfgReq);
  uint8_t packSchSliceCfgRsp(Pst *pst, SchSliceCfgRsp *cfgRsp);
  uint8_t MacProcSchSliceCfgRsp(Pst *pst, SchSliceCfgRsp *cfgRsp);
 -uint8_t packMacSchSliceReCfgReq(Pst *pst, SchSliceCfgReq *cfgReq);
 -uint8_t MacSchSliceReCfgReq(Pst *pst, SchSliceCfgReq *schSliceCfgReq);
 -uint8_t packSchSliceReCfgRsp(Pst *pst, SchSliceCfgRsp *cfgRsp);
 -uint8_t MacProcSchSliceReCfgRsp(Pst *pst, SchSliceCfgRsp *sliceReCfgrsp);
 +uint8_t packMacSchSliceRecfgReq(Pst *pst, SchSliceRecfgReq *recfgReq);
 +uint8_t MacSchSliceRecfgReq(Pst *pst, SchSliceRecfgReq *schSliceRecfgReq);
 +uint8_t packSchSliceRecfgRsp(Pst *pst, SchSliceRecfgRsp *schSliceRecfgRsp);
 +uint8_t MacProcSchSliceRecfgRsp(Pst *pst, SchSliceRecfgRsp *sliceRecfgrsp);
  uint8_t packMacSchPagingInd(Pst *pst,  SchPageInd *pageInd);
  uint8_t MacSchPagingInd(Pst *pst,  SchPageInd *pageInd);
  uint8_t packSchMacDlPageAlloc(Pst *pst, DlPageAlloc *dlPageAlloc);
  #include "ProtocolIE-Field.h"
  #include "ProtocolExtensionField.h"
  #include "ProtocolIE-SingleContainer.h"
 +#include "F1SetupResponse.h"
 +#include "SuccessfulOutcome.h"
 +#include "InitiatingMessage.h"
 +#include "NonDynamic5QIDescriptor.h"
 +#include "AveragingWindow.h"
 +#include "MaxDataBurstVolume.h"
 +#include "Flows-Mapped-To-DRB-Item.h"
 +#include "SliceSupportItem.h"
 +#include "ServedPLMNs-Item.h"
  #include "F1AP-PDU.h"
 +#include "ULUPTNLInformation-ToBeSetup-Item.h"
 +#include "ULConfiguration.h"
  #include "ModulationOrder.h"
  #include "BandNR.h"
  #include "UE-CapabilityRAT-Container.h"
@@@ -1965,22 -1954,25 +1965,25 @@@ void fillLongCycleOffsetValue(DrxLongCy
   * ****************************************************************/
  void storeDrxCfgInUeCb(struct DRX_ConfigRrc *drxSetup, DrxCfg *drxCfg)
  {
-    switch(drxSetup->drx_onDurationTimer.present)
+    if(drxSetup)
     {
-       case DRX_ConfigRrc__drx_onDurationTimer_PR_NOTHING:
-          break;
-       case DRX_ConfigRrc__drx_onDurationTimer_PR_milliSeconds:
-          {
-             drxCfg->drxOnDurationTimer.onDurationTimerValInMs = true;
-             drxCfg->drxOnDurationTimer.onDurationtimerValue.milliSeconds=drxSetup->drx_onDurationTimer.choice.milliSeconds;
-             break;
-          }
-       case DRX_ConfigRrc__drx_onDurationTimer_PR_subMilliSeconds:
-          {
-             drxCfg->drxOnDurationTimer.onDurationTimerValInMs = false;
-             drxCfg->drxOnDurationTimer.onDurationtimerValue.subMilliSeconds = drxSetup->drx_onDurationTimer.choice.subMilliSeconds;
+       switch(drxSetup->drx_onDurationTimer.present)
+       {
+          case DRX_ConfigRrc__drx_onDurationTimer_PR_NOTHING:
              break;
-          }
+          case DRX_ConfigRrc__drx_onDurationTimer_PR_milliSeconds:
+             {
+                drxCfg->drxOnDurationTimer.onDurationTimerValInMs = true;
+                drxCfg->drxOnDurationTimer.onDurationtimerValue.milliSeconds=drxSetup->drx_onDurationTimer.choice.milliSeconds;
+                break;
+             }
+          case DRX_ConfigRrc__drx_onDurationTimer_PR_subMilliSeconds:
+             {
+                drxCfg->drxOnDurationTimer.onDurationTimerValInMs = false;
+                drxCfg->drxOnDurationTimer.onDurationtimerValue.subMilliSeconds = drxSetup->drx_onDurationTimer.choice.subMilliSeconds;
+                break;
+             }
+       }
     }
     fillLongCycleOffsetValue(&drxCfg->drxLongCycleStartOffset, &drxSetup->drx_LongCycleStartOffset);
     drxCfg->drxInactivityTimer = drxSetup->drx_InactivityTimer;
@@@ -2057,11 -2049,7 +2060,7 @@@ uint8_t extractCellGroupConfig(CuUeCb *
  
              case MAC_CellGroupConfig__drx_ConfigRrc_PR_setup:
              {
-                if(cellGrpCfg->mac_CellGroupConfig->drx_ConfigRrc->choice.setup)
-                {
-                   ueCb->drxCfgPresent = true;  
-                   storeDrxCfgInUeCb(cellGrpCfg->mac_CellGroupConfig->drx_ConfigRrc->choice.setup, &ueCb->drxCfg);
-                }
+                storeDrxCfgInUeCb(cellGrpCfg->mac_CellGroupConfig->drx_ConfigRrc->choice.setup, &ueCb->drxCfg);
                 break;
              }
  
@@@ -10949,18 -10937,14 +10948,14 @@@ uint8_t BuildAndSendUeContextModificati
        ueContextModifyReq =&f1apMsg->choice.initiatingMessage->value.choice.UEContextModificationRequest;
  
        if(action == MODIFY_UE)
-          elementCnt = 5;
+          elementCnt = 4;
        else if(action == QUERY_CONFIG)
           elementCnt = 3;
        else if(action == RRC_RECONFIG_COMPLETE_IND)
           elementCnt = 3;
        else if((action == STOP_DATA_TX) || (action == RESTART_DATA_TX)) 
           elementCnt = 5;
-       
- #ifdef NR_DRX
-       if(DRX_TO_BE_RELEASE)
-          elementCnt++;
- #endif      
        ueContextModifyReq->protocolIEs.list.count = elementCnt;
        ueContextModifyReq->protocolIEs.list.size = elementCnt*sizeof(UEContextModificationRequest_t *);
  
           ueContextModifyReq->protocolIEs.list.array[ieIdx]->value.choice.RRCDeliveryStatusRequest = RRCDeliveryStatusRequest_true;
        }
  
- #ifdef NR_DRX
-       if(DRX_TO_BE_RELEASE)
-       {
-          /* DRX Configuration Indicator */
-          ieIdx++;
-          ueContextModifyReq->protocolIEs.list.array[ieIdx]->id = ProtocolIE_ID_id_DRXConfigurationIndicator;
-          ueContextModifyReq->protocolIEs.list.array[ieIdx]->criticality = Criticality_ignore;
-          ueContextModifyReq->protocolIEs.list.array[ieIdx]->value.present = UEContextModificationRequestIEs__value_PR_DRXConfigurationIndicator;
-          ueContextModifyReq->protocolIEs.list.array[ieIdx]->value.choice.DRXConfigurationIndicator = DRXConfigurationIndicator_release;
-          ueCb->drxCfgPresent = false;
-          memset(&ueCb->drxCfg, 0, sizeof(DrxCfg));
-       }
- #endif
        xer_fprint(stdout, &asn_DEF_F1AP_PDU, f1apMsg);
  
        /* Encode the F1SetupRequest type as APER */
@@@ -11708,7 -11678,7 +11689,7 @@@ uint8_t procServedCellPlmnList(ServedPL
   * ****************************************************************/
  uint8_t procUeContextModificationResponse(uint32_t duId, F1AP_PDU_t *f1apMsg)
  {
-    uint8_t idx=0, duIdx=0, countiX =1;
+    uint8_t idx=0, duIdx=0;
     uint8_t duUeF1apId = 0, cuUeF1apId = 0;
     DuDb *duDb = NULLP;
     CuUeCb *ueCb = NULLP;
           }
        }
     }
- #ifdef NR_DRX
-    if(countiX == 1)
-    {
-       countiX++;
-       DU_LOG("\nPBORLA INFO  -->  F1AP: Sending UE Context Modification Request to MODIFY_UE");
-       //BuildAndSendUeContextModificationReq(duId, ueCb, MODIFY_UE);
-    }
- #endif
+    
     return ROK;
  }
  
@@@ -28,8 -28,6 +28,8 @@@
  #include "lkw.x"
  #include "lrg.x"
  #include "F1AP-PDU.h"
 +#include "InitiatingMessage.h"
 +#include "SuccessfulOutcome.h"
  #include "du_app_mac_inf.h"
  #include "du_cfg.h"
  #include "du_app_rlc_inf.h"
  #include "du_utils.h"
  #include "du_ue_mgr.h"
  #include "RAT-Type.h"
 +#include "NRFreqInfo.h"
 +#include "NRCGI.h"
 +#include "TDD-Info.h"
 +#include "NR-Mode-Info.h"
 +#include "ServedPLMNs-List.h"
 +#include "GNB-DU-Served-Cells-List.h"
 +#include "Served-Cell-Information.h"
 +#include "ProtocolExtensionContainer.h"
 +#include "RRC-Version.h"
 +#include "FDD-Info.h"
 +#include "FreqBandNrItem.h"
 +#include "ServedPLMNs-Item.h"
 +#include "GNB-DU-Served-Cells-Item.h"
 +#include "SliceSupportItem.h"
  #include "FeatureSetUplinkPerCC.h"
 +#include "SliceSupportItem.h"
 +#include "Served-Cells-To-Modify-Item.h"
 +#include "Served-Cells-To-Delete-List.h"
 +#include "Served-Cells-To-Delete-Item.h"
 +#include "QoSInformation.h"
 +#include "ULUPTNLInformation-ToBeSetup-List.h"
 +#include "DRB-Information.h"
 +#include "DRBs-ToBeSetup-Item.h"
 +#include "DRBs-ToBeSetupMod-Item.h"
 +#include "DRBs-ToBeModified-Item.h"
 +#include "CUtoDURRCInformation.h"
 +#include "SCell-ToBeSetup-List.h"
 +#include "SRBs-ToBeSetup-List.h"
 +#include "DRBs-ToBeSetup-List.h"
 +#include "SRBs-ToBeSetup-Item.h"
 +#include "DRBs-ToBeModified-List.h"
 +#include "RRCContainer.h"
 +#include "UE-CapabilityRAT-ContainerList.h"
 +#include "DRBs-Setup-List.h"
 +#include "CellGroupConfig.h"
 +#include "ResetAll.h"
 +#include "ResetType.h"
 +#include "Cells-to-be-Activated-List.h"
 +#include "GNB-CU-Name.h"
 +#include "SRBs-SetupMod-List.h"
 +#include "DRBs-SetupMod-List.h"
 +#include "DRBs-ToBeSetupMod-List.h"
 +#include "PagingCell-Item.h"
 +#include "PagingCell-list.h"
 +#include "QoS-Characteristics.h"
 +#include "ULUPTNLInformation-ToBeSetup-Item.h"
 +#include "Flows-Mapped-To-DRB-Item.h"
 +#include "NonDynamic5QIDescriptor.h"
 +#include "Dynamic5QIDescriptor.h"
  #include "FeatureSetDownlinkPerCC.h"
  #include "FeatureSets.h"
  #include "UE-NR-Capability.h"
@@@ -13456,72 -13406,62 +13456,62 @@@ void freeAperDecodeF1UeContextSetupReq(
     {
        for(ieIdx = 0; ieIdx < ueSetReq->protocolIEs.list.count; ieIdx++)
        {
-          if(ueSetReq->protocolIEs.list.array[ieIdx])
-          {
-             switch(ueSetReq->protocolIEs.list.array[ieIdx]->id)
-             {
-                case ProtocolIE_ID_id_gNB_CU_UE_F1AP_ID:
-                   break;
-                case ProtocolIE_ID_id_gNB_DU_UE_F1AP_ID:
-                   break;
-                case ProtocolIE_ID_id_SpCell_ID:
-                   freeAperDecodeNrcgi(&ueSetReq->protocolIEs.list.array[ieIdx]->value.choice.NRCGI);
-                   break;
-                case ProtocolIE_ID_id_ServCellIndex:
-                   break;
-                case ProtocolIE_ID_id_SpCellULConfigured:
-                   break;
-                case ProtocolIE_ID_id_CUtoDURRCInformation:
+        if(ueSetReq->protocolIEs.list.array[ieIdx])
+        {
+           switch(ueSetReq->protocolIEs.list.array[ieIdx]->id)
+           {
+              case ProtocolIE_ID_id_gNB_CU_UE_F1AP_ID:
+                 break;
+              case ProtocolIE_ID_id_gNB_DU_UE_F1AP_ID:
+                 break;
+              case ProtocolIE_ID_id_SpCell_ID:
+                 freeAperDecodeNrcgi(&ueSetReq->protocolIEs.list.array[ieIdx]->value.choice.NRCGI);
+                 break;
+              case ProtocolIE_ID_id_ServCellIndex:
+                 break;
+              case ProtocolIE_ID_id_SpCellULConfigured:
+                 break;
+              case ProtocolIE_ID_id_CUtoDURRCInformation:
  
-                   freeAperDecodeCuToDuInfo(&ueSetReq->protocolIEs.list.array[ieIdx]->value.choice.CUtoDURRCInformation);
-                   break;
-                case ProtocolIE_ID_id_SCell_ToBeSetup_List:
+                 freeAperDecodeCuToDuInfo(&ueSetReq->protocolIEs.list.array[ieIdx]->value.choice.CUtoDURRCInformation);
+                 break;
+              case ProtocolIE_ID_id_SCell_ToBeSetup_List:
  
-                   freeAperDecodeSplCellList(&ueSetReq->protocolIEs.list.array[ieIdx]->value.choice.SCell_ToBeSetup_List);
-                   break;
-                case ProtocolIE_ID_id_SRBs_ToBeSetup_List:
+                 freeAperDecodeSplCellList(&ueSetReq->protocolIEs.list.array[ieIdx]->value.choice.SCell_ToBeSetup_List);
+                 break;
+              case ProtocolIE_ID_id_SRBs_ToBeSetup_List:
  
-                   freeAperDecodeSRBSetup(&ueSetReq->protocolIEs.list.array[ieIdx]->value.choice.SRBs_ToBeSetup_List);
-                   break;
-                case ProtocolIE_ID_id_DRBs_ToBeSetup_List:
+                 freeAperDecodeSRBSetup(&ueSetReq->protocolIEs.list.array[ieIdx]->value.choice.SRBs_ToBeSetup_List);
+                 break;
+              case ProtocolIE_ID_id_DRBs_ToBeSetup_List:
  
-                   freeAperDecodeDRBSetup(&ueSetReq->protocolIEs.list.array[ieIdx]->value.choice.DRBs_ToBeSetup_List);
-                   break;
-                case ProtocolIE_ID_id_RRCContainer:
-                   {
+                 freeAperDecodeDRBSetup(&ueSetReq->protocolIEs.list.array[ieIdx]->value.choice.DRBs_ToBeSetup_List);
+                 break;
+              case ProtocolIE_ID_id_RRCContainer:
+                 {
  
-                      if(ueSetReq->protocolIEs.list.array[ieIdx]->value.choice.RRCContainer.buf != NULLP)
-                      {
+                    if(ueSetReq->protocolIEs.list.array[ieIdx]->value.choice.RRCContainer.buf != NULLP)
+                    {
  
-                         free(ueSetReq->protocolIEs.list.array[ieIdx]->value.choice.RRCContainer.buf);
-                      }
-                      break;
-                   }
-                case ProtocolIE_ID_id_RRCDeliveryStatusRequest:
-                   break;
-                case ProtocolIE_ID_id_GNB_DU_UE_AMBR_UL:
-                   {
-                      if(ueSetReq->protocolIEs.list.array[ieIdx]->value.choice.BitRate.buf)
-                      {
-                         free(ueSetReq->protocolIEs.list.array[ieIdx]->value.choice.BitRate.buf);
-                      }
-                      break;
-                   }
- #ifdef NR_DRX
-                case ProtocolIE_ID_id_DRXCycle:
-                   {
-                      if(ueSetReq->protocolIEs.list.array[ieIdx]->value.choice.DRXCycle.shortDRXCycleLength)
-                         free(ueSetReq->protocolIEs.list.array[ieIdx]->value.choice.DRXCycle.shortDRXCycleLength);
-                      if(ueSetReq->protocolIEs.list.array[ieIdx]->value.choice.DRXCycle.shortDRXCycleTimer)
-                         free(ueSetReq->protocolIEs.list.array[ieIdx]->value.choice.DRXCycle.shortDRXCycleTimer);
-                      break;
-                   }
- #endif             
-                 default:
-                   DU_LOG("\nERROR  -->  F1AP: Invalid event type %ld " ,ueSetReq->protocolIEs.list.array[ieIdx]->id);
-             } 
-             free(ueSetReq->protocolIEs.list.array[ieIdx]);
-          }
+                       free(ueSetReq->protocolIEs.list.array[ieIdx]->value.choice.RRCContainer.buf);
+                    }
+                    break;
+                 }
+              case ProtocolIE_ID_id_RRCDeliveryStatusRequest:
+                 break;
+              case ProtocolIE_ID_id_GNB_DU_UE_AMBR_UL:
+                 {
+                    if(ueSetReq->protocolIEs.list.array[ieIdx]->value.choice.BitRate.buf)
+                    {
+                       free(ueSetReq->protocolIEs.list.array[ieIdx]->value.choice.BitRate.buf);
+                    }
+                    break;
+                 }
+              default:
+                 DU_LOG("\nERROR  -->  F1AP: Invalid event type %ld " ,ueSetReq->protocolIEs.list.array[ieIdx]->id);
+           } 
+           free(ueSetReq->protocolIEs.list.array[ieIdx]);
+        }
        }
        free(ueSetReq->protocolIEs.list.array);
     }
@@@ -13900,52 -13840,50 +13890,50 @@@ void FreeUeContextSetupRsp(F1AP_PDU_t *
     {
        if(f1apMsg->choice.successfulOutcome)
        {
-          ueSetRsp = &f1apMsg->choice.successfulOutcome->value.choice.\
-                     UEContextSetupResponse;
-          if(ueSetRsp->protocolIEs.list.array)
-          {
-             for(idx = 0; idx < ueSetRsp->protocolIEs.list.count; idx++)
-             {
-                if(ueSetRsp->protocolIEs.list.array[idx])
-                {
-                   switch(ueSetRsp->protocolIEs.list.array[idx]->id)
-                   {
-                      case ProtocolIE_ID_id_gNB_CU_UE_F1AP_ID:
-                         break;
-                      case ProtocolIE_ID_id_gNB_DU_UE_F1AP_ID:
-                         break;
-                      case ProtocolIE_ID_id_C_RNTI:
-                         break;
-                      case ProtocolIE_ID_id_DUtoCURRCInformation:
-                         {
-                            CellGroupConfig_t *cellGrpCfg = NULLP;
-                            cellGrpCfg  = &ueSetRsp->protocolIEs.list.array[idx]->value.choice.\
-                                          DUtoCURRCInformation.cellGroupConfig;
-                            if(cellGrpCfg->buf != NULLP)
-                            {
-                               DU_FREE(cellGrpCfg->buf, cellGrpCfg->size);
-                               cellGrpCfg = NULLP;
-                            }
-                            break;
-                         }
-                      case ProtocolIE_ID_id_DRBs_Setup_List:
-                         {
+        ueSetRsp = &f1apMsg->choice.successfulOutcome->value.choice.\
+                   UEContextSetupResponse;
+        if(ueSetRsp->protocolIEs.list.array)
+        {
+           for(idx = 0; idx < ueSetRsp->protocolIEs.list.count; idx++)
+           {
+              if(ueSetRsp->protocolIEs.list.array[idx])
+              {
+                 switch(ueSetRsp->protocolIEs.list.array[idx]->id)
+                 {
+                    case ProtocolIE_ID_id_gNB_CU_UE_F1AP_ID:
+                       break;
+                    case ProtocolIE_ID_id_gNB_DU_UE_F1AP_ID:
+                       break;
+                    case ProtocolIE_ID_id_DUtoCURRCInformation:
+                       {
+                          CellGroupConfig_t *cellGrpCfg = NULLP;
+                          cellGrpCfg  = &ueSetRsp->protocolIEs.list.array[idx]->value.choice.\
+                                        DUtoCURRCInformation.cellGroupConfig;
+                          if(cellGrpCfg->buf != NULLP)
+                          {
+                             DU_FREE(cellGrpCfg->buf, cellGrpCfg->size);
+                             cellGrpCfg = NULLP;
+                          }
+                          break;
+                       }
+                     case ProtocolIE_ID_id_DRBs_Setup_List:
+                       {
                             freeDrbSetupList(&ueSetRsp->protocolIEs.list.array[idx]->value.choice.DRBs_Setup_List); 
                             break;
-                         }
-                      default:
-                         DU_LOG("\nERROR  -->  DUAPP: Invalid Id %ld at FreeUeContextSetupRsp()",\
-                               ueSetRsp->protocolIEs.list.array[idx]->id);
-                         break;
-                   }
-                   DU_FREE(ueSetRsp->protocolIEs.list.array[idx],\
-                         sizeof(UEContextSetupResponseIEs_t));
-                }
-             }
-             DU_FREE(ueSetRsp->protocolIEs.list.array, \
-                   ueSetRsp->protocolIEs.list.size);
-          }
-          DU_FREE(f1apMsg->choice.successfulOutcome, sizeof(SuccessfulOutcome_t));
+                       }
+                    default:
+                       DU_LOG("\nERROR  -->  DUAPP: Invalid Id %ld at FreeUeContextSetupRsp()",\
+                       ueSetRsp->protocolIEs.list.array[idx]->id);
+                       break;
+                 }
+                 DU_FREE(ueSetRsp->protocolIEs.list.array[idx],\
+                       sizeof(UEContextSetupResponseIEs_t));
+              }
+           }
+           DU_FREE(ueSetRsp->protocolIEs.list.array, \
+                 ueSetRsp->protocolIEs.list.size);
+        }
+        DU_FREE(f1apMsg->choice.successfulOutcome, sizeof(SuccessfulOutcome_t));
        }
        DU_FREE(f1apMsg, sizeof(F1AP_PDU_t));
     }
@@@ -16002,8 -15940,6 +15990,6 @@@ uint8_t BuildAndSendUeContextModRsp(DuU
        break;
     }
     FreeUeContextModResp(f1apMsg);
-    //sleep(5);
-    //BuildAndSendDUConfigUpdate(SERV_CELL_TO_DELETE);
     return ret;
  }
  /*******************************************************************
@@@ -16424,13 -16360,6 +16410,6 @@@ uint8_t procF1UeContextModificationReq(
                 }
                 break;
              }
- #ifdef NR_DRX
-          case ProtocolIE_ID_id_DRXConfigurationIndicator:
-             {
-                duUeCb->f1UeDb->duUeCfg.drxConfigIndicatorRelease = true;
-                break;
-             }
- #endif
                
        }
     }
diff --combined src/du_app/du_mgr_main.c
@@@ -165,7 -165,7 +165,7 @@@ uint8_t setRrmPolicy(RrmPolicyList rrmP
             }
             else 
             {
 -              BuildAndSendSliceReCfgReq(duCfgParam.tempSliceCfg.rrmPolicy, duCfgParam.tempSliceCfg.totalRrmPolicy,\
 +              BuildAndSendSliceRecfgReq(duCfgParam.tempSliceCfg.rrmPolicy, duCfgParam.tempSliceCfg.totalRrmPolicy,\
                duCfgParam.tempSliceCfg.totalSliceCount);
             }
         }
@@@ -548,7 -548,7 +548,7 @@@ uint8_t commonInit(
        DU_LOG("\nERROR  -->  DU_APP : System Task creation for DU APP failed");
        return RFAILED;
     }
-    //ODU_SET_THREAD_AFFINITY(&du_app_stsk, SS_AFFINITY_MODE_EXCL, 16, 0);
+    ODU_SET_THREAD_AFFINITY(&du_app_stsk, SS_AFFINITY_MODE_EXCL, 16, 0);
  
     /* system task for EGTP */
     if(ODU_CREATE_TASK(PRIOR0, &egtp_stsk) != ROK)
        DU_LOG("\nERROR  -->  DU_APP : System Task creation for EGTP failed");
        return RFAILED;
     }
-    //ODU_SET_THREAD_AFFINITY(&egtp_stsk, SS_AFFINITY_MODE_EXCL, 27, 0);
+    ODU_SET_THREAD_AFFINITY(&egtp_stsk, SS_AFFINITY_MODE_EXCL, 27, 0);
  
     /* system task for RLC_DL and MAC */
     if(ODU_CREATE_TASK(PRIOR0, &rlc_mac_cl_stsk) != ROK)
     }
     pthread_attr_init(&attr);
     pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
-    //ODU_SET_THREAD_AFFINITY(&rlc_mac_cl_stsk, SS_AFFINITY_MODE_EXCL, 18, 0);
+    ODU_SET_THREAD_AFFINITY(&rlc_mac_cl_stsk, SS_AFFINITY_MODE_EXCL, 18, 0);
  
     /* system task for RLC UL */
     if(ODU_CREATE_TASK(PRIOR1, &rlc_ul_stsk) != ROK)
        DU_LOG("\nERROR  -->  DU_APP : System Task creation for RLC UL failed");
        return RFAILED;
     }
-    //ODU_SET_THREAD_AFFINITY(&rlc_ul_stsk, SS_AFFINITY_MODE_EXCL, 22, 0);
+    ODU_SET_THREAD_AFFINITY(&rlc_ul_stsk, SS_AFFINITY_MODE_EXCL, 22, 0);
  
     /* system task for SCTP receiver thread */
     if(ODU_CREATE_TASK(PRIOR0, &sctp_stsk) != ROK)
        DU_LOG("\nERROR  -->  DU_APP : System Task creation for SCTP failed");
        return RFAILED;
     }
-    //ODU_SET_THREAD_AFFINITY(&sctp_stsk, SS_AFFINITY_MODE_EXCL, 25, 0);
+    ODU_SET_THREAD_AFFINITY(&sctp_stsk, SS_AFFINITY_MODE_EXCL, 25, 0);
  
     /* system task for lower-mac receiver thread */
     if(ODU_CREATE_TASK(PRIOR0, &lwr_mac_stsk) != ROK)
        DU_LOG("\nERROR  -->  DU_APP : System Task creation for Lower MAC failed");
        return RFAILED;
     }
-    //ODU_SET_THREAD_AFFINITY(&lwr_mac_stsk, SS_AFFINITY_MODE_EXCL, 21, 0);
+    ODU_SET_THREAD_AFFINITY(&lwr_mac_stsk, SS_AFFINITY_MODE_EXCL, 21, 0);
  
  #ifndef INTEL_WLS_MEM
     /* system task for phy stub's slot indication generator thread */