[Epic-ID: ODUHIGH-461][Task-ID: ODUHIGH-468]Unused files and functions removed/disabled
[o-du/l2.git] / src / 5gnrsch / rg_sch_cfg.c
diff --git a/src/5gnrsch/rg_sch_cfg.c b/src/5gnrsch/rg_sch_cfg.c
deleted file mode 100755 (executable)
index cab0b4c..0000000
+++ /dev/null
@@ -1,9489 +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 functions.
-     File:     rg_sch_cfg.c
-**********************************************************************/
-
-/** @file rg_sch_cfg.c
-@brief This module handles the configuration of SCH by RRC and RRM.
-*/
-
-
-/* header include files -- defines (.h) */
-#include "common_def.h"
-#include "lrg.h"
-#include "rgr.h"
-#include "rgm.h"
-#include "tfu.h"
-#include "rg_env.h"
-#include "rg_sch_inf.h"
-#include "rg_sch.h"
-#include "rg_sch_err.h"
-#include "rg_sch_cmn.h"
-
-/* header/extern include files (.x) */
-#include "tfu.x"           /* TFU types */
-#include "lrg.x"           /* layer management typedefs for MAC */
-#include "rgr.x"           /* layer management typedefs for MAC */
-#include "rgm.x"           /* layer management typedefs for MAC */
-#include "rg_sch_inf.x"            /* typedefs for MAC */
-#include "rg_sch.x"            /* typedefs for MAC */
-/* [ccpu00124018]-MOD- Retrieving CQI value from cell config*/
-#include "rg_sch_cmn.x"   
-#include "rg_sch_clist.x"
-
-
-/* LTE-MAC Scheduler instance control block structures */
-RgSchCb rgSchCb[RGSCH_MAX_INST];
-
-#ifdef PHY_ERROR_LOGING
-RgSchUlAllocCntr rgSchUlAllocCntr;
-#endif
-
-#ifdef EMTC_ENABLE
-Void rgSCHEmtcPOTrigger ARGS ((
-RgSchCellCb   *cell,
-RgSchUeCb     *ue
-));
-
-S16 rgSchEmtcUpdSiCfg ARGS ((
-RgSchCellCb   *cell,
-RgrCellRecfg  *cellRecfg
-));
-
-S16 rgSCHEmtcCfgVldtDrxReTxCfg ARGS((
-uint16_t       reTxTmr
-));
-
-S16 rgSCHEmtcCfgVldtDrxUlReTxCfg ARGS((
-uint16_t       reTxTmr
-));
-#endif
-
-S16 rgSCHEnbPfsDlCfg ARGS((
-         Inst                instIdx,
-         RgSchErrInfo       *err
-         ));
-/* local defines */
-static S16 rgSCHCfgRgrUeRecfgRntiChg ARGS (( RgSchCellCb *cell,
-      RgSchUeCb *ue, RgrUeRecfg *ueRecfg, RgSchErrInfo *errInfo));
-static S16 rgSCHCfgVldtUePwrCfg ARGS((RgSchCellCb *cell,
-         RgrUeUlPwrCfg *pwrCfg));
-static S16 rgSCHCfgVldtUeGrpPwrCfg ARGS((RgSchCellCb *cell,
-         RgrUeGrpPwrCfg *grpPwrCfg));
-#ifdef LTEMAC_SPS
-static S16 rgSCHCfgVldtUeDlSpsCfg ARGS((RgSchCellCb *cell,
-         RgrUeSpsDlCfg *dlSpsCfg));
-static S16 rgSCHCfgVldtSpsReCfg ARGS ((RgSchCellCb *cell,
-         RgSchUeCb *ue, RgrUeRecfg *ueRecfg));
-#endif /*LTEMAC_SPS*/
-static S16 rgSCHCfgVldtUeCqiModeCfg ARGS((RgSchCellCb *cell,RgrUeDlCqiCfg *ueDlCqiCfg));
-static S16 rgSCHCfgVldtUeMeasGapAckNakRepCfg ARGS ((RgSchCellCb *cell,
-         RgrUeCfg *ueCfg));
-static S16 rgSCHCfgVldtUeMeasGapAckNakRepRecfg ARGS ((RgSchCellCb *cell,
-         RgrUeRecfg *ueRecfg));
-static Void rgSCHCfgFreeDlDedLcCb ARGS((RgSchCellCb *cell, RgSchUeCb *ue,
-         RgSchDlLcCb *dlLc));
-static Void rgSCHCfgFreeDlCmnLcCb ARGS((RgSchClcDlLcCb *cmnDlLc));
-static Void rgSCHCfgFreeUeCb ARGS((RgSchCellCb *cell, RgSchUeCb *ue));
-static Void rgSCHCfgFreeRgrCfgLst ARGS((RgSchCellCb *cell));
-static Void rgSCHCfgFreeCmnLcLst ARGS((RgSchCellCb *cell));
-static Void rgSCHCfgFreeUeLst ARGS((RgSchCellCb *cell));
-#ifdef LTEMAC_SPS
-static Void rgSCHCfgFreeSpsUeLst ARGS((RgSchCellCb *cell));
-#endif
-static S16 rgSCHCfgVldtRgrCmnLcCfg ARGS((Inst inst, RgrCellCfg *cellCfg,
-                         RgSchErrInfo *errInfo));
-static S16 rgSCHCfgVldtRgrCellPwrCfg ARGS((Inst inst, RgrCellCfg *cellCfg,
-         RgSchErrInfo *errInfo));
-static S16 rgSCHCfgVldtRgrCellSchCfg ARGS((Inst inst, RgrCellCfg *cellCfg));
-static S16 rgSCHCfgVldtRgrSchCfg ARGS((Inst inst, RgrSchedEnbCfg *schedEnbCfg));
-static S16 rgSCHCfgVldtRgrCellRACfg ARGS((Inst inst, RgrCellCfg *cellCfg));
-static Void rgSCHCfgRgrUePhrMsg3 ARGS(( RgSchCellCb *cell,
-             RgSchRaCb *raCb,RgSchUeCb *ue, RgSchErrInfo *errInfo));
-static S16 rgSCHCfgRgrCmnLcCfg ARGS((RgSchCellCb *cell, RgrCmnLchCfg *lcCfg,
-                         RgSchErrInfo *errInfo));
-Void rgSCHSCellFreeBuf ARGS((Inst inst,RgSchUeCb *ue,RgrUeRecfg *ueRecfg,uint8_t idx));    
-#ifdef RGR_SI_SCH
-static S16 rgSCHCfgVldtRgrCellSiCfg ARGS(( Inst inst, RgrSiCfg  *siCfg));
-#endif/*RGR_SI_SCH */
-
-/* LTE_ADV_FLAG_REMOVED_START */
-static S16 rgSCHCfgVldtRgrCellLteAdvCfg ARGS(( Inst inst, 
-                                 RgrLteAdvancedCellConfig *lteAdvCfg, uint8_t dlTotalBw));
-/* LTE_ADV_FLAG_REMOVED_END */
-
-static S16 rgSCHCfgVldtDrxUeCfg ARGS ((RgSchCellCb *cell,
-                                       RgrUeDrxCfg *ueDrxCfg));
-static S16 rgSCHCfgVldtDrxOnDurCfg ARGS((uint8_t onDurTmr));
-static S16 rgSCHCfgVldtDrxInActvCfg ARGS((uint16_t inActvTmr));
-static S16 rgSCHCfgVldtDrxReTxCfg ARGS((uint8_t reTxTmr));
-static S16 rgSCHCfgVldtDrxLngCycCfg ARGS((RgrDrxLongCycleOffst lngCycleOffst));
-static S16 rgSCHCfgVldtDrxLngCyclTmrs ARGS((uint16_t val));
-static S16 rgSCHCfgVldtDrxShrtCycCfg ARGS((RgrDrxShortDrx shrtCycCfg));
-static S16 rgSCHCfgVldtRgrCellCsgParamCfg ARGS((Inst inst,
-                          RgrCellCsgParamCfg   *csgParam));
-#ifdef TFU_UPGRADE
-
-S16 rgSCHCfgACqiUeCfg ARGS(( RgSchCellCb *cellCb,RgSchUeCb *ue, RgSchUeACqiCb *aCqiCb, 
-                     RgrTxMode ueTxMode,RgrUeAprdDlCqiCfg *aCqiCfg, CmLteUeCategory ueCat ));
-
-S16 rgSCHCfgAcqiUeReCfg ARGS(( RgSchCellCb *cellCb, RgSchUeCb *ueCb, 
- RgrUeAprdDlCqiCfg   *acqiCfg, CmLteUeCategory  ueCat ));
-
-S16 rgSCHUtlGetCfgPerOff ARGS(( RgSchPerTbl tbl, uint16_t  cfgIdx, 
-         uint16_t *peri, uint16_t *offset ));
-
-S16 rgSCHCfgRiUeCfg ARGS((RgSchCellCb  *cellCb, RgSchUeCb    *ueCb, 
-                   RgrUePrdDlCqiCfg *cqiCfg, CmLteUeCategory ueCat ));
-
-S16 rgSCHCfgPCqiUeCfg ARGS((RgSchCellCb  *cellCb, RgSchUeCb    *ueCb, 
-                     RgrUePrdDlCqiCfg *cqiCfg,CmLteUeCategory ueCat ));
-
-S16 rgSCHCfgSrsUeCfg ARGS((RgSchCellCb   *cellCb,RgSchUeCb     *ueCb,
-                     RgrUeUlSrsCfg *srsCfg ));
-
-S16 rgSCHCfgSrUeCfg ARGS((RgSchCellCb   *cellCb,RgSchUeCb     *ueCb,
-                     RgrUeSrCfg    *srCfg));
-
-S16 rgSCHCfgPCqiUeReCfg ARGS((RgSchCellCb  *cellCb, RgSchUeCb *ueCb, 
-                     RgrUePrdDlCqiCfg *cqiCfg,CmLteUeCategory ueCat));
-
-S16 rgSCHCfgSrsUeReCfg ARGS((RgSchCellCb  *cellCb, RgSchUeCb *ueCb, 
-                     RgrUeUlSrsCfg *srsCfg));
-
-S16 rgSCHCfgSrUeReCfg ARGS((RgSchCellCb  *cellCb, RgSchUeCb *ueCb, 
-                      RgrUeSrCfg   *srCfg));
-
-S16 rgSCHCfgVldtRgrTxmodePuschMode ARGS((RgSchCellCb  *cellCb,
-         RgrTxMode  txMde, RgrAprdCqiMode puschMode,RgSchErrInfo *errInfo));
-
-S16 rgSCHCfgVldtRgrUeACqiCfg ARGS(( RgSchCellCb *cellCb,
-         CmLteRnti  crnti, RgrUeAprdDlCqiCfg *acqiCfg, RgrUeTxModeCfg txMode,
-         RgSchErrInfo  *errInfo ));
-
-S16 rgSCHCfgVldtRgrTxmodePucchMode ARGS((RgSchCellCb  *cellCb,
-         RgrTxMode  txMde, RgrPrdCqiMode pucchMode,RgSchErrInfo *errInfo));
-
-#ifdef LTEMAC_HDFDD
-S16 rgSCHCfgVldtRgrUePCqiCfg ARGS(( RgSchCellCb *cellCb,
-         CmLteRnti  crnti, RgrUePrdDlCqiCfg *cqiCfg, Bool hdFdd,
-         RgrUeTxModeCfg txMode, RgSchErrInfo *errInfo));
-#else
-S16 rgSCHCfgVldtRgrUePCqiCfg ARGS(( RgSchCellCb *cellCb,
-         CmLteRnti  crnti, RgrUePrdDlCqiCfg *cqiCfg, RgrUeTxModeCfg txMode,
-         RgSchErrInfo *errInfo));         
-#endif
-#ifdef LTEMAC_HDFDD
-S16 rgSCHCfgVldtRgrUeUlSrsCfg  ARGS ((RgSchCellCb *cellCb,
-             CmLteRnti crnti, RgrUeUlSrsCfg *srsCfg, Bool hdFdd, 
-             RgSchErrInfo *errInfo));
-#else
-S16 rgSCHCfgVldtRgrUeUlSrsCfg  ARGS ((RgSchCellCb *cellCb,
-         CmLteRnti crnti, RgrUeUlSrsCfg *srsCfg, 
-         RgSchErrInfo *errInfo));
-#endif
-
-#ifdef LTEMAC_HDFDD
-S16 rgSCHCfgVldtRgrUeSrCfg  ARGS((RgSchCellCb *cellCb, CmLteRnti crnti,  
-         RgrUeSrCfg *srCfg, Bool hdFdd, RgSchErrInfo *errInfo));
-#else
-S16 rgSCHCfgVldtRgrUeSrCfg  ARGS((RgSchCellCb *cellCb, CmLteRnti crnti,  
-         RgrUeSrCfg *srCfg, RgSchErrInfo *errInfo));
-#endif
-static S16 rgSCHCfgVldtCqiSrSrsUeCfg ARGS (( RgSchCellCb       *cellCb,
-                                             RgrUeCfg          *ueCfg,  
-                                             RgSchErrInfo      *errInfo));
-
-static S16 rgSCHCfgVldtCqiSrSrsUeReCfg ARGS (( RgSchCellCb  *cellCb,
-                                               RgSchUeCb    *ueCb,
-                                               RgrUeRecfg   *ueReCfg,  
-                                               RgSchErrInfo *errInfo ));
-
-S16 rgSCHCfgPCqiSrsSrUeDel ARGS ((RgSchCellCb *cellCb, 
-                                         RgSchUeCb *ueCb));
-
-static Void rgSCHCfgUtlFetchAcqiBitSz ARGS (( RgSchUeACqiCb *acqiCb,uint8_t  numTxAnt,
-                     uint8_t* cqiPmiSzR1,uint8_t* cqiPmiSzRn1 ));
-
-/*  Added the function to be used instead of the 
- *  MACRO RG_SCH_GET_PERIODICITY_TBL */
-static const RgSchUePCqiSrsSrCfgIdxTbl*  rgSCHCfgUtlGetPcqiSrsSrRiTbl ARGS ((
-                                           RgSchPerTbl tblType, 
-                                           uint8_t * min, 
-                                           uint8_t * max));
-
-#endif /* TFU_UPGRADE */ 
-static Void rgSCHCfgUeTaRecfg ARGS (( RgSchCellCb  *cellCb,
-                                               RgSchUeCb    *ueCb,
-                                               RgrUeRecfg   *ueReCfg,  
-                                               RgSchErrInfo *errInfo ));
-#ifdef LTE_ADV
-S16 rgSCHSCellCfgUeCfg ARGS((
-RgSchCellCb  *cell,
-RgSchUeCb    *ue,
-RgrUeRecfg   *ueRecfg,
-RgSchErrInfo *err
-));
-
-S16 rgSCHSCellCfgUePucchReCfg ARGS((
-RgSchCellCb  *cell,
-RgSchUeCb    *ue,
-RgrUeRecfg   *ueRecfg,
-RgSchErrInfo *err
-));
-S16 rgSCHCfgVldtRgrUeSCellRecfg ARGS((
-RgrUeRecfg     *ueRecfg,
-RgSchCellCb    *cell,
-RgSchUeCb      *ue,
-RgSchErrInfo   *errInfo
-));
-static S16 rgSCHSCellCfgUeCfgRollBack ARGS((
-RgSchCellCb  *cell,
-RgSchUeCb    *ue,
-RgrUeRecfg   *ueRecfg
-));
-#endif
-
-/* ccpu00117452 - MOD - Changed macro name from
-   RGR_RRM_DLPWR_CNTRL to RGR_CQI_REPT */
-#if ((defined (RGR_CQI_REPT)) && (defined (RGR_V2)))
-static S16 rgSCHCfgUeCqiReptReCfg ARGS ((
-RgSchCellCb    *cell,
-RgSchUeCb      *ue,
-RgrUeRecfg     *ueRecfg
-));
-
-static S16 rgSCHCfgVldtCqiReptReCfg ARGS ((
-RgSchCellCb       *cell,
-RgrUeRecfg     *ueRecfg
-));
-#endif
-/*LTE_L2_MEAS_PHASE2*/
-#ifdef LTE_L2_MEAS
-static S16 rgSchAddToL2Meas ARGS ((RgSchCellCb *cellCb,RgSchDlLcCb *dlLc));
-#endif
-#ifdef EMTC_ENABLE
-S16 rgSCHEmtcCfgVldtDrxOnDurCfg
-(
-uint16_t      onDurTmr 
-);
-Void rgSCHUtlUpdEmtcY
-(
-RgSchUeCb                  *ue
-);
-Void rgSCHEmtcHqPAlloc 
-(
-RgSchCellCb       *cell,
-RgSchDlHqEnt      *hqEnt
-);
-#endif
-
-/* local typedefs */
-const RgSchSrsTxOffst rgSrsTxOffstTbl[RGSCH_MAX_SRS_SFCFG_IDX+1]=
-                                  {{1,{0,0,0,0,0,0,0,0}},
-                                   {1,{0,0,0,0,0,0,0,0}},
-                                   {1,{1,0,0,0,0,0,0,0}},
-                                   {1,{0,0,0,0,0,0,0,0}},
-                                   {1,{1,0,0,0,0,0,0,0}},
-                                   {1,{2,0,0,0,0,0,0,0}},
-                                   {1,{3,0,0,0,0,0,0,0}},
-                                   {2,{0,1,0,0,0,0,0,0}},
-                                   {2,{2,3,0,0,0,0,0,0}},
-                                   {1,{0,0,0,0,0,0,0,0}},
-                                   {1,{1,0,0,0,0,0,0,0}},
-                                   {1,{2,0,0,0,0,0,0,0}},
-                                   {1,{3,0,0,0,0,0,0,0}},
-                                   {7,{0,1,2,3,4,6,8,0}},
-                                   {8,{0,1,2,3,4,5,6,8}},
-                                   {0,{0,0,0,0,0,0,0,0}}};
-/* local externs */
-
-#ifdef TFU_UPGRADE
-/* SRSCfg Table: Ref 36.213, Table: 8.2.1  */
-const RgSchUePCqiSrsSrCfgIdxTbl  
-rgSchUeSrsCfgIdxFddTbl[RG_SCH_SRS_ISRS_INDX_MAX_FDD]=
-{
- { 0,1,    2,  0 },
- { 2,6,    5,  2 },
- { 7,16,   10, 7 },
- { 17,36,  20, 17},
- { 37,76,  40, 37},
- { 77,156, 80, 77},
- { 157,316,160,157},
- { 317,636,320,317 }
-};
-
-/* Reference : 36.213 Table 8.2-2 */
-const RgSchUePCqiSrsSrCfgIdxTbl 
-rgSchUeSrsCfgIdxTddTbl[RG_SCH_SRS_ISRS_INDX_MAX_TDD]=
-{
- { 10,14,  5,  10 },
- { 15,24,  10, 15 },
- { 25,44,  20, 25 },
- { 45,84,  40, 45 },
- { 85,164, 80, 85 },
- { 165,324,160, 165 },
- { 325,644,320, 325 }
- /* RESERVED: Configuration Module should not allow Res values */
-};
-
-/*Reference: 36.213 Table:7.2.2-1A */
-const RgSchUePCqiSrsSrCfgIdxTbl 
-rgSchUePCqiCfgIdxFddTbl[RG_SCH_CQIPMI_CFGIDX_MAX_FDD]=
-{
- { 0,1,   2, 0 },
- { 2,6,   5, 2 },
- { 7,16,  10,7 },
- {17,36,  20,17},
- {37,76,  40, 37},
- {77,156, 80, 77},
- {157,316,160,157},
- {318,349,32,318}, 
- {350,413,64, 350},
- {414,541,128,414 }
- /* RESERVED: Configuration should not allow Res values */
-};
-
-/* Reference: 36.213 Table:7.2.2-1C */
-const RgSchUePCqiSrsSrCfgIdxTbl 
-rgSchUeCqiPmiCfgIdxTddTbl[RG_SCH_CQIPMI_CFGIDX_MAX_TDD]=
-{
- { 0,0,   1, 0 },
- { 1,5,   5, 1 },
- { 6,15,  10,6 },
- {16,35,  20,16},
- {36,75,  40,36},
- {76,155, 80,76},
- {156,315,160,156}
- /* RESERVED: Configuration should not allow Res values */
-};
-
-/* Note: RI table is same for FDD and TDD */
-/*Reference: 36.213 Table:7.2.2-1B */
-const RgSchUePCqiSrsSrCfgIdxTbl 
-rgSchUeRiCfgIdxTbl[RG_SCH_RI_CFGIDX_MAX]=
-{
- { 0,160,    1, 0 },
- { 161,321,  2, 161 },
- { 322,482,  4, 322 },
- { 483,643,  8, 483},
- { 644,804,  16,644},
- { 805,965,  32,805 }
- /* RESERVED: Configuration should not allow Res values */
-};
-
-/*Reference: 36.213 Table:7.2.2-2 */
-const RgSchUeBwSubSzBwParts 
-rgSchUeBwSubSzBwPartsTbl[RG_SCH_BW_SUBSZ_BWPARTS_MAX]=
-{
- {6,7, 0, 0},  /*TODO: 6,7, NA, NA */
- {8, 10, 4,1},
- {11, 26, 4,2},
- {27, 63, 6,3},
- {64, 110, 8,4}
-};
-
-
-/* Reference : 36.213 Table 10.1-5 */
-/* Note: SR is same table for TDD and FDD */
-const RgSchUePCqiSrsSrCfgIdxTbl rgSchUeSrCfgIdxTbl[RG_SCH_ISR_INDX_MAX]=
-{
- { 0,4,   5, 0 },
- { 5,14,   10, 5 },
- { 15,34,  20,15 },
- { 35,74, 40,35},
- { 75,154, 80, 75}
- /* RESERVED: Configuration should not allow Res values */
-};
-
-/*Reference:36.213: Derived from Table: 7.2.1-5 for Label L.
- The Label L is CEIL(log2(BinCoe(N and M)))*/
-const uint8_t RgSCHUeAcqi2022LBitWidth[6][28] ={
-{0,1,2,2,3,3,3,3,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5},
-{0,0,2,3,4,4,5,5,6,6,6,7,7,7,7,7,8,8,8,8,8,8,8,9,9,9,9,9},
-{0,0,0,2,4,5,6,6,7,7,8,8,9,9,9,10,10,10,10,11,11,11,11,11,12,12,12,12},
-{0,0,0,0,3,4,6,7,7,8,9,9,10,10,11,11,12,12,12,13,13,13,14,14,14,14,15,15},
-{0,0,0,0,0,3,5,6,7,8,9,10,11,11,12,13,13,14,14,14,15,15,16,16,16,17,17,17},
-{0,0,0,0,0,0,3,5,7,8,9,10,11,12,13,13,14,15,15,16,16,17,17,18,18,18,19,19}
-};
-
-#endif 
-extern uint8_t rgSchCmnHarqRtt[];
-#ifdef EMTC_ENABLE
-S16 rgSCHEmtcCellAlloc ARGS((RgSchCellCb *cel)); 
-Void rgSCHEmtcCellFree ARGS((RgSchCellCb *cel)); 
-Void rgSCHEmtcUeInfoFree ARGS((RgSchCellCb *cell, RgSchUeCb *ue)); 
-uint8_t rgSchfillPucchSrRepNumCountemtc ARGS((RgSchUeCb *ueCb)); 
-uint8_t rgSchfillPucchCqiRepNumCountemtc ARGS((RgSchUePCqiCb *cqiCb, RgSchUeCb *ueCb)); 
-S16 rgEmtcvalidateSiCfg ARGS((RgrSiCfgReqInfo *siCfg,RgSchCellCb  *cell));
-#endif
-/* forward references */
-
-
-/**
- * @brief Validates the SCH EndoeB configuration request from RRM to SCH.
- *
- * @details
- *
- *     Function : rgSCHCfgVldtRgrSchedEnbCfg
- *
- **     Processing Steps:
- *      - Retrieve the cell control block.
- *      - If successful,
- *        - Validate the range of configured values recieved in
- *          configuration request.
- *        - If validated successfully,
- *          - Return ROK and pointer to the cell.
- *        - Else 
- *          - Return RFAILED.
- *      - Else return RFAILED.
- *  @param[in]  Inst               inst
- *  @param[in]  RgrSchedEnbCfg    *schedEnbCfg
- *  @param[out] RgSchCellCb      **cell
- *  @param[out] RgSchErrInfo      *errInfo
- *  @return  S16
- *      -# ROK
- *      -# RFAILED
- **/
-S16 rgSCHCfgVldtRgrSchedEnbCfg
-(
-Inst              inst,
-RgrSchedEnbCfg   *schedEnbCfg,
-RgSchErrInfo     *errInfo
-)
-{
-   DU_LOG("\nDEBUG  -->  SCH : VALIDATE RGR SCH ENB CONFIG: \n");
-
-   errInfo->errCause = RGSCHERR_CFG_INVALID_RGR_ENB_CFG;
-
-   // TODO
-   if ((rgSCHCfgVldtRgrSchCfg(inst, schedEnbCfg)) != ROK)
-   {
-      DU_LOG("\nERROR  -->  SCH : Validation for scheduler related "
-                          "config failed\n");
-      return RFAILED;
-   }
-
-   DU_LOG("\nINFO  -->  SCH : MIMO_DBG:: SCH:: numAntPorts=%d\n",schedEnbCfg->numTxAntPorts);
-   
-   /* Validation for the ENB parameters */
-   if ((schedEnbCfg->numTxAntPorts == 0) || (schedEnbCfg->numTxAntPorts > 4))
-   {
-      DU_LOG("\nERROR  -->  SCH : Invalid number of transmit antenna" 
-            " ports %d\n", schedEnbCfg->numTxAntPorts);
-      return RFAILED;
-   }
-
-   /* Validate csg access mode */
-   if((schedEnbCfg->accsMode < RGR_CELL_ACCS_OPEN) ||
-      (schedEnbCfg->accsMode > RGR_CELL_ACCS_HYBRID))
-   {
-      DU_LOG("\nERROR  -->  SCH : Invalid CSG Access mode\n");
-      return RFAILED;
-   }
-
-   errInfo->errCause = RGSCHERR_NONE;
-   DU_LOG("\nINFO  -->  SCH : RGR SCHED ENB config validation done:");
-
-   return ROK;
-}  /* rgSCHCfgVldtRgrSchedEnbCfg */
-
-/**
- * @brief Validates the cell configuration request from RRM to MAC.
- *
- * @details
- *
- *     Function : rgSCHCfgVldtRgrCellCfg
- *
- *     Processing Steps:
- *      - Retrieve the cell control block.
- *      - If successful,
- *        - Validate the range of configured values recieved in
- *          configuration request.
- *        - If validated successfully,
- *          - Return ROK and pointer to the cell.
- *        - Else 
- *          - Return RFAILED.
- *      - Else return RFAILED.
- *  @param[in]  Inst         inst
- *  @param[in]  RgrCellCfg   *cellCfg
- *  @param[out] RgSchCellCb  **cell
- *  @param[out] RgSchErrInfo *errInfo
- *  @return  S16
- *      -# ROK
- *      -# RFAILED
- **/
-S16 rgSCHCfgVldtRgrCellCfg
-(
-Inst         inst,
-RgrCellCfg   *cellCfg,
-RgSchCellCb  *cell,
-RgSchErrInfo *errInfo
-)
-{
-   errInfo->errCause = RGSCHERR_CFG_INVALID_RGR_CELL_CFG;
-
-   /* check if cell exists already */
-   if ((uint8_t *)cell != NULLP)
-   {
-      DU_LOG("\nERROR  -->  SCH : Cell Id already exists");
-      return RFAILED;
-   }
-   
-   if(cellCfg->macInst >= SCH_INST_START)
-   {
-      DU_LOG("\nERROR  -->  SCH : Invalid MAC Instance %d ",
-               cellCfg->macInst);
-      return RFAILED;
-   }
-   
-   if (cellCfg->macRnti.startRnti < RGSCH_MIN_MAC_RNTI )
-   {
-      DU_LOG("\nERROR  -->  SCH : Invalid start RNTI %d for cell ",
-               cellCfg->macRnti.startRnti);
-      return RFAILED;
-   }
-
-   if ((rgSCHCfgVldtRgrCellSchCfg(inst, cellCfg)) != ROK)
-   {
-      DU_LOG("\nERROR  -->  SCH : Validation for scheduler related "
-                          "config failed");
-      return RFAILED;
-   }
-
-   if ((cellCfg->dlHqCfg.maxDlHqTx < RGSCH_MIN_HQ_TX) ||
-         (cellCfg->dlHqCfg.maxMsg4HqTx < RGSCH_MIN_HQ_TX))
-   {
-      DU_LOG("\nERROR  -->  SCH : Invalid Downlink HARQ configuration:"
-               " maxDlHqTx %d maxMsg4HqTx %d", cellCfg->dlHqCfg.maxDlHqTx,
-               cellCfg->dlHqCfg.maxMsg4HqTx);
-      return RFAILED;
-   }
-   if ((cellCfg->cfiCfg.cfi < RGSCH_MIN_CFI_VAL) ||
-         (cellCfg->cfiCfg.cfi > RGSCH_MAX_CFI_VAL))
-   {
-      DU_LOG("\nERROR  -->  SCH : Invalid CFI configuration %d",
-           cellCfg->cfiCfg.cfi);
-      return RFAILED;
-   }
-   if (((cellCfg->puschSubBand.subbandStart) + 
-        ((cellCfg->puschSubBand.numSubbands -1) * cellCfg->puschSubBand.size))
-         > (cellCfg->bwCfg.ulTotalBw - 1))
-   {
-      DU_LOG("\nERROR  -->  SCH : Invalid PUSCH subband configuration:"
-               " subBandStart %d numSubBands %d subBandSize %d ulTotBw %d",
-               cellCfg->puschSubBand.subbandStart, 
-               cellCfg->puschSubBand.numSubbands, cellCfg->puschSubBand.size,
-               cellCfg->bwCfg.ulTotalBw);
-      return RFAILED;
-   }
-
-   if (((cellCfg->bwCfg.dlTotalBw < RGSCH_MIN_DL_BW) ||
-            (cellCfg->bwCfg.dlTotalBw > RGSCH_MAX_DL_BW)) ||
-         ((cellCfg->bwCfg.ulTotalBw < RGSCH_MIN_UL_BW) || 
-          (cellCfg->bwCfg.ulTotalBw > RGSCH_MAX_UL_BW)))
-   {
-      DU_LOG("\nERROR  -->  SCH : Invalid Bandwidth configuration:"
-            " ul %d dl %d",cellCfg->bwCfg.ulTotalBw,
-            cellCfg->bwCfg.dlTotalBw);
-      return RFAILED;
-   }
-   if (cellCfg->phichCfg.ngEnum > RGR_NG_TWO)
-   {
-      DU_LOG("\nERROR  -->  SCH : Invalid PHICH Ng configuration %d",
-               (uint8_t)cellCfg->phichCfg.ngEnum);
-      return RFAILED;
-   }
-   /* Validation for extended PHICH Duration */
-   if ((cellCfg->phichCfg.isDurExtend == TRUE) && 
-         (cellCfg->bwCfg.dlTotalBw <= 10) && (cellCfg->cfiCfg.cfi < 2))
-   {
-      DU_LOG("\nERROR  -->  SCH : Invalid cfi value for"
-               "Extended PHICH duration cfi:%d dlBw:%d",
-               (uint8_t)cellCfg->cfiCfg.cfi, cellCfg->bwCfg.dlTotalBw);
-      return RFAILED;
-   }
-   if ((cellCfg->phichCfg.isDurExtend == TRUE) &&
-         (cellCfg->bwCfg.dlTotalBw > 10) && (cellCfg->cfiCfg.cfi < 3))
-   {
-      DU_LOG("\nERROR  -->  SCH : Invalid cfi value for"
-               "Extended PHICH duration cfi:%d dlBw:%d",
-               (uint8_t)cellCfg->cfiCfg.cfi, cellCfg->bwCfg.dlTotalBw);
-      return RFAILED;
-   }
-   DU_LOG("\nINFO  -->  SCH : CA_DBG:: PUCCH configuration:"
-         " N2_RB %d N1_PUCCH %d deltaShift %d cyclicShift %d",
-         cellCfg->pucchCfg.resourceSize,
-         cellCfg->pucchCfg.n1PucchAn,
-         cellCfg->pucchCfg.deltaShift,
-         cellCfg->pucchCfg.cyclicShift);
-
-   /* ccpu00138567- Removing validation check for resourceSize as 0.
-    * From the spec, n2RB value 0 is a valid config. */
-   if ((cellCfg->pucchCfg.resourceSize >= cellCfg->bwCfg.ulTotalBw/2) ||
-         (cellCfg->pucchCfg.n1PucchAn == 0) ||
-         (cellCfg->pucchCfg.deltaShift < RGSCH_PUCCH_MINVAL_DS) ||
-         (cellCfg->pucchCfg.deltaShift > RGSCH_PUCCH_MAXVAL_DS) ||
-         (cellCfg->pucchCfg.cyclicShift > RGSCH_PUCCH_MAXVAL_CS))
-   {
-      DU_LOG("\nERROR  -->  SCH : Invalid PUCCH configuration:"
-              " N2_RB %d N1_PUCCH %d deltaShift %d cyclicShift %d",
-               cellCfg->pucchCfg.resourceSize,
-               cellCfg->pucchCfg.n1PucchAn,
-               cellCfg->pucchCfg.deltaShift,
-               cellCfg->pucchCfg.cyclicShift);
-      return RFAILED;
-   }
-   if (cellCfg->srsCfg.isSrsCfgSetup && cellCfg->srsCfg.srsBwEnum > RGR_SRS_BWCFG_7)
-   {
-      DU_LOG("\nERROR  -->  SCH : Invalid SRS configuration: "
-               " srsBw %d", (uint8_t)cellCfg->srsCfg.srsBwEnum);
-      return RFAILED;
-   }
-
-   if ((rgSCHCfgVldtRgrCellRACfg(inst, cellCfg)) != ROK)
-   {
-      DU_LOG("\nERROR  -->  SCH : Validation for Random access related"
-                          "config failed");
-      return RFAILED;
-   }
-
-   if ((rgSCHCfgVldtRgrCellPwrCfg(inst, cellCfg, errInfo)) != ROK)
-   {
-      DU_LOG("\nERROR  -->  SCH : Validation for cell power "
-                          "config failed");
-      return RFAILED;
-   }
-
-   /* Validate the common logical channel configuration */
-   if( (cellCfg->numCmnLcs < RGR_MIN_CMN_LC_PER_CELL)||
-       (cellCfg->numCmnLcs > RGR_MAX_CMN_LC_PER_CELL))
-   {
-      DU_LOG("\nERROR  -->  SCH : Invalid number(%d) of common logical"
-              "channels in cell config", cellCfg->numCmnLcs);
-      return RFAILED;
-   }
-   if ((rgSCHCfgVldtRgrCmnLcCfg(inst, cellCfg, errInfo)) != ROK)
-   {
-      DU_LOG("\nERROR  -->  SCH : Validation for common logical"
-                          "channels failed");
-      return RFAILED;
-   }
-
-   /* Added 0 as a valid value for number of TICKs RRM
-    * 0 implies no ticks i.e. shutting off the feature.*/
-
-#ifdef RGR_SI_SCH
-   if ((rgSCHCfgVldtRgrCellSiCfg(inst, &(cellCfg->siCfg))) != ROK)
-   {
-      DU_LOG("\nERROR  -->  SCH : Validation for SI"
-                          "configuration failed");
-      return RFAILED;
-   }
-#endif /*RGR_SI_SCH */
-
-   /*ccpu00116923 - ADD - Srs Present support - Start*/
-#ifdef TFU_UPGRADE
-#ifdef LTE_TDD
-   if(cellCfg->srsCfg.isSrsCfgSetup && cellCfg->srsCfg.srsSubFrameCfg > 13)
-#else
-      if(cellCfg->srsCfg.isSrsCfgSetup && cellCfg->srsCfg.srsSubFrameCfg > 14)
-#endif
-      {
-         DU_LOG("\nERROR  -->  SCH : Invalid"
-                  "Subframe configuration");
-         return RFAILED;
-      }
-#endif
-   /*ccpu00116923 - ADD - Srs Present support - End*/
-  
-  if ((cellCfg->bcchTxPwrOffset > 10000) ||
-       (cellCfg->pcchTxPwrOffset > 10000) ||
-       (cellCfg->rarTxPwrOffset > 10000) ||
-       (cellCfg->phichTxPwrOffset > 10000) 
-      )
-   {
-      DU_LOG("\nERROR  -->  SCH : Invalid txPower offset ");
-
-      return RFAILED;
-   }
-
-/* LTE_ADV_FLAG_REMOVED_START */
-   /* Checking Whether DSFR is enabled without enabling SFR */
-   if(((cellCfg->rgrLteAdvCfg.pres & RGR_DSFR) && 
-       (RGR_ENABLE == cellCfg->rgrLteAdvCfg.dsfrCfg.status)) &&
-      (!((cellCfg->rgrLteAdvCfg.pres & RGR_SFR) &&
-         (RGR_ENABLE == cellCfg->rgrLteAdvCfg.sfrCfg.status))))
-   {
-      DU_LOG("\nERROR  -->  SCH : DSFR is enbaled"
-               "Without enabling SFR");
-      return RFAILED;
-   }
-
-   if ((rgSCHCfgVldtRgrCellLteAdvCfg(inst, &(cellCfg->rgrLteAdvCfg), 
-                                      cellCfg->bwCfg.dlTotalBw)) != ROK)
-   {
-      DU_LOG("\nERROR  -->  SCH : Validation for LTE Adv"
-               "configuration failed");
-      return RFAILED;
-   }
-#ifdef LTE_ADV
-   if ((rgSCHCfgVldtRgrCellLteLAACfg(inst, cellCfg)) != ROK)
-   {
-      DU_LOG("\nERROR  -->  SCH : Validation for LTE LAA"
-               "configuration failed");
-      return RFAILED;
-   }
-#endif
-/* LTE_ADV_FLAG_REMOVED_END */
-   if (cellCfg->msg4pAVal > RGRUE_DLPWRCNTRL_PA_DB3)
-   {
-      DU_LOG("\nERROR  -->  SCH : Invalid"
-               "msg4pAVal %u", cellCfg->msg4pAVal);
-      return RFAILED;
-   }
-  
-   /* Validate RgrCellCsgParamCfg */
-   if(rgSchCb[inst].rgrSchedEnbCfg.accsMode == RGR_CELL_ACCS_HYBRID) 
-   {
-      if((rgSCHCfgVldtRgrCellCsgParamCfg(inst, 
-                  &(cellCfg->csgParamCfg)) != ROK))
-      {
-         DU_LOG("\nERROR  -->  SCH : Validation failed for \n"
-                  "Access CSG parameter failed\n");
-         return RFAILED;
-      }
-   }
-#ifdef EMTC_ENABLE
-          if (cellCfg->emtcEnable)
-          {
-            if(ROK != rgSCHCfgVldtRgrEmtcCellCfg(cellCfg))
-            {
-                DU_LOG("\nERROR  -->  SCH : Invalid EMTC cell Configuration %d for cell" ,cellCfg->cellId);
-                        return RFAILED;
-            }
-          }
-#endif
-   errInfo->errCause = RGSCHERR_NONE;
-   return ROK;
-}  /* rgSCHCfgVldtRgrCellCfg */
-
-/**
- * @brief Validates the scheduler related configuration request from RRM to MAC.
- *
- * @details
- *
- *     Function : rgSCHCfgVldtRgrSchCfg
- *
- *     Processing Steps:
- *      - Validate the scheduler related configuration request from RRC to MAC at CFG:
- *        validate the value range for the configured values.
- *      - If validated successfully,
- *        - Return ROK .
- *      - Else 
- *        - Return RFAILED.
- *
- *  @param[in]  Inst         inst
- *  @param[out] RgSchedCfg  *rgSchedCfg
- *  @return  S16
- *      -# ROK
- *      -# RFAILED
- **/
-S16 rgSCHCfgVldtRgrSchCfg
-(
-Inst         inst,
-RgrSchedEnbCfg   *rgSchedCfg
-)
-{
-   DU_LOG("\nDEBUG  -->  SCH : rgSCHCfgVldtRgrSchCfg:Validating \
-               scheduler related Configuration");
-   if (rgSchedCfg->ulSchdType > (RGSCH_NUM_SCHEDULERS - 1))
-   {
-      DU_LOG("\nERROR  -->  SCH : rgSCHCfgVldtRgrSchCfg:Invalid \
-                  UL scheduler type %d \n", rgSchedCfg->ulSchdType);
-      return RFAILED;
-   }
-   if (rgSchedCfg->dlSchdType > (RGSCH_NUM_SCHEDULERS - 1))
-   {
-      DU_LOG("\nERROR  -->  SCH : rgSCHCfgVldtRgrSchCfg:Invalid \
-                  DL scheduler type %d \n", rgSchedCfg->dlSchdType);
-      return RFAILED;
-   }
-   return ROK;
-}
-/**
- * @brief Validates the scheduler related configuration request from RRM to MAC.
- *
- * @details
- *
- *     Function : rgSCHCfgVldtRgrCellSchCfg
- *
- *     Processing Steps:
- *      - Validate the scheduler related configuration request from RRC to MAC at CFG:
- *        validate the value range for the configured values.
- *      - If validated successfully,
- *        - Return ROK and pointer to the cell of UE.
- *      - Else 
- *        - Return RFAILED.
- *
- *  @param[in]  Inst         inst
- *  @param[out] RgSchCellCfg  *cellCfg
- *  @return  S16
- *      -# ROK
- *      -# RFAILED
- **/
-S16 rgSCHCfgVldtRgrCellSchCfg
-(
-Inst         inst,
-RgrCellCfg   *cellCfg
-)
-{
-
-#if RGSCH_NUM_DLFS_SCHEDULERS
-   if (cellCfg->dlfsSchdType > RGSCH_NUM_DLFS_SCHEDULERS - 1)
-   {
-      DU_LOG("\nERROR  -->  SCH : Invalid dlfs scheduler type %d for cell",
-                cellCfg->dlfsSchdType);
-      return RFAILED;
-   }
-#endif
-   return ROK;
-}
-/**
- * @brief Validates the RACH related configuration request from RRM to MAC.
- *
- * @details
- *
- *     Function : rgSCHCfgVldtRgrCellRACfg
- *
- *     Processing Steps:
- *      - Validate the RA configuration request from RRC to MAC at CFG:
- *        validate the value range for the configured values.
- *      - If validated successfully,
- *        - Return ROK and pointer to the cell of UE.
- *      - Else 
- *        - Return RFAILED.
- *
- *  @param[in]  Inst         inst
- *  @param[out] RgSchCellCfg  *cellCfg
- *  @return  S16
- *      -# ROK
- *      -# RFAILED
- **/
-S16 rgSCHCfgVldtRgrCellRACfg
-(
-Inst         inst,
-RgrCellCfg   *cellCfg
-)
-{
-
-#ifdef LTE_TDD
-   if ((cellCfg->rachCfg.preambleFormat > RGSCH_MAX_TDD_RA_PREAMBLE_FMT) ||
-#else
-   if ((cellCfg->rachCfg.preambleFormat > RGSCH_MAX_RA_PREAMBLE_FMT) ||
-#endif
-         (cellCfg->rachCfg.raWinSize < RGSCH_MIN_RA_WINSIZE)  ||
-         (cellCfg->rachCfg.raWinSize > RGSCH_MAX_RA_WINSIZE) ||
-         (cellCfg->rachCfg.maxMsg3Tx < RGSCH_MIN_HQ_TX) ||
-         (cellCfg->rachCfg.numRaPreamble < RGSCH_MIN_NUM_RA_PREAMBLE) ||
-         (cellCfg->rachCfg.numRaPreamble > RGSCH_MAX_NUM_RA_PREAMBLE) ||
-         (cellCfg->rachCfg.sizeRaPreambleGrpA >
-          cellCfg->rachCfg.numRaPreamble) || 
-         (cellCfg->rachCfg.prachResource > 
-          (cellCfg->bwCfg.ulTotalBw - RGSCH_NUM_RA_RB)))
-   {
-      DU_LOG("\nERROR  -->  SCH : Invalid RACH configuration:"
-                "preamble Fmt %d raWinSize %d maxMsg3Tx %d",
-                cellCfg->rachCfg.preambleFormat, cellCfg->rachCfg.raWinSize,
-                cellCfg->rachCfg.maxMsg3Tx);
-      DU_LOG("\nERROR  -->  SCH : Invalid numRaPreamble %d sizeRaPreambleGrpA %d",
-                cellCfg->rachCfg.numRaPreamble,
-                cellCfg->rachCfg.sizeRaPreambleGrpA);
-      return RFAILED;
-   }
-   /* RACHO */
-   /* verify that the ded Preambles cfgd for Pdcch Order
-    * do not collide with that of non-dedicated  and validates against
-    * the configuration index and number of RACH
-    * ded-preambles. For non-zero ded preamble cfg, 
-    * the config index is expected to be != NA.*/
-   if ((cellCfg->macPreambleSet.pres) && 
-       ((cellCfg->macPreambleSet.start < cellCfg->rachCfg.numRaPreamble) ||
-       (cellCfg->macPreambleSet.start >= RGSCH_MAX_NUM_RA_PREAMBLE) ||
-       (cellCfg->macPreambleSet.size < 1) ||
-       (cellCfg->macPreambleSet.size > RGSCH_MAX_NUM_RA_PREAMBLE-
-                                       cellCfg->rachCfg.numRaPreamble) ||
-       (cellCfg->rachCfg.raOccasion.sfnEnum == RGR_SFN_NA)))
-   {
-       DU_LOG("\nERROR  -->  SCH : Invalid RACH Preambleset conf:"
-                "preambleSet Start %d preambleSet Size %d",
-                cellCfg->macPreambleSet.start, cellCfg->macPreambleSet.size);
-      return RFAILED;
-   }
-#ifdef RGR_V1
-   if(cellCfg->rachCfg.contResTmr)
-   {
-      uint8_t idx;
-#ifdef LTE_TDD
-      idx = cellCfg->ulDlCfgIdx;
-#else
-      idx = 7; /* FDD */
-#endif
-      /* maxMsg4TxDelay = (HARQ_RTT * MAX_MSG4_HARQ_RETX)  + 
-         3 TTI (MAX L1+L2 processing delay at the UE) */
-      uint8_t maxMsg4TxDelay = (cellCfg->dlHqCfg.maxMsg4HqTx-1) * 
-         rgSchCmnHarqRtt[idx] + 3; 
-
-
-      if(maxMsg4TxDelay >= cellCfg->rachCfg.contResTmr)
-      {
-         DU_LOG("\nERROR  -->  SCH : Warining !: Contention Resolution timer not greater than the "
-               "guard timer. Conte Res timer %d Guard timer %d",
-               cellCfg->rachCfg.contResTmr, 
-               maxMsg4TxDelay );
-         /* [ccpu00138532]-DEL- removed return fail here as it is ok if the 
-            max Msg4 Tx delay is more than the contension Resolution timer. 
-            In such case, the CRI CE will be scheduled immediately once 
-            msg3 is received */ 
-      }
-   }
-   else
-   {
-      /* ccpu00128575 ADD - If contention resolution timer is configured as 0,
-         Then return fail*/
-      DU_LOG("\nERROR  -->  SCH : Contention Resolution timer is configured as '0'");
-      return RFAILED;
-   }
-#endif
-
-   return ROK;
-}
-
-/**
- * @brief Validates the UE configuration request from RRM to MAC.
- *
- * @details
- *
- *     Function : rgSCHCfgVldtRgrUeCfg
- *
- *     Processing Steps:
- *      - Validate the UE configuration request from RRC to MAC at CFG:
- *        validate the value range for the configured values.
- *      - If validated successfully,
- *        - Return ROK and pointer to the cell of UE.
- *      - Else 
- *        - Return RFAILED.
- *
- *  @param[in]  Inst         inst
- *  @param[in]  RgrUeCfg     *ueCfg
- *  @param[out] RgSchCellCb  **cell
- *  @param[out] RgSchErrInfo *errInfo
- *  @return  S16
- *      -# ROK
- *      -# RFAILED
- **/
-S16 rgSCHCfgVldtRgrUeCfg
-(
-Inst         inst,
-RgrUeCfg     *ueCfg,
-RgSchCellCb  **cell,
-RgSchErrInfo *errInfo
-)
-{
-   errInfo->errCause = RGSCHERR_CFG_INVALID_RGR_UE_CFG;
-
-   if (((*cell) == NULLP) || 
-       ((*cell)->cellId != ueCfg->cellId))
-   {
-      DU_LOG("\nERROR  --> SCH : Cell does not exist %d", 
-           ueCfg->cellId);
-      return RFAILED;
-   }
-   /* RACHO: 
-    * Check configured preamble id not colliding with non dedicated or PDCCH
-    * order preamble sets. When valid preamble id given check that C-RNTI given
-    * in configuration is not amongst the C-RNTI'smanaged by scheduler */
-   if ((rgSCHRamVldtUeCfg(*cell, ueCfg)) != ROK)
-   {
-      DU_LOG("\nERROR  --> SCH : CELLID:%d Preamble Id configuration"
-               "failed ",ueCfg->cellId);
-      return RFAILED;
-   }
-   /* Check if Ue already configured */
-   if (rgSCHDbmGetUeCb(*cell, ueCfg->crnti) != NULLP)
-   {
-      DU_LOG("\nERROR  --> SCH : CELLID:%d UEID already exists",
-             ueCfg->cellId);
-      return RFAILED;
-   }
-   /* Validate Transmission UE modes  */
-   if ((ueCfg->txMode.pres == TRUE) && ((ueCfg->txMode.txModeEnum < RGR_UE_TM_1)
-            || (ueCfg->txMode.txModeEnum > RGR_UE_TM_7)))
-   {
-      DU_LOG("\nERROR  --> SCH : CELLID:%d Invalid transmission mode for"
-               " UE is %d", ueCfg->cellId,(uint8_t)ueCfg->txMode.txModeEnum);
-      return RFAILED;
-   }
-  
-   /* Validate UE Category */
-   if (ueCfg->ueCatEnum > CM_LTE_UE_CAT_8)
-   {
-      DU_LOG("\nERROR  --> SCH : CELLID:%d Invalid category for UE %d",
-               ueCfg->cellId,(uint8_t)ueCfg->ueCatEnum);
-      return RFAILED;
-   }
-  
-   /* Validate UE Access Stratum Release */
-   if (ueCfg->accessStratumRls > RGR_REL_10)
-   {
-      RGSCHDBGERRNEW(inst, (rgSchPBuf(inst), "Invalid Access Stratum Release %u for UE\n",
-               ueCfg->accessStratumRls));
-      return RFAILED;
-   }
-   RGSCHDBGINFONEW(inst, (rgSchPBuf(inst), "Configured Access Stratum Release %u\n", \
-            ueCfg->accessStratumRls));
-  
-   if ((*cell)->numTxAntPorts == 1)
-   {
-      if ((ueCfg->txMode.pres == TRUE) && 
-            (ueCfg->txMode.txModeEnum > RGR_UE_TM_1))
-      {
-         DU_LOG("\nERROR  --> SCH : CELLID:%d Invalid transmission mode for"
-                  " UE (%d) for the configured Cell Antenna Ports",ueCfg->cellId,
-                  (uint8_t)ueCfg->txMode.txModeEnum);
-         return RFAILED;
-      }
-   }
-   
-   if ((rgSCHCfgVldtUeCqiModeCfg(*cell, &ueCfg->ueDlCqiCfg)) != ROK)
-   {
-      DU_LOG("\nERROR  --> SCH : CELLID:%d Invalid CQI Mode configuration",
-                ueCfg->cellId);
-      return RFAILED;
-   }
-
-   /* Validate Max Uplink HARQ transmission value */
-   if (ueCfg->ueUlHqCfg.maxUlHqTx < RGSCH_MIN_HQ_TX)
-   {
-      DU_LOG("\nERROR  --> SCH : CELLID:%d Invalid Uplink HARQ config for "
-            "UE %d",ueCfg->cellId,ueCfg->ueUlHqCfg.maxUlHqTx);
-      return RFAILED;
-   }
-
-   if (rgSCHCfgVldtUePwrCfg(*cell, &ueCfg->ueUlPwrCfg) != ROK)
-   {
-      DU_LOG("\nERROR  --> SCH : CELLID:%d Invalid PUSCH Group power"
-           " configuration",ueCfg->cellId);
-      return RFAILED;
-   }
-   if (rgSCHCfgVldtUeMeasGapAckNakRepCfg(*cell, ueCfg) != ROK)
-   {
-      DU_LOG("\nERROR  --> SCH : CELLID:%d Invalid MeasGap/AckNackRep"
-            " configuration",ueCfg->cellId);
-      return RFAILED;
-   }
-  
-#ifdef LTEMAC_SPS
-   /* Validating SPS RNTI */
-   if (((ueCfg->ueSpsCfg.spsRnti >=  (*cell)->rntiDb.rntiStart) && 
-       (ueCfg->ueSpsCfg.spsRnti<=((*cell)->rntiDb.rntiStart+(*cell)->rntiDb.maxRntis)))
-       ||(ueCfg->ueSpsCfg.spsRnti == RGSCH_SI_RNTI) 
-       ||(ueCfg->ueSpsCfg.spsRnti == RGSCH_P_RNTI))
-   {
-      DU_LOG("\nERROR  --> SCH : CELLID:%d Invalid SPS RNTI "
-               " in DL SPS Config",ueCfg->cellId);
-      return RFAILED;
-   }
-
-   if (ueCfg->ueSpsCfg.dlSpsCfg.isDlSpsEnabled) 
-   {
-      if (rgSCHCfgVldtUeDlSpsCfg(*cell, &ueCfg->ueSpsCfg.dlSpsCfg) != ROK)
-      {
-         DU_LOG("\nERROR  --> SCH : CELLID:%d Invalid DL SPS configuration"
-                  " for the UE",ueCfg->cellId);
-         return RFAILED;
-      }
-   }
-#endif 
-#ifdef TFU_UPGRADE
-   /* Validated Periodic CQI/PMI, RI , SRS and SR related UeCfg */
-   if ( ROK != rgSCHCfgVldtCqiSrSrsUeCfg(*cell, ueCfg, errInfo))
-   {
-      DU_LOG("\nERROR  --> SCH : CELLID:%d Invalid Periodic CQI/SR/SRS"
-               "configuration",ueCfg->cellId);
-      return RFAILED;
-   }
-#endif
-
-   /* Validate DRX specific parameters */
-   if ( ROK != rgSCHCfgVldtDrxUeCfg(*cell, &(ueCfg->ueDrxCfg)))
-   {
-      DU_LOG("\nERROR  --> SCH : CELLID:%d Invalid DRX configuration",
-                ueCfg->cellId);
-      return RFAILED;
-   }
-
-/* ccpu00117452 - MOD - Changed macro name from
-   RGR_RRM_DLPWR_CNTRL to RGR_CQI_REPT */
-#ifdef RGR_CQI_REPT
-   if (ueCfg->ueCqiReptCfg.numColltdCqiRept > RGR_CQIRPTS_MAXN)
-   {
-      DU_LOG("\nERROR  --> SCH : CELLID:%d Invalid numColltdCqiRept,"
-               "MAX supported %d",RGR_CQIRPTS_MAXN,ueCfg->cellId);
-      return RFAILED;
-   }
-#endif /* End of RGR_CQI_REPT */
-
-#ifdef EMTC_ENABLE
-/*This is to validate the EMTC related configuration if a UE is an EMTC UE*/
-          if(TRUE == ueCfg->emtcUeCfg.pres)
-          {
-            if ( ROK != rgSCHCfgVldtEmtcUeCfg(*cell, &(ueCfg->emtcUeCfg)))
-            {
-                        DU_LOG("\nERROR  --> SCH : CELLID:%d Invalid EMTC UE configurationfor crnti:%d",
-                                 ueCfg->cellId, ueCfg->crnti);
-                        return RFAILED;
-            }
-          }
-#endif
-   errInfo->errCause = RGSCHERR_NONE;
-   return ROK;
-}  /* rgSCHCfgVldtRgrUeCfg */
-
-
-/**
- * @brief Validates the cell reconfiguration request from RRM to MAC.
- *
- * @details
- *
- *     Function : rgSCHCfgVldtRgrCellRecfg
- *
- *     Processing Steps:
- *      - Retrieve the cell control block.
- *      - If successful,
- *        - Validate the range of reconfigured values recieved in
- *          re-configuration request.
- *        - If validated successfully,
- *          - Return ROK and pointer to the cell.
- *        - Else 
- *          - Return RFAILED.
- *      - Else return RFAILED.
- *
- *  @param[in]  Inst          inst
- *  @param[in]  RgrCellRecfg  *cellRecfg
- *  @param[out] RgSchCellCb   **cell
- *  @param[out] RgSchErrInfo  *errInfo
- *  @return  S16
- *      -# ROK
- *      -# RFAILED
- **/
-S16 rgSCHCfgVldtRgrCellRecfg
-(
-Inst          inst,
-RgrCellRecfg  *cellRecfg,
-RgSchCellCb   **cell,
-RgSchErrInfo  *errInfo
-)
-{
-
-   errInfo->errCause = RGSCHERR_CFG_INVALID_RGR_CELL_RECFG;
-   
-   /* Fetch cell and validate cell Id with the cell control block*/
-   if (((*cell) == NULLP) ||
-       ((*cell)->cellId != cellRecfg->cellId)) 
-   {
-      DU_LOG("\nERROR  --> SCH : Cell control block does not exist");
-      return RFAILED;
-   }
-
-   /* Validate recieved values */
-   if ((cellRecfg->recfgTypes & RGR_CELL_DL_HARQ_RECFG) &&
-         ((cellRecfg->dlHqRecfg.maxDlHqTx < RGSCH_MIN_HQ_TX) ||
-          (cellRecfg->dlHqRecfg.maxMsg4HqTx < RGSCH_MIN_HQ_TX)))
-   {
-      DU_LOG("\nERROR  --> SCH : Invalid Downlink HARQ configuration:"
-           " maxDlHqTx %d maxMsg4HqTx %d", cellRecfg->dlHqRecfg.maxDlHqTx,
-            cellRecfg->dlHqRecfg.maxMsg4HqTx);
-      return RFAILED;
-   }
-   if ((cellRecfg->recfgTypes & RGR_CELL_CFI_RECFG) && 
-         ((cellRecfg->cfiRecfg.cfi < RGSCH_MIN_CFI_VAL) ||
-          (cellRecfg->cfiRecfg.cfi > RGSCH_MAX_CFI_VAL)))
-   {
-      DU_LOG("\nERROR  --> SCH : Invalid CFI configuration %d",
-               cellRecfg->cfiRecfg.cfi);
-      return RFAILED;
-   }
-   if (cellRecfg->recfgTypes & RGR_CELL_PUCCH_RECFG)
-   {
-      /* ccpu00138567- Removing validation check for resourceSize as 0.
-       * From the spec, n2RB value 0 is a valid config. */
-      if ((cellRecfg->pucchRecfg.n1PucchAn == 0) ||
-          (cellRecfg->pucchRecfg.resourceSize >= (*cell)->bwCfg.ulTotalBw/2)||
-          ((cellRecfg->pucchRecfg.deltaShift < RGSCH_PUCCH_MINVAL_DS) || 
-           (cellRecfg->pucchRecfg.deltaShift > RGSCH_PUCCH_MAXVAL_DS)) ||
-          (cellRecfg->pucchRecfg.cyclicShift > RGSCH_PUCCH_MAXVAL_CS))
-      {
-         DU_LOG("\nERROR  --> SCH : Invalid PUCCH configuration: "
-               "N2_RB %d N1_PUCCH %d deltaShift %d cyclicShift %d",
-               cellRecfg->pucchRecfg.resourceSize,
-               cellRecfg->pucchRecfg.n1PucchAn,
-               cellRecfg->pucchRecfg.deltaShift,
-               cellRecfg->pucchRecfg.cyclicShift);
-         return RFAILED;
-      }
-   }
-   if (cellRecfg->recfgTypes & RGR_CELL_SRS_RECFG)
-   {
-      if (cellRecfg->srsRecfg.isSrsCfgSetup && cellRecfg->srsRecfg.srsBwEnum > RGR_SRS_BWCFG_7)
-      {
-         DU_LOG("\nERROR  --> SCH : Invalid SRS configuration: "
-               "srsBw %d", (uint8_t)cellRecfg->srsRecfg.srsBwEnum);
-         return RFAILED;
-      }
-
-      /*ccpu00116923 - ADD - Srs Present support - Start*/
-#ifdef TFU_UPGRADE
-#ifdef LTE_TDD
-      if(cellRecfg->srsRecfg.isSrsCfgSetup && cellRecfg->srsRecfg.srsSubFrameCfg > 13)
-#else
-         if(cellRecfg->srsRecfg.isSrsCfgSetup && cellRecfg->srsRecfg.srsSubFrameCfg > 14)
-#endif
-         {
-            DU_LOG("\nERROR  --> SCH : Invalid Subframe configuration ");
-            return RFAILED;
-         }
-#endif
-      /*ccpu00116923 - ADD - Srs Present support - End*/
-   }
-   if (cellRecfg->recfgTypes & RGR_CELL_RACH_RECFG)
-   {
-      if ((cellRecfg->rachRecfg.preambleFormat > RGSCH_MAX_RA_PREAMBLE_FMT) ||
-            ((cellRecfg->rachRecfg.raWinSize < RGSCH_MIN_RA_WINSIZE) ||
-             (cellRecfg->rachRecfg.raWinSize > RGSCH_MAX_RA_WINSIZE)) ||
-            (cellRecfg->rachRecfg.maxMsg3Tx < RGSCH_MIN_HQ_TX) ||
-            ((cellRecfg->rachRecfg.numRaPreamble < RGSCH_MIN_NUM_RA_PREAMBLE)
-            || (cellRecfg->rachRecfg.numRaPreamble > RGSCH_MAX_NUM_RA_PREAMBLE))
-            || (cellRecfg->rachRecfg.sizeRaPreambleGrpA >
-               cellRecfg->rachRecfg.numRaPreamble) ||
-            (cellRecfg->rachRecfg.prachResource >
-               (*cell)->bwCfg.ulTotalBw - RGSCH_NUM_RA_RB))
-      {
-         DU_LOG("\nERROR  --> SCH : Invalid RACH configuration:"
-               " preamble Fmt %d raWinSize %d maxMsg3Tx %d",
-               cellRecfg->rachRecfg.preambleFormat,
-               cellRecfg->rachRecfg.raWinSize,
-               cellRecfg->rachRecfg.maxMsg3Tx);
-         DU_LOG("\nERROR  --> SCH : Invalid RACH configuration:"
-               "numRaPreamble %d sizeRaPreambleGrpA %d",
-               cellRecfg->rachRecfg.numRaPreamble,
-               cellRecfg->rachRecfg.sizeRaPreambleGrpA);
-         return RFAILED;
-      }
-   }
-
-#ifdef RGR_SI_SCH
-   if (cellRecfg->recfgTypes & RGR_CELL_SI_RECFG)
-   {
-      if ((rgSCHCfgVldtRgrCellSiCfg(inst, &(cellRecfg->siReCfg))) != ROK)
-      {
-         DU_LOG("\nERROR  --> SCH : Validation for SI"
-                          "Re-configuration failed");
-         return RFAILED;
-      }
-   }
-#endif /*RGR_SI_SCH */
-
-/* LTE_ADV_FLAG_REMOVED_START */
-   if (cellRecfg->recfgTypes & RGR_CELL_LTEA_FEATURE_RECFG)
-   {
-      /* Checkin whether DSFR is enbaled without enabling SFR.
-       * So we need to check if SFR is enabled along with DSFR
-       * in the same reconfiguration or it is already enabled earlier*/
-      if((cellRecfg->rgrLteAdvCfg.pres & RGR_DSFR) && 
-         (RGR_ENABLE == cellRecfg->rgrLteAdvCfg.dsfrCfg.status)) 
-      {   
-         if(!(((cellRecfg->rgrLteAdvCfg.pres & RGR_SFR) &&
-               (RGR_ENABLE == cellRecfg->rgrLteAdvCfg.sfrCfg.status)) || 
-               ((*cell)->lteAdvCb.sfrCfg.status == RGR_ENABLE)))
-         {
-            DU_LOG("\nERROR  --> SCH : DSFR is enbaled"
-                     "Without enabling SFR");
-            return RFAILED;
-         }
-      }
-      if ((rgSCHCfgVldtRgrCellLteAdvCfg(inst, &(cellRecfg->rgrLteAdvCfg),
-                                       (*cell)->bwCfg.dlTotalBw)) != ROK)
-      {
-         DU_LOG("\nERROR  --> SCH : Validation for Lte Adv"
-                  "Re-configuration failed");
-         return RFAILED;
-      }
-   }
-/* LTE_ADV_FLAG_REMOVED_END */
-
-   /* Validating minimum resource for non-CSG users */
-   if (cellRecfg->recfgTypes & RGR_CELL_CSG_PARAM_RECFG)
-   {
-     if (cellRecfg->csgParamCfg.minDlResNonCsg > 100)
-     {
-         DU_LOG("\nERROR  --> SCH : Invalid Configuration "
-               "of minimum DL resources for NON-CSG");
-         return RFAILED;
-     }
-     if (cellRecfg->csgParamCfg.minUlResNonCsg > 100)
-     {
-         DU_LOG("\nERROR  --> SCH : Invalid Configuration "
-               "of minimum UL resources for NON-CSG");
-         return RFAILED;
-     }
-   }
-   errInfo->errCause = RGSCHERR_NONE;
-   return ROK;
-}  /* rgSCHCfgVldtRgrCellRecfg */
-
-#ifdef LTE_ADV
-/**
- * @brief Ue SCell configuration for scheduler. It is invoked during first time
- *        Scell configuration. It is not for reconfiguration
- *
- * @details
- *
- *     Function : rgSCHSCellCfgUeCfg
- *
- *     This functions updates UE specific scheduler
- *     information upon UE SCell first time Scell configuration
- *
- *  @param[in]  RgSchCellCb  *cell
- *  @param[in]  RgSchUeCb    *ue
- *  @param[int] RgrUeRecfg   *ueRecfg
- *  @param[out] RgSchErrInfo *err
- *  @return  S16
- *      -# ROK
- *      -# RFAILED
- **/
-S16 rgSCHSCellCfgUeCfg
-(
-RgSchCellCb  *cell,
-RgSchUeCb    *ue,
-RgrUeRecfg   *ueRecfg,
-RgSchErrInfo *err
-)
-{
-   uint8_t          idx;
-   Inst             inst = cell->instIdx;
-   RgSchCellCb      *secCellCb = NULLP;
-   uint8_t          sCellidx = 0;
-   RgSchUeCellInfo  *sCellInfo = NULLP;
-   RgrUeSecCellCfg  *sCellInfoCfg = NULLP;
-#ifdef TFU_UPGRADE
-   RgrUeAprdDlCqiCfg   *aCqiCfg;
-   RgrUePrdDlCqiCfg    *pCqiCfg;  
-#endif
-
-   DU_LOG("\nINFO   --> SCH : SCELL recfg received from APP \n");  
-
-   RGSCHDBGINFONEW(inst, (rgSchPBuf(inst), 
-     "--------------------------------------------------------------------\n"
-     "UE SCell ReConfiguration at SCH: rnti (%u) cell(%u)\n"
-     "--------------------------------------------------------------------\n",
-     ue->ueId, cell->cellId));
-
-   for(idx = 0; idx < ueRecfg->ueSCellCfgInfo.numSCells; idx++)
-   {
-     /* Allocate the Ue control block */
-      if (((rgSCHUtlAllocSBuf(inst, (Data **)&sCellInfo,
-                    sizeof(RgSchUeCellInfo))) != ROK))
-      {
-         RGSCHDBGERRNEW(inst, (rgSchPBuf(inst), "[%d]SCellIdx :Memomy allocation "
-                  "Failed while Adding SCell Information\n", idx));
-         return RFAILED;
-      }
-      
-
-      sCellInfoCfg = &ueRecfg->ueSCellCfgInfo.ueSCellDedCfg[idx];
-
-
-      sCellInfo->sCellIdx  = sCellInfoCfg->sCellIdx;
-      sCellInfo->sCellId   = sCellInfoCfg->sCellId;
-      
-      if(PRSNT_NODEF == sCellInfoCfg->sCellDeActTmr.pres)
-      {
-         /* Configure implicit release */
-         ue->sCellDeactTmrVal.val = sCellInfoCfg->sCellDeActTmr.val;
-         ue->isScellExplicitDeAct = FALSE;
-         ue->sCellDeactTmrVal.pres = PRSNT_NODEF;
-      }
-      else if (rgSchCb[cell->instIdx].genCfg.isSCellActDeactAlgoEnable == TRUE)
-      {
-         /* Configure explicit release */
-         ue->sCellDeactTmrVal.val = RGSCH_SCELL_DEACT_TMR_INFINITY_VAL;
-         ue->isScellExplicitDeAct = TRUE;
-         ue->sCellDeactTmrVal.pres = PRSNT_NODEF;
-      }
-      else
-      {
-         ue->sCellDeactTmrVal.val  = 0;
-         ue->isScellExplicitDeAct  = FALSE;
-         ue->sCellDeactTmrVal.pres = NOTPRSNT;
-      }
-
-      sCellInfo->sCellState = RG_SCH_SCELL_INACTIVE;
-
-      sCellInfo->ue = ue;
-      ue->cellInfo[(sCellInfoCfg->sCellIdx)] = sCellInfo;
-      sCellidx = ((sCellInfo->sCellId -
-               rgSchCb[cell->instIdx].genCfg.startCellId)&(CM_LTE_MAX_CELLS-1));
-      ue->cellIdToCellIdxMap[sCellidx] = sCellInfo->sCellIdx;
-
-      /* For for time one Scell got added, setting allocCmnUlPdcch flag to TRUE, So that
-         we will allocate PDCCH from common search space and the csiRequest field in DCI0 will 
-         be one bit (spec 36.213 sec 7.2.1)*/
-#ifdef LTE_ADV
-      if ( ue->numSCells == 0)
-      {
-         ue->allocCmnUlPdcch = TRUE;
-      }
-#endif      
-      ue->numSCells++;
-#ifdef CA_DBG      
-      DU_LOG("\nDEBUG  -->  SCH : SCell added for ue %d numScells %d\n",ue->ueId,ue->numSCells);
-#endif
-      /* retrieve teh sec cell Cb */
-      if((secCellCb = (RgSchCellCb *)rgSchUtlGetCellCb(inst, sCellInfo->sCellId)) == NULLP)
-      {
-         DU_LOG("\nERROR  -->  SCH : SCell doesnt exists");
-         rgSCHSCellFreeBuf (inst,ue,ueRecfg,idx);
-         return RFAILED;
-      }
-
-      if(TRUE == sCellInfoCfg->txMode.pres)
-      {
-         sCellInfo->txMode = sCellInfoCfg->txMode;
-      }
-      else
-      {
-         DU_LOG("\nERROR  -->  SCH : [%d]SCellIdx Tx mode not present ",idx);
-         sCellInfoCfg->txMode.pres = TRUE;
-         sCellInfoCfg->txMode.txModeEnum = RGR_UE_TM_1;
-      
-         sCellInfo->txMode = sCellInfoCfg->txMode;
-      }
-      cmInitTimers (&sCellInfo->actDelayTmr, 1);
-      cmInitTimers (&sCellInfo->deactTmr, 1);
-
-      ue->f1bCsAVal += rgSCHUtlGetMaxTbSupp(sCellInfo->txMode.txModeEnum);
-
-#ifdef TFU_UPGRADE
-      if(TRUE == sCellInfoCfg->ueSCellDlCqiCfg.aprdCqiCfg.pres)
-      {
-         sCellInfo->acqiCb.aCqiCfg.aprdModeEnum = 
-            sCellInfoCfg->ueSCellDlCqiCfg.aprdCqiCfg.aprdModeEnum;
-      }
-
-      if(TRUE == sCellInfoCfg->uePdschDedCfg.uepACfg.pAPrsnt)
-      {
-         sCellInfo->pA.pres = TRUE;
-         sCellInfo->pA.val = sCellInfoCfg->uePdschDedCfg.uepACfg.pA;
-      }
-      else
-      {
-         sCellInfo->pA.pres = FALSE;
-      }
-
-      aCqiCfg = &sCellInfoCfg->ueSCellDlCqiCfg.aprdCqiCfg; 
-      DU_LOG("\nDEBUG  -->  SCH : rgSCHCfgACqiUeCfg cellId =%d,Config Presence =%d for \
-            Sec Cell Id = %d\n",
-            cellCb->cellId,  aCqiCfg->pres,sCellInfo->sCellId);
-
-      /* if aperiodic cqi is present then only call the below function as it is
-       * not mandatory*/
-      if(aCqiCfg->pres)
-      {
-         if( ROK != rgSCHCfgACqiUeCfg(secCellCb,ue, &sCellInfo->acqiCb,
-                  sCellInfo->txMode.txModeEnum, aCqiCfg, ue->ueCatEnum))
-         {
-            DU_LOG("\nERROR  -->  SCH : [%d]SCellIdx ACQI Cfg"
-                     "failed..n\n", idx);
-            rgSCHSCellFreeBuf (inst,ue,ueRecfg,idx);
-            return RFAILED;
-         }
-      }
-      /* Configuring PCQI */ 
-      /* Scell needs to be added to the
-       * pcqi list only after activation */
-      pCqiCfg = &sCellInfoCfg->ueSCellDlCqiCfg.prdCqiCfg;
-
-      if(ROK != rgSCHSCellPCqiCfg(cell,secCellCb,ue,pCqiCfg,
-            ue->ueCatEnum,sCellInfoCfg->sCellIdx))
-      {
-         DU_LOG("\nERROR  -->  SCH : [%d]SCellIdx PCQI Cfg failed..n\n", idx);
-         rgSCHSCellFreeBuf (inst,ue,ueRecfg,idx);
-         return RFAILED;
-      }
-#endif
-   
-      /* Configuring ACQI */ 
-      /* Stroing the secCell for easy access */
-      sCellInfo->cell   = secCellCb;
-
-
-#ifdef LTE_ADV
-      if (ROK != rgSCHLaaInitDlRbAllocCb(secCellCb, 
-               &sCellInfo->dlAllocCb))
-      {
-         return RFAILED;
-      }
-#endif
-      /* Initialize Harq entity */
-
-      sCellInfo->hqEnt = rgSCHDhmHqEntInit(secCellCb);
-      if (sCellInfo->hqEnt == NULLP)
-      {
-         DU_LOG("\nERROR  -->  SCH : [%d]UEID:Hq Entity Initialization "
-                  "failed in config\n", ue->ueId);
-         rgSCHSCellFreeBuf (inst,ue,ueRecfg,idx);
-         return RFAILED;
-      }
-#ifdef EMTC_ENABLE
-      rgSCHEmtcHqPAlloc(secCellCb, sCellInfo->hqEnt);
-#endif
-      rgSCHCmnDlInitHqEnt(secCellCb, sCellInfo->hqEnt);
-
-      sCellInfo->hqEnt->ue = ue;
-      /* Init SCell Specific Sched Spfc UE DL CB */
-      if ((secCellCb->sc.apis->rgSCHRgrSCellUeCfg(secCellCb, ue, sCellInfoCfg, err)) != ROK)
-      {
-         DU_LOG("\nERROR  -->  SCH : Spec Sched DL UE CFG FAILED\n");
-         rgSCHSCellFreeBuf (inst,ue,ueRecfg,idx);
-         return RFAILED;
-      }
-
-#ifdef LTE_TDD
-     if((rgSCHUtlAllocUeANFdbkInfo(ue,sCellInfoCfg->sCellIdx)) != ROK)
-     {
-        DU_LOG("\nERROR  -->  SCH : [%d]UEID:Memomy allocation "
-                 "Failed while UE related Ack Nack Information\n",
-                 ue->ueId);
-        rgSCHSCellFreeBuf (inst,ue,ueRecfg,idx);
-        return RFAILED;
-     }
-#endif /* LTE_TDD */
-
-#ifdef LTE_ADV
-     sCellInfo->sCellLnk.node = (PTR)sCellInfo;
-     cmLListAdd2Tail(&secCellCb->sCellUeLst, &sCellInfo->sCellLnk);
-#endif
-
-      /* Inserting UECB into SCELL DBM */
-     rgSCHDbmInsUeCb(secCellCb, ue);
-   }
-
-#ifndef MAC_5GTF_UPDATE
-   ue->ul.useExtBSRSizes = ueRecfg->ueSCellCfgInfo.useExtBSRSizes;
-#else
-   ue->ul.useExtBSRSizes = TRUE;
-#endif
-
-   for (idx = 0; idx < RGSCH_ULCTRL_RECP_DIST; idx++)
-   {
-      ue->ul.ctrlOnServCellIdx[idx] = 0xFF;
-   }
-   /* Trigger SCell addition to primary MAC */
-   return ROK;
-
-}  /* rgSCHSCellCfgUeCfg */
-/*f1b_Sprint */
-/**
- * @brief UE SCell PUCCH reconfiguration for scheduler
- *
- * @details
- *
- *     Function : rgSCHSCellCfgUePucchReCfg
- *
- *     This functions updates UE specific scheduler
- *     information upon UE SCell PUCCH reconfiguration
- *
- *  @param[in]  RgSchCellCb  *cell
- *  @param[in]  RgSchUeCb    *ue
- *  @param[int] RgrUeRecfg   *ueRecfg
- *  @param[out] RgSchErrInfo *err
- *  @return  S16
- *      -# ROK
- *      -# RFAILED
- **/
-S16 rgSCHSCellCfgUePucchReCfg
-(
-RgSchCellCb  *cell,
-RgSchUeCb    *ue,
-RgrUeRecfg   *ueRecfg,
-RgSchErrInfo *err
-)
-{
-   Inst         inst = cell->instIdx;
-   RgrUeSCellAckPucchCfg *sCellPucchRecfg = NULLP;
-   uint8_t idx;
-
-   RGSCHDBGINFONEW(inst, (rgSchPBuf(inst), 
-     "--------------------------------------------------------------------\n"
-     "UE SCell PUCCH ReConfiguration at SCH: rnti (%u) cell(%u)\n"
-     "--------------------------------------------------------------------\n",
-     ue->ueId, cell->cellId));
-
-   sCellPucchRecfg = &ueRecfg->sCellAckN1ResCfg;
-   /* Copy the UCI format type suported/configured for UE */
-   ue->uciFrmtTyp = sCellPucchRecfg->pucchFormatType;
-   
-   if (ue->uciFrmtTyp == RG_SCH_UCI_FORMAT1B_CS)
-   {
-      ue->n1PucchF1bResCb.cw1N1ResCount = sCellPucchRecfg->u.format1Bcs.sCellAckN1ResTb1Count;
-      ue->n1PucchF1bResCb.cw2N1ResCount = sCellPucchRecfg->u.format1Bcs.sCellAckN1ResTb2Count;
-
-      for(idx = 0; idx < sCellPucchRecfg->u.format1Bcs.sCellAckN1ResTb1Count; idx++)
-      {
-         ue->n1PucchF1bResCb.cw1N1Res[idx].n1PucchIdx = sCellPucchRecfg->u.format1Bcs.sCellAckN1ResTb1[idx];
-      }
-
-      for(idx = 0; idx < sCellPucchRecfg->u.format1Bcs.sCellAckN1ResTb2Count; idx++)
-      {
-         ue->n1PucchF1bResCb.cw2N1Res[idx].n1PucchIdx = sCellPucchRecfg->u.format1Bcs.sCellAckN1ResTb2[idx];
-      }
-   }
-#ifdef LTE_ADV
-   else if (ue->uciFrmtTyp == RG_SCH_UCI_FORMAT3)
-   {
-      ue->n3PucchResCb.antP0N3ResCount = sCellPucchRecfg->u.format3.sCellAckN3ResAntP0Count;
-      ue->n3PucchResCb.antP1N3ResCount = sCellPucchRecfg->u.format3.sCellAckN3ResAntP1Count;
-      for (idx = 0;idx < ue->n3PucchResCb.antP0N3ResCount; idx++ )
-      {
-         ue->n3PucchResCb.antP0N3Res[idx].n3PucchIdx 
-                        = sCellPucchRecfg->u.format3.sCellAckN3ResAntP0[idx];
-         ue->n3PucchResCb.antP0N3Res[idx].n3Lnk.node = NULLP;
-         ue->n3PucchResCb.antP0N3Res[idx].sCellIdx = RGSCH_INVALID_CELL_IDX;
-      }
-      for (idx = 0;idx < ue->n3PucchResCb.antP1N3ResCount; idx++ )
-      {
-         ue->n3PucchResCb.antP1N3Res[idx].n3PucchIdx 
-                        = sCellPucchRecfg->u.format3.sCellAckN3ResAntP1[idx];
-         ue->n3PucchResCb.antP1N3Res[idx].n3Lnk.node = NULLP;
-         ue->n3PucchResCb.antP1N3Res[idx].sCellIdx = RGSCH_INVALID_CELL_IDX;
-      }
-      ue->simulAckNackCQIFormat3 = ueRecfg->simulAckNackCQIFormat3;
-   }
-#endif
-   else
-   {
-      DU_LOG("\nERROR  -->  SCH : Wrong PUCCH Format:%d configured for CA",ue->uciFrmtTyp);
-   }
-
-   return ROK;
-
-}  /* rgSCHSCellCfgUePucchReCfg */
-/**
- * @brief Validates the UE SCell Reconfiguration request from APP to SCH.
- *
- * @details
- *
- *     Function : rgSCHCfgVldtRgrUeSCellRecfg
- *
- *     Processing Steps:
- *      - Validate Number of SCells
- *        - If validated successfully,
- *          - Process Number of SCells
- *        - Else 
- *          - Return RFAILED.
- *      - Validate SCellIdx value,
- *        - If validated successfully,
- *          - Process Number of RgrUeSecCellCfg
- *        - Else 
- *          - Return RFAILED.
- *
- *  @param[in]  RgrUeRecfg    *ueRecfg
- *  @param[out] RgSchCellCb   *cell
- *  @param[out] RgSchUeCb     *ue
- *  @param[out] RgSchErrInfo  *errInfo
- *  @return  S16
- *      -# ROK
- *      -# RFAILED
- **/
-S16 rgSCHCfgVldtRgrUeSCellRecfg
-(
-RgrUeRecfg     *ueRecfg,
-RgSchCellCb    *cell,
-RgSchUeCb      *ue,
-RgSchErrInfo   *errInfo
-)
-{
-   RgrUeSecCellCfg   *ueSCellDedCfg = NULLP;
-   RgSchCellCb          *sCell = NULLP;
-   Inst    inst = cell->instIdx;
-
-
-   DU_LOG("\nDEBUG  -->  SCH : VALIDATE RGR UE SCELL RECONFIG: cellId %d "
-            "oldUeId %d cell %p \n", ueRecfg->cellId, ueRecfg->oldCrnti);
-   errInfo->errCause = RGSCHERR_CFG_INVALID_RGR_UE_SCELL_RECFG;
-
-   if((ueRecfg->ueSCellCfgInfo.numSCells > RGR_MAX_SCELL_PER_UE) ||
-         (ueRecfg->ueSCellCfgInfo.numSCells < 1))
-   {
-      DU_LOG("\nERROR  -->  SCH : Invalid number of SCELL "
-               " in SCELL Recfg\n");
-      return RFAILED;
-   }
-   
-   for(uint8_t idx = 0; idx < ueRecfg->ueSCellCfgInfo.numSCells; idx++)
-   {
-      ueSCellDedCfg = &ueRecfg->ueSCellCfgInfo.ueSCellDedCfg[idx];
-      if(ROK != rgSchUtlVldtCellId(inst, ueSCellDedCfg->sCellId))
-      {
-         DU_LOG("\nERROR  -->  SCH : SCellId is out of range");
-         return RFAILED;
-      }
-      /* Validate existence of sec cell */
-      sCell = rgSchUtlGetCellCb(inst, ueSCellDedCfg->sCellId);
-      if(NULLP == sCell )
-      {
-         DU_LOG("\nERROR  -->  SCH : SCell doesnt exists");
-         return RFAILED;
-      }
-
-      /* validate the range of serv cell index */
-      if((ueSCellDedCfg->sCellIdx < 1) ||
-            (ueSCellDedCfg->sCellIdx > RGR_MAX_SCELL_PER_UE))
-      {
-         DU_LOG("\nERROR  -->  SCH : Invalid Serv Cell Idx %d\n",
-                  ueSCellDedCfg->sCellIdx);
-         return RFAILED;
-      }
-
-      /* Is this sec cell alredy confiured */
-      if(NULLP != ue->cellInfo[ueSCellDedCfg->sCellIdx])
-      {
-         DU_LOG("\nERROR  -->  SCH : Secll with id %d already added\n",
-                  ueSCellDedCfg->sCellIdx);
-         return RFAILED;
-      }
-
-      /* Validate CQI config  params */
-      if((rgSCHCfgVldtUeCqiModeCfg(sCell, &ueSCellDedCfg->ueSCellDlCqiCfg)) != ROK)
-      {
-         DU_LOG("\nERROR  -->  SCH : Invalid CQI Mode "
-                  " configuration for Ue %d\n",ue->ueId);
-         return RFAILED;
-      }
-#ifdef TFU_UPGRADE
-      /*  1. Validate UE Aperiodic CQI related parameters */
-      if( ROK != rgSCHCfgVldtRgrUeACqiCfg (sCell, ue->ueId,
-               &ueSCellDedCfg->ueSCellDlCqiCfg.aprdCqiCfg, ueSCellDedCfg->txMode,
-               errInfo ))
-      {
-         DU_LOG("\nERROR  -->  SCH : rgSCHCfgVldtCqiSrSrsUeCfg: Invalid Aperiodic CQI configuration\n");
-         return RFAILED;
-      }
-
-#ifdef LTEMAC_HDFDD
-      if( ROK != rgSCHCfgVldtRgrUePCqiCfg (sCell, ue->ueId,
-               &ueSCellDedCfg->ueSCellDlCqiCfg.prdCqiCfg, ueRecfg->isHdFddEnbld, 
-               ueSCellDedCfg->txMode, errInfo ))
-#else
-      if( ROK != rgSCHCfgVldtRgrUePCqiCfg (sCell, ue->ueId,
-               &ueSCellDedCfg->ueSCellDlCqiCfg.prdCqiCfg,
-               ueSCellDedCfg->txMode, 
-               errInfo )) 
-#endif
-      {
-         DU_LOG("\nERROR  -->  SCH : rgSCHCfgVldtCqiSrSrsUeCfg: Invalid Periodic CQI configuration\n");
-         return RFAILED;
-      }
-
-      if((ueSCellDedCfg->txMode.txModeEnum < RGR_UE_TM_1) ||
-            (ueSCellDedCfg->txMode.txModeEnum > RGR_UE_TM_9))
-      {
-         DU_LOG("\nERROR  -->  SCH : SCELL Invalid transmission mode for"
-                  " UE %d\n", (uint8_t)ueSCellDedCfg->txMode.txModeEnum);
-         return RFAILED;
-      }
-#endif
-   }
-
-   errInfo->errCause = RGSCHERR_NONE;
-   DU_LOG("\nDEBUG  -->  SCH : RGR Ue SCell Reconfig validation done: "
-            "cellId %d oldUeId %d\n", ueRecfg->cellId, ue->ueId);
-   return ROK;
-}  /* rgSCHCfgVldtRgrUeSCellRecfg */
-
-/**
- * @brief Ue SCell configuration roll back due to failure during configuration
- *        of any scell
- *
- * @details
- *
- *     Function : rgSCHSCellCfgUeCfgRollBack
- *
- *     This functions roll backs the configuration of successfully added Scell
- *
- *  @param[in]  RgSchCellCb  *cell
- *  @param[in]  RgSchUeCb    *ue
- *  @param[int] RgrUeRecfg   *ueRecfg
- *  @param[out] RgSchErrInfo *err
- *  @return  S16
- *      -# ROK
- *      -# RFAILED
- **/
-static S16 rgSCHSCellCfgUeCfgRollBack
-(
-RgSchCellCb  *cell,
-RgSchUeCb    *ue,
-RgrUeRecfg   *ueRecfg
-)
-{
-   Inst                inst = cell->instIdx;
-   RgrUeSecCellCfg  *sCellInfoCfg = NULLP;
-   RgSchUeCellInfo     *sCellInfo = NULLP;
-   RgSchCmnCell        *cellSch   = NULLP;
-
-   RGSCHDBGINFONEW(inst, (rgSchPBuf(inst), 
-     "--------------------------------------------------------------------\n"
-     "UE SCell config roll back at SCH: rnti (%u) cell(%u)\n"
-     "--------------------------------------------------------------------\n",
-     ue->ueId, cell->cellId));
-  
-  /* Free all Added scell in this transaction */
-   for(uint8_t idx = 0; idx < ueRecfg->ueSCellCfgInfo.numSCells; idx++)
-   {
-      sCellInfoCfg = &ueRecfg->ueSCellCfgInfo.ueSCellDedCfg[idx];
-      sCellInfo =  ue->cellInfo[(sCellInfoCfg->sCellIdx)];
-
-      /* if sCellInfo is not NULLP that means this Scell is added hence
-       * delte it*/
-      if (NULLP != sCellInfo)
-      {
-         /* Clear Scheduler specific list for this UE from the 
-          * corresponding CELL */
-         cellSch = RG_SCH_CMN_GET_CELL(sCellInfo->cell);
-         cellSch->apisDl->rgSCHDlUeReset(sCellInfo->cell, sCellInfo->ue);
-         
-         /* Delete harq Entity of Scell*/
-         rgSCHDhmDelHqEnt(cell, &(sCellInfo->hqEnt));
-         
-         rgSCHUtlFreeSBuf(inst, (Data**)&(sCellInfo),
-               sizeof(RgSchUeCellInfo));
-         
-         ue->cellInfo[(sCellInfoCfg->sCellIdx)] = NULLP;
-         ue->numSCells--;
-#ifdef LTE_ADV
-         if (ue->numSCells == 0)
-         {
-            ue->allocCmnUlPdcch = TRUE;
-            /* As there is no SCell left so DCI 0 size at UE specific search space 
-             * will be recalculated as the CSI is reduced to 1 bit */
-            rgSCHUtlUpdUeDciSize(cell, ue, FALSE);
-         }
-#endif
-      }
-   }
-   return ROK;
-}
-#endif /* LTE_ADV */
-/**
- * @brief Validates the UE reconfiguration request from RRC to MAC.
- *
- * @details
- *
- *     Function : rgSCHCfgVldtRgrUeRecfg
- *
- *     Processing Steps:
- *      - Retrieve the UE control block.
- *      - If successful,
- *        - Validate the range of reconfigured values recieved in
- *          re-configuration request.
- *        - If validated successfully,
- *          - Return ROK and pointer to the cell and ue.
- *        - Else 
- *          - Return RFAILED.
- *      - Else return RFAILED.
- *
- *  @param[in]  Inst          inst
- *  @param[in]  RgrUeRecfg    *ueRecfg
- *  @param[out] RgSchCellCb   **cell
- *  @param[out] RgSchUeCb     **ue
- *  @param[out] RgSchErrInfo  *errInfo
- *  @return  S16
- *      -# ROK
- *      -# RFAILED
- **/
-S16 rgSCHCfgVldtRgrUeRecfg
-(
-Inst           inst,
-RgrUeRecfg     *ueRecfg,
-RgSchCellCb    **cell,
-RgSchUeCb      **ue,
-RgSchErrInfo   *errInfo
-)
-{
-
-   errInfo->errCause = RGSCHERR_CFG_INVALID_RGR_UE_RECFG;
-   
-   if (((*cell) == NULLP) ||
-       ((*cell)->cellId != ueRecfg->cellId))
-   {
-      DU_LOG("\nERROR  -->  SCH : Cell does not exist for OLD CRNTI:%d",ueRecfg->oldCrnti);
-      return RFAILED;
-   }
-
-   /* Fetch the Old Ue */
-   if ((*ue = rgSCHDbmGetUeCb(*cell, ueRecfg->oldCrnti)) == NULLP)
-   {
-      DU_LOG("\nERROR  -->  SCH : OLD CRNTI:%d does not exist", 
-            ueRecfg->oldCrnti);
-      return RFAILED;
-   }
-
-#ifdef LTE_ADV
-   if(RGR_UE_SCELL_ADD_RECFG & ueRecfg->ueRecfgTypes) 
-   {
-      S16 ret = rgSCHCfgVldtRgrUeSCellRecfg(ueRecfg,*cell, *ue, errInfo);
-      if ( ret != ROK)
-      {
-         DU_LOG("\nERROR  -->  SCH : Ue SCell Recfg Validation FAILED\n");
-         return RFAILED;
-      }
-      errInfo->errCause = RGSCHERR_NONE;
-      return ROK;
-   }
-#endif
-
-   if (ueRecfg->oldCrnti != ueRecfg->newCrnti)
-   {
-      if (rgSCHDbmGetUeCb(*cell, ueRecfg->newCrnti) != NULLP)
-      {
-         DU_LOG("\nERROR  -->  SCH : NEW CRNTI:%d already exists", 
-              ueRecfg->newCrnti);
-         return RFAILED;
-      }
-   }
-
-   if ((ueRecfg->ueRecfgTypes & RGR_UE_CSG_PARAM_RECFG) &&\
-       ((*ue)->csgMmbrSta == ueRecfg->csgMmbrSta))
-   {
-      DU_LOG("\nERROR  -->  SCH : UE ID [%d] invalid CSG Membership reconfig :%d ", 
-              ueRecfg->newCrnti, (uint8_t)ueRecfg->csgMmbrSta);
-      return RFAILED;
-   }
-   /* Validate values */
-   if ((ueRecfg->ueRecfgTypes & RGR_UE_TXMODE_RECFG) &&
-         (ueRecfg->txMode.pres == TRUE) &&
-         ((ueRecfg->txMode.txModeEnum < RGR_UE_TM_1) ||
-          (ueRecfg->txMode.txModeEnum > RGR_UE_TM_7)))
-   {
-      DU_LOG("\nERROR  -->  SCH : Invalid transmission mode %d"
-            "for NEW CRNTI:%d", (uint8_t)ueRecfg->txMode.txModeEnum,ueRecfg->newCrnti);
-      return RFAILED;
-   }
-#ifndef TFU_UPGRADE
-   if ((ueRecfg->ueRecfgTypes & RGR_UE_PRD_DLCQI_RECFG) &&
-         (((ueRecfg->prdDlCqiRecfg.k < 1) || (ueRecfg->prdDlCqiRecfg.k > 4)) ||
-         ((ueRecfg->prdDlCqiRecfg.cqiPmiCfgIdx < 1) || 
-         (ueRecfg->prdDlCqiRecfg.cqiPmiCfgIdx > 1024))))
-   {
-      DU_LOG("\nERROR  -->  SCH : Invalid Periodic CQI INFO"
-               "OLD CRNTI:%d NEW CRNTI:%d",(uint8_t)ueRecfg->oldCrnti,ueRecfg->newCrnti);
-      return RFAILED;
-   }
-#endif
-   if ((ueRecfg->ueRecfgTypes & RGR_UE_ULHARQ_RECFG) &&
-         (ueRecfg->ueUlHqRecfg.maxUlHqTx < RGSCH_MIN_HQ_TX))
-   {
-      DU_LOG("\nERROR  -->  SCH : Invalid Uplink HARQ config %d"
-          "for NEW CRNTI:%d", ueRecfg->ueUlHqRecfg.maxUlHqTx,ueRecfg->newCrnti);
-      return RFAILED;
-   }
-#ifndef TFU_UPGRADE
-   if ((ueRecfg->ueRecfgTypes & RGR_UE_PRD_DLCQI_RECFG) &&
-         (ueRecfg->prdDlCqiRecfg.prdModeEnum > RGR_PRD_CQI_MOD21))
-   {
-      DU_LOG("\nERROR  -->  SCH : Invalid periodic mode config for"
-          " DL CQI %d NEW CRNTI:%d", (uint8_t)ueRecfg->prdDlCqiRecfg.prdModeEnum,ueRecfg->newCrnti);
-      return RFAILED;
-   }
-#else
-   if ((ueRecfg->ueRecfgTypes & RGR_UE_PCQI_RECFG) &&
-       (ueRecfg->cqiCfg.cqiSetup.prdModeEnum > RGR_PRD_CQI_MOD21))
-   {
-     DU_LOG("\nERROR  -->  SCH : Invalid periodic mode config for "
-            "DL CQI %d for NEW CRNTI:%d",(uint8_t)ueRecfg->cqiCfg.cqiSetup.prdModeEnum,ueRecfg->newCrnti);
-     return RFAILED;
-   }
-#endif /* TFU_UPGRADE */
-   /* Validate UE Category */
-   if (ueRecfg->ueCatEnum > CM_LTE_UE_CAT_8)
-   {
-      DU_LOG("\nERROR  -->  SCH : Invalid category %d for NEW CRNTI:%d",
-               (uint8_t)ueRecfg->ueCatEnum,ueRecfg->newCrnti);
-      return RFAILED;
-   }
-
-   /* Validate UE Access Stratum Release */
-   if ((ueRecfg->ueRecfgTypes & RGR_UE_UE_ACCESS_STRATUM_REL_RECFG) && \
-         (ueRecfg->accessStratumRls > RGR_REL_11))
-   {
-      DU_LOG("\nERROR  -->  SCH : Invalid Access Stratum Release %u for UE\n",
-               ueRecfg->accessStratumRls);
-      return RFAILED;
-   }
-   DU_LOG("\nINFO  -->  SCH : Configured Access Stratum Release %u\n", \
-            ueRecfg->accessStratumRls);
-
-   if ((ueRecfg->ueRecfgTypes & RGR_UE_APRD_DLCQI_RECFG) && 
-         ((ueRecfg->aprdDlCqiRecfg.pres == TRUE) &&
-          ((ueRecfg->aprdDlCqiRecfg.aprdModeEnum > RGR_APRD_CQI_MOD31) ||
-          (*cell)->bwCfg.dlTotalBw <= 7)))
-   {
-      DU_LOG("\nERROR  -->  SCH : Invalid aperiodic mode config for"
-          " DL CQI %d for NEW CRNTI:%d", (uint8_t)ueRecfg->aprdDlCqiRecfg.aprdModeEnum,ueRecfg->newCrnti);
-      return RFAILED;
-   }
-   if ((ueRecfg->ueRecfgTypes & RGR_UE_ULPWR_RECFG) &&
-         (rgSCHCfgVldtUePwrCfg(*cell, &ueRecfg->ueUlPwrRecfg) != ROK))
-   {
-      DU_LOG("\nERROR  -->  SCH : Invalid PUSCH Group power"
-           " Reconfiguration for NEW CRNTI:%d",ueRecfg->newCrnti);
-      return RFAILED;
-   }
-   
-   if ((ueRecfg->ueRecfgTypes & RGR_UE_ACKNACK_MEASGAP_RECFG) &&
-      (rgSCHCfgVldtUeMeasGapAckNakRepRecfg(*cell, ueRecfg) != ROK))
-   {
-      DU_LOG("\nERROR  -->  SCH : Invalid MeasGap/AckNackRep"
-            " Reconfiguration for NEW CRNTI:%d",ueRecfg->newCrnti);
-      return RFAILED;
-   }
-#ifdef LTEMAC_SPS
-   if(rgSCHCfgVldtSpsReCfg(*cell, *ue, ueRecfg)!= ROK)
-   {
-      DU_LOG("\nERROR  -->  SCH : Invalid SPS"
-           " Reconfiguration for NEW CRNTI:%d",ueRecfg->newCrnti);
-      return RFAILED;
-   }
-#endif
-#ifdef TFU_UPGRADE
-   /* Validated Periodic CQI/PMI, RI , SRS and SR related UeCfg */
-   if ( ROK != rgSCHCfgVldtCqiSrSrsUeReCfg(*cell, *ue, ueRecfg,  errInfo))
-   {
-      DU_LOG("\nERROR  -->  SCH : Invalid ACQI, PCQI/SR/SRS "
-               "Re-configuration for NEW CRNTI:%d",ueRecfg->newCrnti);
-      return RFAILED;
-   }
-#endif
-   if ((ueRecfg->ueRecfgTypes & RGR_UE_DRX_RECFG) &&
-      (rgSCHCfgVldtDrxUeCfg(*cell, &(ueRecfg->ueDrxRecfg)) != ROK))
-   {
-      DU_LOG("\nERROR  -->  SCH : Invalid drxParams"
-            " Reconfiguration for NEW CRNTI:%d",ueRecfg->newCrnti);
-      return RFAILED;
-   }
-
-/* ccpu00117452 - MOD - Changed macro name from
-   RGR_RRM_DLPWR_CNTRL to RGR_CQI_REPT */
-#ifdef RGR_CQI_REPT
-   /* Validate DL Power Control Config parameters */
-   if(rgSCHCfgVldtCqiReptReCfg(*cell, ueRecfg)!= ROK)
-   {
-      DU_LOG("\nERROR  -->  SCH : Invalid DL Power Control"
-           " Reconfiguration for NEW CRNTI:%d",ueRecfg->newCrnti);
-      return RFAILED;
-   }
-#endif /* End of RGR_CQI_REPT */
-   errInfo->errCause = RGSCHERR_NONE;
-   return ROK;
-}  /* rgSCHCfgVldtRgrUeRecfg */
-
-
-/**
- * @brief Validates the logical channel reconfiguration request from
- * RRC to MAC.
- *
- * @details
- *
- *     Function : rgSCHCfgVldtRgrLchRecfg
- *
- *     Processing Steps:
- *      - Retrieve the uplink and downlink logical channel control block.
- *      - If successful,
- *        - Validate the range of reconfigured values recieved in
- *          re-configuration request.
- *        - If validated successfully,
- *          - Return ROK and pointer to the cell, UE and logical channel.
- *        - Else 
- *          - Return RFAILED.
- *      - Else return RFAILED.
- *
- *  @param[in]  RgrLchRecfg     *lcRecfg
- *  @param[out] RgSchCellCb     **cell
- *  @param[out] RgSchUeCb       **ue
- *  @param[out] RgSchUlLcCb     **ulLc
- *  @param[out] RgSchDlLcCb     **dlLc
- *  @param[out] RgSchErrInfo       *errInfo
- *  @return  S16
- *      -# ROK
- *      -# RFAILED
- **/
-S16 rgSCHCfgVldtRgrLchRecfg
-(
-Inst           inst,
-RgrLchRecfg    *lcRecfg,
-RgSchCellCb    **cell,
-RgSchUeCb      **ue,
-RgSchDlLcCb    **dlLc,
-RgSchErrInfo   *errInfo
-)
-{
-   errInfo->errCause = RGSCHERR_CFG_INVALID_RGR_LC_RECFG;
-
-   if (((*cell) == NULLP) ||
-       ((*cell)->cellId != lcRecfg->cellId))
-   {
-      DU_LOG("\nERROR  -->  SCH : Cell does not exist " 
-                "for CRNTI:%d LCID:%d",lcRecfg->crnti,lcRecfg->lcId);
-      return RFAILED;
-   }
-
-   /* Fetch the Ue for dedicated channels */
-   if ((*ue = rgSCHDbmGetUeCb(*cell, lcRecfg->crnti)) == NULLP)
-   {
-      DU_LOG("\nERROR  -->  SCH : UEID does not exist"
-         "dedicated logical channel for CRNTI:%d LCID:%d",lcRecfg->crnti,lcRecfg->lcId);
-      return RFAILED;
-   }
-   
-   if ((*dlLc = rgSCHDbmGetDlDedLcCb((*ue), lcRecfg->lcId)) == NULLP)
-   {
-      DU_LOG("\nERROR  -->  SCH : Dedicated DL LC does not "
-               "exist for CRNTI:%d LCID:%d",lcRecfg->crnti,lcRecfg->lcId);
-      return RFAILED;
-   }
-
-   errInfo->errCause = RGSCHERR_NONE;
-   return ROK;
-}  /* rgSCHCfgVldtRgrLchRecfg */
-
-/**
- * @brief Validates the UE Reset request from RRM to MAC.
- *
- * @details
- *
- *     Function : rgSCHCfgVldtRgrUeReset
- *
- *     Processing Steps:
- *      - Retrieve the CELL control block
- *      - If cell does not exist return RFAILED
- *      - Retrieve UE Control block
- *      - If UE does not exist return RFAILED
- *      - Return ROK
- *
- *  @param[in]  Inst        inst
- *  @param[in]  RgrRst      *reset
- *  @param[out] RgSchCellCb **cell
- *  @param[out] RgSchUeCb      **ue
- *  @param[out] RgErrInfo   *errInfo
- *  @return  S16
- *      -# ROK
- *      -# RFAILED
- **/
-S16 rgSCHCfgVldtRgrUeReset
-(
-Inst         inst,
-RgrRst       *reset,
-RgSchCellCb  *cell,
-RgSchUeCb    **ue,
-RgSchErrInfo *errInfo
-)
-{
-
-   errInfo->errCause = RGSCHERR_CFG_INVALID_RGR_UE_RESET;
-   
-   if ((cell == NULLP) || (cell->cellId != reset->cellId))
-   {
-      DU_LOG("\nERROR  -->  SCH : CELL does not exist for CRNTI:%d",
-               reset->crnti);
-      return RFAILED;
-   }
-   /* Fetch the Ue  */
-   if ((*ue = rgSCHDbmGetUeCb(&(*cell), reset->crnti)) == NULLP)
-   {
-      DU_LOG("\nERROR  -->  SCH : UE does not exist for CRNTI:%d",
-               reset->crnti);
-      return RFAILED;
-   }
-
-   errInfo->errCause = RGSCHERR_NONE;
-
-   return ROK;
-}  /* rgSCHCfgVldtRgrUeReset */
-   
-
-/**
- * @brief Validates the logical channel reconfiguration request from
- * RRC to MAC.
- *
- * @details
- *
- *     Function : rgSCHCfgVldtRgrLcgRecfg
- *
- *     Processing Steps:
- *      - Retrieve the uplink and downlink logical channel control block.
- *      - If successful,
- *        - Validate the range of reconfigured values recieved in
- *          re-configuration request.
- *        - If validated successfully,
- *          - Return ROK and pointer to the cell, UE and logical channel.
- *        - Else 
- *          - Return RFAILED.
- *      - Else return RFAILED.
- *
- *  @param[in]  RgrLchRecfg     *lcRecfg
- *  @param[out] RgSchCellCb     **cell
- *  @param[out] RgSchUeCb       **ue
- *  @param[out] RgSchErrInfo    *errInfo
- *  @return  S16
- *      -# ROK
- *      -# RFAILED
- **/
-S16 rgSCHCfgVldtRgrLcgRecfg
-(
-Inst           inst,
-RgrLcgRecfg    *lcgRecfg,
-RgSchCellCb    *cell,
-RgSchUeCb      **ue,
-RgSchErrInfo   *errInfo
-)
-{
-   errInfo->errCause = RGSCHERR_CFG_INVALID_RGR_LCG_RECFG;
-
-   if (((cell) == NULLP) ||
-       ((cell)->cellId != lcgRecfg->cellId))
-   {
-      DU_LOG("\nERROR  -->  SCH : Cell does not exist for" 
-                "CRNTI:%d LCGID:%d",lcgRecfg->crnti,lcgRecfg->ulRecfg.lcgId);
-      return RFAILED;
-   }
-
-   /* Fetch the Ue for dedicated channels */
-   if ((*ue = rgSCHDbmGetUeCb(&(*cell), lcgRecfg->crnti)) == NULLP)
-   {
-      DU_LOG("\nERROR  -->  SCH : UE does not exist for "
-                "dedicated logical channel group CRNTI:%d LCGID:%d",
-                lcgRecfg->crnti,lcgRecfg->ulRecfg.lcgId);
-      return RFAILED;
-   }
-   if (lcgRecfg->ulRecfg.lcgId > (RGSCH_MAX_LCG_PER_UE - 1))
-   {
-      DU_LOG("\nERROR  -->  SCH : Invalid lcgId for uplink logical"
-                "channel CRNTI:%d LCGID:%d",
-                lcgRecfg->crnti,lcgRecfg->ulRecfg.lcgId);
-      return RFAILED;
-   }
-   
-   if ((lcgRecfg->ulRecfg.gbr != 0) && (lcgRecfg->ulRecfg.mbr < lcgRecfg->ulRecfg.gbr))
-   {
-      DU_LOG("\nERROR  -->  SCH : Dedicated Logical Group %d validation failed"\
-         " for ue %d for cell %d\n", lcgRecfg->ulRecfg.lcgId,(*ue)->ueId, cell->cellId);
-      return RFAILED;
-   }
-   errInfo->errCause = RGSCHERR_NONE;
-   return ROK;
-}  /* rgSCHCfgVldtRgrLcgRecfg */
-
-/**
- *
- * @details
- *
- *     Function : rgSCHDynCfiCfg
- *
- *  @param[in]  RgSchCellCb   *cell
- *              RgrCellCfg    *cellCfg
- *  @return  S16
- *      -# ROK
- *      -# RFAILED
- **/
-static S16 rgSCHDynCfiCfg
-(
-RgSchCellCb   *cell,
-RgrCellCfg    *cellCfg
-)
-{
-   uint8_t        cfi; 
-#ifdef LTE_TDD
-   uint8_t        ulDlCfgIdx = cellCfg->ulDlCfgIdx;
-   uint8_t        mphIdx;
-   uint8_t        maxMPhich;
-   uint16_t       numDlSf;
-#endif    
-
-   cell->dynCfiCb.isDynCfiEnb = cellCfg->isDynCfiEnb;
-
-   /* Initializing Failure Sample Period */
-   cell->dynCfiCb.failSamplePrd = (RGSCH_CFI_TTI_MON_INTRVL *
-                     RGSCH_CFI_STEP_UP_TTI_PRCNTG)/100;
-   /* Initializing Number of Failure Samples */
-   cell->dynCfiCb.numFailSamples = (RGSCH_CFI_TTI_MON_INTRVL/
-                                    cell->dynCfiCb.failSamplePrd);
-   cell->dynCfiCb.maxCfi = RGSCH_MAX_CFI_VAL;
-   /* Allocating memory for CCE failure average array based on 
-    * monitoring interval and CCE failure sample period */
-   if((rgSCHUtlAllocSBuf(cell->instIdx, (Data**)&(cell->dynCfiCb.cceFailSamples),
-               (cell->dynCfiCb.numFailSamples * sizeof(uint16_t)))) != ROK)
-   {
-      DU_LOG("\nERROR  -->  SCH : Memory allocation FAILED for cell");
-      return RFAILED;
-   }
-
-   /* Setting the Invalid value 0xFF to pdcchSfIdx, it will be assigned 
-    * a valid value during CFI swithing is done */
-   cell->dynCfiCb.pdcchSfIdx = 0xFF;
-
-#ifdef LTE_TDD
-   /* In case of config index 0, the mphich index can be upto 2 
-    * in other config index cases, it will always be set as 1*/
-   if(ulDlCfgIdx == 0)
-   {
-      maxMPhich = RG_SCH_MAX_MPHICH;
-   }
-   else
-   {
-      maxMPhich = RG_SCH_MAX_MPHICH -1;
-   }    
-   /* Calculate the number of CCEs in the cell */
-   for(cfi = 1; cfi < RG_SCH_CMN_MAX_CFI; cfi++)
-   {   
-      for(mphIdx = 0; mphIdx < maxMPhich; mphIdx++)
-      {   
-         cell->dynCfiCb.cfi2NCceTbl[mphIdx][cfi] = 
-            rgSCHUtlCalcNCce(cell->bwCfg.dlTotalBw,
-               cell->phichCfg.ngEnum, cfi, mphIdx,
-               cell->numTxAntPorts,
-               cell->isCpDlExtend);
-      }
-   }
-#else   
-   /* Calculate the number of CCEs in the cell */
-   for(cfi = 1; cfi < RG_SCH_CMN_MAX_CFI; cfi++)
-   {   
-      /* CFI Index starts from 1 so that there can be a direct mapping from 
-         actual CFI value to cfi Index. mPhich index will always be set 
-         as 0 for FDD */
-      cell->dynCfiCb.cfi2NCceTbl[0][cfi] = 
-            rgSCHUtlCalcNCce(cell->bwCfg.dlTotalBw, cell->phichCfg.ngEnum,
-                  cfi, cell->numTxAntPorts, cell->isCpDlExtend);
-   }
-
-   /* Calculate the number of CCEs in the cell */
-   if(cell->dynCfiCb.isDynCfiEnb == TRUE)
-   {   
-      /* In case if Dynamic CFI feature is enabled, default CFI 
-       * value 1 is used  */
-      cell->nCce = cell->dynCfiCb.cfi2NCceTbl[0][1];
-   }   
-   else
-   {
-      cell->nCce = cell->dynCfiCb.cfi2NCceTbl[0][cellCfg->cfiCfg.cfi];
-   }    
-#endif  
-
-#ifdef LTE_TDD   
-   numDlSf = rgSchTddNumDlSubfrmTbl[ulDlCfgIdx][9] * 
-               (RGSCH_CFI_TTI_MON_INTRVL/10);
-   cell->dynCfiCb.cfiStepUpTtiCnt = 
-               (RGSCH_CFI_STEP_UP_TTI_PRCNTG * numDlSf)/100;
-   cell->dynCfiCb.cfiStepDownTtiCnt = 
-               (RGSCH_CFI_STEP_DOWN_TTI_PERCNTG * numDlSf)/100;
-#else
-   cell->dynCfiCb.cfiStepUpTtiCnt = (RGSCH_CFI_STEP_UP_TTI_PRCNTG * 
-                                     RGSCH_CFI_TTI_MON_INTRVL)/100;
-   cell->dynCfiCb.cfiStepDownTtiCnt = (RGSCH_CFI_STEP_DOWN_TTI_PERCNTG * 
-                                     RGSCH_CFI_TTI_MON_INTRVL)/100;
-#endif   
-
-   return ROK;
-}
-
-/**
- * @brief Handler for the SCHED Enb configuration request from RRM to MAC.
- *
- * @details
- *
- *     Function : rgSCHCfgRgrSchedEnbCfg
- *
- *     Processing Steps:
- *      - Invoke SCH with SCHEDULER control block to update
- *        scheduler specific information.
- *      - Update rgSch control block with the values recieved in the
- *        configuration.
- *      - If successful, return ROK else RFAILED.
- *      
- *  @param[in]  RgSchCb      *instCb
- *  @param[in]  SpId         spId
- *  @param[in]  RgSchSchedEnbCfg    *schedEnbCfg
- *  @param[out] RgSchErrInfo *errInfo
- *  @return  S16
- *      -# ROK
- *      -# RFAILED
- **/
-S16 rgSCHCfgRgrSchedEnbCfg
-(
-Inst            inst,
-SpId            spId,
-RgrSchedEnbCfg *schedEnbCfg,
-RgSchErrInfo   *errInfo
-)
-{
-
-   DU_LOG("\nDEBUG  -->  SCH : APPLYING RGR SCH ENB CONFIG: \n");
-   errInfo->errCause = RGSCHERR_CFG_INVALID_RGR_ENB_CFG;
-
-   rgSchCb[inst].rgrSchedEnbCfg = *schedEnbCfg;
-   DU_LOG("\nDEBUG  -->  SCH : dlSchdType %d ulSchdType %d dlTptCoeffi %d"
-           "dlFairCoeffi %d  ulTptCoeffi %d ulFairCoeffi %d\n",
-         schedEnbCfg->dlSchdType, schedEnbCfg->ulSchdType, schedEnbCfg->dlSchInfo.dlPfs.tptCoeffi,
-         schedEnbCfg->dlSchInfo.dlPfs.fairCoeffi, schedEnbCfg->ulSchInfo.ulPfs.tptCoeffi,
-         schedEnbCfg->ulSchInfo.ulPfs.fairCoeffi);
-
-#ifdef RG_5GTF
-   rgSchCb[inst].rgSchDynTdd.isDynTddEnbld = schedEnbCfg->isDynTddEnbld;
-#endif
-# if 0
-   if(RGR_SCH_TYPE_PFS == schedEnbCfg->dlSchdType)
-   {
-     rgSCHEnbPfsDlCfg(inst, errInfo);
-   }
-#endif
-   errInfo->errCause = RGSCHERR_NONE;
-   DU_LOG("\nINFO  -->  SCH : RGR SCH gNB done: \n");
-   return ROK;
-}  /* rgSCHCfgRgrSchedEnbCfg */
-
-#ifdef RG_5GTF
-/**
- * @brief Handler for the cell configuration of 5gtf.
- *
- * @details
- *
- *     Function : rgSCH5gtfCellCfg
- *      
- *  @param[in]  RgSchCellCb   *cell
- *  @param[in]  RgSchCellCfg    *cellCfg
- *  @return  S16
- *      -# ROK
- *      -# RFAILED
- **/
-S16 rgSCH5gtfCellCfg
-(
-RgSchCellCb   *cell,
-RgrCellCfg    *cellCfg
-)
-{
-   uint8_t           idx;
-
-   for(idx = 0; idx < MAX_5GTF_GROUP; idx++)
-   {
-      cell->cell5gtfCb.ueGrp5gConf[idx].beamBitMask = 0;
-   }
-
-   for(idx = 0 ; idx < MAX_5GTF_SUBFRAME_INFO ; ++idx)
-   {
-      cell->cell5gtfCb.dynConfig[idx] = cellCfg->Cell5gtfCfg.dynConfig[idx]; 
-   }
-   cell->cell5gtfCb.numUes = cellCfg->Cell5gtfCfg.numUes;
-   cell->cell5gtfCb.uePerGrpPerTti = cellCfg->Cell5gtfCfg.uePerGrp;
-   cell->cell5gtfCb.ueGrpPerTti = cellCfg->Cell5gtfCfg.ueGrpPerTti;
-   cell->cell5gtfCb.numCCs = cellCfg->Cell5gtfCfg.numOfCC;
-   cell->cell5gtfCb.bwPerCC = cellCfg->Cell5gtfCfg.bwPerCC;
-   DU_LOG("\nINFO  -->  SCH : cell cfg at schd,numUes:%u,uepergrp:%u,uegrppertti:%u,numCC:%u,bwPerc:%u cfi %u\n",
-         cell->cell5gtfCb.numUes,cell->cell5gtfCb.uePerGrpPerTti,cell->cell5gtfCb.ueGrpPerTti,
-         cell->cell5gtfCb.numCCs,cell->cell5gtfCb.bwPerCC, cell->cell5gtfCb.cfi);
-   return ROK;
-}
-#endif
-
-#ifdef XEON_LMT_ITBS
-uint16_t gWrMaxDlItbs;
-uint16_t gWrMaxUlItbs;
-#endif
-/**
- * @brief Handler for the cell configuration request from RRM to MAC.
- *
- * @details
- *
- *     Function : rgSCHCfgRgrCellCfg
- *
- *     Processing Steps:
- *      - Invoke SCH with cell control block to update
- *        scheduler specific information.
- *      - Update cell control block with the values recieved in the
- *        configuration.
- *      - Add to the active list of cells if cell becomes ACTIVE.
- *      - If successful, return ROK else RFAILED.
- *      
- *  @param[in]  RgSchCb      *instCb
- *  @param[in]  SpId         spId
- *  @param[in]  RgSchCellCfg    *cellCfg
- *  @param[out] RgSchErrInfo *errInfo
- *  @return  S16
- *      -# ROK
- *      -# RFAILED
- **/
-S16 rgSCHCfgRgrCellCfg
-(
-RgSchCb       *instCb,
-SpId          spId,
-RgrCellCfg    *cellCfg,
-RgSchErrInfo  *errInfo
-)
-{
-   S16          ret;
-   uint8_t           idx;
-   Pst          pst;
-   RgInfCellReg cellRegReq;
-   RgSchCellCb  *cell = NULLP;
-   Inst         inst = instCb->rgSchInit.inst;
-   uint32_t          Idx1 = (uint8_t)((cellCfg->cellId - instCb->genCfg.startCellId)&(CM_LTE_MAX_CELLS-1));
-
-   errInfo->errCause = RGSCHERR_CFG_RGR_CELL_CFG;
-   
-   memset(&pst, 0, sizeof(Pst));
-    
-   /* Allocate the scheduler's cell control block */
-   if((ret = rgSCHUtlAllocSBuf(inst, (Data**)&cell, sizeof(RgSchCellCb))) 
-         != ROK)
-   {
-      DU_LOG("\nERROR  -->  SCH : Memory allocation FAILED for cell");
-      return RFAILED;
-   }
-#ifdef EMTC_ENABLE
-   if(cellCfg->emtcEnable)
-   {
-      if((ret = rgSCHEmtcCellAlloc(cell)) 
-            != ROK)
-      {
-         DU_LOG("\nERROR  -->  SCH : Memory allocation FAILED for emtc cell");
-         return RFAILED;
-      }
-   }
-#endif
-   if ((uint8_t *)cell == NULLP)
-   {
-      DU_LOG("\nERROR  -->  SCH : Memory allocation FAILED for cell");
-      return RFAILED;
-   }
-   /* Initialize the lists of the cell */
-   ret = rgSCHDbmInitCell(cell);
-   if (ret != ROK)
-   {
-      DU_LOG("\nERROR  -->  SCH : DBM initialization FAILED for cell");
-      rgSCHCfgFreeCellCb(cell);
-      return RFAILED;
-   }
-/* LTE_ADV_FLAG_REMOVED_START */
-   if(cellCfg->rgrLteAdvCfg.pres & RGR_ABS)
-   {
-      cell->lteAdvCb.absCfg =
-         cellCfg->rgrLteAdvCfg.absCfg;
-      memset(cell->lteAdvCb.absLoadInfo, 0, sizeof(uint32_t)*RGR_ABS_PATTERN_LEN);
-      cell->lteAdvCb.absLoadTtiCnt = 0;
-   }
-
-   if(cellCfg->rgrLteAdvCfg.pres & RGR_SFR)
-   {
-      cell->lteAdvCb.sfrCfg =
-         cellCfg->rgrLteAdvCfg.sfrCfg;
-   }
-   if(cellCfg->rgrLteAdvCfg.pres & RGR_DSFR)
-   {
-      cell->lteAdvCb.dsfrCfg =
-         cellCfg->rgrLteAdvCfg.dsfrCfg;
-   }
-/* LTE_ADV_FLAG_REMOVED_END */
-
-#ifdef EMTC_ENABLE
-   cell->emtcEnable = cellCfg->emtcEnable;     
-#endif
-   /* Initialize the cell */
-   cell->cellId = cellCfg->cellId;
-   cell->instIdx = inst;
-   cell->macInst = cellCfg->macInst;
-   cell->isCpUlExtend = cellCfg->isCpUlExtend;
-   cell->isCpDlExtend = cellCfg->isCpDlExtend;
-
-   cell->numTxAntPorts = rgSchCb[inst].rgrSchedEnbCfg.numTxAntPorts; 
-   if(cell->numTxAntPorts == 1)
-   {
-      cell->numCellRSPerSf = RGSCH_NUM_CELL_RS_ONE_ANT_PORT;
-   }
-   else if(cell->numTxAntPorts == 2)
-   {
-      cell->numCellRSPerSf = RGSCH_NUM_CELL_RS_TWO_ANT_PORT;
-   }
-   else
-   {
-      cell->numCellRSPerSf = RGSCH_NUM_CELL_RS_FOUR_ANT_PORT;
-   }
-   cell->bwCfg = cellCfg->bwCfg;
-   cell->pbchRbStart = ((((cell->bwCfg.dlTotalBw * 12)/2) - 36)/12); /* Ref section 6.6 in 36.211 */ 
-   cell->pbchRbEnd = cell->pbchRbStart + 5;
-   cell->pucchCfg = cellCfg->pucchCfg;
-   cell->rachCfg = cellCfg->rachCfg;
-   cell->siCfg = cellCfg->siCfg;
-   cell->t300TmrVal = cellCfg->t300TmrVal;
-#ifdef RGR_SI_SCH
-   /*Initialize the SI CB in Cell CB */
-   memset(&cell->siCb, 0, sizeof(RgSchSiCb));
-#endif
-   /*Fix: Added Guard Pool for RNTI which will contain RNTIs 
-       *for UEs deleted from Scheduler but not yet from MAC*/
-   cmLListInit(&cell->rntiDb.rntiGuardPool);
-
-   /* Initialize the inWindow to sync with scheduler time when ticks starts */
-#ifdef LTEMAC_HDFDD
-      cell->siCb.inWindow = (cellCfg->siCfg.siWinSize - 
-            (RG_SCH_CMN_DL_DELTA + RG_SCH_CMN_HARQ_INTERVAL));
-#else
-      cell->siCb.inWindow = (cellCfg->siCfg.siWinSize - 
-            (RG_SCH_CMN_DL_DELTA));
-#endif
-     
-      if(cell->siCb.inWindow < 0)
-      { 
-         cell->siCb.inWindow = 0;
-      }
-   cell->macPreambleSet = cellCfg->macPreambleSet;
-   cell->phichCfg = cellCfg->phichCfg;
-
-   /* Initialize UL and DL CCCH logical channels */
-   cell->ulCcchId = RGSCH_INVALID_LC_ID;
-   cell->dlCcchId = RGSCH_INVALID_LC_ID;
-
-   /* Update SRS configuration */
-   cell->srsCfg.isSrsCfgPres = cellCfg->srsCfg.isSrsCfgSetup;
-   if(cellCfg->srsCfg.isSrsCfgSetup)
-   {
-      cell->srsCfg.srsCfgPrdEnum = cellCfg->srsCfg.srsCfgPrdEnum;
-      cell->srsCfg.srsBwEnum = cellCfg->srsCfg.srsBwEnum;
-      cell->srsCfg.srsTxOffst =
-         rgSrsTxOffstTbl[cellCfg->srsCfg.srsSubFrameCfg];
-      /*ccpu00116923 - ADD - Srs Present support */
-#ifdef TFU_UPGRADE
-      cell->srsCfg.srsSubFrameCfg = cellCfg->srsCfg.srsSubFrameCfg;
-#endif
-   }
-
-   /* Configure all the common logical channels for the cell */
-   for(idx = 0; idx < cellCfg->numCmnLcs; idx++)
-   {
-      /* This never returns failure and hence not checked for */
-      rgSCHCfgRgrCmnLcCfg(cell, &(cellCfg->cmnLcCfg[idx]), errInfo);
-   }
-
-   /* Invoke the MeasGap and ACK NACK Rep handler for cell cfg */
-
-   /* Dynamic CFI cell configuration */
-   ret = rgSCHDynCfiCfg(cell, cellCfg);
-   if(ret != ROK)
-   {
-      DU_LOG("\nERROR  -->  SCH : Rgr cell Config failed at "
-       "Scheduler for cell");
-      rgSCHCfgFreeCellCb(cell);
-      return RFAILED;
-   }   
-   /* Updating Auto TM Mode enable/diable flag */
-   cell->isAutoCfgModeEnb = cellCfg->isAutoCfgModeEnb;
-   {
-     if(cell->isAutoCfgModeEnb)
-     {
-        DU_LOG("\nINFO  -->  SCH : Auto Mode Cfg enabled durint cell cfg\n");
-     }
-   }
-   /* CPU OvrLoad State Initialization */
-#ifdef XEON_LMT_ITBS
-   cell->thresholds.maxDlItbs = gWrMaxDlItbs;
-   cell->thresholds.maxUlItbs = gWrMaxUlItbs;
-   DU_LOG("\nINFO  -->  SCH : LIMIT DL and UL ITBS %d:%d \n",gWrMaxDlItbs,gWrMaxUlItbs);
-#else
-   cell->thresholds.maxDlItbs = RG_SCH_DL_MAX_ITBS;
-   cell->thresholds.maxUlItbs = RG_SCH_UL_MAX_ITBS;
-#endif
-   cell->measurements.dlTpt = 0;
-   cell->measurements.ulTpt = 0;
-   cell->measurements.dlBytesCnt = 0;
-   cell->measurements.ulBytesCnt = 0;
-   cell->cpuOvrLdCntrl.cpuOvrLdIns = 0; /* 0 - No command */
-   cell->cpuOvrLdCntrl.dlNxtIndxDecNumUeTti = 0;
-   cell->cpuOvrLdCntrl.ulNxtIndxDecNumUeTti = 0;
-   for ( idx = 0; idx < 10; idx++ )
-   {
-      cell->cpuOvrLdCntrl.maxUeNewTxPerTti[idx] = cellCfg->maxDlUeNewTxPerTti;
-      cell->cpuOvrLdCntrl.maxUeNewRxPerTti[idx] = cellCfg->maxUlUeNewTxPerTti;
-   }
-
-   /* Invoke scheduler to update scheduler specific information */
-   ret =  rgSCHUtlRgrCellCfg(cell, cellCfg, errInfo);
-   if (ret != ROK)
-   {
-      DU_LOG("\nERROR  -->  SCH : Rgr cell Config failed at "
-       "Scheduler for cell ");
-      rgSCHCfgFreeCellCb(cell);
-      return RFAILED;
-   }
-
-   /* Invoke DHM to update DHM specific information */
-   rgSCHDhmRgrCellCfg(cell, cellCfg, errInfo);
-  
-
-   /* Initialize RNTI DB */
-   ret = rgSCHDbmRntiDbInit(cell, cellCfg->macRnti.startRnti,
-         cellCfg->macRnti.size);
-   if (ret != ROK)
-   {
-      DU_LOG("\nERROR  -->  SCH : Rgr Cell Config failed at"
-          " RNTI DB init for cell");
-      rgSCHCfgFreeCellCb(cell);
-      return RFAILED;
-   }
-
-   /* Update the cell with recieved configuration */
-   cell->dlHqCfg  =  cellCfg->dlHqCfg;
-
-   DU_LOG("\nINFO  -->  SCH : Config DL HQTX = %d\n",cell->dlHqCfg.maxDlHqTx);
-
-   cell->crntSfIdx = 0; 
-   /* Allocate the subframe allocation information */
-   if((ret = rgSCHUtlGetSfAlloc(cell)) != ROK)
-   {
-      DU_LOG("\nERROR  -->  SCH : Memory allocation FAILED for "
-               "cell");
-      rgSCHCfgFreeCellCb(cell);
-      return RFAILED;
-   }
-   /* Update RACH Related information 
-    * XXX: Below function yet to be written in RAM
-    * To store the preambles given in  the configuration for PDCCH order in the
-    * scheduler cell control block. Initialize the PRACH Mask Index allocated
-    * for these preambles to invalid values */
-
-   cell->crntHqIdx = 0; 
-   /* Allocate the subframe allocation information */
-   if((ret = rgSCHUtlGetRlsHqAlloc(cell)) != ROK)
-   {
-      DU_LOG("\nERROR  -->  SCH : Memory allocation FAILED for"
-               "cell");
-      rgSCHCfgFreeCellCb(cell);
-      return RFAILED;
-   }
-
-   /* Associate a pair of upper and lower sapCbs with this cell */
-   instCb->rgrSap[spId].cell = cell;
-   instCb->tfuSap[spId].cell = cell;
-   instCb->rgmSap[spId].cell = cell;
-   cell->tfuSap = &(instCb->tfuSap[spId]);
-
-   /* CaDev Start */
-      instCb->cells[Idx1] = cell;
-   /* CaDev End */
-
-   /* rg001.201: Added for sending TTI tick to RRM */
-#if (defined(RGR_RRM_TICK) || defined(RGR_CQI_REPT))
-   /* Associate the RGR SAP as well utilized while sending TTI
-    * Ticks to RGR User. */
-   cell->rgrSap = &(instCb->rgrSap[spId]);
-#endif
-   cell->rgmSap = &(instCb->rgmSap[spId]);
-#ifdef RGR_RRM_TICK
-   /* Store the periodicity configured */
-   cell->rrmTtiIndPrd = cellCfg->rrmTtiIndPrd;
-#endif
-
-#ifdef LTE_L2_MEAS
-   cmLListInit(&cell->l2mList);
-#endif
-
-   if (rgSCHDrxCellCfg(cell,cellCfg) != ROK)
-   {
-      DU_LOG("\nERROR  -->  SCH : Drx Memory allocation FAILED for"
-         " cell");
-      rgSCHCfgFreeCellCb(cell);
-      return RFAILED;
-   }
-   cell->overLoadBackOffEnab = FALSE;/* Disabling RachOverload by default */
-   /* Updating CSG Parameters */
-   cell->minDlResNonCsg = cellCfg->csgParamCfg.minDlResNonCsg;
-   cell->minUlResNonCsg = cellCfg->csgParamCfg.minUlResNonCsg;
-
-   /* Register the cell with MAC */ 
-   rgSCHUtlGetPstToLyr(&pst, instCb, cell->macInst);
-   cellRegReq.cellId = cell->cellId;
-   cellRegReq.cellSapId = spId;
-#ifdef LTE_TDD
-   cellRegReq.maxDlHqProcPerUe = rgSchTddDlNumHarqProcTbl[cellCfg->ulDlCfgIdx];
-#else
-   cellRegReq.maxDlHqProcPerUe = RGSCH_MAX_DL_HQ_PROC;
-#endif
-   RgSchMacCellReg(&pst, &cellRegReq);
-
-#ifdef TENB_STATS
-   cell->tenbStats = TSL2AllocCellStatsBlk(cell->cellId);
-   cell->tenbStats->cellId = cell->cellId;
-#endif
-
-   rgSCHUtlCalcDciSizes(cell);
-
-#ifdef LTE_ADV
-   /* Initilalization of the list of UE for which this cell is secondary cell*/
-   cmLListInit(&cell->sCellUeLst);
-#endif 
-
-
-#ifdef LTE_ADV
-   ret = rgSCHLaaSCellCbInit(cell, cellCfg);
-   if (ret != ROK)
-   {
-      DU_LOG("\nERROR  -->  SCH : Rgr Cell Config failed at"
-          " Initializing the LAA Cell Control Cb");
-      rgSCHCfgFreeCellCb(cell);
-      return RFAILED;
-   }
-   cell->isPucchFormat3Sptd = cellCfg->isPucchFormat3Sptd;
-   DU_LOG("\nINFO  -->  SCH : Format 3 is Enabled");
-   DU_LOG ("\n Format 3 is Enabled for CELL:%d",cell->cellId);
-#endif
-
-
-#ifdef EMTC_ENABLE
-
-       if(cell->emtcEnable)
-       {       
-         if (rgSCHCfgEmtcCellCfg(cell,&(cellCfg->emtcCellCfg)) != ROK)
-         {
-                DU_LOG("\nERROR  -->  SCH : EMTC Config Failed cell");
-                return RFAILED;
-         }
-       }
-#endif
-
-#ifdef RG_5GTF
-   ret = rgSCH5gtfCellCfg(cell, cellCfg);
-   if (ret != ROK)
-   {
-      DU_LOG("\nERROR  -->  SCH : 5GTF Rgr Cell Config failed");
-      rgSCHCfgFreeCellCb(cell);
-      return RFAILED;
-   }
-#endif
-   errInfo->errCause = RGSCHERR_NONE;
-   return ROK;
-}  /* rgSCHCfgRgrCellCfg */
-
-/**
- * @brief Handler for the UE configuration request from RRC to MAC.
- *
- * @details
- *
- *     Function : rgSCHCfgRgrUeCfg
- *
- *     Processing Steps:
- *      - Allocate and create UE control block.
- *      - Update UE control block with the values recieved in the
- *        configuration.
- *      - Invoke RAM, SCH, UHM and DHM with created UE control block, to
- *        update random access, scheduler, uplink harq and downlink harq
- *        specific information respectively.
- *      - If successful, add the control block to hash list of UEs for the cell
- *        else Rollback and FAIL.
- *
- *  @param[in]  RgSchCellCb  *cell
- *  @param[in]  RgrUeCfg     *ueCfg
- *  @param[out] RgSchErrInfo *errInfo
- *  @return  S16
- *      -# ROK
- *      -# RFAILED
- **/
-S16 rgSCHCfgRgrUeCfg
-(
-RgSchCellCb  *cell,
-RgrUeCfg     *ueCfg,
-RgSchErrInfo *errInfo
-)
-{
-   S16          ret;
-   RgSchRaCb    *raCb=NULLP;
-   RgSchUeCb    *ue = NULLP;
-   Inst         inst = cell->instIdx;
-   uint32_t          lcgCnt;
-   RgSchDlHqEnt *hqEnt = NULLP;
-#ifdef LTE_TDD
-   uint8_t           ulDlCfgIdx = cell->ulDlCfgIdx;
-   uint8_t           maxSubframes ;
-   uint8_t           maxDlSubframes;
-#endif
-   uint32_t          idx = 0;  
-#ifdef TFU_UPGRADE
-   RgSchUePCqiCb *cqiCb = NULLP;
-#endif
-
-  do {
-     errInfo->errCause = RGSCHERR_CFG_RGR_UE_CFG;
-     /* RACHO : Check for raCb only if preamble Id not provded */
-#ifndef PRE_DEF_UE_CTX
-     if (ueCfg->dedPreambleId.pres == NOTPRSNT)
-     {
-        if ((raCb = rgSCHDbmGetRaCb(cell, ueCfg->crnti)) == NULLP)
-        {
-           DU_LOG("\nERROR  -->  SCH : No RaCb exists for"
-                    "CRNTI:%d ",ueCfg->crnti);
-           break;
-        }
-     }
-#endif
-
-     /* Allocate the Ue control block */
-     if (((rgSCHUtlAllocSBuf(inst, (Data **)&ue, sizeof(RgSchUeCb))) != ROK) ||
-            ((uint8_t *)ue == NULLP))
-     {
-        DU_LOG("\nERROR  -->  SCH : Memory allocation"
-           " FAILED for CRNTI:%d", ueCfg->crnti);
-        break;
-     }
-
-     /* Inititialize Ue control block */
-     ue->ueId = ueCfg->crnti;
-     ue->cell = cell;
-     /*ccpu00117778- Initialize Transmission Indices upon UE CB creation */
-#ifdef LA
-   ue->lastRprdAckNackTime.sfn = cell->crntTime.sfn;
-   ue->lastRprdAckNackTime.subframe = cell->crntTime.slot;
-   ue->ueIdle = FALSE; 
-#endif
-
-   /* Allocate the Ue control block */
-   if (((rgSCHUtlAllocSBuf(inst, (Data **)&(ue->cellInfo[RGSCH_PCELL_INDEX]),
-                  sizeof(RgSchUeCellInfo))) != ROK))
-   {
-#ifndef ALIGN_64BIT
-      DU_LOG("\nERROR  -->  SCH : [%lu]SCellIdx :Memomy allocation "
-               "Failed while Adding SCell Information\n", idx);
-#else
-      DU_LOG("\nERROR  -->  SCH : [%u]SCellIdx :Memomy allocation "
-               "Failed while Adding SCell Information\n", idx);
-#endif
-      return RFAILED;
-   }
-
-   ue->cellIdToCellIdxMap[RG_SCH_CELLINDEX(cell)] = RGSCH_PCELL_INDEX;
-   ue->cellInfo[RGSCH_PCELL_INDEX]->cell = cell;
-   ue->cellInfo[RGSCH_PCELL_INDEX]->ue = ue;
-#ifdef LTE_ADV
-   ue->cellInfo[RGSCH_PCELL_INDEX]->sCellState = RG_SCH_SCELL_ACTIVE;
-   ue->cellInfo[RGSCH_PCELL_INDEX]->sCellIdx = RGSCH_PCELL_INDEX;
-   ue->cellInfo[RGSCH_PCELL_INDEX]->sCellId = cell->cellId;
-
-   if (ROK != rgSCHLaaInitDlRbAllocCb(cell, 
-            &ue->cellInfo[RGSCH_PCELL_INDEX]->dlAllocCb))
-   {
-      return RFAILED;
-   }
-#endif
-#ifdef TFU_UPGRADE
-     cqiCb = RG_SCH_GET_UE_CELL_CQI_CB(ue,cell);
-     cqiCb->nCqiTrIdx = RG_SCH_INVALID_IDX;
-     cqiCb->nRiTrIdx = RG_SCH_INVALID_IDX;
-     ue->srsCb.nSrsTrIdx = RG_SCH_INVALID_IDX;
-     ue->srCb.nSrTrIdx = RG_SCH_INVALID_IDX;
-#endif
-   /* LTE_ADV_FLAG_REMOVED_START */
-   /* While doing UE configuration for SFR at SCH, by default 
-    * CC UE power is configured as LOW */
-   ue->lteAdvUeCb.isCCUePHigh = FALSE;
-   /* LTE_ADV_FLAG_REMOVED_END */
-
-     /* Initialize the lists of the UE */
-     if((rgSCHDbmInitUe(ue)) != ROK)
-     {
-        DU_LOG("\nERROR  -->  SCH : DBM initialization "
-           "failed for CRNTI:%d", ueCfg->crnti);
-        break;
-     }
-#ifdef EMTC_ENABLE
-     if(raCb != NULLP)
-     {
-        if(TRUE == raCb->isEmtcRaCb)
-        { 
-           ue->isEmtcUe = TRUE;
-           if (rgSCHUtlUpdUeEmtcInfo(cell, ueCfg, ue) != ROK)
-           {
-              DU_LOG("\nERROR  -->  SCH : EMTC UE Cfg"
-                    "failed for CRNTI:%d", ueCfg->crnti);
-              break;
-           }
-        }
-     } 
-#endif
-
-     /* Initialize scheduler related information for UE */
-     if(rgSCHUtlRgrUeCfg(cell, ue, ueCfg, errInfo) != ROK)
-     {
-        DU_LOG("\nERROR  -->  SCH : Scheduler handling "
-                 "failed in config for CRNTI:%d", ueCfg->crnti);
-        break;
-     }
-
-     ret = rgSCHUhmHqEntInit(cell, ue);
-     if (ret != ROK)
-     {
-        DU_LOG("\nERROR  -->  SCH : UHM HARQ Ent Init "
-           "Failed for CRNTI:%d", ueCfg->crnti);
-        break;
-     }
-
-     /* Initialize RAM related information for UE 
-      * RACHO: if preamble Id is present in ueCfg then raCb will be NULL
-      * so rgSCHRamRgrUeCfg should take care of creating raCb */
-   if ((ueCfg->dedPreambleId.pres == NOTPRSNT) && (NULLP != raCb) )
-     {
-        if((rgSCHRamRgrUeCfg(cell, ue, raCb, errInfo)) != ROK)
-        {
-           DU_LOG("\nERROR  -->  SCH : Random access "
-              "handling config failed for CRNTI:%d", ueCfg->crnti);
-           break;
-        }
-     }
-     else /* if HO Ue */
-     {
-        RG_SCH_CMN_GET_UE_HQE(ue, cell) = rgSCHDhmHqEntInit(cell);
-        hqEnt = RG_SCH_CMN_GET_UE_HQE(ue, cell);
-        if (hqEnt == NULLP)
-        {
-           DU_LOG("\nERROR  -->  SCH : Hq Entity Initialization "
-                    "failed in config for CRNTI:%d", ueCfg->crnti);
-           break;
-        }
-#ifdef EMTC_ENABLE
-        rgSCHEmtcHqPAlloc(cell, hqEnt);
-#endif
-        hqEnt->ue = ue;
-        /* Fix : syed Assign hqEnt to UE only if msg4 is done */
-
-        rgSCHCmnDlInitHqEnt(cell, hqEnt);
-
-        /* For Hand-In UE Request Aper CQI report
-         * immediately */
-        if (ueCfg->ueDlCqiCfg.aprdCqiCfg.pres)
-        {
-           /* Set APCQI for Pcell only*/
-           ue->dl.reqForCqi = RG_SCH_APCQI_SERVING_CC;
-        }
-     }
-     /* CA dev Start */
-#ifdef LTE_TDD
-     maxDlSubframes = rgSchTddNumDlSubfrmTbl[ulDlCfgIdx][RGSCH_NUM_SUB_FRAMES-1];
-     maxSubframes = 2 * maxDlSubframes;
-     ue->dl.numHqDlSfInfo = maxSubframes;
-     rgSCHUtlAllocSBuf(cell->instIdx,
-           (Data **)&ue->dl.dlSfHqInfo, sizeof(RgSchDlHqInfo) * (ue->dl.numHqDlSfInfo));
-
-#else
-     ue->dl.numHqDlSfInfo = RGSCH_NUM_DL_slotS;
-#endif
-#ifndef RG_5GTF 
-     for (idx =0;idx < ue->dl.numHqDlSfInfo; idx++)
-     {
-        cmLListInit(&ue->dl.dlSfHqInfo[idx].hqPLst);
-        ue->dl.dlSfHqInfo[idx].dlSfUeLnk.node = NULLP;
-
-     } 
-#else
-     {
-        uint8_t cellIdx=0;
-        for (cellIdx = 0;cellIdx < MAX_5GTF_CELL ; cellIdx++)
-        {
-           for (idx =0;idx < ue->dl.numHqDlSfInfo; idx++)
-           {
-              cmLListInit(&ue->dl.dlSfHqInfo[cellIdx][idx].hqPLst);
-              ue->dl.dlSfHqInfo[cellIdx][idx].dlSfUeLnk.node = NULLP;
-           }
-        }
-     }
-#endif
-#ifdef LTE_ADV
-     rgSCHLaaInitDlHqInfo(cell, ue);
-#endif
-     /* CA dev End */
-
-     /* Initialize lcgIds to Invalid */
-     for (lcgCnt = 0; lcgCnt < RGSCH_MAX_LCG_PER_UE; lcgCnt++)
-     {
-        ue->ul.lcgArr[lcgCnt].lcgId = RGSCH_INVALID_LCG_ID;
-     }
-     if(raCb != NULLP)
-     {
-        rgSCHCfgRgrUePhrMsg3(cell,raCb,ue,errInfo);
-        /* Moved this code out of rgSCHCfgRgrUePhrMsg3()
-         * as it was not the appropriate place to 
-         * do this. */
-        if (raCb->raState == RGSCH_RA_MSG4_DONE)
-        {
-           DU_LOG("\nERROR  -->  SCH : RNTI:%d RaCb deleted as Msg4 transmission is done",
-                 raCb->tmpCrnti);
-           rgSCHRamDelRaCb(cell, raCb, FALSE);
-        }
-     }
-     /* Initialize uplink HARQ related information for UE */
-     rgSCHUhmRgrUeCfg(cell, ue, ueCfg);
-     cmInitTimers(&ue->bsrTmr, 1);
-#ifdef RGR_V1
-     /* Added periodic BSR timer */
-     cmInitTimers(&ue->bsrTmr, 1);
-
-     /* Fix - Added proper configuration from U-ARM */
-     if(ueCfg->ueBsrTmrCfg.isPrdBsrTmrPres == TRUE)
-     {
-        ue->ul.bsrTmrCfg.isPrdBsrTmrPres = TRUE;
-        ue->ul.bsrTmrCfg.prdBsrTmr       = ueCfg->ueBsrTmrCfg.prdBsrTmr;
-        ue->ul.bsrTmrCfg.retxBsrTmr      = ueCfg->ueBsrTmrCfg.retxBsrTmr;
-     }
-    
-#endif
-     /* Initialize downlink HARQ related information for UE */
-     rgSCHDhmRgrUeCfg(cell, ue, ueCfg, errInfo);
-
-     /* Initialize MeasureGap and Acknack Rep Information for UE */
-     if((rgSCHMeasGapANRepUeCfg(cell, ue, ueCfg)) != ROK)
-     {
-        DU_LOG("\nERROR  -->  SCH : Measurement Gap and"
-                 " AckNack Rep failed in Config for CRNTI:%d", ueCfg->crnti);
-        break;
-     }
-
-
-#ifdef LTE_TDD
-     if((rgSCHUtlAllocUeANFdbkInfo(ue,RGSCH_PCELL_INDEX)) != ROK)
-     {
-        DU_LOG("\nERROR  -->  SCH : Memomy allocation "
-                 "Failed while UE related Ack Nack Information for CRNTI:%d",
-                 ueCfg->crnti);
-        break;
-     }
-     ue->dl.ackNackMode = ueCfg->ackNackModeEnum;
-#endif /* LTE_TDD */
-
-     /* Insert Ue */
-     rgSCHDbmInsUeCb(cell, ue);
-
-#ifdef TFU_UPGRADE
-     /*  Int ialize APeriodic CQI/PMI/RI Information for UE */
-
-      DU_LOG("\nDEBUG  -->  SCH : rgSCHCfgRgrUeCfg CellID=%d UeId =%d AcqiCfg Pres =%d", cell->cellId, ue->ueId,\
-      ueCfg->ueDlCqiCfg.aprdCqiCfg.pres);
-
-      /*Store Trigger Set Bit String to UE */
-      
-      ret = rgSCHCfgACqiUeCfg(cell,ue, (RG_SCH_CMN_GET_ACQICB(ue,cell)),ue->mimoInfo.txMode,
-           &ueCfg->ueDlCqiCfg.aprdCqiCfg, ue->ueCatEnum);
-
-     ue->cqiRiWritIdx = 0;
-     ue->cqiRiReadIdx = 0;
-     /*   Initialize Periodic CQI/PMI, RI Information for UE  */
-     ret = rgSCHCfgPCqiUeCfg(cell, ue, &ueCfg->ueDlCqiCfg.prdCqiCfg, 
-           ue->ueCatEnum);
-
-     /*   Initialize UL SRS Information for UE  */
-     ret = rgSCHCfgSrsUeCfg(cell, ue, &ueCfg->srsCfg);
-
-     /*   Initialize SR Information for UE  */
-     ret = rgSCHCfgSrUeCfg(cell, ue, &ueCfg->srCfg);
-#endif 
-
-#ifdef LTEMAC_HDFDD
-     if (rgSCHHdFddUeCfg(cell, ue, ueCfg->isHdFddEnbld) != ROK)
-     {
-        DU_LOG("\nERROR  -->  SCH : Could not do HD-FDD config for CRNTI:%d",ueCfg->crnti);
-        break;
-     }
-
-#endif /* LTEMAC_HDFDD */
-     /* ccpu00117452 - MOD - Changed macro name from
-        RGR_RRM_DLPWR_CNTRL to RGR_CQI_REPT */
-#ifdef RGR_CQI_REPT
-     ue->cqiReptCfgInfo.numColltdCqiRept =
-        ueCfg->ueCqiReptCfg.numColltdCqiRept;
-#endif /* End of RGR_CQI_REPT */
-#ifdef TFU_UPGRADE
-     RG_SCH_CMN_GET_PA(ue,cell).pres = FALSE;
-     if (RG_SCH_UE_CFG_ISPAPRSNT(ueCfg->uePdschDedCfg.uepACfg))
-     {
-        RG_SCH_CMN_GET_PA(ue,cell).pres = TRUE;
-        RG_SCH_CMN_GET_PA(ue,cell).val = ueCfg->uePdschDedCfg.uepACfg.pA;
-     }
-#endif
-     ue->isDrxEnabled = ueCfg->ueDrxCfg.isDrxEnabled;
-
-     if ( ue->isDrxEnabled )
-     {
-        if((rgSCHDrxUeCfg(cell,ue,ueCfg)) != ROK )
-        {
-           DU_LOG("\nERROR  -->  SCH : DRX configuration failed");
-           break;
-        }
-     }
-
-     /* LTE_ADV_FLAG_REMOVED_START */
-     if ((cell->lteAdvCb.sfrCfg.status == RGR_ENABLE) ||    \
-        (cell->lteAdvCb.absCfg.status == RGR_ENABLE))
-     {
-        ue->lteAdvUeCb.rgrLteAdvUeCfg = ueCfg->ueLteAdvCfg;
-     }   
-     /* LTE_ADV_FLAG_REMOVED_END */
-
-#ifdef TENB_STATS
-     ue->tenbStats = TSL2AllocUeStatsBlk(ue->ueId);
-     ue->tenbStats->stats.rnti = ue->ueId;
-#endif
-#ifdef LTE_ADV
-     /*Update A Value for PCell TBs*/
-     ue->f1bCsAVal = rgSCHUtlGetMaxTbSupp(ue->mimoInfo.txMode); 
-     DU_LOG("\nERROR  -->  SCH :  UeCfg A value is %d\n",ue->f1bCsAVal);
-#endif
-     errInfo->errCause = RGSCHERR_NONE;
-
-     ue->accessStratumRls = ueCfg->accessStratumRls;
-     if (ue->numSCells > 0)
-     {
-        /* 2 bit CSI */
-        rgSCHUtlUpdUeDciSize(cell, ue, TRUE);
-     }
-     else
-     {
-        /* 1 bit CSI Access Stratum Release Change */
-        rgSCHUtlUpdUeDciSize(cell, ue, FALSE);
-     }
-
-     return ROK;
-  }while(0);
-
-  if (ue)
-  {
-     rgSCHCfgFreeUeCb(cell, ue);
-  }
-  return RFAILED;
-}  /* rgSCHCfgRgrUeCfg */
-
-/**
- * @brief Handler for PHR for MSG3.
- *
- * @details
- *
- *     Function : rgSCHCfgRgrUePhrMsg3
- *
- *     Processing Steps:
- *       Handle PHR related config for MSG3
- *
- *  @param[in]  RgSchCellCb  *cell
- *  @param[in]  RgrUeCb     *ueCb
- *  @param[in]  RgSchRaCb    *raCb
- *  @param[out] RgSchErrInfo *errInfo
- **/
-static Void rgSCHCfgRgrUePhrMsg3
-(
-RgSchCellCb  *cell,
-RgSchRaCb    *raCb,
-RgSchUeCb    *ue,
-RgSchErrInfo *errInfo
-)
-{
-
-   /* Record msg3 allocation in the UE */
-   rgSCHUtlRecMsg3Alloc(cell, ue, raCb);
-
-   /* If raCb received PHR, update scheduler */
-   if(raCb->phr.pres == TRUE)
-   {
-      ue->macCeRptTime = raCb->msg3AllocTime; 
-      rgSCHUtlUpdPhr(cell, ue, raCb->phr.val, errInfo);
-   }
-
-   return;
-}
-
-/**
- *
- * @details
- *
- *     Function : rgSCHDynCfiReCfg
- *
- *  @param[in]  RgSchCellCb   *cell
- *              Bool          isDynCfiEnb 
- *  @return  S16
- *      -# ROK
- *      -# RFAILED
- **/
-Void rgSCHDynCfiReCfg
-(
-RgSchCellCb   *cell,
-Bool          isDynCfiEnb
-)
-{            
-   uint8_t                idx;
-   RgSchCmnDlCell    *cellSchDl = RG_SCH_CMN_GET_DL_CELL(cell);
-
-   if(isDynCfiEnb)
-   {
-      cell->dynCfiCb.ttiCnt = 0;
-      cellSchDl->newCfi = cellSchDl->currCfi;
-   }   
-   else
-   {
-      /* Resetting the parameters*/
-      cell->dynCfiCb.cceFailCnt          = 0;
-      cell->dynCfiCb.cceFailSum          = 0;
-      cell->dynCfiCb.prevCceFailIdx      = 0;
-
-      for(idx = 0; idx < cell->dynCfiCb.numFailSamples; idx++)
-      {
-         cell->dynCfiCb.cceFailSamples[idx] = 0;
-      }   
-
-      cell->dynCfiCb.cceUsed             = 0;
-      cell->dynCfiCb.lowCceCnt           = 0;
-      cell->dynCfiCb.ttiCnt = 0;
-   }   
-}
-/**
- * @brief Handler for the cell reconfiguration request from RRM to MAC.
- *
- * @details
- *
- *     Function : rgSCHCfgRgrCellRecfg
- *
- *     Processing Steps:
- *      - Invoke SCH with cell control block to update
- *        scheduler specific information.
- *      - Update cell control block with the values recieved in the
- *        configuration.
- *      - If successful, return ROK else RFAILED.
- *
- *  @param[in]  RgSchCellCb   *cell
- *  @param[in]  RgrCellRecfg  *cellRecfg
- *  @param[out] RgSchErrInfo  *errInfo
- *  @return  S16
- *      -# ROK
- *      -# RFAILED
- **/
-S16 rgSCHCfgRgrCellRecfg
-(
-RgSchCellCb   *cell,
-RgrCellRecfg  *cellRecfg,
-RgSchErrInfo  *errInfo
-)
-{
-   S16      ret;
-   Inst    inst = cell->instIdx;
-/* LTE_ADV_FLAG_REMOVED_START */
-   uint8_t      i = 0;
-   uint16_t     len; /* dsfr_pal_fixes ** 21-March-2013 ** SKS */
-/* LTE_ADV_FLAG_REMOVED_END */
-   
-   errInfo->errCause = RGSCHERR_CFG_RGR_CELL_RECFG;
-   
-   /* Invoke scheduler to update scheduler specific information */
-   ret =  rgSCHUtlRgrCellRecfg(cell, cellRecfg, errInfo);
-   if (ret != ROK)
-   {
-     DU_LOG("\nERROR  -->  SCH : RGR Cell re-configuration failed "
-          "at Scheduler ");
-      return RFAILED;
-   }
-   
-   /* Invoke DHM to update DHM specific information */
-   rgSCHDhmRgrCellRecfg(cell, cellRecfg, errInfo);
-
-      /* PUCCH Reconfiguration */
-   if (cellRecfg->recfgTypes & RGR_CELL_PUCCH_RECFG)
-   {
-      cell->pucchCfg = cellRecfg->pucchRecfg;
-   }
-   /* SRS Reconfiguration */
-   if (cellRecfg->recfgTypes & RGR_CELL_SRS_RECFG)
-   {
-      cell->srsCfg.isSrsCfgPres = cellRecfg->srsRecfg.isSrsCfgSetup;
-      if(cellRecfg->srsRecfg.isSrsCfgSetup)
-      {
-         cell->srsCfg.srsCfgPrdEnum = cellRecfg->srsRecfg.srsCfgPrdEnum;
-         cell->srsCfg.srsBwEnum = cellRecfg->srsRecfg.srsBwEnum;
-         cell->srsCfg.srsTxOffst =
-            rgSrsTxOffstTbl[cellRecfg->srsRecfg.srsSubFrameCfg];
-         /*ccpu00116923 - ADD - Srs Present support */
-#ifdef TFU_UPGRADE
-         cell->srsCfg.srsSubFrameCfg = cellRecfg->srsRecfg.srsSubFrameCfg;
-#endif
-      }
-   }
-
-   /* RACH Reconfiguration */
-   if (cellRecfg->recfgTypes & RGR_CELL_RACH_RECFG)
-   {
-      cell->rachCfg = cellRecfg->rachRecfg;
-   }
-
-   /* ccpu00132256:MOD: Moved this assignment from Validation to here.*/
-   if (cellRecfg->recfgTypes & RGR_CELL_TMRS_RECFG)
-   {
-      cell->t300TmrVal = cellRecfg->t300TmrVal;
-   }
-#ifdef RGR_SI_SCH
-   /* SI Reconfiguration */
-   if (cellRecfg->recfgTypes & RGR_CELL_SI_RECFG)
-   {
-      /*Set the specified SI configuration. */
-      cell->siCb.newSiCfg = cellRecfg->siReCfg;
-      /* Set the Bit mask for SI re-configuration */
-      cell->siCb.siBitMask |= RGSCH_SI_SICFG_UPD; 
-#ifdef EMTC_ENABLE
-      if(cell->emtcEnable)
-      {
-      rgSchEmtcUpdSiCfg(cell, cellRecfg);
-      }
-#endif
-   }
-#endif /*RGR_SI_SCH */
-
-   /* Overload RACH Control changes */
-   if (cellRecfg->recfgTypes & RGR_CELL_CNTRL_CMD_RECFG)
-   {
-      if (cellRecfg->cntrlCmdCfg.cmdType == RGR_CNTRL_CMD_RACH_OVRLD)
-      {
-         cell->overLoadBackOffEnab = cellRecfg->cntrlCmdCfg.cmdDesc.rachOvrLd.backOffEnb;
-         cell->overLoadBackOffval = cellRecfg->cntrlCmdCfg.cmdDesc.rachOvrLd.backOffVal;
-      }
-      else if (cellRecfg->cntrlCmdCfg.cmdType == RGR_CNTRL_CMD_CPU_OVRLD)
-      {
-         if( ROK != rgSCHUtlResetCpuOvrLdState(cell, cellRecfg->cntrlCmdCfg.cmdDesc.\
-                                          cpuOvrLd.instruction))
-         {
-            DU_LOG("\nERROR  -->  SCH : Invalid CPU OvrLd Ins %d for cell", 
-              cellRecfg->cntrlCmdCfg.cmdDesc.cpuOvrLd.instruction);
-            return RFAILED;
-         }
-      }
-   }
-
-/* LTE_ADV_FLAG_REMOVED_START */
-   if (cellRecfg->recfgTypes & RGR_CELL_LTEA_FEATURE_RECFG)
-   {
-      if(cellRecfg->rgrLteAdvCfg.pres & RGR_ABS)
-      {
-         cell->lteAdvCb.absCfg =
-            cellRecfg->rgrLteAdvCfg.absCfg;         
-      }
-      if(cellRecfg->rgrLteAdvCfg.pres & RGR_SFR)
-      {
-         memcpy(&cell->lteAdvCb.sfrCfg, &cellRecfg->rgrLteAdvCfg.sfrCfg,
-               sizeof(RgrSfrConfig));
-         /* dsfr_pal_fixes ** 21-March-2013 ** SKS */
-         if (cellRecfg->rgrLteAdvCfg.sfrCfg.status == RGR_ENABLE)
-         {
-            for(i = 0; i < RGSCH_NUM_DL_slotS; i++)
-            {
-               /*initialise the pools of CC and CE*/
-               if(rgSchSFRTotalPoolInit(cell, cell->subFrms[i]))
-               {
-                  return RFAILED;
-               }
-            }
-         }
-         else
-         {
-            for(i = 0; i < RGSCH_NUM_DL_slotS; i++)
-            {
-               /*initialise the pools of CC and CE*/
-               rgSchSFRTotalPoolFree(&cell->subFrms[i]->sfrTotalPoolInfo, cell);
-            }
-
-            if (cell->lteAdvCb.dsfrCfg.status == RGR_ENABLE)
-            {
-               /* releasing rntp info val from each subframe */ 
-               for(i = 0; i < RGSCH_NUM_DL_slotS; i++)
-               {
-                  rgSchDSFRRntpInfoFree(&cell->subFrms[i]->rntpInfo, cell, cell->bwCfg.dlTotalBw);
-               }
-
-               /* releasing RNTP Aggregation Info from CellCb*/
-               rgSchDSFRRntpInfoFree(&cell->rntpAggrInfo, cell, cell->bwCfg.dlTotalBw); 
-
-               cell->lteAdvCb.dsfrCfg.status = RGR_DISABLE;
-            }
-         }
-      }
-      /* dsfr_pal_fixes ** 21-March-2013 ** SKS ** Start */
-      if(cellRecfg->rgrLteAdvCfg.pres & RGR_DSFR)
-      {
-         cell->lteAdvCb.dsfrCfg =
-            cellRecfg->rgrLteAdvCfg.dsfrCfg;
-         if (cell->lteAdvCb.dsfrCfg.status == RGR_ENABLE)
-         {
-            for(i = 0; i < RGSCH_NUM_DL_slotS; i++)
-            {
-               /*initialise the pools of CC and CE*/
-               if(rgSchDSFRRntpInfoInit(&cell->subFrms[i]->rntpInfo,cell,cell->bwCfg.dlTotalBw))
-               {
-                  return RFAILED;
-               }
-            }
-            /*Calculating the length of RNTP array based on Dl Bandwidth */
-            len = (uint16_t)((cell->bwCfg.dlTotalBw % 8 == 0) ? (cell->bwCfg.dlTotalBw/8) : (cell->bwCfg.dlTotalBw/8 + 1)); /* KW fix for LTE_ADV */
-            if(cell->rntpAggrInfo.pres == NOTPRSNT)
-            {   
-               if((rgSCHUtlAllocSBuf(inst, (Data**)&(cell->rntpAggrInfo.val),
-                           (len * sizeof(uint8_t)))) != ROK)
-               {
-                  DU_LOG("\nERROR  -->  SCH : Memory allocation FAILED for RNTP Alloc");
-                  return RFAILED;
-               }
-               cell->rntpAggrInfo.pres = PRSNT_NODEF;
-               cell->rntpAggrInfo.len  = len; 
-            }
-         }
-         /* in case if DSFR is disabled, need to free RNTP pattern val*/
-         else
-         {
-            /* releasing rntp info val from each subframe */ 
-            for(i = 0; i < RGSCH_NUM_DL_slotS; i++)
-            {
-               rgSchDSFRRntpInfoFree(&cell->subFrms[i]->rntpInfo, cell, cell->bwCfg.dlTotalBw);
-            }
-
-            /* releasing RNTP Aggregation Info from CellCb*/
-            rgSchDSFRRntpInfoFree(&cell->rntpAggrInfo, cell, cell->bwCfg.dlTotalBw);
-         }   
-      }
-      /* dsfr_pal_fixes ** 21-March-2013 ** SKS ** End */
-   }
-/* LTE_ADV_FLAG_REMOVED_END */
-
-   /* Dynamic CFI cell Reconfiguration */
-   if(cellRecfg->recfgTypes & RGR_CELL_DYN_CFI_RECFG)
-   {
-      if(cell->dynCfiCb.isDynCfiEnb != cellRecfg->isDynCfiEnb)
-      {
-         if(cell->dynCfiCb.switchOvrInProgress)  
-         {
-            cell->dynCfiCb.dynCfiRecfgPend = TRUE;
-         }  
-         else
-         { 
-            cell->dynCfiCb.isDynCfiEnb = cellRecfg->isDynCfiEnb;
-            rgSCHDynCfiReCfg(cell, cellRecfg->isDynCfiEnb); 
-         }
-      }   
-      else
-      {
-         /* To hanlde the case where reconfiguration comes for disabling 
-          * and then enabling before switchover period expires */
-         cell->dynCfiCb.dynCfiRecfgPend = FALSE;
-      }   
-   }   
-   /* Dynamic config of AUTO chnage flag */
-   if(cellRecfg->recfgTypes & RGR_CELL_AUTO_CFG_MODE_RECFG)
-   {
-      if(cell->isAutoCfgModeEnb != cellRecfg->isAutoCfgModeEnb)
-      {
-         cell->isAutoCfgModeEnb = cellRecfg->isAutoCfgModeEnb;
-      }
-   }
-   {
-     if(cell->isAutoCfgModeEnb)
-     {
-        DU_LOG("\nINFO  -->  SCH : Auto Mode Cfg enabled durint cell recfg\n");
-     }
-   }
-
-   if (cellRecfg->recfgTypes & RGR_CELL_CSG_PARAM_RECFG)
-   {
-      cell->minDlResNonCsg = cellRecfg->csgParamCfg.minDlResNonCsg;
-      cell->minUlResNonCsg = cellRecfg->csgParamCfg.minUlResNonCsg;
-   }
-  
-   errInfo->errCause = RGSCHERR_NONE;
-   return ROK;
-}  /* rgSCHCfgRgrCellRecfg */
-
-/**
- * @brief Handler for the UE reconfiguration request from RRC to MAC.
- *
- * @details
- *
- *     Function : rgSCHCfgRgrUeRecfgRntiChg
- *
- *     Processing Steps:
- *      - If rnti changes,
- *        - Invoke RAM for UE reconfiguration.
- *        - Delete old UE from the list.
- *        - Update the new rnti and re-insert the UE in the list.
- *      - If successful, return ROK else RFAILED.
- *
- *  @param[in]  RgSchCellCb  *cell
- *  @param[in]  RgSchUeCb    *ue
- *  @param[in]  RgrUeRecfg   *ueRecfg
- *  @param[out] RgSchErrInfo *errInfo
- *  @return  S16
- *      -# ROK
- *      -# RFAILED
- **/
-static S16 rgSCHCfgRgrUeRecfgRntiChg
-(
-RgSchCellCb    *cell,
-RgSchUeCb      *ue,
-RgrUeRecfg     *ueRecfg,
-RgSchErrInfo   *errInfo
-)
-{
-#ifdef LTE_ADV
-   uint8_t          sCellIdx;
-#endif
-   S16          ret;
-   RgSchRaCb    *raCb;
-   RgSchRaCb    *oldRaCb;
-   RgSchDlHqEnt **hqEnt = &(RG_SCH_CMN_GET_UE_HQE(ue, cell));
-   uint8_t           idx;
-    
-   /* Handle CRNTI change in reconfiguration */
-   if (ueRecfg->oldCrnti != ueRecfg->newCrnti)
-   {
-      RgSchRntiLnk   *oldRntiLnk=NULLP;
-      CmLteRnti      oldRnti = 0;
-      if ((raCb = rgSCHDbmGetRaCb(cell, ueRecfg->newCrnti)) == NULLP)
-      {
-         DU_LOG("\nERROR  -->  SCH : UEID:No RaCb exists while"
-              "Reconfig for OLD CRNTI:%d NEW CRNTI:%d",ueRecfg->oldCrnti,ueRecfg->newCrnti);
-         return RFAILED;
-      }
-
-      /* rntiLnk does not exist for a HandIn UE. Hence this check. */
-      if(ue->rntiLnk)
-      {
-         oldRntiLnk = ue->rntiLnk;
-      }
-      else
-      {
-        /* Fix : syed HO UE does not have a valid ue->rntiLnk */
-         oldRnti = ue->ueId;
-      }
-     
-      DU_LOG("\nINFO  -->  SCH : UE ID CHNG OLD %d new %d",ueRecfg->oldCrnti, ueRecfg->newCrnti); 
-
-      /* Fix : syed Deleting Old DL HqEnt. It would be assigned after
-       * reest RACH(msg4) is completed. */
-      rgSCHDhmDelHqEnt(cell, hqEnt);
-
-      /* Initialize RAM related information for UE */
-      ret = rgSCHRamRgrUeCfg(cell, ue, raCb, errInfo);
-      if (ret != ROK)
-      {
-         DU_LOG("\nERROR  -->  SCH : RAM Handling for UE Reconfig failed"
-              "for OLD CRNTI:%d NEW CRNTI:%d",ueRecfg->oldCrnti,ueRecfg->newCrnti);
-         return RFAILED;
-      }
-      /* Delete Ue from the ue list */
-      rgSCHDbmDelUeCb(cell, ue);
-
-#ifdef LTE_ADV
-      if (ue->numSCells)
-      {
-         for ( sCellIdx = 1; sCellIdx < CM_LTE_MAX_CELLS; sCellIdx++)
-         {
-            if(ue->cellInfo[sCellIdx] != NULLP)
-            {
-               rgSCHDbmDelUeCb(ue->cellInfo[sCellIdx]->cell, ue);
-            }
-         }
-      }
-#endif
-
-      /* Inititialize Ue control block */
-      ue->ueId = ueRecfg->newCrnti;
-      DU_LOG("\nDEBUG  -->  SCH : Changing RNTI from %d to %d",
-            ueRecfg->oldCrnti, 
-            ueRecfg->newCrnti);
-#ifdef EMTC_ENABLE 
-      if(ue->isEmtcUe)
-      {
-         rgSCHUtlUpdEmtcY(ue);
-      }
-#endif
-      
-      /* Fix ccpu00122631: PCell_Reest: Updating new Rnti in all the cells
-       * dlAllocCb 
-       */
-      for(idx = 0; idx < CM_LTE_MAX_CELLS; idx++)
-      {
-         if(ue->cellInfo[idx])
-         {
-            ue->cellInfo[idx]->dlAllocCb.rnti = ueRecfg->newCrnti;
-         }
-      }
-
-      rgSCHUtlRecMsg3Alloc(cell, ue, raCb);
-
-      /* If raCb received PHR, update scheduler */
-      if(raCb->phr.pres == TRUE)
-      {
-         ue->macCeRptTime = raCb->msg3AllocTime; 
-         rgSCHUtlUpdPhr(cell, ue, raCb->phr.val, errInfo);
-      }
-
-#ifdef RGR_V2  /* Acc Fix */
-     if(TRUE == ue->isDrxEnabled)
-     {
-         ueRecfg->ueDrxRecfg.isDrxEnabled = TRUE;
-         ret = rgSCHDrxUeReCfg(cell,ue,ueRecfg);  
-
-         if ( ret != ROK )
-         {
-             DU_LOG("\nERROR  -->  SCH : UE DRX re-est failed"
-              "for OLD CRNTI:%d NEW CRNTI:%d",ueRecfg->oldCrnti,ueRecfg->newCrnti);
-             return RFAILED;
-         }
-     }
-#endif /* Acc Fix */
-
-      /* Re-insert updated Ue */
-      rgSCHDbmInsUeCb(cell, ue);
-
-#ifdef LTE_ADV
-      if (ue->numSCells)
-      {
-         for ( sCellIdx = 1; sCellIdx < CM_LTE_MAX_CELLS; sCellIdx++)
-         {
-            if(ue->cellInfo[sCellIdx] != NULLP)
-            {
-               rgSCHDbmInsUeCb(ue->cellInfo[sCellIdx]->cell, ue);
-            }
-         }
-      }
-#endif
-
-
-#ifdef TENB_STATS
-      ue->tenbStats->stats.rnti = ue->ueId;
-#endif
-
-      /* Fix : syed If MSG4 is done, since corresponding ueCb
-       * is ready, the raCb should be cleared immediately.
-       * Otherwise it would remain in the cell until timed out
-       * and till then the hq Feedbacks will be assumed to be
-       * for msg4 */
-      if (raCb->raState == RGSCH_RA_MSG4_DONE)
-      {
-         DU_LOG("\nDEBUG  -->  SCH : RNTI:%d with RaCb deleted as Msg4 transmission is done", 
-               raCb->tmpCrnti);
-         rgSCHRamDelRaCb(cell, raCb, FALSE);
-      }
-      /* Fix : syed moving the UL CQI initialization to UERESET */
-
-      /* Release Older rnti */
-      if(oldRntiLnk)
-      {
-         /* This is the rare case in which back to back reestablishment is 
-          * happening and previous re-est was not done completely (MSG4 was 
-          * not done) for an UE, and again re-est is triggered for the same 
-          * UE. We are deleting the old RA CB for the previous re-est which 
-          * still exist due to MSG4 not transmitted successfully */
-         if ((oldRaCb = rgSCHDbmGetRaCb(cell, oldRntiLnk->rnti)) != NULLP)
-         {
-            rgSCHRamDelRaCb(cell, oldRaCb, FALSE);
-         }
-
-         rgSCHUtlRlsRnti(cell, oldRntiLnk, TRUE, ueRecfg->newCrnti);
-      }
-      else
-      {
-        /* Fix : syed HO UE does not have a valid ue->rntiLnk */
-            /* Just indicate to MAC, no need to release at SCH */
-         DU_LOG("\nDEBUG  -->  SCH : HO OldRnti:%d RLS and NewRnti:%d CHNG IND TO MAC",
-               oldRnti, ueRecfg->newCrnti);
-         rgSCHUtlIndRntiRls2Mac(cell, oldRnti, TRUE, ueRecfg->newCrnti);
-      }
-   }
-   return ROK;
-}
-/**
- * @brief Handler for the UE reconfiguration request from RRC to MAC.
- *
- * @details
- *
- *     Function : rgSCHCfgRgrUeRecfg
- *
- *     Processing Steps:
- *      - If rnti changes,
- *        - Invoke RAM for UE reconfiguration.
- *        - Delete old UE from the list.
- *        - Update the new rnti and re-insert the UE in the list.
- *      - Update the UE control block with the reconfigured values.
- *      - Invoke SCH, UHM and DHM with updated UE control block to 
- *        update scheduler, uplink HARQ and downlink HARQ specific
- *        parameters.
- *      - If successful, return ROK else RFAILED.
- *
- *  @param[in]  RgSchCellCb  *cell
- *  @param[in]  RgSchUeCb    *ue
- *  @param[in]  RgrUeRecfg   *ueRecfg
- *  @param[out] RgSchErrInfo *errInfo
- *  @return  S16
- *      -# ROK
- *      -# RFAILED
- **/
-S16 rgSCHCfgRgrUeRecfg
-(
-RgSchCellCb    *cell,
-RgSchUeCb      *ue,
-RgrUeRecfg     *ueRecfg,
-RgSchErrInfo   *errInfo
-)
-{
-   S16          ret;
-#ifdef LTE_ADV
-   Bool dciChange = TRUE;
-#endif
-   
-   errInfo->errCause = RGSCHERR_CFG_RGR_UE_RECFG;
-
-#ifdef LTE_ADV
-   if (ue->numSCells > 0)
-   {
-      dciChange = FALSE;
-   }
-   if ((ueRecfg->ueRecfgTypes & RGR_UE_UE_ACCESS_STRATUM_REL_RECFG) && \
-         (ue->accessStratumRls != ueRecfg->accessStratumRls))
-   {
-      ue->accessStratumRls = ueRecfg->accessStratumRls;
-      dciChange = TRUE;
-   }
-
-   /* if SCELL_RECFG is present , no other 
-    * type will be present. Process Scell addition
-    * and return 
-    * */
-   if (ueRecfg->ueRecfgTypes & RGR_UE_SCELL_ADD_RECFG)
-   {
-      ret = rgSCHSCellCfgUeCfg(cell, ue, ueRecfg, errInfo);
-      if( ret != ROK)
-      {
-         errInfo->errCause = RGSCHERR_CFG_INVALID_RGR_UE_SCELL_RECFG;
-         /*FH: SCell config failed for a scell index hence revert all successful
-          * Scell config and send negative confirmation to APP*/
-         rgSCHSCellCfgUeCfgRollBack(cell, ue, ueRecfg);
-         return RFAILED;
-      }
-   }
-   if (dciChange == TRUE)
-   {
-      if (ue->numSCells > 0)
-      {
-         /* 2 bit CSI */
-         rgSCHUtlUpdUeDciSize(cell, ue, TRUE);
-      }
-      else
-      {
-         /* 1 bit CSI Access Stratum Release Change */
-         rgSCHUtlUpdUeDciSize(cell, ue, FALSE);
-      }
-   }
-   if (ueRecfg->ueRecfgTypes & RGR_UE_SCELL_PUCCH_RECFG)
-   {
-      ret = rgSCHSCellCfgUePucchReCfg(cell, ue, ueRecfg, errInfo);
-      if( ret != ROK)
-      {
-         errInfo->errCause = RGSCHERR_CFG_INVALID_RGR_UE_SCELL_PUCCH_RECFG;
-         return RFAILED;
-      }
-   }
-#else
-   if ((ueRecfg->ueRecfgTypes & RGR_UE_UE_ACCESS_STRATUM_REL_RECFG) && \
-         (ue->accessStratumRls != ueRecfg->accessStratumRls))
-   {
-      ue->accessStratumRls = ueRecfg->accessStratumRls;
-      rgSCHUtlUpdUeDciSize(cell, ue, FALSE);
-   }
-#endif /* LTE_ADV */
-
-   if (ueRecfg->ueRecfgTypes)
-   {
-      /* Update scheduler related information for UE */
-      ret = rgSCHUtlRgrUeRecfg(cell, ue, ueRecfg, errInfo);
-      if (ret != ROK)
-      {
-         DU_LOG("\nERROR  -->  SCH : Scheduler handling while reconfig failed"
-              "for OLD CRNTI:%d NEW CRNTI:%d",ueRecfg->oldCrnti,ueRecfg->newCrnti);
-         return RFAILED;
-      }
-
-      /* Update uplink HARQ related information for UE */
-      rgSCHUhmRgrUeRecfg(cell, ue, ueRecfg);
-
-      /* Update TA related information for UE */
-      if (ueRecfg->ueRecfgTypes & RGR_UE_TATMR_RECFG)
-      {
-         rgSCHCfgUeTaRecfg(cell, ue, ueRecfg, errInfo);
-      }
-
-      /*Update Measurement Gap and AckNack Details */
-      /* After merging from 2.2 */
-      if (ueRecfg->ueRecfgTypes & RGR_UE_ACKNACK_MEASGAP_RECFG)
-      {
-         ret = rgSCHMeasGapANRepUeRecfg(cell, ue, ueRecfg);
-         if (ret != ROK)
-         {
-            DU_LOG("\nERROR  -->  SCH : Measurement Gap and"
-                     "AckNack Rep Recfg failed for OLD CRNTI:%d NEW CRNTI:%d",
-                      ueRecfg->oldCrnti,ueRecfg->newCrnti);
-            return RFAILED;
-         }
-      }
-      if (ueRecfg->ueRecfgTypes & RGR_UE_BSRTMR_RECFG)
-      {
-         cmInitTimers(&ue->bsrTmr, 1);
-         ue->ul.bsrTmrCfg = ueRecfg->ueBsrTmrRecfg;
-         if ((ue->ul.bsrTmrCfg.isPrdBsrTmrPres) && 
-               (ue->ul.bsrTmrCfg.prdBsrTmr == 0xFFFF))
-         {
-            ue->ul.bsrTmrCfg.isPrdBsrTmrPres = FALSE;
-         }
-      }
-   }
-
-   if (RFAILED == rgSCHCfgRgrUeRecfgRntiChg (cell, ue, ueRecfg, errInfo))
-   {
-       DU_LOG("\nERROR  -->  SCH : RNTI change "
-               "failed for OLD CRNTI:%d NEW CRNTI:%d",
-                ueRecfg->oldCrnti,ueRecfg->newCrnti);
-       return RFAILED;
-   }
-
-#ifdef TFU_UPGRADE
-   /* Re-Initialize Aperiodic CQI Information for UE*/
-   if ( ueRecfg->ueRecfgTypes & RGR_UE_APRD_DLCQI_RECFG ) 
-   {
-      ret = rgSCHCfgAcqiUeReCfg(cell, ue, &ueRecfg->aprdDlCqiRecfg, 
-            ue->ueCatEnum);
-   }
-   /*   Re-Initialize Periodic CQI/PMI, RI Information for UE  */
-   if ( ueRecfg->ueRecfgTypes & RGR_UE_PCQI_RECFG) 
-   {
-      ret = rgSCHCfgPCqiUeReCfg(cell, ue, &ueRecfg->cqiCfg, 
-            ue->ueCatEnum);
-   }
-   /*   Re-Initialize UL SRS Information for UE  */
-   if ( ueRecfg->ueRecfgTypes & RGR_UE_SRS_RECFG) 
-   {
-      ret = rgSCHCfgSrsUeReCfg(cell, ue, &ueRecfg->srsCfg);
-   }
-   /*   Re-Initialize SR Information for UE  */
-   if ( ueRecfg->ueRecfgTypes & RGR_UE_SR_RECFG) 
-   {
-      ret = rgSCHCfgSrUeReCfg(cell, ue, &ueRecfg->srCfg);
-   }
-#endif 
-
-#ifdef LTEMAC_HDFDD  
-   if(ueRecfg->isHdFddEnbld)
-   {
-        ret = rgSCHHdFddUeCfg(cell, ue, ueRecfg->isHdFddEnbld);
-        if (ret != ROK)
-        {
-           errInfo->errCause = RGSCHERR_HDFDD_SPSCFGRD;
-           return (ret);
-        }
-   }
-#endif /* LTEMAC_HDFDD */
-#ifdef RGR_V2
-  if ( ueRecfg->ueRecfgTypes & RGR_UE_DRX_RECFG)
-  {
-     ret = rgSCHDrxUeReCfg(cell,ue,ueRecfg);  
-
-     if ( ret != ROK )
-     {
-        DU_LOG("\nERROR  -->  SCH : UE DRX reconfig failed"
-               "failed for OLD CRNTI:%d NEW CRNTI:%d",
-                ueRecfg->oldCrnti,ueRecfg->newCrnti);
-        return RFAILED;
-     }
-  }
-#endif  
-/* ccpu00117452 - MOD - Changed macro name from
-   RGR_RRM_DLPWR_CNTRL to RGR_CQI_REPT */
-#ifdef RGR_CQI_REPT
-   /* CQI Reporting (N)  Re-configuration */
-   if(ueRecfg->ueRecfgTypes & RGR_UE_CQIREPT_RECFG)
-   {
-      ret = rgSCHCfgUeCqiReptReCfg(cell, ue, ueRecfg);
-      if(ret != OK)
-      {
-         errInfo->errCause = RGSCHERR_CQIREPT;
-         return (ret);
-      }
-   }
-#endif /* End of RGR_CQI_REPT */
-#ifdef TFU_UPGRADE
-   /* pA Re-configuration */
-   if((ueRecfg->ueRecfgTypes & RGR_UE_PA_RECFG) &&
-         RG_SCH_UE_CFG_ISPAPRSNT(ueRecfg->uePdschDedCfg.uepACfg))
-   {
-      RG_SCH_CMN_GET_PA(ue,cell).pres = TRUE;
-      RG_SCH_CMN_GET_PA(ue,cell).val = ueRecfg->uePdschDedCfg.uepACfg.pA;
-   }
-#endif
-
-/* LTE_ADV_FLAG_REMOVED_START */
-   if(ueRecfg->ueRecfgTypes & RGR_UE_LTEA_RECFG)
-   {
-      if(ueRecfg->ueLteAdvCfg.pres & RGR_ABS)
-      {
-         ue->lteAdvUeCb.rgrLteAdvUeCfg.isAbsUe = ueRecfg->ueLteAdvCfg.isAbsUe;
-      }
-
-      if(ueRecfg->ueLteAdvCfg.pres & RGR_SFR)
-      {
-         ue->lteAdvUeCb.rgrLteAdvUeCfg.isUeCellEdge = ueRecfg->ueLteAdvCfg.isUeCellEdge;
-      }
-   }
-/* LTE_ADV_FLAG_REMOVED_END */
-#ifdef EMTC_ENABLE
-   if(ueRecfg->ueRecfgTypes & RGR_UE_EMTC_DPLXMODE_RECFG)
-   {
-      rgSCHEmtcHdFddUeCfg (cell, ue,
-               ueRecfg->emtcUeRecfg.isHdFddEnbld);
-   }
-   if(ueRecfg->ueRecfgTypes & RGR_UE_EMTC_PO_TRIGGER)
-   {
-      rgSCHEmtcPOTrigger(cell, ue);
-   }
-#endif
-   errInfo->errCause = RGSCHERR_NONE;
-
-   return ROK;
-}  /* rgSCHCfgRgrUeRecfg */
-
-
-/**
- * @brief Handler for the logical channel reconfiguration request from
- * RRC to MAC.
- *
- * @details
- *
- *     Function : rgSCHCfgRgrLchRecfg
- *
- *     Processing Steps:
- *      - Invoke scheduler to update scheduler specific information.
- *      - Update the dedicated logical channel Cb with the reconfigured
- *        values.
- *      - If successful, return ROK else RFAILED.
- *
- *  @param[in]  RgUlCellCb  *cell
- *  @param[in]  RgUlUeCb    *ue
- *  @param[in]  RgSchUlLcCb    *ulLc
- *  @param[in]  RgSchDlLcCb    *dlLc
- *  @param[in]  RgrLchRecfg *lcRecfg
- *  @param[out] RgSchErrInfo   *errInfo
- *  @return  S16
- *      -# ROK
- *      -# RFAILED
- **/
-S16 rgSCHCfgRgrLchRecfg
-(
-RgSchCellCb    *cell,
-RgSchUeCb      *ue,
-RgSchDlLcCb    *dlLc,
-RgrLchRecfg    *lcRecfg,
-RgSchErrInfo   *errInfo
-)
-{
-   S16     ret = ROK;
-
-   errInfo->errCause = RGSCHERR_CFG_RGR_LC_RECFG;
-   /* Invoke Scheduler to update the new configuration */
-   ret = rgSCHUtlRgrLcRecfg(cell, ue, dlLc, lcRecfg, errInfo);
-   if (ret != ROK)
-   {
-      DU_LOG("\nERROR  -->  SCH : Scheduler handling for LC Recfg"
-              " failed for CRNTI:%d LCID:%d",lcRecfg->crnti,lcRecfg->lcId);
-      return RFAILED;
-   }
-
-   errInfo->errCause = RGSCHERR_NONE;
-   return ROK;
-}  /* rgSCHCfgRgrLchRecfg */
-/**
- * @brief Handler for the logical channel reconfiguration request from
- * RRC to MAC.
- *
- * @details
- *
- *     Function : rgSCHCfgRgrLcgRecfg
- *
- *     Processing Steps:
- *      - Invoke scheduler to update scheduler specific information.
- *      - Update the dedicated logical channel Cb with the re-configured
- *        values.
- *      - If successful, return ROK else RFAILED.
- *
- *  @param[in]  RgUlCellCb   *cell
- *  @param[in]  RgUlUeCb     *ue
- *  @param[in]  RgrLcgRecfg  *lcgRecfg
- *  @param[out] RgSchErrInfo *errInfo
- *  @return  S16
- *      -# ROK
- *      -# RFAILED
- **/
-S16 rgSCHCfgRgrLcgRecfg
-(
-RgSchCellCb    *cell,
-RgSchUeCb      *ue,
-RgrLcgRecfg    *lcgRecfg,
-RgSchErrInfo   *errInfo
-)
-{
-   S16     ret = ROK;
-
-   errInfo->errCause = RGSCHERR_CFG_RGR_LCG_RECFG;
-  
-   /*Added for handling LCG ReConfig if the LCG was deleted */
-   ue->ul.lcgArr[lcgRecfg->ulRecfg.lcgId].lcgId = lcgRecfg->ulRecfg.lcgId;
-
-   /* Invoke Scheduler to update the new configuration */
-   ret = rgSCHUtlRgrLcgRecfg(cell, ue, lcgRecfg, errInfo);
-   if (ret != ROK)
-   {
-      DU_LOG("\nERROR  -->  SCH : Scheduler handling for LCG Recfg"
-              " failed for CRNTI:%d LCGID:%d",lcgRecfg->crnti,lcgRecfg->ulRecfg.lcgId);
-      return RFAILED;
-   }
-
-   errInfo->errCause = RGSCHERR_NONE;
-   return ROK;
-}  /* rgSCHCfgRgrLcgRecfg */
-
-/**
- * @brief Handler for the UE Reset request from RRM to MAC.
- *
- * @details
- *
- *     Function : rgSCHCfgRgrUeReset
- *
- *     Processing Steps:
- *     - Call Measument Gap Module and Ack/Nack Module for resetting UE.
- *     - Call Common Schduler UE rest API which inturn will call scheduler
- *     specific UE Reset APis to reset UE.
- *
- *  @param[in]  RgSchCellCb    *cell
- *  @param[in]  RgSchUeCb      *ue
- *  @param[in]  RgrRst         *reset
- *  @param[out] RgSchErrInfo   *errInfo
- *  @return  S16
- *      -# ROK
- *      -# RFAILED
- **/
-S16 rgSCHCfgRgrUeReset
-(
-RgSchCellCb    *cell,
-RgSchUeCb      *ue,
-RgrRst         *reset,
-RgSchErrInfo   *errInfo
-)
-{
-   uint32_t     idx;
-   RgSchRaCb *raCb;
-
-   errInfo->errCause = RGSCHERR_CFG_RGR_UE_RESET;
-  
-   /* Setting BO of Each Logical Channel of the UE to 0 */
-   for (idx = 0; idx < RGSCH_MAX_LC_PER_UE; idx++)
-   {
-      if(ue->dl.lcCb[idx] != NULLP)
-         ue->dl.lcCb[idx]->bo = 0;
-   }
-
-   /* Reset the totalBo */
-   ue->totalBo = 0;
-   /* Call DRX module to stop all DRX timers */
-   /* ccpu00129899 */
-   if(ue->drxCb != NULLP)
-   {
-     (Void)rgSCHDrxUeDel(cell,ue);
-   }
-
-   /* ccpu00140894- Stop TXMode transiition timer if it is running*/
-   if (ue->txModeTransTmr.tmrEvnt != TMR_NONE)
-   {
-      rgSCHTmrStopTmr(cell, RG_SCH_TMR_TXMODE_TRNSTN, ue);
-      ue->txModeTransCmplt =TRUE;
-   }
-
-   /* ccpu00133470- Meas Gap should be released during RRC re-establishment */
-   rgSCHMeasGapANRepUeDel(cell, ue, FALSE);
-
-   /* Call Common scheduler which in turn will call specific scheduler for UE
-    * Reset*/
-   rgSCHUtlUeReset(cell, ue);
-#ifdef LTE_ADV
-   /*PCell which is at idx 0 is always active. Adding a line after the loop
-    *setting RGSCH_PCELL_INDEX to SCELL ACTIVE*/
-   ue->cellInfo[RGSCH_PCELL_INDEX]->sCellState = RG_SCH_SCELL_ACTIVE;
-#endif
-
-   /* In case of back to back reestablishments, when this UE's
-    * previous ReEst is still in progress and has got RESET
-    * as part of new ReEst */
-   if((raCb = rgSCHDbmGetRaCb(cell, ue->ueId)) != NULLP)
-   {
-      rgSCHRamDelRaCb(cell, raCb, FALSE);
-   }
-   /* Fix : syed set UE inactive in DL until UE is reinitialization completed */
-   ue->dl.dlInactvMask |= RG_HQENT_INACTIVE;
-   ue->ul.ulInactvMask |= RG_HQENT_INACTIVE;
-   /* [ccpu00127141] Resetting TA related parameters */
-   ue->dl.taCb.ta = RGSCH_NO_TA_RQD;
-   ue->dl.taCb.state = RGSCH_TA_IDLE;
-   
-   /*[ccpu00121813]-ADD-Initializing outstanding TA value */
-   ue->dl.taCb.outStndngTa = FALSE;
-   ue->dl.taCb.outStndngTaval = RGSCH_NO_TA_RQD;
-   
-   if (ue->dl.taCb.cfgTaTmr)
-   {
-      rgSCHTmrStartTmr (cell, ue, RG_SCH_TMR_TA, ue->dl.taCb.cfgTaTmr);
-   }
-
-#ifdef DL_LA
-   /* Resetting the Tx mode change factor on UE reset */
-   ue->mimoInfo.txModUpChgFactor = 0;
-   ue->mimoInfo.txModDownChgFactor = 0;
-#endif
-
-   errInfo->errCause = RGSCHERR_NONE;
-   return ROK;
-}  /* rgSCHCfgRgrUeReset */
-
-/**
- * @brief Handler for the cell delete request from RRM to MAC.
- *
- * @details
- *
- *     Function : rgSCHCfgRgrCellDel
- *
- *     Processing Steps:
- *      - Fetch the cell control block.
- *      - Remove the cell control block from the hash list of cells.
- *      - Free the cell control block.
- *      - If successful, return ROK else return RFAILED.
- *
- *  @param[in]  RgSchCellCb    *cell
- *  @param[in]  RgrDel         *cellDelInfo
- *  @param[out] RgSchErrInfo   *errInfo
- *  @return  S16
- *      -# ROK
- *      -# RFAILED
- **/
-S16 rgSCHCfgRgrCellDel
-(
-RgSchCellCb    *cell,
-RgrDel         *cellDelInfo,
-RgSchErrInfo   *errInfo
-)
-{ 
-
-   errInfo->errCause = RGSCHERR_CFG_RGR_CELL_DEL;
-
-   if (cell->cellId != cellDelInfo->u.cellDel.cellId)
-   {
-      DU_LOG("\nERROR  -->  SCH : Cell does not exist");
-      return RFAILED;
-   }
-
-   /* Free the active cell */
-   rgSCHCfgFreeCellCb(cell);
-
-   errInfo->errCause = RGSCHERR_NONE;
-   return ROK;
-}  /* rgSCHCfgRgrCellDel */
-
-
-/**
- * @brief Handler for the UE delete request from RRM to MAC.
- *
- * @details
- *
- *     Function : rgSCHCfgRgrUeDel
- *
- *     Processing Steps:
- *      - Fetch the UE control block.
- *      - Remove the UE control block from the hash list of UEs for the cell.
- *      - Free the UE control block.
- *      - If successful, return ROK else return RFAILED.
- *
- *  @param[in]  RgSchCellCb    *cell
- *  @param[in]  RgrDel         *ueDelInfo
- *  @param[out] RgSchErrInfo   *errInfo
- *  @return  S16
- *      -# ROK
- *      -# RFAILED
- **/
-S16 rgSCHCfgRgrUeDel
-(
-RgSchCellCb         *cell,
-RgrDel              *ueDelInfo,
-RgSchErrInfo        *errInfo
-)
-{
-   RgSchUeCb        *ue;
-   RgSchRaCb        *raCb;
-#ifdef LTE_ADV
-   Inst    inst = cell->instIdx;
-   RgSchCellCb      *secCellCb = NULLP;
-#endif
-
-   errInfo->errCause = RGSCHERR_CFG_RGR_UE_DEL;
-
-   if (cell->cellId != ueDelInfo->u.ueDel.cellId)
-   {
-      DU_LOG("\nERROR  -->  SCH : Cell does not exist CRNTI:%d",
-                ueDelInfo->u.ueDel.crnti);
-      return RFAILED;
-   }
-   if ((ue = rgSCHDbmGetUeCb(cell, ueDelInfo->u.ueDel.crnti)) == NULLP)
-   {
-      if((raCb = rgSCHDbmGetRaCb(cell, ueDelInfo->u.ueDel.crnti)) == NULLP)
-      {
-         DU_LOG("\nERROR  -->  SCH : RaCb does not exist for CRNTI:%d",ueDelInfo->u.ueDel.crnti);
-         return RFAILED;
-      }
-      else
-      {
-         /* This happens in case of Msg4 rejection */
-         raCb->toDel = TRUE;
-         return ROK;
-      }
-   }
-   else
-   {
-#ifdef LTE_ADV
-      if(ueDelInfo->u.ueScellRel.ueDelTypes & RGR_UE_SCELL_DEL_RECFG)
-      {
-         for(uint8_t idx = 0; idx < ueDelInfo->u.ueScellRel.ueSCellRelCfgInfo.numSCells; idx++)
-         {
-            if(NULLP != (secCellCb = (RgSchCellCb *)rgSchUtlGetCellCb(inst, \
-                        ueDelInfo->u.ueScellRel.ueSCellRelCfgInfo.ueSCellRelDedCfg[idx].sCellId)))
-            {
-               rgSCHUtlSndUeSCellDel2Mac(secCellCb, ue->ueId);
-               rgSCHSCellDelUeSCell(cell,ue,ueDelInfo->u.ueScellRel.ueSCellRelCfgInfo.ueSCellRelDedCfg[idx].sCellIdx);
-               ue->numSCells--;
-               if ( ue->numSCells == 0)
-               {
-                  ue->allocCmnUlPdcch = TRUE;
-               }
-            }
-         }
-         if (ue->numSCells == 0)
-         {
-            /* As there is no SCell left so DCI 0 size at UE specific search space 
-             * will be recalculated as the CSI is reduced to 1 bit */
-            rgSCHUtlUpdUeDciSize(cell, ue, FALSE);
-         }
-      }
-      else
-#endif
-      {
-         /* Delete Ue from the UE list of CELL*/
-         rgSCHDbmDelUeCb(cell, ue);
-
-#ifdef LTE_L2_MEAS
-         rgSCHDbmDelL2MUe(cell, ue);
-#endif
-
-         /* Call MeasGap and AckNakRep processing module */
-         rgSCHMeasGapANRepUeDel(cell, ue, TRUE);
-
-         /* ccpu00140894- Stop TXMode transiition timer if it is running*/
-         if (ue->txModeTransTmr.tmrEvnt != TMR_NONE)
-         {
-            rgSCHTmrStopTmr(cell, RG_SCH_TMR_TXMODE_TRNSTN, ue);
-         }
-
-         /* Call DRX module to remove UEs from various
-          * lists it maintain 
-          */
-         /* ccpu00129899 */
-         if(ue->drxCb != NULLP)
-         {
-            (Void)rgSCHDrxUeDel(cell,ue);
-            /* Free Ue */
-         }
-         /*Fix: If RA CB exists, delete it*/
-         if((raCb = rgSCHDbmGetRaCb(cell, ueDelInfo->u.ueDel.crnti)) != NULLP)
-         {
-            /* Fix : syed RNTI was getting released twice, once by racb del 
-             * and subsequently by ueDel. Let it get released by ueDel alone */       
-            rgSCHRamDelRaCb(cell, raCb, FALSE);
-         }
-#ifdef EMTC_ENABLE
-         if(ue->isEmtcUe)
-         {
-            rgSCHEmtcUeDel(cell, ue);
-         }
-#endif
-
-         rgSCHCfgFreeUeCb(cell, ue);
-
-         errInfo->errCause = RGSCHERR_NONE;
-
-      }
-      return ROK;
-   }
-}  /* rgSCHCfgRgrUeDel */
-
-
-/**
- * @brief Handler for the logical channel delete request from
- * RRM to MAC.
- *
- * @details
- *
- *     Function : rgSCHCfgRgrLcDel
- *
- *     Processing Steps:
- *      - Fetch the logical channel control block.
- *      - Free the logical channel control block.
- *      - If successful, return ROK else return RFAILED.
- *
- *  @param[in]  RgrDel      *lcDelInfo
- *  @param[out] RgSchErrInfo   *errInfo
- *  @return  S16
- *      -# ROK
- *      -# RFAILED
- **/
-S16 rgSCHCfgRgrLcDel
-(
-RgSchCellCb    *cell,
-RgrDel         *lcDelInfo,
-RgSchErrInfo   *errInfo
-)
-{
-   RgSchUeCb    *ue;
-   RgSchDlLcCb  *dlLc;
-#ifdef LTE_L2_MEAS
-   uint8_t          lcId;
-   uint8_t          idx;
-   RgSchUlLcCb  *ulLc; 
-#endif
-
-   errInfo->errCause = RGSCHERR_CFG_RGR_LC_DEL;
-
-   /* Fetch the Active cell */
-   if (cell->cellId != lcDelInfo->u.lchDel.cellId)
-   {
-      DU_LOG("\nERROR  -->  SCH : Cell does not exist %d",
-                  lcDelInfo->u.lchDel.cellId);
-      return RFAILED;
-   }
-
-   /* Fetch the Ue */
-   if ((ue = rgSCHDbmGetUeCb(cell, lcDelInfo->u.lchDel.crnti)) == NULLP)
-   {
-      DU_LOG("\nERROR  -->  SCH : UE does not exist for CRNTI:%d LCID:%d",
-               lcDelInfo->u.lchDel.crnti,lcDelInfo->u.lchDel.lcId);
-      return RFAILED;
-   }
-   if (lcDelInfo->u.lchDel.lcgId > 3)
-   {
-      DU_LOG("\nERROR  -->  SCH : [%d]UEID:For LC %d, LCGid %d is invalid",
-               lcDelInfo->u.lchDel.crnti,lcDelInfo->u.lchDel.lcId,
-               lcDelInfo->u.lchDel.lcgId);
-      return RFAILED;
-   }
-   if ((dlLc = rgSCHDbmGetDlDedLcCb(ue, lcDelInfo->u.lchDel.lcId))
-         == NULLP)
-   {
-      DU_LOG("\nERROR  -->  SCH : LC does not exist for CRNTI:%d LCID:%d",
-               lcDelInfo->u.lchDel.crnti, lcDelInfo->u.lchDel.lcId);
-      return RFAILED;
-   }
-   rgSCHUtlRgrLcDel(cell, ue, lcDelInfo->u.lchDel.lcId,lcDelInfo->u.lchDel.lcgId); 
-
-   /* Reduce any pending bo from this LC(if any) 
-    * from the UE's total BO */
-   if(dlLc->bo)
-   {
-      if(ue->totalBo >= dlLc->bo)
-      {
-         ue->totalBo -= dlLc->bo;
-      }
-      else
-      {
-        ue->totalBo = 0; /* this scenario should not occur */
-      }
-   }
-   rgSCHDbmDelDlDedLcCb(ue, dlLc);
-   rgSCHCfgFreeDlDedLcCb(cell, ue, dlLc);
-
-#ifdef LTE_L2_MEAS
-   lcId = lcDelInfo->u.lchDel.lcId;
-   if (TRUE == ue->ul.lcCb[lcId -1].isValid)
-   {
-      ulLc = &(ue->ul.lcCb[lcId -1]);
-      ue->ul.lcCb[lcId -1].isValid = FALSE;
-
-      if((ulLc->qciCb->ulUeCount) &&
-            (ue->ulActiveLCs & (1 << (ulLc->qciCb->qci -1))))
-      {
-         ulLc->qciCb->ulUeCount--;
-         ue->ulActiveLCs &= ~(1 << (ulLc->qciCb->qci -1));
-      }
-      /* Shifting LCs in LCG Array because of LC deletion */
-      for (idx = ulLc->lcgArrIdx +1; idx < ulLc->lcg->numLch;
-               idx++)
-      {
-         ulLc->lcg->lcArray[idx -1] =
-            ulLc->lcg->lcArray[idx];
-         ulLc->lcg->lcArray[idx -1]->lcgArrIdx = idx -1;
-      }
-      ulLc->lcg->numLch--;
-      ulLc->lcg->lcArray[idx -1] = NULLP;
-   }
-#endif /* LTE_L2_MEAS */
-
-
-   errInfo->errCause = RGSCHERR_NONE;
-   return ROK;
-}  /* rgSCHCfgRgrLcDel */
-
-
-
-/**
- * @brief Handler for the logical channel delete request from
- * RRM to MAC.
- *
- * @details
- *
- *     Function : rgSCHCfgRgrLcgDel
- *
- *     Processing Steps:
- *      - Fetch the logical channel control block.
- *      - Free the logical channel control block.
- *      - If successful, return ROK else return RFAILED.
- *
- *  @param[in]  RgrDel      *lcDelInfo
- *  @param[out] RgSchErrInfo   *errInfo
- *  @return  S16
- *      -# ROK
- *      -# RFAILED
- **/
-S16 rgSCHCfgRgrLcgDel
-(
-RgSchCellCb    *cell,
-RgrDel         *lcDelInfo,
-RgSchErrInfo   *errInfo
-)
-{
-   RgSchUeCb    *ue = NULLP;
-#ifdef LTE_L2_MEAS
-   uint8_t           lcCount = 0;
-#endif
-   uint8_t           lcgId = 0;
-
-   lcgId = lcDelInfo->u.lcgDel.lcgId;
-
-   errInfo->errCause = RGSCHERR_CFG_RGR_LCG_DEL;
-
-   /* Fetch the Active cell */
-   if (cell->cellId != lcDelInfo->u.lcgDel.cellId)
-   {
-      DU_LOG("\nERROR  -->  SCH : CELL does not exist for CRNTI:%d LCGID:%d",
-               lcDelInfo->u.lchDel.crnti,lcDelInfo->u.lchDel.lcId);
-      return RFAILED;
-   }
-
-   /* Fetch the Ue */
-   if ((ue = rgSCHDbmGetUeCb(cell, lcDelInfo->u.lcgDel.crnti)) == NULLP)
-   {
-      DU_LOG("\nERROR  -->  SCH : UE does not exist for CRNTI:%d LCGID:%d",
-               lcDelInfo->u.lchDel.crnti,lcDelInfo->u.lchDel.lcId);
-      return RFAILED;
-   }
-
-   /* set lcgId in UEs lcg cntrl blk to invalid */
-   rgSCHUtlRgrLcgDel(cell, ue, lcgId);
-   ue->ul.lcgArr[lcgId].lcgId = RGSCH_INVALID_LCG_ID;
-
-#ifdef LTE_L2_MEAS
-   /* Since LCs are being deleted, if any of them are contributing
-      to Active UE count for a QCI, decrease the count */
-   for (lcCount =0; (lcCount < RGSCH_MAX_LC_PER_UE) && 
-         (lcCount < ue->ul.lcgArr[lcgId].numLch) ; lcCount++)
-   {
-      if (ue->ul.lcgArr[lcgId].lcArray[lcCount])
-      {
-         if((ue->ul.lcgArr[lcgId].
-                  lcArray[lcCount]->qciCb->ulUeCount) &&
-            (ue->ulActiveLCs &
-             (1 << ((ue->ul.lcgArr[lcgId].
-                    lcArray[lcCount])->qciCb->qci -1))))
-            {
-               /* L2_COUNTERS */
-               ue->ul.lcgArr[lcgId].
-                  lcArray[lcCount]->qciCb->ulUeCount--;
-               ue->ulActiveLCs &= ~(1 << 
-                     (ue->ul.lcgArr[lcgId].
-                      lcArray[lcCount]->qciCb->qci -1));
-            }
-      }
-   }
-#endif
-   
-   errInfo->errCause = RGSCHERR_NONE;
-   return ROK;
-}  /* rgSCHCfgRgrLcgDel */
-
-
-
-/***********************************************************
- *
- *     Func : rgSCHCfgVldtRgrLcCfg
- *
- *
- *     Desc : Validates dedicated logical channel configuration recieved from RRM.
- *
- *     Ret  : S16
- *            ROK - Success
- *            RFAILED - Failed
- *
- *     Notes:
- *
- *     File :
- *
- **********************************************************/
-S16 rgSCHCfgVldtRgrLcCfg
-(
-Inst             inst,
-RgrLchCfg     *lcCfg,
-RgSchCellCb      **cell,
-RgSchUeCb        **ue,
-RgSchErrInfo     *errInfo
-)
-{
-
-   errInfo->errCause = RGSCHERR_CFG_INVALID_RGR_DED_LC_CFG;
-
-   if (((*cell) == NULLP) ||
-       ((*cell)->cellId != lcCfg->cellId))
-   {
-      DU_LOG("\nERROR  -->  SCH : Cell does not existi for "
-               "CRNTI:%d LCID:%d",lcCfg->crnti, lcCfg->lcId);
-      return RFAILED;
-   }
-
-   /* Fetch the Ue */
-   if ((*ue = rgSCHDbmGetUeCb(*cell, lcCfg->crnti)) == NULLP)
-   {
-      DU_LOG("\nERROR  -->  SCH : UE does not exist for dedicated"
-         " logical channel CRNTI:%d LCID:%d", lcCfg->crnti, lcCfg->lcId);
-      return RFAILED;
-   }
-
-   /* Validate logical channel Id */
-   if ((lcCfg->lcId < RGSCH_DEDLC_MIN_LCID)
-            ||(lcCfg->lcId > RGSCH_DEDLC_MAX_LCID))
-   {
-      DU_LOG("\nERROR  -->  SCH : Invalid logical channel Id:%d"
-               "for CRNTI:%d",lcCfg->lcId,lcCfg->crnti);
-      return RFAILED;
-   }
-
-   if (lcCfg->lcType != CM_LTE_LCH_DTCH && lcCfg->lcType != CM_LTE_LCH_DCCH)
-   {
-      DU_LOG("\nERROR  -->  SCH : Invalid logical channel Type %d"
-               "CRNTI:%d LCID:%d",lcCfg->lcType,lcCfg->crnti, lcCfg->lcId);
-      return RFAILED;
-   }
-
-   return ROK;
-}  /* rgSCHCfgVldtRgrLcCfg */
-
-/***********************************************************
- *
- *     Func : rgSCHCfgVldtRgrLcgCfg
- *
- *
- *     Desc : Validates dedicated logical channel group configuration recieved from RRM.
- *
- *     Ret  : S16
- *            ROK - Success
- *            RFAILED - Failed
- *
- *     Notes:
- *
- *     File :
- *
- **********************************************************/
-S16 rgSCHCfgVldtRgrLcgCfg
-(
-Inst             inst,
-RgrLcgCfg        *lcgCfg,
-RgSchCellCb      **cell,
-RgSchUeCb        **ue,
-RgSchErrInfo     *errInfo
-)
-{
-
-   errInfo->errCause = RGSCHERR_CFG_INVALID_RGR_DED_LCG_CFG;
-
-   if (((*cell) == NULLP) ||
-       ((*cell)->cellId != lcgCfg->cellId))
-   {
-      DU_LOG("\nERROR  -->  SCH : Cell does not exist for"
-               "CRNTI:%d LCGID:%d",lcgCfg->crnti,lcgCfg->ulInfo.lcgId);
-      return RFAILED;
-   }
-
-   /* Fetch the Ue */
-   if ((*ue = rgSCHDbmGetUeCb(*cell, lcgCfg->crnti)) == NULLP)
-   {
-      DU_LOG("\nERROR  -->  SCH : UE does not exist for "
-        "dedicated logical channel CRNTI:%d LCGID:%d", lcgCfg->crnti, lcgCfg->ulInfo.lcgId);
-      return RFAILED;
-   }
-   
-   if ((lcgCfg->ulInfo.gbr != 0) && (lcgCfg->ulInfo.mbr < lcgCfg->ulInfo.gbr))
-   {
-     return RFAILED;
-   }
-   
-   return ROK;
-}  /* rgSCHCfgVldtRgrLcgCfg */
-
-
-/***********************************************************
- *
- *     Func : rgSCHCfgVldtRgrCellPwrCfg
- *
- *     Desc : Validates cell power configuration.
- *
- *     Ret  : S16
- *            ROK - Success
- *            RFAILED - Failed
- *
- *     Notes:
- *
- *     File :
- *
- **********************************************************/
-static S16 rgSCHCfgVldtRgrCellPwrCfg
-(
-Inst             inst,
-RgrCellCfg       *cellCfg,
-RgSchErrInfo     *errInfo
-)
-{
-   UNUSED(inst);
-   UNUSED(cellCfg);
-   UNUSED(errInfo);
-
-   /* This function does nothing now, placeholder for
-    * subsequent power config validations that may be needed */
-
-
-   return ROK;
-}  /* rgSCHCfgVldtRgrCellPwrCfg */
-
-
-/***********************************************************
- *
- *     Func : rgSCHCfgVldtRgrCmnLcCfg
- *
- *
- *     Desc : Validates common logical channel configuration recieved from RRM.
- *
- *  @param[in]  Inst         inst
- *  @param[in]  RgrCellCfg   *cellCfg
- *  @param[out] RgSchErrInfo *errInfo
- *     Ret  : S16
- *            ROK - Success
- *            RFAILED - Failed
- *
- *     Notes:
- *
- *     File :
- *
- **********************************************************/
-static S16 rgSCHCfgVldtRgrCmnLcCfg
-(
-Inst             inst,
-RgrCellCfg       *cellCfg,
-RgSchErrInfo     *errInfo
-)
-{
-   uint8_t            idx;
-   RgrCmnLchCfg  *lcCfg; 
-   uint8_t            dirVld  = FALSE;
-   uint8_t            bitMask = 0x00;
-   uint8_t            cnt=0;
-
-   errInfo->errCause = RGSCHERR_CFG_INVALID_RGR_CMN_LC_CFG;
-   
-   for (idx = 0; idx < cellCfg->numCmnLcs; idx++)
-   {
-      lcCfg = &(cellCfg->cmnLcCfg[idx]);
-      /* Validate downlink info */
-      if (lcCfg->dir & RGR_DIR_TX)
-      {
-         if (lcCfg->lcType == CM_LTE_LCH_BCCH)
-         {
-            if (lcCfg->dlTrchType == CM_LTE_TRCH_DL_SCH)
-            {
-               if(cnt == 0)
-               {
-                  bitMask |= RGSCH_BCCH_DLSCH_CFG1;
-                  cnt++;
-               }
-               else
-               {
-
-                  if((
-                     (cellCfg->siCfg.siWinSize == 1)  ||
-                     (cellCfg->siCfg.siWinSize == 2)  ||
-                     (cellCfg->siCfg.siWinSize == 5)  ||
-                     (cellCfg->siCfg.siWinSize == 10) ||
-                     (cellCfg->siCfg.siWinSize == 15) ||
-                     (cellCfg->siCfg.siWinSize == 20) ||
-                     (cellCfg->siCfg.siWinSize == 40)) &&
-                     (cellCfg->siCfg.retxCnt>0)
-                    )
-                  {
-                     bitMask |= RGSCH_BCCH_DLSCH_CFG2;
-                  }
-                  else
-                  {
-                     DU_LOG("\nERROR  -->  SCH : Invalid si config for cell");
-                     return RFAILED;
-                  }
-               }
-            }
-            else if (lcCfg->dlTrchType == CM_LTE_TRCH_BCH)
-            {
-               bitMask |= RGSCH_BCCH_BCH_CFG;
-            }
-            else
-            {
-               DU_LOG("\nERROR  -->  SCH : Invalid transport channel %d for cell", lcCfg->dlTrchType);
-               return RFAILED;
-            }
-         }
-         else if (lcCfg->lcType == CM_LTE_LCH_PCCH)
-         {
-            bitMask |= RGSCH_PCCH_CFG;
-         }
-         else if (lcCfg->lcType == CM_LTE_LCH_CCCH)
-         {
-            bitMask |= RGSCH_DL_CCCH_CFG;
-         }
-         dirVld = TRUE;
-      }
-
-      /* Validate uplink info */
-      if (lcCfg->dir & RGR_DIR_RX)
-      {
-         /* Uplink CCCH */
-         if (lcCfg->lcType != CM_LTE_LCH_CCCH)
-         {
-            DU_LOG("\nERROR  -->  SCH : Invalid UL common lcType %d for cell", lcCfg->lcType);
-            return RFAILED;
-         }
-         else
-         {
-            bitMask |= RGSCH_UL_CCCH_CFG;
-         }
-         dirVld = TRUE;
-      }
-
-      /* Invalid direction */
-      if (!dirVld)
-      {
-         DU_LOG("\nERROR  -->  SCH : Invalid Direction %d", lcCfg->dir);
-         return RFAILED;
-      }
-   }
-   if (bitMask != RGSCH_CELL_ACTIVE_CFG)
-   {
-      DU_LOG("\nERROR  -->  SCH : Invalid Common channel config for cell");
-      return RFAILED;
-   }
-
-   return ROK;
-}  /* rgSCHCfgVldtRgrCmnLcCfg */
-
-
-/***********************************************************
- *
- *     Func : rgSCHCfgVldtUeCqiModeCfg
- *
- *
- *     Desc : Validates UE CQI modes Configuration recieved from RRC.
- *
- *     Ret  : S16
- *            ROK - Success
- *            RFAILED - Failed
- *
- *     Notes:
- *
- *     File :
- *
- **********************************************************/
-static S16 rgSCHCfgVldtUeCqiModeCfg
-(
-RgSchCellCb       *cell,
-RgrUeDlCqiCfg     *ueDlCqiCfg
-)
-{
-   
-#ifndef TFU_UPGRADE
-   if((ueDlCqiCfg->prdCqiCfg.cqiPmiCfgIdx < 1) || 
-         (ueDlCqiCfg->prdCqiCfg.cqiPmiCfgIdx > 1024))
-   {
-      DU_LOG("\nERROR  -->  SCH : Invalid Periodic CQI Info");
-      return RFAILED;
-   }
-#endif
-   /* Validate UE Aperiodic CQI mode */
-   if ((ueDlCqiCfg->aprdCqiCfg.pres == TRUE) &&
-       ((ueDlCqiCfg->aprdCqiCfg.aprdModeEnum > RGR_APRD_CQI_MOD31) ||
-        (cell->bwCfg.dlTotalBw <= 7)))
-   {
-      DU_LOG("\nERROR  -->  SCH : Invalid Aperiodic mode config for DL CQI");
-      return RFAILED;
-   }
-#ifndef TFU_UPGRADE
-   /* Validate UE Periodic CQI mode */ 
-   if (ueDlCqiCfg->prdCqiCfg.prdModeEnum > RGR_PRD_CQI_MOD21)
-   {
-      DU_LOG("\nERROR  -->  SCH : Invalid periodic mode config for DL CQI");
-      return RFAILED;
-   }
-   /* Validate K value in periodic CQI Config */
-   if(((ueDlCqiCfg->prdCqiCfg.prdModeEnum == RGR_PRD_CQI_MOD20) ||
-            (ueDlCqiCfg->prdCqiCfg.prdModeEnum == RGR_PRD_CQI_MOD21)) && 
-         ((ueDlCqiCfg->prdCqiCfg.k < 1)||
-            (ueDlCqiCfg->prdCqiCfg.k > 4)))
-   {
-      DU_LOG("\nERROR  -->  SCH : Invalid K for Subband CQI reporting");
-      return RFAILED;
-   }
-#else
-   if ((ueDlCqiCfg->prdCqiCfg.type == 1) &&
-       (ueDlCqiCfg->prdCqiCfg.cqiSetup.prdModeEnum > RGR_PRD_CQI_MOD21))
-   {
-     DU_LOG("\nERROR  -->  SCH : Invalid periodic mode config for DL CQI");
-     return RFAILED;
-   }
-
-#endif
-   
-   return ROK;
-      
-}
-/***********************************************************
- *
- *     Func : rgSCHCfgVldtUeMeasGapAckNakRepCfg
- *
- *
- *     Desc : Validates UE Measurement Gap and Ack Nack Repetition Configuration recieved from RRC.
- *
- *     Ret  : S16
- *            ROK - Success
- *            RFAILED - Failed
- *
- *     Notes:
- *
- *     File :
- *
- **********************************************************/
-static S16 rgSCHCfgVldtUeMeasGapAckNakRepCfg
-(
-RgSchCellCb       *cell,
-RgrUeCfg          *ueCfg
-)
-{
-
-#ifdef LTE_TDD
-   if ((ueCfg->ackNackModeEnum == RGR_TDD_ACKNACK_MODE_MULT) &&
-         (ueCfg->ueAckNackCfg.isAckNackEnabled == TRUE))
-   {
-      DU_LOG("\nERROR  -->  SCH : TDD ACK NACK Multiplexing Mode"
-      "is not allowed when Ack/Nack is Enabled: %d CRNTI:%d",
-       ueCfg->ueAckNackCfg.ackNackRepFactor,ueCfg->crnti);
-      return RFAILED;
-   }
-#endif /* LTE_TDD */
-   /* Validate AckNackRep Factor */
-   if((ueCfg->ueAckNackCfg.isAckNackEnabled == FALSE) &&
-         (!ueCfg->ueMesGapCfg.isMesGapEnabled))
-   {
-      return ROK;
-   }
-
-   if(ueCfg->ueAckNackCfg.isAckNackEnabled)
-   {
-   if ( (ueCfg->ueAckNackCfg.ackNackRepFactor < RGR_ACKNACK_REPFACT_N2)
-         || (ueCfg->ueAckNackCfg.ackNackRepFactor > RGR_ACKNACK_REPFACT_N6))
-   {
-      DU_LOG("\nERROR  -->  SCH : Invalid ACK NACK REP Factor:%d CRNTI:%d",
-               ueCfg->ueAckNackCfg.ackNackRepFactor,ueCfg->crnti);
-      return RFAILED;
-   }
-   }
-   if(ueCfg->ueMesGapCfg.isMesGapEnabled)
-   {
-   switch(ueCfg->ueMesGapCfg.gapPrd)
-   {
-      case RG_MEAS_GAPPRD_40:
-         if(ueCfg->ueMesGapCfg.gapOffst >= RG_MEAS_GAPPRD_40)
-         {
-            DU_LOG("\nERROR  -->  SCH : Invalid GAP Offset:%d CRNTI:%d",
-                     ueCfg->ueMesGapCfg.gapOffst,ueCfg->crnti);
-            return RFAILED;
-         }
-         break;
-      case RG_MEAS_GAPPRD_80:
-         if(ueCfg->ueMesGapCfg.gapOffst >= RG_MEAS_GAPPRD_80)
-         {
-            DU_LOG("\nERROR  -->  SCH : Invalid GAP Offset:%d CRNTI:%d",
-                     ueCfg->ueMesGapCfg.gapOffst,ueCfg->crnti);
-            return RFAILED;
-         }
-         break;
-         default:
-         { 
-            DU_LOG("\nERROR  -->  SCH : Invalid GAP Periodicity Settings:%d"
-                      "CRNTI:%d", ueCfg->ueMesGapCfg.gapPrd,ueCfg->crnti);
-            return RFAILED;
-         }
-      }
-   }
-
-   return ROK;
-}  /* rgSCHCfgVldtUeMeasGapAckNakRepCfg*/
-
-
-/***********************************************************
- *
- *     Func : rgSCHCfgVldtUeMeasGapAckNakRepRecfg
- *
- *
- *     Desc : Validates UE Measurement Gap and Ack Nack Repetition Configuration recieved from RRC.
- *
- *     Ret  : S16
- *            ROK - Success
- *            RFAILED - Failed
- *
- *     Notes:
- *
- *     File :
- *
- **********************************************************/
-static S16 rgSCHCfgVldtUeMeasGapAckNakRepRecfg
-(
-RgSchCellCb       *cell,
-RgrUeRecfg        *ueRecfg
-)
-{
-
-   if((ueRecfg->ueAckNackRecfg.isAckNackEnabled == FALSE) &&
-          (!ueRecfg->ueMeasGapRecfg.isMesGapEnabled))
-   {
-      return ROK;
-   }
-
-   if(ueRecfg->ueAckNackRecfg.isAckNackEnabled )
-   {
-   /* Validate AckNackRep Factor */
-   if ( (ueRecfg->ueAckNackRecfg.ackNackRepFactor < RGR_ACKNACK_REPFACT_N2)
-         || (ueRecfg->ueAckNackRecfg.ackNackRepFactor > RGR_ACKNACK_REPFACT_N6))
-   {
-      DU_LOG("\nERROR  -->  SCH : Invalid ACK NACK REP Factor:%d"
-               "NEW CRNTI:%d",ueRecfg->ueAckNackRecfg.ackNackRepFactor,ueRecfg->newCrnti);
-      return RFAILED;
-   }
-   }
-   if(ueRecfg->ueMeasGapRecfg.isMesGapEnabled)
-   {
-   switch(ueRecfg->ueMeasGapRecfg.gapPrd)
-   {
-      case RG_MEAS_GAPPRD_40:
-         if(ueRecfg->ueMeasGapRecfg.gapOffst >= RG_MEAS_GAPPRD_40)
-         {
-            DU_LOG("\nERROR  -->  SCH : Invalid GAP Offset:%d"
-                     "NEW CRNTI:%d",ueRecfg->ueMeasGapRecfg.gapOffst,ueRecfg->newCrnti);
-            return RFAILED;
-         }
-         break;
-      case RG_MEAS_GAPPRD_80:
-         if(ueRecfg->ueMeasGapRecfg.gapOffst >= RG_MEAS_GAPPRD_80)
-         {
-            DU_LOG("\nERROR  -->  SCH : Invalid GAP Offset:%d"
-                     "NEW CRNTI:%d",ueRecfg->ueMeasGapRecfg.gapOffst,ueRecfg->newCrnti);
-            return RFAILED;
-         }
-         break;
-         default:
-         { 
-            DU_LOG("\nERROR  -->  SCH : Invalid GAP Periodicity Settings:%d"
-                     "NEW CRNTI:%d",ueRecfg->ueMeasGapRecfg.gapPrd,ueRecfg->newCrnti);
-            return RFAILED;
-         }
-      }
-   }
-
-   return ROK;
-}  /* rgSCHCfgVldtUeMeasGapAckNakRepRecfg*/
-
-#ifdef LTEMAC_SPS
-/***********************************************************
- *
- *     Func : rgSCHCfgVldtUeDlSpsCfg
- *
- *
- *     Desc : Validates UE's DL SPS configuration recieved from RRC.
- *
- *     Ret  : S16
- *            ROK - Success
- *            RFAILED - Failed
- *
- *     Notes:
- *
- *     File :
- *
- **********************************************************/
-static S16 rgSCHCfgVldtUeDlSpsCfg
-(
-RgSchCellCb       *cell,
-RgrUeSpsDlCfg     *dlSpsCfg
-)
-{
-
-   uint8_t                 idx = 0;
-
-   /* peridicity validation done in SPS module */
-   if ((dlSpsCfg->numPucchVal > RG_SCH_MAX_NUM_N1PUCCH_PER_UE) ||
-         (dlSpsCfg->numPucchVal == 0))
-   {
-      DU_LOG("\nERROR  -->  SCH : Invalid number of n1Pucch values"
-               " in DL SPS Config");
-      return RFAILED;
-   }
-
-   for (idx = 0; idx < dlSpsCfg->numPucchVal; ++idx)
-   {
-      if (dlSpsCfg->n1PucchVal[idx] > RG_SCH_MAX_N1PUCCH_VAL)
-      {
-#ifdef ALIGN_64BIT
-         DU_LOG("\nERROR  -->  SCH : Invalid N1Pucch value"
-                  " in DL SPS Config %u", dlSpsCfg->n1PucchVal[idx]);
-#else
-         DU_LOG("\nERROR  -->  SCH : Invalid N1Pucch value"
-                  " in DL SPS Config %lu", dlSpsCfg->n1PucchVal[idx]);
-#endif
-         return RFAILED;
-      }
-   }
-   /* SPS_TODO: check will change for TDD */
-   if ((dlSpsCfg->numSpsHqProc == 0) ||
-         (dlSpsCfg->numSpsHqProc > RGSCH_MAX_DL_HQ_PROC))
-   {
-      DU_LOG("\nERROR  -->  SCH : Invalid number of SPS HARQ procs"
-               " in DL SPS Config");
-      return RFAILED;
-   }
-
-   return ROK;
-}  /* rgSCHCfgVldtDlSpsCfg */
-#endif /* LTEMAC_SPS */
-
-/***********************************************************
- *
- *     Func : rgSCHCfgVldtUePwrCfg
- *
- *
- *     Desc : Validates UE Group power configuration recieved from RRC.
- *
- *     Ret  : S16
- *            ROK - Success
- *            RFAILED - Failed
- *
- *     Notes:
- *
- *     File :
- *
- **********************************************************/
-static S16 rgSCHCfgVldtUePwrCfg
-(
-RgSchCellCb       *cell,
-RgrUeUlPwrCfg     *pwrCfg
-)
-{
-
-   /* Group power control works only in accumulated mode */
-   if (!pwrCfg->isAccumulated)
-   {
-      /* Fix */
-      if (pwrCfg->uePuschPwr.pres)
-      {
-         DU_LOG("\nERROR  -->  SCH : Accumulation configutation"
-              " not in sync with group power configuration");
-         return RFAILED;
-      }
-   }
-
-   if (rgSCHCfgVldtUeGrpPwrCfg(cell, &pwrCfg->uePuschPwr) != ROK)
-   {
-      DU_LOG("\nERROR  -->  SCH : Invalid PUSCH Group power"
-           " configuration");
-      return RFAILED;
-   }
-   if (rgSCHCfgVldtUeGrpPwrCfg(cell, &pwrCfg->uePucchPwr) != ROK)
-   {
-      DU_LOG("\nERROR  -->  SCH : Invalid PUSCH Group power"
-           " configuration");
-      return RFAILED;
-   }
-
-   return ROK;
-}  /* rgSCHCfgVldtUePwrCfg */
-
-/***********************************************************
- *
- *     Func : rgSCHCfgVldtUeGrpPwrCfg
- *
- *
- *     Desc : Validates UE Group power configuration recieved from RRC.
- *
- *     Ret  : S16
- *            ROK - Success
- *            RFAILED - Failed
- *
- *     Notes:
- *
- *     File :
- *
- **********************************************************/
-static S16 rgSCHCfgVldtUeGrpPwrCfg
-(
-RgSchCellCb       *cell,
-RgrUeGrpPwrCfg *grpPwrCfg
-)
-{
-
-   if ((grpPwrCfg->pres) &&
-       (((grpPwrCfg->tpcRnti > cell->rntiDb.rntiStart) &&
-        ((grpPwrCfg->tpcRnti <
-                     (cell->rntiDb.rntiStart + cell->rntiDb.maxRntis))))))
-   {
-      DU_LOG("\nERROR  -->  SCH : Invalid Uplink Group power " 
-             "configuration");
-      return RFAILED;
-   }
-
-   return ROK;
-}  /* rgSCHCfgVldtUeGrpPwrCfg */
-
-#ifdef LTEMAC_SPS
-/***********************************************************
- *
- *     Func : rgSCHCfgVldtSpsReCfg
- *
- *
- *     Desc : Validates UE SPS and other SPS dependent 
- *     configuration recieved from RRC.
- *
- *     Ret  : S16
- *            ROK - Success
- *            RFAILED - Failed
- *
- *     Notes:
- *
- *     File :
- *
- **********************************************************/
-static S16 rgSCHCfgVldtSpsReCfg
-(
-RgSchCellCb       *cell,
-RgSchUeCb         *ue,
-RgrUeRecfg        *ueRecfg
-)
-{
-
-   if ((ueRecfg->ueRecfgTypes & RGR_UE_DLSPS_RECFG) &&
-         (ueRecfg->ueSpsRecfg.dlSpsCfg.isDlSpsEnabled)) 
-   {
-      /* Validating SPS RNTI */ 
-      if (((ueRecfg->ueSpsRecfg.spsRnti >=  cell->rntiDb.rntiStart) && 
-          (ueRecfg->ueSpsRecfg.spsRnti<=
-          (cell->rntiDb.rntiStart+cell->rntiDb.maxRntis)))||
-          (ueRecfg->ueSpsRecfg.spsRnti == RGSCH_SI_RNTI) ||
-          (ueRecfg->ueSpsRecfg.spsRnti == RGSCH_P_RNTI))
-      {
-         DU_LOG("\nERROR  -->  SCH : Invalid SPS RNTI "
-                  " in DL SPS Recfg OLD CRNTI:%d NEW CCRNTI:%d",
-                  ueRecfg->oldCrnti,ueRecfg->newCrnti);
-         return RFAILED;
-      }
-      if (rgSCHCfgVldtUeDlSpsCfg(cell, &ueRecfg->ueSpsRecfg.dlSpsCfg) != ROK)
-      {
-         DU_LOG("\nERROR  -->  SCH : Invalid DL SPS configuration"
-                  " for the OLD CRNTI:%d NEW CRNTI:%d",
-                  ueRecfg->oldCrnti,ueRecfg->newCrnti);
-         return RFAILED;
-      }
-   }
-
-#if RG_SPS_UNUSED 
-   if(ueRecfg->ueSpsRecfg.dlSpsCfg.isDlSpsEnabled)
-   {
-     if (ueRecfg->ueRecfgTypes & RGR_UE_DRX_RECFG)
-     {
-     /* ccpu00117035 - MOD - changed instIdx to inst */
-     /* ccpu00117035 - MOD - changed ueID to oldCrnti*/
-       DU_LOG("\nERROR  -->  SCH :  DRX reconfig not supported DL SPS enabled for OLD CRNTI:%d NEW CRNTI:%d", 
-                  ueRecfg->oldCrnti,ueRecfg->newCrnti);
-       return RFAILED;
-     }
-   }
-#endif
-/* ccpu00117627 - ADD - SPS recfg validation against HDFDD */
-#ifdef LTEMAC_HDFDD
-   if(ueRecfg->ueSpsRecfg.dlSpsCfg.isDlSpsEnabled)
-   {
-      if(ue->hdFddEnbld == TRUE)
-      {
-         DU_LOG("\nERROR  -->  SCH : DL SPS is not supported for HDFDD enabled for OLD CRNTI:%d NEW CRNTI:%d",
-                  ueRecfg->oldCrnti,ueRecfg->newCrnti);
-         return RFAILED;
-      }
-   }
-   if(ueRecfg->ueSpsRecfg.ulSpsCfg.isUlSpsEnabled)
-   {
-      if(ue->hdFddEnbld == TRUE)
-      {
-         DU_LOG("\nERROR  -->  SCH : UL SPS is not supported for HDFDD enabled for OLD CRNTI:%d NEW CRNTI:%d",
-                  ueRecfg->oldCrnti,ueRecfg->newCrnti);
-         return RFAILED;
-      }
-   }
-#endif
-
-   return ROK;
-}  /*rgSCHCfgVldtSpsReCfg*/
-#endif
-
-#if ((defined (RGR_CQI_REPT)) && (defined (RGR_V2)))
-/***********************************************************
- *
- *     Func : rgSCHCfgVldtCqiReptReCfg
- *
- *
- *     Desc : Validates UE CQI report for DL Power control
- *     configuration recieved from RRC.
- *
- *     Ret  : S16
- *            ROK - Success
- *            RFAILED - Failed
- *
- *     Notes:
- *
- *     File :
- *
- **********************************************************/
-static S16 rgSCHCfgVldtCqiReptReCfg
-(
-RgSchCellCb       *cell,
-RgrUeRecfg     *ueRecfg
-)
-{
-
-   /* Validate DL Power Control Config parameters */
-   if (ueRecfg->ueCqiReptCfg.numColltdCqiRept > RGR_CQIRPTS_MAXN)
-   {
-      DU_LOG("\nERROR  -->  SCH : Invalide numColltdCqiRept,"
-               "MAX supported %d for OLD CRNTI:%d NEW CRNTI:%d",RGR_CQIRPTS_MAXN,
-                  ueRecfg->oldCrnti,ueRecfg->newCrnti);
-      return RFAILED;
-   }
-
-   return ROK;
-}  /*rgSCHCfgVldtCqiReptReCfg*/
-#endif
-
-/***********************************************************
- *
- *     Func : rgSCHCfgRgrLcChfg
- *
- *
- *     Desc : Handles dedicated logical channel configuration 
- *     recieved from RRC.
- *
- *     Ret  : S16
- *            ROK - Success
- *            RFAILED - Failed
- *
- *     Notes:
- *
- *     File :
- *
- **********************************************************/
-S16 rgSCHCfgRgrLchCfg
-(
-RgSchCellCb      *cell,
-RgSchUeCb        *ue,
-RgrLchCfg     *lcCfg,
-RgSchErrInfo     *errInfo
-)
-{
-   S16       ret;
-   RgSchDlLcCb  *dlLc = NULLP;
-   Inst    inst = cell->instIdx;
-#ifdef LTE_L2_MEAS
-   RgSchUlLcCb  *ulLc; 
-#endif
-
-   errInfo->errCause = RGSCHERR_CFG_RGR_DED_LC_CFG;
-
-   /* Allocate the downlink logical channel control block */
-   if((ret = rgSCHUtlAllocSBuf(inst, (Data**)&dlLc, 
-               sizeof(RgSchDlLcCb))) != ROK)
-   {
-      DU_LOG("\nERROR  -->  SCH : Memory allocation FAILED for "
-               "Downlink LCId:%d CRNTI:%d", lcCfg->lcId,lcCfg->crnti);
-      return RFAILED;
-   }
-   if ((uint8_t *)dlLc == NULLP)
-   {
-      DU_LOG("\nERROR  -->  SCH : Memory allocation FAILED for "
-               "Downlink LCID:%d CRNTI:%d", lcCfg->lcId,lcCfg->crnti);
-      return RFAILED;
-   }
-   dlLc->lcId   = lcCfg->lcId;
-#ifdef LTE_ADV
-   rgSCHLaaLcCfg(cell, dlLc, lcCfg);
-#endif
-
-   rgSCHDbmInsDlDedLcCb(ue, dlLc);
-   
-   ret = rgSCHUtlRgrLcCfg(cell, ue, dlLc, lcCfg, errInfo);
-
-   if (ret != ROK)
-   {
-      /* ROLLBACK */
-      if (dlLc)
-      {
-         rgSCHDbmDelDlDedLcCb(ue, dlLc);
-         rgSCHCfgFreeDlDedLcCb(cell, ue, dlLc);
-      }
-
-      DU_LOG("\nERROR  -->  SCH : Dedicated logical channel "
-        "configuration failed at SCH:UEID:%d LCID:%d CRNTI:%d",
-        ue->ueId, lcCfg->lcId,lcCfg->crnti);
-      return RFAILED;
-   }
-#ifdef LTE_L2_MEAS
-   RGSCH_ARRAY_BOUND_CHECK(inst, ue->ul.lcCb, (lcCfg->lcId -1));
-   if ( !lcCfg->lcId || 
-         (TRUE == ue->ul.lcCb[lcCfg->lcId -1].isValid))
-   {
-      /* ROLLBACK */
-      if (dlLc)
-      {
-         rgSCHDbmDelDlDedLcCb(ue, dlLc);
-         rgSCHCfgFreeDlDedLcCb(cell, ue, dlLc);
-      }
-
-      DU_LOG("\nERROR  -->  SCH : Dedicated logical channel "
-        "configuration failed at SCH: UL LC CB already existing"
-        " UEID:%d LCID:%d CRNTI:%d",
-        ue->ueId, lcCfg->lcId,lcCfg->crnti);
-      return RFAILED;
-   }
-
-   /* Create UL LC context to maintain LCG to LC mapping and 
-      LC and QCI mapping, this is for L2 Counters :UL ACTIVE UE 
-      PER QCI */
-   ue->ul.lcCb[lcCfg->lcId -1].isValid = TRUE;
-   ulLc = &(ue->ul.lcCb[lcCfg->lcId -1]);
-
-   ulLc->lcId = lcCfg->lcId;
-   ulLc->qciCb = &(cell->qciArray[lcCfg->dlInfo.dlQos.qci]);
-   ulLc->qciCb->qci = lcCfg->dlInfo.dlQos.qci;
-   ue->ul.lcgArr[lcCfg->lcgId].lcArray[ue->ul.lcgArr[lcCfg->lcgId].numLch] = ulLc;
-   ulLc->lcg = &ue->ul.lcgArr[lcCfg->lcgId];
-   ulLc->lcgArrIdx = ue->ul.lcgArr[lcCfg->lcgId].numLch;
-   ue->ul.lcgArr[lcCfg->lcgId].numLch++;
-
-   dlLc->qciCb = &(cell->qciArray[lcCfg->dlInfo.dlQos.qci]);
-   dlLc->qciCb->qci = lcCfg->dlInfo.dlQos.qci;
-   if(lcCfg->lcType == CM_LTE_LCH_DTCH)
-   {
-     rgSchAddToL2Meas(cell,dlLc); /*LTE_L2_MEAS_PHASE2*/
-   }
-#endif /* LTE_L2_MEAS */
-
-   return ROK;
-}  /* rgSCHCfgRgrLchCfg */
-
-/***********************************************************
- *
- *     Func : rgSCHCfgRgrLcgCfg
- *
- *
- *     Desc : Handles dedicated logical channel group configuration
- *     recieved from RRM.
- *
- *     Ret  : S16
- *            ROK - Success
- *            RFAILED - Failed
- *
- *     Notes:
- *
- *     File :
- *
- **********************************************************/
-S16 rgSCHCfgRgrLcgCfg
-(
-RgSchCellCb      *cell,
-RgSchUeCb        *ue,
-RgrLcgCfg        *lcgCfg,
-RgSchErrInfo     *errInfo
-)
-{
-   S16          ret = ROK;
-
-#ifdef RG_UNUSED
-//#ifdef LTE_L2_MEAS
-   uint32_t          idx;
-   RgSchUlLcCb  *ulLc; 
-#endif
-
-   errInfo->errCause = RGSCHERR_CFG_RGR_DED_LCG_CFG;
-
-   ue->ul.lcgArr[lcgCfg->ulInfo.lcgId].lcgId = lcgCfg->ulInfo.lcgId;
-
-   ret = rgSCHUtlRgrLcgCfg(cell, ue, lcgCfg, errInfo);
-   if (ret != ROK)
-   {
-      DU_LOG("\nERROR  -->  SCH : Dedicated logical channel "
-        "configuration failed at SCH: UEID:%d LCGID:%d CRNTI:%d",
-        ue->ueId, lcgCfg->ulInfo.lcgId,lcgCfg->crnti);
-      /* Roll back lcgCfg */
-      ue->ul.lcgArr[lcgCfg->ulInfo.lcgId].lcgId = RGSCH_INVALID_LCG_ID;
-      rgSCHUtlRgrLcgDel(cell, ue, lcgCfg->ulInfo.lcgId);
-      return RFAILED;
-   }
-#ifdef RG_UNUSED
-//#ifdef LTE_L2_MEAS
-   /* Copy all info of UL LCH in cfg to ulLcgCb */
-   for (idx = 0; idx < lcgCfg->ulInfo.numLch; idx++)
-   {
-      /* Allocate the uplink logical channel control block */
-      if((ret = rgSCHUtlAllocSBuf(cell->instIdx, (Data**)&ulLc, 
-                  sizeof(RgSchUlLcCb))) != ROK)
-      {
-         DU_LOG("\nERROR  -->  SCH : Memory allocation FAILED ");
-         return RFAILED;
-      }
-      if ((uint8_t *)ulLc == NULLP)
-      {
-         DU_LOG("\nERROR  -->  SCH : Memory allocation FAILED ");
-         return RFAILED;
-      }
-      /* Create UL LC context to maintain LCG to LC mapping and 
-         LC and QCI mapping, this is for L2 Counters :UL ACTIVE UE 
-         PER QCI */
-      ulLc->lcId = lcgCfg->ulInfo.lchUlCfg[idx].lcId;
-      ulLc->qciCb = &(cell->qciArray[lcgCfg->ulInfo.lchUlCfg[idx].qci]);
-      ulLc->qciCb->qci = lcgCfg->ulInfo.lchUlCfg[idx].qci;
-      ue->ul.lcgArr[lcgCfg->ulInfo.lcgId].lcArray[idx] = ulLc;
-      /* L2_COUNTERS */
-      ue->ul.lcCb[ulLc->lcId -1] = ulLc;
-      ulLc->lcg = &ue->ul.lcgArr[lcgCfg->ulInfo.lcgId];
-      ulLc->lcgArrIdx = idx;
-   }
-   ue->ul.lcgArr[lcgCfg->ulInfo.lcgId].numLch = lcgCfg->ulInfo.numLch;
-#endif /* LTE_L2_MEAS */
-
-   return ROK;
-}  /* rgSCHCfgRgrLcgCfg */
-
-
-
-/***********************************************************
- *
- *     Func : rgSCHCfgRgrCmnLcCfg
- *
- *
- *     Desc : Handles dedicated logical channel configuration 
- *     recieved from RRC.
- *
- *     Ret  : S16
- *            ROK - Success
- *            RFAILED - Failed
- *
- *     Notes:
- *
- *     File :
- *
- **********************************************************/
-static S16 rgSCHCfgRgrCmnLcCfg
-(
-RgSchCellCb           *cell,
-RgrCmnLchCfg          *lcCfg,
-RgSchErrInfo          *errInfo
-)
-{
-   RgSchClcDlLcCb cmnLcCb;
-
-   errInfo->errCause = RGSCHERR_CFG_RGR_CMN_LC_CFG;
-
-   memset(&cmnLcCb, 0, sizeof(cmnLcCb));
-
-   /* Handle configuration for CCCH/BCCH/PCCH */
-   if (lcCfg->lcType == CM_LTE_LCH_CCCH)
-   {
-      /* UL and DL CCCH configuration */
-      if (lcCfg->dir & RGR_DIR_TX)
-      {
-         cell->dlCcchId = lcCfg->lcId;
-      }
-
-      if (lcCfg->dir & RGR_DIR_RX)
-      {
-         cell->ulCcchId = lcCfg->lcId;
-      }
-   }
-   else
-   {
-      cmnLcCb.lcId = lcCfg->lcId;
-      rgSCHDbmInitCmnLcBoLst(&cmnLcCb);
-      if (lcCfg->lcType == CM_LTE_LCH_BCCH)
-      {
-         /* BCCH on BCH and DLSCH configuration */
-         if (lcCfg->dlTrchType == CM_LTE_TRCH_DL_SCH)
-         {
-            rgSCHDbmInsBcchOnDlsch(cell, &cmnLcCb);
-         }
-         else
-         {
-            rgSCHDbmInsBcchOnBch(cell, &cmnLcCb);
-         }
-      }
-      else  /* PCCH configuration */
-      {
-         rgSCHDbmInsPcch(cell, &cmnLcCb);
-      }
-   }
-
-   return ROK;
-}  /* rgSCHCfgRgrCmnLcCfg */
-
-
-
-/***********************************************************
- *
- *     Func : rgSCHCfgFreeDlDedLcCb
- *
- *
- *     Desc :
- *     - Processing Steps:
- *        - Frees downlink dedicated logical channel control block.
- *
- *     Ret  : Void
- *
- *     Notes:
- *
- *     File :
- *
- **********************************************************/
-static Void rgSCHCfgFreeDlDedLcCb
-(
-RgSchCellCb      *cell,
-RgSchUeCb        *ue,
-RgSchDlLcCb      *dlLc
-)
-{
-   Inst    inst = cell->instIdx;
-
-   rgSCHUtlFreeDlLc(cell, ue, dlLc);
-
-   /* De-allocate the Cb */
-   /* ccpu00117052 - MOD - Passing double pointer
-      for proper NULLP assignment*/
-   rgSCHUtlFreeSBuf(inst, (Data **)&dlLc, sizeof(*dlLc));
-
-
-  /* Stack Crash problem for TRACE5 changes. Added the return below */
-  return;
-
-}  /* rgSCHCfgFreeDlDedLcCb */
-
-
-/***********************************************************
- *
- *     Func : rgSCHCfgFreeDlCmnLcCb
- *
- *
- *     Desc :
- *     - Processing Steps:
- *        - Frees downlink common logical channel control block.
- *
- *     Ret  : Void
- *
- *     Notes:
- *
- *     File :
- *
- **********************************************************/
-static Void rgSCHCfgFreeDlCmnLcCb(RgSchClcDlLcCb   *cmnDlLc)
-{
-   memset(cmnDlLc, 0, sizeof(*cmnDlLc));
-   cmnDlLc->lcId = RGSCH_INVALID_LC_ID;
-   return;
-}  /* rgSCHCfgFreeDlCmnLcCb */
-
-
-/***********************************************************
- *
- *     Func : rgSCHCfgFreeCellCb
- *
- *
- *     Desc :
- *     - Processing Steps:
- *        - Frees scheduler cell control block.
- *
- *     Ret  : Void
- *
- *     Notes:
- *
- *     File :
- *
- **********************************************************/
-Void rgSCHCfgFreeCellCb(RgSchCellCb      *cell)
-{
-   Inst    inst = cell->instIdx;
-   CmLList            *node;
-   Buffer             *pdu;
-   RgSchWarningSiInfo *warningSi;
-   RgSchWarningSiPdu  *warningSiPdu;
-   uint8_t                  idx;
-   /* ccpu00132385- SI Warning PDUs which are not processed need to be deleted */
-   /* Search for used index in WarningSi */
-   for(idx = 0; idx < RGR_MAX_NUM_WARNING_SI; idx++)
-   {
-      if(cell->siCb.warningSi[idx].siId == 0)
-        continue;
-      cell->siCb.siCtx.siId = cell->siCb.warningSi[idx].siId;
-      warningSi = (RgSchWarningSiInfo *) cell->siCb.
-                  siArray[cell->siCb.siCtx.siId-1].si; 
-      if(warningSi != NULLP)
-      {
-         /* ccpu00136659: CMAS ETWS design change */
-         while (CM_LLIST_FIRST_NODE(&warningSi->warningSiMsg.segLstCp, node))
-         {
-            warningSiPdu = (RgSchWarningSiPdu *)node->node;
-            pdu = warningSiPdu->pdu;
-            /* ccpu00136659: CMAS ETWS design change */
-            cmLListDelFrm(&warningSi->warningSiMsg.segLstCp, node);
-            RGSCH_FREE_MSG(pdu);
-         }
-         cell->siCb.siArray[cell->siCb.siCtx.siId-1].si = NULLP;
-      }
-   }
-   /* Free lists of the cell */
-   rgSCHCfgFreeUeLst(cell);
-#ifdef LTEMAC_SPS
-   rgSCHCfgFreeSpsUeLst(cell);
-#endif /* LTEMAC_SPS */
-#ifdef EMTC_ENABLE
-      if ( TRUE == cell->emtcEnable )
-      {
-         rgSCHEmtcCellDel(cell);
-      }
-#endif
-   rgSCHRamFreeCell(cell);
-
-   rgSCHDbmRntiDbDeInit(cell);
-   /* Deallocate the subframe allocation information */
-   rgSCHUtlPutSfAlloc(cell);
-   rgSCHUtlFreeCell(cell);
-
-   rgSCHCfgFreeRgrCfgLst(cell);
-   rgSCHCfgFreeCmnLcLst(cell);
-
-   rgSCHUtlPutRlsHqAlloc(cell);
-
-#ifdef LTE_TDD
-   rgSCHDbmDeInitUeTfuPendLst(cell);
-#endif /* LTE_TDD */
-
-#ifdef RGR_SI_SCH
-   rgSCHUtlPutSiInfo(cell);
-#endif/*RGR_SI_SCH*/
-
-   (Void)rgSCHDrxCellDel(cell);
-
-   rgSCHUtlFreeSBuf(inst, (Data**)&(cell->dynCfiCb.cceFailSamples),
-               (cell->dynCfiCb.numFailSamples * sizeof(uint16_t)));
-
-#ifdef TENB_STATS
-   TSL2DeallocCellStatsBlk(cell->cellId); 
-#endif
-
-#ifdef LTE_ADV
-   /* LAA_SCELL: Trigger the De-Init function for the LAA Module */
-   rgSCHLaaSCellCbDeInit(cell);
-#endif
-
-#ifdef EMTC_ENABLE
-   if(cell->emtcEnable)
-   {
-      rgSCHEmtcCellFree(cell);
-   }
-#endif
-   /* De-allocate the Cell */
-   /* ccpu00117052 - MOD - Passing double pointer
-   for proper NULLP assignment*/
-   rgSCHUtlFreeSBuf(inst, (Data **)&cell, sizeof(*cell));
-
-
-  /* Stack Crash problem for TRACE5 changes. Added the return below */
-  return;
-
-}  /* rgSCHCfgFreeCellCb */
-
-
-/***********************************************************
- *
- *     Func : rgSCHCfgFreeUeCb
- *
- *
- *     Desc :
- *     - Processing Steps:
- *        - Frees UE control block.
- *
- *     Ret  : Void
- *
- *     Notes:
- *
- *     File :
- *
- **********************************************************/
-static Void rgSCHCfgFreeUeCb
-(
-RgSchCellCb    *cell,
-RgSchUeCb      *ue
-)
-{
-   RgSchCmnUlUe *ueUl = RG_SCH_CMN_GET_UL_UE(ue, cell);
-   RgUeUlHqCb       *ulHqEnt;
-   RgSchDlLcCb       *dlLc;
-   Inst    inst = cell->instIdx;
-   uint8_t lcCnt; 
-   uint8_t lcgId; 
-
-   /* Free all logical channel info per UE */
-   while((dlLc = rgSCHDbmGetNextDlDedLcCb(ue, NULLP)) != NULLP)
-   {
-      rgSCHDbmDelDlDedLcCb(ue, dlLc);
-      rgSCHCfgFreeDlDedLcCb(cell, ue, dlLc);
-   }
-   for (lcCnt =0; lcCnt<RGSCH_MAX_LC_PER_UE; lcCnt++)
-   {
-      if(ue->ul.lcCb[lcCnt].isValid == TRUE) 
-      {
-         lcgId = ue->ul.lcCb[lcCnt].lcg->lcgId;
-         if (lcgId <=3)
-         {
-            rgSCHUtlRgrLcDel(cell, ue, ue->ul.lcCb[lcCnt].lcId,lcgId); 
-            ue->ul.lcCb[lcCnt].isValid = FALSE;
-         }
-      }
-   }
-
-   ulHqEnt = &(ueUl->hqEnt);
-   /* Free Scheduler specific information per UE */
-   rgSCHUtlFreeUe(cell, ue);
-
-   /* Free Uplink HARQ specific information per UE */
-   rgSCHUhmFreeUe(cell, ulHqEnt);
-
-   if ( ue->drxCb != NULLP)
-   {
-      /* free drxCb */
-   /* ccpu00117052 - MOD - Passing double pointer
-   for proper NULLP assignment*/
-      rgSCHUtlFreeSBuf(cell->instIdx,
-            (Data**)(&(ue->drxCb)),
-            sizeof(RgSchDrxUeCb));
-   }
-
-   ue->drxCb = (RgSchDrxUeCb *)NULLP;
-   /* Free Downlink HARQ specific information per UE */
-   rgSCHDhmFreeUe(ue);
-   /* Release the RNTI */
-   if (ue->rntiLnk)
-   {
-      rgSCHUtlRlsRnti(cell, ue->rntiLnk, FALSE, 0);
-   }
-   else
-   {
-      /* Fix : syed HO UE does not have a valid ue->rntiLnk */
-      /* Just indicate to MAC, no need to release at SCH */
-      rgSCHUtlIndRntiRls2Mac(cell, ue->ueId, FALSE, 0);
-   }
-/* rg009.201. Added changes of TFU_UPGRADE */
-#ifdef TFU_UPGRADE
-    rgSCHCfgPCqiSrsSrUeDel(cell,ue); 
-#endif 
-#ifdef LTEMAC_HDFDD
-    rgSCHHdFddUeDel(cell, ue);
-#endif
-#ifdef TENB_STATS
-    if (ue->tenbStats)
-    {
-       TSL2DeallocUeStatsBlk(ue->ueId, ue->tenbStats); 
-    }
-#endif
-
-   /* CA TODO Some handling needed while SCell Delete*/
-#ifdef LTE_ADV
-   /* Delete the UE from the PCell secCellActCeLst*/
-   rgSCHSCellRmvFrmActLst(cell, ue);
-   rgSCHSCellDelUe(cell,ue);
-#endif
-   
-#ifdef LTE_ADV
-   rgSCHLaaDeInitDlRbAllocCb(cell, &ue->cellInfo[RGSCH_PCELL_INDEX]->dlAllocCb);
-#endif
-
-   rgSCHUtlFreeSBuf(inst, (Data **)&ue->cellInfo[0], sizeof(RgSchUeCellInfo));
-   /* De-allocate the Ue */
-   /* ccpu00117052 - MOD - Passing double pointer
-   for proper NULLP assignment*/
-#ifdef EMTC_ENABLE
-   if(ue->isEmtcUe)
-   {
-      rgSCHEmtcUeInfoFree(cell, ue);
-   }
-#endif
-   rgSCHUtlFreeSBuf(inst, (Data **)&ue, sizeof(*ue));
-
-  /* Stack Crash problem for TRACE5 changes. Added the return below */
-  return;
-
-}  /* rgSCHCfgFreeUeCb */
-
-/***********************************************************
- *
- *     Func : rgSCHCfgFreeRgrCfgLst
- *
- *
- *     Desc :
- *     - Processing Steps:
- *        - Frees configuration lists in cell control block.
- *
- *     Ret  : Void
- *
- *     Notes:
- *
- *     File :
- *
- **********************************************************/
-static Void rgSCHCfgFreeRgrCfgLst
-(
-RgSchCellCb      *cell
-)
-{
-   RgSchCfgElem  *rgCfgElem;
-   Inst    inst = cell->instIdx;
-
-   /* Free CURRENT RGR cfg list */
-   while ((rgCfgElem = rgSCHDbmGetNextCrntRgrCfgElem(cell, NULLP)) != NULLP)
-   {
-      rgSCHDbmDelCrntRgrCfgElem(cell, rgCfgElem);
-   /* ccpu00117052 - MOD - Passing double pointer
-   for proper NULLP assignment*/
-      rgSCHUtlFreeSBuf(inst, (Data **)&rgCfgElem, sizeof(*rgCfgElem));
-   }
-
-   /* Free PENDING RGR cfg list */
-   while ((rgCfgElem = rgSCHDbmGetNextPndngRgrCfgElem(cell, NULLP)) != NULLP)
-   {
-      rgSCHDbmDelPndngRgrCfgElem(cell, rgCfgElem);
-   /* ccpu00117052 - MOD - Passing double pointer
-   for proper NULLP assignment*/
-      rgSCHUtlFreeSBuf(inst, (Data **)&rgCfgElem, sizeof(*rgCfgElem));
-   }
-
-
-  /* Stack Crash problem for TRACE5 changes. Added the return below */
-  return;
-
-}  /* rgSCHCfgFreeRgrCfgLst */
-
-
-/***********************************************************
- *
- *     Func : rgSCHCfgFreeCmnLcLst
- *
- *
- *     Desc :
- *     - Processing Steps:
- *        - Frees common logical channels in cell control block.
- *
- *     Ret  : Void
- *
- *     Notes:
- *
- *     File :
- *
- **********************************************************/
-static Void rgSCHCfgFreeCmnLcLst
-(
-RgSchCellCb      *cell
-)
-{
-   RgSchClcDlLcCb *dlCmnLc;
-
-
-   if ((dlCmnLc = rgSCHDbmGetBcchOnBch(cell)) != NULLP)
-   {
-      rgSCHCfgFreeDlCmnLcCb(dlCmnLc);
-   }
-   if ((dlCmnLc = rgSCHDbmGetFirstBcchOnDlsch(cell)) != NULLP)
-   {
-      rgSCHCfgFreeDlCmnLcCb(dlCmnLc);
-   }
-   if ((dlCmnLc = rgSCHDbmGetSecondBcchOnDlsch(cell)) != NULLP)
-   {
-      rgSCHCfgFreeDlCmnLcCb(dlCmnLc);
-   }
-   if ((dlCmnLc = rgSCHDbmGetPcch(cell)) != NULLP)
-   {
-      rgSCHCfgFreeDlCmnLcCb(dlCmnLc);
-   }
-
-
-  /* Stack Crash problem for TRACE5 changes. Added the return below */
-  return;
-
-}  /* rgSCHCfgFreeCmnLcLst */
-
-
-/***********************************************************
- *
- *     Func : rgSCHCfgFreeUeLst
- *
- *
- *     Desc :
- *     - Processing Steps:
- *        - Frees UE list in cell control block.
- *
- *     Ret  : Void
- *
- *     Notes:
- *
- *     File :
- *
- **********************************************************/
-static Void rgSCHCfgFreeUeLst
-(
-RgSchCellCb      *cell
-)
-{
-   RgSchUeCb     *ue;
-#ifdef LTE_ADV
-   RgSchUeCellInfo *sCellInfo;       
-   CmLList         *node;
-#endif
-
-   /* Free Ues in the list */
-   while ((ue = rgSCHDbmGetNextUeCb(cell, NULLP)) != NULLP)
-   {
-      rgSCHDbmDelUeCb(cell, ue);
-
-#ifdef LTE_ADV
-      if(ue->cell != cell)
-      {
-         continue;
-      }
-#endif
-      
-      /* Call MeasGap and AckNakRep processing module */
-      rgSCHMeasGapANRepUeDel(cell, ue, TRUE);
-
-      rgSCHCfgFreeUeCb(cell, ue);
-   }
-
-   /* De-initialize the Ue list */
-   rgSCHDbmDeInitUeCbLst(cell);
-
-
-#ifdef LTE_ADV
-   node = cell->sCellUeLst.first; 
-   while(node)
-   {
-      sCellInfo = (RgSchUeCellInfo *)node->node;
-      node = node->next;
-      rgSCHSCellDelUeSCell(sCellInfo->ue->cell, sCellInfo->ue, sCellInfo->sCellIdx);
-   }   
-#endif
-
-  /* Stack Crash problem for TRACE5 changes. Added the return below */
-  return;
-
-}  /* rgSCHCfgFreeUeLst */
-
-#ifdef LTEMAC_SPS
-/***********************************************************
- *
- *     Func : rgSCHCfgFreeSpsUeLst
- *
- *
- *     Desc :
- *     - Processing Steps:
- *        - Frees Sps UE list in cell control block.
- *
- *     Ret  : Void
- *
- *     Notes:
- *
- *     File :
- *
- **********************************************************/
-static Void rgSCHCfgFreeSpsUeLst(RgSchCellCb *cell)
-{
-   RgSchUeCb     *ue;
-
-   /* Free Ues in the list */
-   while ((ue = rgSCHDbmGetNextSpsUeCb(cell, NULLP)))
-   {
-      rgSCHDbmDelSpsUeCb(cell, ue);
-   }
-
-   /* De-initialize the Ue list */
-   rgSCHDbmDeInitSpsUeCbLst(cell);
-
-}  /* rgSCHCfgFreeSpsUeLst */
-
-#endif /* LTEMAC_SPS */
-
-#ifdef RGR_SI_SCH
-/***********************************************************
- *
- *     Func : rgSCHCfgVldtRgrCellSiCfg
- *
- *     Desc : Validates SI Configuration for SI
- *
- *     Ret  : S16
- *            ROK - Success
- *            RFAILED - Failed
- *
- *     Notes:
- *
- *     File :
- *
- **********************************************************/
-static S16 rgSCHCfgVldtRgrCellSiCfg
-(
-Inst             inst,
-RgrSiCfg         *siCfg
-)
-{
-   uint8_t   idx; /* idx for iteration */
-
-   UNUSED(inst);
-
-#ifndef LTE_TDD
-   /* Check that retxCnt value should be <= value of siWinSize.
-   This validation is only applicable for FDD mode. */
-   if(siCfg->retxCnt > siCfg->siWinSize) 
-   {
-      DU_LOG("\nERROR  -->  SCH : retxCnt is greater than siWinSize, validation failed");
-      return RFAILED;
-   }
-#endif
-
-   /* Validate that a valid value for numSi has been specified */
-   if(siCfg->numSi > RGR_MAX_NUM_SI) 
-   {
-      DU_LOG("\nERROR  -->  SCH : Validation for numSi in SI CFG failed");
-      return RFAILED;
-   }
-
-   /* MinPeriodicity will have the least configured periodicity
-    * Hence initializing with Max periodicity */
-   siCfg->minPeriodicity = RGR_SI_PERD_512;
-
-   /*Validate the value of periodicity specified for SIs */
-   for(idx = 0;idx < siCfg->numSi;idx++)
-   {
-      siCfg->minPeriodicity =     RGSCH_MIN(siCfg->minPeriodicity, 
-            siCfg->siPeriodicity[idx]);
-         /* Set the siPeriodicity as a multiple of 80 subframes */
-         switch(siCfg->siPeriodicity[idx])
-         {
-            case RGR_SI_PERD_8:
-            case RGR_SI_PERD_16:
-            case RGR_SI_PERD_32:
-            case RGR_SI_PERD_64:
-            case RGR_SI_PERD_128:
-            case RGR_SI_PERD_256:
-            case RGR_SI_PERD_512:
-               continue;
-
-         default:
-            DU_LOG("\nERROR  -->  SCH : Validation for SI Periodicity in SI-CFG failed");
-            return RFAILED;
-      }
-   }
-
-   return ROK;
-}  /* rgSCHCfgVldtRgrCellSiCfg */
-
-/* LTE_ADV_FLAG_REMOVED_START */
-/***********************************************************
- *
- *     Func : rgSCHCfgVldtRgrCellLtrAdvCfg
- *
- *     Desc : Validates Lte Adv Configuration
- *
- *     Ret  : S16
- *            ROK - Success
- *            RFAILED - Failed
- *
- *     Notes:
- *
- *     File :
- *
- **********************************************************/
-static S16 rgSCHCfgVldtRgrCellLteAdvCfg
-(
-Inst                     inst,
-RgrLteAdvancedCellConfig *lteAdvCfg,
-uint8_t                       dlTotalBw  
-)
-{
-   uint8_t temp[RGR_ABS_PATTERN_LEN];
-   uint32_t idx;
-   UNUSED(inst);
-
-   if((lteAdvCfg->pres & RGR_SFR) && (RGR_ENABLE == lteAdvCfg->sfrCfg.status))
-   {
-      if(lteAdvCfg->sfrCfg.cellEdgeRbRange.startRb > lteAdvCfg->sfrCfg.cellEdgeRbRange.endRb)
-      {
-         DU_LOG("\nERROR  -->  SCH : Invalid configuration of cell edge bandwidth for SFR feature");
-         return RFAILED;
-      }
-
-      if(lteAdvCfg->sfrCfg.cellEdgeRbRange.endRb >= dlTotalBw)
-      {
-        DU_LOG("\nERROR  -->  SCH : Invalid configuration of cell edge end RB for SFR feature");
-         return RFAILED;
-      }
-         
-#ifdef TFU_UPGRADE      
-      if(lteAdvCfg->sfrCfg.pwrThreshold.pLow >= lteAdvCfg->sfrCfg.pwrThreshold.pHigh)
-      {
-         DU_LOG("\nERROR  -->  SCH : Invalid configuration of power threshold for SFR feature");
-         return RFAILED;
-      }
-#endif      
-   }
-
-   if((lteAdvCfg->pres & RGR_ABS) && (RGR_ENABLE == lteAdvCfg->absCfg.status))
-   {
-      if((RGR_ABS_MUTE != lteAdvCfg->absCfg.absPatternType) && 
-            (RGR_ABS_TRANSMIT != lteAdvCfg->absCfg.absPatternType)) 
-      {
-         DU_LOG("\nERROR  -->  SCH : Invalid configuration of ABS pattern type");
-         return RFAILED;
-      }
-
-       memcpy(temp, lteAdvCfg->absCfg.absPattern,RGR_ABS_PATTERN_LEN);
-      
-       /* Added validation for ABS pattern len */
-      for(idx = 0; idx < RGR_ABS_PATTERN_LEN; idx++)
-      {   
-         if((temp[idx] != 1) && (temp[idx] != 0))
-        {
-           DU_LOG("\nERROR  -->  SCH : Invalid configuration of ABS pattern type");
-           return RFAILED;
-        }
-      }
-   }
-
-   return ROK;
-}
-/* LTE_ADV_FLAG_REMOVED_END */
-
-
-/***********************************************************
- *
- *     Func : rgSCHCfgVldtRgrCellCsgParamCfg
- *
- *     Desc : Validates CSG Parameter Configuration
- *
- *     Ret  : S16
- *            ROK - Success
- *            RFAILED - Failed
- *
- *     Notes:
- *
- *     File :
- *
- **********************************************************/
-static S16 rgSCHCfgVldtRgrCellCsgParamCfg
-(
-Inst                     inst,
-RgrCellCsgParamCfg       *csgParam
-)
-{
-
-   DU_LOG("\nDEBUG  -->  SCH : Validating CSG Parameters \n");
-
-   if(csgParam->minDlResNonCsg > 100)
-   {
-      DU_LOG("\nERROR  -->  SCH : Invalid Configuration of minimum DL resources "
-            "for NON-CSG");
-      return RFAILED;
-   }
-   if(csgParam->minUlResNonCsg > 100)
-   {
-      DU_LOG("\nERROR  -->  SCH : Invalid Configuration of minimum UL resources "
-            "for NON-CSG");
-      return RFAILED;
-   }
-   return ROK;
-}
-
-/**
- * @brief Validates the SI configuration request from RRM to MAC.
- *
- * @details
- *
- *     Function : rgSCHCfgVldtRgrSiCfg
- *
- *     Processing Steps:
- *        - Validate the range of configured values recieved in
- *          configuration request.
- *        - If validated successfully,
- *          - Return ROK
- *        - Else 
- *          - Return RFAILED.
- *      - Else return RFAILED.
- *  @param[in]  Inst         inst
- *  @param[in]  RgrCellCfg   *siCfg
- *  @param[out] RgSchCellCb  *cell
- *  @param[out] RgSchErrInfo *errInfo
- *  @return  S16
- *      -# ROK
- *      -# RFAILED
- **/
-S16 rgSCHCfgVldtRgrSiCfg
-(
-Inst         inst,
-RgrSiCfgReqInfo *siCfg,
-RgSchCellCb      *cell,
-RgSchErrInfo *errInfo
-)
-{
-   MsgLen  msgLen = 0;
-   uint8_t      numSi;
-
-   errInfo->errCause = RGSCHERR_CFG_INVALID_RGR_SI_CFG;
-
-   /*Validate the cfgType parameter */
-   switch(siCfg->cfgType)
-   {
-      /*ccpu00140789*/
-      case RGR_SI_STOP:
-         numSi = (cell->siCb.siBitMask & RGSCH_SI_SICFG_UPD) ?
-              cell->siCb.newSiCfg.numSi : cell->siCfg.numSi;
-         if((siCfg->siId < RGSCH_SI_SIID_LOWER_LMT) ||
-                 (siCfg->siId > numSi))
-         {
-            DU_LOG("\nERROR  -->  SCH : Invalid SI Id value"
-                     " specified");
-            return RFAILED;
-         }
-         errInfo->errCause = RGSCHERR_NONE;
-         return ROK;
-      break;
-      case RGR_SI_CFG_TYPE_MIB:      /* SI CFG Type MIB */
-      case RGR_SI_CFG_TYPE_SIB1:     /* SI CFG TYPE SIB1 */
-      case RGR_SI_CFG_TYPE_SIB1_PWS: /* SI CFG TYPE SIB1_PWS */
-      case RGR_SI_CFG_TYPE_SIB8_CDMA:    /* SI CFG TYPE SIB 8 CDMA */
-#ifdef EMTC_ENABLE
-      case RGR_SI_CFG_EMTC_TYPE_SIB1_BR:
-      case RGR_SI_CFG_EMTC_TYPE_SIB1_BR_PER:
-#endif
-         break;
-
-      case RGR_SI_CFG_TYPE_SI:    /* SI CFG TYPE SI */
-         /*Check that value of SI should be less than equal 
-           to configured numSi parameter value */
-         /* Added siId validation for lower limit */
-         numSi = (cell->siCb.siBitMask & RGSCH_SI_SICFG_UPD) ? 
-            cell->siCb.newSiCfg.numSi : cell->siCfg.numSi;
-         if((siCfg->siId < RGSCH_SI_SIID_LOWER_LMT) || 
-               (siCfg->siId > numSi))
-         {
-            DU_LOG("\nERROR  -->  SCH : Invalid SI Id value"
-                     " specified");
-            return RFAILED;
-         }
-
-         if(siCfg->siId > ((cell->siCfg.minPeriodicity * 10)/cell->siCfg.siWinSize))
-         {
-            DU_LOG("\nERROR  -->  SCH : SiId can not be scheduled ");
-            return RFAILED;
-         }
-         break;
-
-#ifdef EMTC_ENABLE
-      case RGR_SI_CFG_EMTC_TYPE_SI:
-      case RGR_SI_CFG_EMTC_TYPE_SI_PER:
-         if(ROK != rgEmtcvalidateSiCfg(siCfg,cell))
-         {
-            return RFAILED;
-         } 
-         break;
-#endif
-      default:
-         DU_LOG("\nERROR  -->  SCH : Invalid cfgType "
-                      "parameter value");
-         return RFAILED;
-   }
-
-   /*Validate the specified pdu */
-   if(NULLP == siCfg->pdu)
-   {
-      DU_LOG("\nERROR  -->  SCH : Invalid NULLP pdu "
-                   "specified");
-      return RFAILED;
-   }
-
-   /*Check if PDU is of 0 length*/
-   SFndLenMsg(siCfg->pdu, &msgLen);
-   if(0 == msgLen)
-   {
-      DU_LOG("\nERROR  -->  SCH : Invalid pdu "
-                   "specified");
-      return RFAILED;
-   }
-
-   errInfo->errCause = RGSCHERR_NONE;
-
-
-   return ROK;
-}  /* rgSCHCfgVldtRgrSiCfg */
-#endif /*RGR_SI_SCH*/
-
-/* LTE_ADV_FLAG_REMOVED_START */
-/**
- * @brief Validates the RNTP INF request from RRM to MAC.
- *
- * @details
- *
- *     Function : rgSCHCfgVldtRgrLoadInf
- *
- *     Processing Steps:
- *        - Validate the range of configured values recieved in
- *          LOAD INF request.
- *        - If validated successfully,
- *          - Return ROK
- *        - Else
- *          - Return RFAILED.
- *      - Else return RFAILED.
- *  @param[in]  Inst                inst
- *  @param[in]  RgrLoadInfReqInfo   *loadInfReq
- *  @param[out] RgSchCellCb         *cell
- *  @param[out] RgSchErrInfo        *errInfo
- *  @return  S16
- *      -# ROK
- *      -# RFAILED
- **/
-S16 rgSCHCfgVldtRgrLoadInf
-(
-Inst              inst,
-RgrLoadInfReqInfo *loadInfReq,
-RgSchCellCb       *cell,
-RgSchErrInfo      *errInfo
-)
-{
-
-   errInfo->errCause = RGSCHERR_CFG_INVALID_RGR_LOAD_INF;
-
-   /* Validate if the CC startRb which we have received from DSFR lies in CE sub-band of the receiving eNB */
-   if((loadInfReq->rgrCcPHighStartRb >= cell->lteAdvCb.sfrCfg.cellEdgeRbRange.startRb) && 
-         (loadInfReq->rgrCcPHighStartRb <= cell->lteAdvCb.sfrCfg.cellEdgeRbRange.endRb))
-   {
-      DU_LOG("\nERROR  -->  SCH : Invalid rgrCcPHighStartRb received specified");
-      return RFAILED;
-   }
-
-   /* Validate if the CC endRb which we have received from DSFR lies in CE sub-band of the receiving eNB */
-   if((loadInfReq->rgrCcPHighEndRb >= cell->lteAdvCb.sfrCfg.cellEdgeRbRange.startRb) && 
-         (loadInfReq->rgrCcPHighEndRb <= cell->lteAdvCb.sfrCfg.cellEdgeRbRange.endRb))
-   {
-      DU_LOG("\nERROR  -->  SCH : Invalid rgrCcPHighEndRb received specified");
-      return RFAILED;
-   }
-
-   errInfo->errCause = RGSCHERR_NONE;
-
-
-   return ROK;
-}  /* rgSCHCfgVldtRgrLoadInf */
-/* LTE_ADV_FLAG_REMOVED_END */
-
-#ifdef TFU_UPGRADE
-
-/********************************************************************
- *   UE ACQI, PCQI, RI, SRS and SR Re/Configuration  Validation Functions  *
- *                                                                   *
- *********************************************************************/
-
- /*
- * @brief Validates the Tx Mode and PUSCH Mode configuration.
- *
- * @details
- *
- *     Function : rgSCHCfgVldtRgrTxmodePuschMode  
- *
- *     Processing Steps:
- *      - Validate whether the configured PUSCH Mode and the
- *         Configured Tx Mode are in the right combination
- *      - If validated successfully,
- *        - Return ROK.
- *      - Else 
- *        - Return RFAILED.
- *
- *  @param[in]  RgSchCellCb     *cellCb
- *  @param[in]  RgrTxMode     txMde
- *  @param[in]  RgrAprdCqiMode puschMode
- *  @param[out] RgSchErrInfo *errInfo
- *  @return  S16
- *      -# ROK
- *      -# RFAILED
- */
-S16 rgSCHCfgVldtRgrTxmodePuschMode 
-(
-RgSchCellCb     *cellCb,
-RgrTxMode       txMde,
-RgrAprdCqiMode  puschMode,
-RgSchErrInfo    *errInfo
-)
-{
-
-   if (txMde == RGR_UE_TM_1 ||  txMde == RGR_UE_TM_2 ||
-         txMde == RGR_UE_TM_3 || txMde == RGR_UE_TM_7)
-   {
-      if (puschMode == RGR_APRD_CQI_MOD12 ||
-            puschMode == RGR_APRD_CQI_MOD22  ||
-            puschMode == RGR_APRD_CQI_MOD31)
-      {
-         return RFAILED;
-      }
-   }
-
-   if (txMde == RGR_UE_TM_4 ||  txMde == RGR_UE_TM_6)
-   {
-      if (puschMode == RGR_APRD_CQI_MOD20 ||
-            puschMode == RGR_APRD_CQI_MOD30)
-      {
-         return RFAILED;
-      }
-   }
-
-   if (txMde == RGR_UE_TM_5 )
-   {
-      if (puschMode != RGR_APRD_CQI_MOD31)
-      {
-         return RFAILED;
-      }
-   }
-#ifdef LTE_ADV
-   /* TOODO:: Tm8 and TM9 validation has to
-    * be changed as mentioned inthe commented 
-    * code below*/
-   /* TM8 and TM9 supports all modes
-    * Mode 1-2, 2-2, 3-1 if pmi/ri reporting enabled
-    * 2-0,3-0 of pmi/ri reporitng isdisabled *
-    * if pmi/ri is enabled 
-    * Mode 1-2, 2-2, 3-1 if with pmi/ri and csi-rs ports > 1
-    * 2-0,3-0 of pmi/ri reporitng isdisabled and csi-rs ports == 1*/
-
-#endif
-   return ROK;
-}/*rgSCHCfgVldtRgrTxmodePuschMode ends*/
-
- /*
- * @brief Validates the UE ACQI configuration request from RRM to MAC.
- *
- * @details
- *
- *     Function : rgSCHCfgVldtRgrUeACqiCfg  
- *
- *     Processing Steps:
- *      - Validate the UE configuration request from RRC to MAC at CFG:
- *        validate the ACQI Configuration 
- *      - If validated successfully,
- *        - Return ROK.
- *      - Else 
- *        - Return RFAILED.
- *
- *  @param[in] RgSchCellCb        *cellCb,
- *  @param[in] CmLteRnti          crnti,  
- *  @param[in] RgrUeAprdDlCqiCfg   *acqiCfg,  
- *  @param[in] RgrUeTxModeCfg     txMode,
- *  @param[out] RgSchErrInfo       *errInfo
-
- *  @return  S16
- *      -# ROK
- *      -# RFAILED
- */
-S16 rgSCHCfgVldtRgrUeACqiCfg 
-(
-RgSchCellCb        *cellCb,
-CmLteRnti          crnti,  
-RgrUeAprdDlCqiCfg  *acqiCfg,  
-RgrUeTxModeCfg     txMode,
-RgSchErrInfo       *errInfo
-)
-{
-   RgrTxMode      txMde;
-   RgrAprdCqiMode puschMode; 
-
-   if(acqiCfg->pres)
-   {
-      if(txMode.pres == TRUE)
-      {
-         txMde = txMode.txModeEnum;
-         puschMode = acqiCfg->aprdModeEnum;
-         if ( ROK != rgSCHCfgVldtRgrTxmodePuschMode(cellCb, txMde,
-                  puschMode, errInfo))
-         {
-            DU_LOG("\nERROR  -->  SCH : Invalid Aperiodic CQI configuration CRNTI:%d",crnti);
-            return RFAILED;
-         } 
-      }
-   }
-   return ROK;
-}
-
- /*
- * @brief Validates the Tx Mode and PUCCH Mode configuration.
- *
- * @details
- *
- *     Function : rgSCHCfgVldtRgrTxmodePucchMode  
- *
- *     Processing Steps:
- *      - Validate whether the configured PUCCH Mode and the
- *         Configured Tx Mode are in the right combination
- *      - If validated successfully,
- *        - Return ROK.
- *      - Else 
- *        - Return RFAILED.
- *
- *  @param[in]  RgSchCellCb     *cellCb
- *  @param[in]  RgrTxMode     txMde
- *  @param[in]  RgrPrdCqiMode     pucchMode
- *  @param[out] RgSchErrInfo *errInfo
- *  @return  S16
- *      -# ROK
- *      -# RFAILED
- */
-S16 rgSCHCfgVldtRgrTxmodePucchMode 
-(
-RgSchCellCb     *cellCb,
-RgrTxMode       txMde,
-RgrPrdCqiMode   pucchMode,
-RgSchErrInfo    *errInfo
-)
-{
-
-  if (pucchMode == RGR_PRD_CQI_MOD10 || pucchMode == RGR_PRD_CQI_MOD20 )
-  {
-   if (txMde ==RGR_UE_TM_4 || txMde ==RGR_UE_TM_5 || txMde ==RGR_UE_TM_6)
-   {
-      return RFAILED;
-   }
-  }
-  else if (pucchMode == RGR_PRD_CQI_MOD11 || pucchMode == RGR_PRD_CQI_MOD21)
-  {
-     if (txMde ==RGR_UE_TM_1 || txMde ==RGR_UE_TM_2 || txMde ==RGR_UE_TM_3 \
-             || txMde ==RGR_UE_TM_7)
-   {
-      return RFAILED;
-   }
-  }
-  /* TODO:: Tm8 and TM9 validation needs to be added */
-   return ROK;
-}
-
-/*
- * @brief Validates the UE Periodic CQI, PMI, RI, re/configuration request from RRM to MAC.
- *
- * @details
- *
- *     Function : rgSCHCfgVldtRgrUePCqiCfg  
- *
- *     Processing Steps:
- *      - Validate the UE configuration request from RRC to MAC at CFG:
- *        validate the value range for Periodic CQI, PMI, RI values.
- *      - If validated successfully,
- *        - Return ROK.
- *      - Else 
- *        - Return RFAILED.
- *
- *  @param[in] RgSchCellCb        *cellCb,
- *  @param[in] CmLteRnti          crnti,  
- *  @param[in] RgrUePrdDlCqiCfg   *cqiCfg,  
- *  @param[in] RgrUeTxModeCfg     txMode,
- *  @param[out] RgSchErrInfo       *errInfo
- *  @return  S16
- *      -# ROK
- *      -# RFAILED
- */
-#ifdef LTEMAC_HDFDD
-S16 rgSCHCfgVldtRgrUePCqiCfg 
-(
-RgSchCellCb        *cellCb,
-CmLteRnti          crnti,  
-RgrUePrdDlCqiCfg   *cqiCfg,
-Bool               hdFdd,
-RgrUeTxModeCfg     txMode,
-RgSchErrInfo       *errInfo
-)
-#else
-S16 rgSCHCfgVldtRgrUePCqiCfg 
-(
-RgSchCellCb        *cellCb,
-CmLteRnti          crnti,  
-RgrUePrdDlCqiCfg   *cqiCfg,  
-RgrUeTxModeCfg     txMode,
-RgSchErrInfo       *errInfo
-)
-#endif
-{
-   RgrTxMode     txMde; 
-   RgrPrdCqiMode pucchMode; 
-
-   txMde = RGR_UE_TM_1;
-   pucchMode = RGR_PRD_CQI_MOD20;
-   if ( RGR_SCH_PCQI_SETUP == cqiCfg->type )
-   {
-      /*1. Validate for Tx Mode and PUCCH Mode combination*/
-      if(txMode.pres == TRUE)
-      {
-         txMde = txMode.txModeEnum;
-         pucchMode = cqiCfg->cqiSetup.prdModeEnum;
-         if ( ROK != rgSCHCfgVldtRgrTxmodePucchMode(cellCb, txMde,
-                  pucchMode, errInfo))
-         {
-            DU_LOG("\nERROR  -->  SCH : Invalid Tx Mode-PUCCH Mode combination CRNTI:%d",crnti);
-            return RFAILED;
-         } 
-      }
-
-      /*2. Validate for PCQI Reporting Type and PUCCH Mode combination*/
-      if((cqiCfg->cqiSetup.cqiRepType==1) && 
-              ((pucchMode == RGR_PRD_CQI_MOD20) ||
-               (pucchMode == RGR_PRD_CQI_MOD21)))
-      {
-          DU_LOG("\nERROR  -->  SCH : Invalid Reporting Type-PUCCH Mode combination CRNTI:%d",crnti);
-            return RFAILED;
-      }
-
-      if((cqiCfg->cqiSetup.cqiRepType==2) && 
-              ((pucchMode == RGR_PRD_CQI_MOD10) ||
-               (pucchMode == RGR_PRD_CQI_MOD11)))
-      {
-            DU_LOG("\nERROR  -->  SCH : Invalid Reporting Type-PUCCH Mode combination CRNTI:%d",crnti);
-            return RFAILED;
-      }
-
-      /*3. Validate CQI/PMI and RI Configuration related parameter values */
-      /*TODO- To be compared with configured n2Pucch Index*/
-      if (cqiCfg->cqiSetup.cqiPResIdx > RG_SCH_PUCCH_RES_MAX_SUPP ) 
-      {
-         DU_LOG("\nERROR  -->  SCH : Not Supported or Invalid CQI-PUCCH resourceIndex=%d Cfg Val=%d CRNTI:%d", 
-                  RG_SCH_PUCCH_RES_MAX_SUPP, cqiCfg->type,crnti);
-         return RFAILED;
-      } 
-
-#ifdef LTEMAC_HDFDD
-      if(hdFdd)
-      {
-         if((cqiCfg->cqiSetup.cqiPCfgIdx > RG_SCH_ICQI_MAX_SUPP)||
-               (cqiCfg->cqiSetup.cqiPCfgIdx < 7) ||
-               (cqiCfg->cqiSetup.cqiPCfgIdx == 317))
-         {
-            DU_LOG("\nERROR  -->  SCH : Not Supported or Invalid Cfg CQI Min Index Sup =%d"
-                     "Max Index Sup=%d  Cfg Val=%d CRNTI:%d", RG_SCH_ICQI_MIN_SUPP, 
-                     RG_SCH_ICQI_MAX_SUPP, cqiCfg->type,crnti);
-            return RFAILED;
-         }
-      }
-      else 
-      {
-         if((cqiCfg->cqiSetup.cqiPCfgIdx > RG_SCH_ICQI_MAX_SUPP)||
-               (cqiCfg->cqiSetup.cqiPCfgIdx == 317))
-         {
-            DU_LOG("\nERROR  -->  SCH : Not Supported or Invalid Cfg CQI Min Index Sup =%d "
-                     "Max Index Sup=%d  Cfg Val=%d CRNTI:%d", RG_SCH_ICQI_MIN_SUPP, 
-                     RG_SCH_ICQI_MAX_SUPP, cqiCfg->type,crnti);
-            return RFAILED;
-         }
-      }
-#else
-      if((cqiCfg->cqiSetup.cqiPCfgIdx > RG_SCH_ICQI_MAX_SUPP)||
-            (cqiCfg->cqiSetup.cqiPCfgIdx == 317))
-      {
-         DU_LOG("\nERROR  -->  SCH : Not Supported or Invalid Cfg CQI Min Index Sup =%d"
-                  "Max Index Sup=%d  Cfg Val=%d CRNTI;%d", RG_SCH_ICQI_MIN_SUPP, 
-                  RG_SCH_ICQI_MAX_SUPP, cqiCfg->type,crnti);
-         return RFAILED;
-      }
-#endif
-
-      if((cqiCfg->cqiSetup.cqiRepType < RGR_UE_PCQI_WB_REP) ||
-            (cqiCfg->cqiSetup.cqiRepType > RGR_UE_PCQI_SB_REP))
-      {
-         DU_LOG("\nERROR  -->  SCH : Invalid Cfg CQI Report"
-                  "ModeCfg Val=%d CRNTI:%d", cqiCfg->type,crnti);
-         return RFAILED;
-      }
-
-      if((cqiCfg->cqiSetup.cqiRepType == RGR_UE_PCQI_SB_REP) && 
-            ((cqiCfg->cqiSetup.k < RG_SCH_CQI_K_MIN) ||
-            (cqiCfg->cqiSetup.k > RG_SCH_CQI_K_MAX)))
-      {
-         DU_LOG("\nERROR  -->  SCH : Invalid CQI Cfg K Cfg Val=%d CRNTI:%d", cqiCfg->type,crnti);
-         return RFAILED;
-      }
-
-      if((cqiCfg->cqiSetup.cqiRepType == RGR_UE_PCQI_SB_REP) && 
-            (cellCb->bwCfg.dlTotalBw <= 7))
-      {
-         DU_LOG("\nERROR  -->  SCH : Invalid Periodic CQI mode Cfg for dlTotalBw (%d) for CRNTI:%d", 
-                  cellCb->bwCfg.dlTotalBw, crnti);
-         return RFAILED;
-      }
-
-#ifndef LTE_TDD
-      if (cqiCfg->cqiSetup.cqiPCfgIdx == RG_SCH_ICQI_RESV_FDD ) 
-      {  
-         DU_LOG("\nERROR  -->  SCH : Reserved value Cfg =%d CRNTI:%d", 
-                  cqiCfg->cqiSetup.cqiPResIdx,crnti);
-         return RFAILED;
-      }
-#endif
-
-      /* 4. Check RI Configuration values */
-       if(cqiCfg->cqiSetup.riEna == TRUE)
-      {
-         if(txMode.pres == TRUE)
-         {
-            if((txMde != RGR_UE_TM_3)  
-            && (txMde != RGR_UE_TM_4) 
-            && (txMde != RGR_UE_TM_8) 
-#ifdef LTE_ADV
-            && (txMde != RGR_UE_TM_9)
-#endif
-             )
-            {
-               DU_LOG("\nERROR  -->  SCH : Invalid Transmission Mode =%d CRNTI:%d",
-                  txMde,crnti);
-               return RFAILED;
-            }
-         }
-         
-         if(cqiCfg->cqiSetup.riCfgIdx > RG_SCH_IRI_MAX_SUPP)
-         {
-            DU_LOG("\nERROR  -->  SCH : Invalid Index RI value Cfg =%d CRNTI:%d",
-                  cqiCfg->cqiSetup.riCfgIdx,crnti);
-            return RFAILED;
-         }
-      }
-   }
-
-  
-   return ROK;
-}
-
-/*
- * @brief Validates the UE SRS Re/Configuation request from RRM to MAC.
- *
- * @details
- *
- *     Function : rgSCHCfgVldtRgrUeUlSrsCfg 
- *
- *     Processing Steps:
- *      - Validate the UE configuration request from RRC to MAC at CFG:
- *        validate the value range for SRS values.
- *      - If validated successfully,
- *        - Return ROK.
- *      - Else 
- *        - Return RFAILED.
- *
- *  @param[in] RgSchCellCb       *cellCb,
- *  @param[in] CmLteRnti         crnti,  
- *  @param[in] RgrUeUlSrsCfg     *srsCfg,  
- *  @param[out] RgSchErrInfo     *errInfo
- *  @return  S16
- *      -# ROK
- *      -# RFAILED
- */
-#ifdef LTEMAC_HDFDD
-S16 rgSCHCfgVldtRgrUeUlSrsCfg 
-(
- RgSchCellCb       *cellCb,
- CmLteRnti         crnti,  
- RgrUeUlSrsCfg     *srsCfg,
- Bool              hdFdd,
- RgSchErrInfo      *errInfo
- )
-#else
-S16 rgSCHCfgVldtRgrUeUlSrsCfg 
-(
-RgSchCellCb       *cellCb,
-CmLteRnti         crnti,  
-RgrUeUlSrsCfg     *srsCfg,  
-RgSchErrInfo      *errInfo
-)
-#endif
-{
-   uint16_t    srsPeri=0;
-   uint16_t    srsOffset=0;
-   uint8_t     srsSubframe=0;
-   
-   if ( RGR_SCH_SRS_SETUP == srsCfg->type )
-   {
-
-      /*ccpu00130768 - ADD - if cell specific SRS is not configured*/
-      if(cellCb->srsCfg.isSrsCfgPres == FALSE)
-      {
-         DU_LOG("\nERROR  -->  SCH : Cell specific SRS is not configured CRNTI:%d",crnti);
-         return RFAILED;
-      }
-
-      /*  1. Validate SRS Configuration related parameter values  */
-      /* 1.1 iSRS should be 0-636; Ref: 36.213. Table 8.2-1 */
-#ifdef LTEMAC_HDFDD
-      if(hdFdd)
-      {
-         if ( (srsCfg->srsSetup.srsCfgIdx < 7) || 
-               (srsCfg->srsSetup.srsCfgIdx > RG_SCH_ISRS_MAX_SUPP) )
-         {
-            DU_LOG("\nERROR  -->  SCH : Not Supported or Invalid Cfg "
-                     "SRS Min Index Sup =%d   Max Index Sup=%d  Cfg Val=%d CRNTI:%d",
-                     RG_SCH_ISRS_MIN_SUPP, RG_SCH_ISRS_MAX_SUPP,
-                     srsCfg->srsSetup.srsCfgIdx,crnti);
-            return RFAILED;
-         }
-      }
-      else
-      {
-         if ( srsCfg->srsSetup.srsCfgIdx > RG_SCH_ISRS_MAX_SUPP )
-         {
-            DU_LOG("\nERROR  -->  SCH : Not Supported or Invalid Cfg"
-                     "SRS Min Index Sup =%d   Max Index Sup=%d  Cfg Val=%d CRNTI:%d",
-                     RG_SCH_ISRS_MIN_SUPP, RG_SCH_ISRS_MAX_SUPP,
-                     srsCfg->srsSetup.srsCfgIdx,crnti);
-            return RFAILED;
-         }
-
-      }
-#else
-      if ( srsCfg->srsSetup.srsCfgIdx > RG_SCH_ISRS_MAX_SUPP )
-      {
-         DU_LOG("\nERROR  -->  SCH : Not Supported or Invalid Cfg" 
-                  "SRS Min Index Sup =%d   Max Index Sup=%d  Cfg Val=%d CRNTI:%d",
-                  RG_SCH_ISRS_MIN_SUPP, RG_SCH_ISRS_MAX_SUPP,
-                  srsCfg->srsSetup.srsCfgIdx,crnti);
-         return RFAILED;
-      }
-#endif
-#ifdef LTE_TDD
-      /* Compute SRS Offset and Periodicity */
-      rgSCHUtlGetCfgPerOff( RG_SCH_TDD_SRS_TBL, 
-            srsCfg->srsSetup.srsCfgIdx,
-            &srsPeri, &srsOffset);  
-#else
-      rgSCHUtlGetCfgPerOff( RG_SCH_FDD_SRS_TBL, 
-            srsCfg->srsSetup.srsCfgIdx,
-            &srsPeri, &srsOffset);     
-#endif
-       srsSubframe = srsOffset%RGSCH_NUM_SUB_FRAMES;
-#ifdef LTE_TDD   
-      if(rgSchTddCellSpSrsSubfrmTbl[cellCb->srsCfg.srsSubFrameCfg][srsSubframe] == FALSE)   {      
-#else   
-      if(rgSchFddCellSpSrsSubfrmTbl[cellCb->srsCfg.srsSubFrameCfg][srsSubframe] == FALSE)   {
-#endif
-         DU_LOG("\nERROR  -->  SCH : UE specific SRS is not occuring in Cell specific SRS subframe"
-               "srs Cfg Idx =%d CRNTI:%d",
-               srsCfg->srsSetup.srsCfgIdx,crnti);
-         return RFAILED;
-      }
-
-
-      if ( srsCfg->srsSetup.fDomPosi > RG_SCH_SRS_FREQDOM_POS_MAX )
-      {
-         DU_LOG("\nERROR  -->  SCH : Not Supported or Invalid Cfg" 
-                  "SRS Min Freq Domain Position =%d"   
-                  "Max Freq Domain Position =%d  Cfg Val=%d CRNTI:%d",
-                  RG_SCH_SRS_FREQDOM_POS_MIN, RG_SCH_SRS_FREQDOM_POS_MAX,
-                  srsCfg->srsSetup.srsCfgIdx,crnti);
-         return RFAILED;
-      }
-
-      if ( srsCfg->srsSetup.txComb > RG_SCH_SRS_TXCOMB_MAX )
-      {
-         DU_LOG("\nERROR  -->  SCH : Not Supported or Invalid Cfg" 
-                  "SRS Min TX Comb =%d   Max TX Comb =%d  Cfg Val=%d CRNTI:%d",
-                  RG_SCH_SRS_TXCOMB_MIN, RG_SCH_SRS_TXCOMB_MAX,
-                  srsCfg->srsSetup.srsCfgIdx,crnti);
-         return RFAILED;
-      }
-   }
-   return ROK;
-}
-
-/*
- * @brief Validates the UE SR Re/configuration request from RRM to MAC.
- *
- * @details
- *
- *     Function : rgSCHCfgVldtRgrUeSrCfg 
- *
- *     Processing Steps:
- *      - Validate the UE re/configuration request from RRC to MAC at CFG:
- *        validate the value range for SR values.
- *      - If validated successfully,
- *        - Return ROK.
- *      - Else 
- *        - Return RFAILED.
- *
- *  @param[in] RgSchCellCb      *cellCb,
- *  @param[in] CmLteRnti        crnti,  
- *  @param[in] RgrUeSrCfg       *srCfg,  
- *  @param[out] RgSchErrInfo    *errInfo
- *  @return  S16
- *      -# ROK
- *      -# RFAILED
- */
-#ifdef LTEMAC_HDFDD 
-S16 rgSCHCfgVldtRgrUeSrCfg 
-(
- RgSchCellCb      *cellCb,
- CmLteRnti        crnti,  
- RgrUeSrCfg       *srCfg,
- Bool             hdFdd,
- RgSchErrInfo     *errInfo
- )
-#else
-S16 rgSCHCfgVldtRgrUeSrCfg 
-(
- RgSchCellCb      *cellCb,
- CmLteRnti        crnti,  
- RgrUeSrCfg       *srCfg,  
- RgSchErrInfo     *errInfo
- )
-#endif
-{
-
-   if ( RGR_SCH_SR_SETUP == srCfg->type )
-   {
-      /* 1. Validate SR Configuration related parameter values  */
-#ifdef LTEMAC_HDFDD
-      if(hdFdd)
-      {
-         if (( srCfg->srSetup.srResIdx > RG_SCH_SR_RES_IDX   ) ||
-               ( srCfg->srSetup.srCfgIdx < 5 ) ||
-               ( srCfg->srSetup.srCfgIdx > RG_SCH_ISR_MAX_SUPP )) 
-         {
-             DU_LOG("\nERROR  -->  SCH : Invalid SR Index Cfg =%d"
-                      "Max Supp=%d,Min Supp=%d CRNTI:%d", srCfg->srSetup.srCfgIdx, 
-                     RG_SCH_ISR_MAX_SUPP, RG_SCH_ISR_MIN_SUPP,crnti);
-
-            return RFAILED;
-         }
-      }
-      else
-      {
-         if (( srCfg->srSetup.srResIdx > RG_SCH_SR_RES_IDX   ) ||
-               ( srCfg->srSetup.srCfgIdx > RG_SCH_ISR_MAX_SUPP )) 
-         {
-            DU_LOG("\nERROR  -->  SCH : Invalid SR Index Cfg =%d" 
-                      "Max Supp=%d,Min Supp=%d CRNTI:%d", srCfg->srSetup.srCfgIdx, 
-                     RG_SCH_ISR_MAX_SUPP, RG_SCH_ISR_MIN_SUPP,crnti);
-
-            return RFAILED;
-         }
-      }
-#else
-      if (( srCfg->srSetup.srResIdx > RG_SCH_SR_RES_IDX   ) ||
-            ( srCfg->srSetup.srCfgIdx > RG_SCH_ISR_MAX_SUPP )) 
-      {
-         DU_LOG("\nERROR  -->  SCH : Invalid SR Index Cfg =%d"
-                  "Max Supp=%d,Min Supp=%d CRNTI:%d", srCfg->srSetup.srCfgIdx, 
-                  RG_SCH_ISR_MAX_SUPP, RG_SCH_ISR_MIN_SUPP,crnti);
-
-         return RFAILED;
-      }
-#endif
-   } 
-   return ROK;
-}
-
-
-/*
- * @brief Validates the UE Aperiodic & Periodic  CQI, PMI, RI, SRS and SR Configuration 
- *             request from RRM to MAC.
- *
- * @details
- *
- *     Function :rgSCHCfgVldtCqiSrSrsUeCfg 
- *
- *     Processing Steps:
- *      - Validate the UE configuration request from RRC to MAC at CFG:
- *        validate the value range for Aperiodic & Periodic CQI, PMI, RI , SRS and SR values.
- *      - If validated successfully,
- *        - Return ROK.
- *      - Else 
- *        - Return RFAILED.
- *
- *  @param[in]  RgSchCellCb  *cellCb
- *  @param[in]  RgrUeCfg     *ueCfg
- *  @param[out] RgSchErrInfo *errInfo
- *  @return  S16
- *      -# ROK
- *      -# RFAILED
- */
-static S16 rgSCHCfgVldtCqiSrSrsUeCfg 
-(
-RgSchCellCb       *cellCb,  
-RgrUeCfg          *ueCfg,  
-RgSchErrInfo      *errInfo
-)
-{
-
-   /*  1. Validate UE Aperiodic CQI related parameters */
-   if ( ROK != rgSCHCfgVldtRgrUeACqiCfg (cellCb, ueCfg->crnti,
-            &ueCfg->ueDlCqiCfg.aprdCqiCfg, ueCfg->txMode, errInfo ))
-   {
-      DU_LOG("\nERROR  -->  SCH : Invalid Aperiodic CQI configuration CRNTI:%d",ueCfg->crnti);
-      return RFAILED;
-   }
-
-   /*  1. Validate UE Periodic CQI/PMI, SRS and SR related parameters */
-#ifdef LTEMAC_HDFDD
-   if ( ROK != rgSCHCfgVldtRgrUePCqiCfg (cellCb, ueCfg->crnti,
-            &ueCfg->ueDlCqiCfg.prdCqiCfg, ueCfg->isHdFddEnbld, 
-            ueCfg->txMode, errInfo ))
-#else
-      if ( ROK != rgSCHCfgVldtRgrUePCqiCfg (cellCb, ueCfg->crnti,
-             &ueCfg->ueDlCqiCfg.prdCqiCfg, ueCfg->txMode, errInfo ))
-#endif
-      {
-         DU_LOG("\nERROR  -->  SCH : Invalid Periodic CQI configuration CRNTI:%d",ueCfg->crnti);
-         return RFAILED;
-      }
-
-   /*  2. Validate SRS Configuration related parameter values  */
-#ifdef LTEMAC_HDFDD
-   if ( ROK != rgSCHCfgVldtRgrUeUlSrsCfg(cellCb, ueCfg->crnti, &ueCfg->srsCfg,
-            ueCfg->isHdFddEnbld, errInfo ))
-#else
-      if ( ROK != rgSCHCfgVldtRgrUeUlSrsCfg(cellCb, ueCfg->crnti, 
-                  &ueCfg->srsCfg, errInfo ))
-#endif
-      {
-         DU_LOG("\nERROR  -->  SCH : Invalid SRS  configuration CRNTI:%d",ueCfg->crnti);
-         return RFAILED;
-      } 
-
-   /*  3. Validate SR Configuration related parameter values  */
-#ifdef LTEMAC_HDFDD
-   if ( ROK != rgSCHCfgVldtRgrUeSrCfg (cellCb, ueCfg->crnti, &ueCfg->srCfg,
-            ueCfg->isHdFddEnbld, errInfo))
-#else
-      if ( ROK != rgSCHCfgVldtRgrUeSrCfg (cellCb, ueCfg->crnti, 
-                  &ueCfg->srCfg, errInfo))
-#endif
-      {
-         DU_LOG("\nERROR  -->  SCH : Invalid SR  configuration CRNTI:%d",ueCfg->crnti);
-         return RFAILED;
-      }
-
-   return ROK;
-
-}
-
-
-
-/*****************************************************************
- *   UE PCQI, RI, SRS and SR Re Configuration  Validation Functions  *
- *                                                                *
- ******************************************************************/
-/*
- * @brief Validates the UE Periodic CQI, PMI, RI, SRS and SR 
- * Re-configuration request from RRM to MAC.
- *
- * @details
- *
- *     Function : rgSCHCfgVldtCqiSrSrsUeReCfg 
- *
- *     Processing Steps:
- *      - Validate the UE Re configuration request from RRC to MAC at CFG:
- *        validate the value range for Periodic CQI, PMI, RI, SRS and SR values.
- *      - If validated successfully,
- *        - Return ROK.
- *      - Else 
- *        - Return RFAILED.
- *
- *  @param[in]   RgSchCellCb *cellCb
- *  @param[in]   RgSchUeCb   *ueCb
- *  @param[in]  RgrUeCfg     *ueCfg
- *  @param[out] RgSchErrInfo *errInfo
- *  @return  S16
- *      -# ROK
- *      -# RFAILED
- */
-static S16 rgSCHCfgVldtCqiSrSrsUeReCfg 
-(
-RgSchCellCb          *cellCb,
-RgSchUeCb            *ueCb,
-RgrUeRecfg           *ueReCfg,  
-RgSchErrInfo         *errInfo
-)
-{
-   RgrUeTxModeCfg     txMode;
-
-   txMode.pres = TRUE;
-   txMode.tmTrnstnState = RGR_TXMODE_RECFG_CMPLT;
-   if ((ueReCfg->ueRecfgTypes & RGR_UE_TXMODE_RECFG) &&
-       (ueReCfg->txMode.pres == TRUE)) 
-   {
-      txMode.txModeEnum = ueReCfg->txMode.txModeEnum;
-   }
-   else
-   {
-      txMode.txModeEnum = ueCb->mimoInfo.txMode;
-   }
-
-   /*    1. Validate UE CQI/PMI, SRS and SR related parameters */
-
-   if ( ueReCfg->ueRecfgTypes & RGR_UE_APRD_DLCQI_RECFG ) 
-   { 
-      if ( ROK != rgSCHCfgVldtRgrUeACqiCfg (cellCb, ueReCfg->oldCrnti,     
-               &ueReCfg->aprdDlCqiRecfg, txMode, errInfo ))
-      {
-         DU_LOG("\nERROR  -->  SCH : Invalid Aperiodic CQI configuration OLD CRNTI:%d",ueReCfg->oldCrnti);
-         return RFAILED;
-      }
-   }
-
-
-   /*    2. Validate UE CQI/PMI, SRS and SR related parameters */
-
-   if ( ueReCfg->ueRecfgTypes & RGR_UE_PCQI_RECFG ) 
-   { 
-#ifdef LTEMAC_HDFDD   
-      if ( ROK != rgSCHCfgVldtRgrUePCqiCfg (cellCb, ueReCfg->oldCrnti,     
-               &ueReCfg->cqiCfg, ueReCfg->isHdFddEnbld, txMode, errInfo ))
-#else
-         if ( ROK != rgSCHCfgVldtRgrUePCqiCfg (cellCb, ueReCfg->oldCrnti,     
-                  &ueReCfg->cqiCfg, txMode, errInfo ))
-#endif
-
-         {
-            DU_LOG("\nERROR  -->  SCH : Invalid Periodic CQI configuration OLD CRNTI:%d",ueReCfg->oldCrnti);
-            return RFAILED;
-         }
-   }
-
-   if(ueReCfg->ueRecfgTypes & RGR_UE_SRS_RECFG )
-   {
-#ifdef LTEMAC_HDFDD
-      if ( ROK != rgSCHCfgVldtRgrUeUlSrsCfg(cellCb, ueReCfg->oldCrnti,
-               &ueReCfg->srsCfg, ueReCfg->isHdFddEnbld, errInfo ))
-#else
-         if ( ROK != rgSCHCfgVldtRgrUeUlSrsCfg(cellCb, ueReCfg->oldCrnti,
-                  &ueReCfg->srsCfg, errInfo ))
-#endif
-         {
-            DU_LOG("\nERROR  -->  SCH : Invalid SRS  configuration OLD CRNTI:%d",ueReCfg->oldCrnti);
-            return RFAILED;
-         } 
-
-   }
-
-   if ( ueReCfg->ueRecfgTypes & RGR_UE_SR_RECFG )
-   {
-#ifdef LTEMAC_HDFDD
-      if ( ROK != rgSCHCfgVldtRgrUeSrCfg (cellCb, ueReCfg->oldCrnti, 
-            &ueReCfg->srCfg, ueReCfg->isHdFddEnbld, errInfo))
-#else
-         if ( ROK != rgSCHCfgVldtRgrUeSrCfg (cellCb, ueReCfg->oldCrnti, 
-            &ueReCfg->srCfg, errInfo))
-#endif
-         {
-            DU_LOG("\nERROR  -->  SCH : Invalid SR configuration OLD CRNTI:%d",ueReCfg->oldCrnti);
-            return RFAILED;
-         }
-   }
-
-   return ROK;
-}
-
-
-/*****************************************************************
- *   UE ACQI, PCQI, RI, SRS SR Configuration Functions      *
- *                                                                *
- ******************************************************************/
-   /**
-    * @brief Handles Aperiodic CQI , PMI, RI  configuration for a UE.
-    *
-    * @details
-    *
-    *     Function : rgSCHCfgACqiUeCfg 
-    *
-    *     Invoking Module Processing:
-    *      - This shall be invoked by SCH_GOM at UE configuration. It 
-    *      shall do the validations for the spec-defined values.
-    *        
-    *     Processing Steps:
-    *     
-    *     - Return ROK
-    *
-    *  @param[in]  RgSchCellCb  *cell
-    *  @param[in]  RgrTxMode    txMode
-    *  @param[in]  RgrUeAprdDlCqiCfg *aCqiCfg
-    *  @param[in]  CmLteUeCategory        ueCat
-    *  @return  S16
-    *      -# ROK
-    *
-    **/
-S16 rgSCHCfgACqiUeCfg
-(
-RgSchCellCb        *cellCb, 
-RgSchUeCb          *ue, 
-RgSchUeACqiCb      *acqiCb,
-RgrTxMode           ueTxMode,
-RgrUeAprdDlCqiCfg  *aCqiCfg,
-CmLteUeCategory     ueCat
-)
-{
-   uint8_t     M;  /*Num of Subbands -- Applicable only for Mode 2-0 and 2-2*/
-   uint8_t     k;  /*SubBand Size (RB)  -- 
-              Holds different values depending on Mode*/
-   uint8_t     cqiPmiSzR1;   /*CQIPMI Size for Rank =1*/
-   uint8_t     cqiPmiSzRn1; /*CQIPMI Size for Rank > 1*/
-
-   cqiPmiSzR1 = 0;
-   cqiPmiSzRn1 = 0;
-   
-   acqiCb->aCqiCfg.pres = aCqiCfg->pres;
-   acqiCb->aCqiCfg.aprdModeEnum = aCqiCfg->aprdModeEnum;
-
-   if(aCqiCfg->pres)
-   {
-#ifdef LTE_ADV
-      /*Store Trigger Set Bit String to UE */
-      RgSchUeCellInfo *pCellInfo = RG_SCH_CMN_GET_PCELL_INFO(ue);
-      pCellInfo->acqiCb.aCqiCfg.triggerSet1 = aCqiCfg->triggerSet1;
-      pCellInfo->acqiCb.aCqiCfg.triggerSet2 = aCqiCfg->triggerSet2;
-#endif
-
-
-      switch(aCqiCfg->aprdModeEnum)
-      {
-         case RGR_APRD_CQI_MOD12:
-         case RGR_APRD_CQI_MOD30:
-         case RGR_APRD_CQI_MOD31:
-            RG_SCH_GET_CQI_K_VAL(cellCb->bwCfg.dlTotalBw, k);
-            acqiCb->N = RGSCH_CEIL(cellCb->bwCfg.dlTotalBw, k);
-            acqiCb->k = k;
-            break;
-
-         case RGR_APRD_CQI_MOD20:
-         case RGR_APRD_CQI_MOD22:
-            RG_SCH_GET_SBCQI_M_K_VAL(cellCb->bwCfg.dlTotalBw, M, k);
-            acqiCb->N = RGSCH_CEIL(cellCb->bwCfg.dlTotalBw, k);
-            acqiCb->k = k;
-            acqiCb->M = M;
-            acqiCb->L = RgSCHUeAcqi2022LBitWidth[M-1][acqiCb->N-1];
-            break;
-
-         default:
-            break; 
-      }
-      if((ueTxMode == RGR_UE_TM_3) || 
-         (ueTxMode == RGR_UE_TM_4))
-      {
-         if(cellCb->numTxAntPorts ==2)
-         {
-            acqiCb->riNumBits = 1;
-         }
-         else if(cellCb->numTxAntPorts ==4)
-         {
-            if(ueCat == CM_LTE_UE_CAT_8)
-            {
-               acqiCb->riNumBits = 3;
-            }
-            else if(ueCat >= CM_LTE_UE_CAT_5)  
-            {
-               acqiCb->riNumBits = 2;
-            }
-            else
-            {
-               acqiCb->riNumBits = 1;
-            }
-         }
-      }
-      rgSCHCfgUtlFetchAcqiBitSz(acqiCb, cellCb->numTxAntPorts, 
-            &cqiPmiSzR1, &cqiPmiSzRn1);
-      acqiCb->cqiPmiSzR1  = cqiPmiSzR1;
-      acqiCb->cqiPmiSzRn1 = cqiPmiSzRn1;
-   }
-   acqiCb->cqiReqField = TRUE;
-#ifdef LTE_ADV
-   rgSchCmnSetCqiReqField(RG_SCH_CMN_GET_SCELL_INFO(ue, cellCb),ue,&acqiCb->cqiReqField);
-#endif
-   
-   return ROK;
-}
-
-/**
- * @brief Handles Periodic CQI , PMI, RI  configuration for a UE.
- *
- * @details
- *
- *     Function : rgSCHCfgPCqiUeCfg 
- *
- *     Invoking Module Processing:
- *      - This shall be invoked by SCH_GOM at UE configuration. It shall do the
- *      validations for the spec-defined values.
- *        
- *     Processing Steps:
- *     - For UE-specific Periodic CQI  related configuration, 
- *      - If Periodic CQI/PMI is configured,
- *        - Update UE with the configured values.
- - Compute and Update next occurance of CQI/PMI or RI Tranmission instance.
- - Update the CQI offset and CQI perodicity information
- - Add Ue to cell's list  
- *        
- *
- *     - For UE-specific Periodic RI  related configuration, 
- *      - If Periodic RI is configured,
- *        - Update UE with the configured values.
- - Compute and Update next occurance of RI Tranmission instance.
- - Update the  RI offset and RI perodicity information
- *      
- *
- *     - Return ROK
- *
- *  @param[in]  RgSchCellCb  *cell
- *  @param[in]  RgSchUeCb    *ue
- *  @param[in]  RgrUePrdDlCqiCfg *cqiCfg
- *  @param[in]  CmLteUeCategory   ueCat
- *  @return  S16
- *      -# ROK
- *
- **/
-S16 rgSCHCfgPCqiUeCfg
-(
-RgSchCellCb         *cellCb, 
-RgSchUeCb           *ueCb, 
-RgrUePrdDlCqiCfg    *cqiCfg,
-CmLteUeCategory     ueCat
-)
-{  
-   CmLteTimingInfo timingInfo;
-   uint16_t    crntTime;           
-   uint16_t    cqiTrInstTime; 
-   uint8_t     j;  /*Bandwidth Parts*/
-   uint8_t     temp; 
-   uint8_t     loop;
-   RgSchUePCqiCb *cqiCb = NULLP;
-
-   crntTime = (cellCb->crntTime.sfn * RGSCH_NUM_SUB_FRAMES_5G)+
-                  (cellCb->crntTime.slot);
-   cqiCb = RG_SCH_GET_UE_CELL_CQI_CB(ueCb,cellCb);
-   cqiCb->servCellInfo = ueCb->cellInfo[0];
-   /* Periodic CQI is setup  */
-   if (cqiCfg->type == RGR_SCH_PCQI_SETUP)
-   {   
-      for(loop = 0; loop < MAX_CQI_RI_RPT_BUFF;loop++)
-      {
-         ueCb->rawCqiBitW[loop].type = TFU_RECP_REQ_INVLD; /* setting invalid  type*/
-      }
-      /*  1. Copy the Received CQI Cfg parameters to ueCb  */
-      memcpy(&cqiCb->cqiCfg, cqiCfg, 
-            sizeof(RgrUePrdDlCqiCfg));
-
-      /*  2. Compute Periodic CQI Periodicity and subframe offset   */
-#ifndef LTE_TDD           
-      rgSCHUtlGetCfgPerOff(RG_SCH_FDD_PCQI_TBL, cqiCfg->cqiSetup.cqiPCfgIdx,
-            &cqiCb->cqiPeri, &cqiCb->cqiOffset);      
-#else
-      rgSCHUtlGetCfgPerOff( RG_SCH_TDD_PCQI_TBL, 
-            cqiCfg->cqiSetup.cqiPCfgIdx,
-            &cqiCb->cqiPeri, &cqiCb->cqiOffset);    
-#endif
-      DU_LOG("\nDEBUG  -->  SCH : rgSCHCfgPCqiUeCfg(): UEID:%d CQI Peri=%d, CQI Offset=%d",
-            ueCb->ueId,
-            cqiCb->cqiPeri,
-            cqiCb->cqiOffset);
-
-
-      cqiTrInstTime = ((cqiCb->cqiPeri+crntTime) - cqiCb->cqiOffset)
-         %cqiCb->cqiPeri;
-      cqiCb->nCqiTrIdx = (crntTime + 
-            (cqiCb->cqiPeri - cqiTrInstTime));
-      /* Introduced timing delta for reception req
-       * in FDD*/
-      if(cqiCb->nCqiTrIdx  <= (crntTime + TFU_RECPREQ_DLDELTA))
-      {
-         cqiCb->nCqiTrIdx = cqiCb->nCqiTrIdx + cqiCb->cqiPeri;
-      }
-
-      /* To handle the SFN wrap around case */
-      cqiCb->nCqiTrIdx = cqiCb->nCqiTrIdx % (RGSCH_MAX_SFN * RGSCH_NUM_SUB_FRAMES_5G);
-
-      timingInfo.sfn =  cqiCb->nCqiTrIdx/RGSCH_NUM_SUB_FRAMES_5G;
-      timingInfo.slot =  cqiCb->nCqiTrIdx % RGSCH_NUM_SUB_FRAMES_5G;
-
-      cqiCb->nCqiTrIdx = cqiCb->nCqiTrIdx
-           %RG_SCH_PCQI_SRS_SR_TRINS_SIZE;
-
-#ifdef EMTC_ENABLE
-         /*CQI Repetition configuration*/
-      if(ueCb->isEmtcUe)
-      {
-          rgSchfillPucchCqiRepNumCountemtc(cqiCb, ueCb);
-      }
-#endif
-
-      if(RGR_UE_PCQI_SB_REP == cqiCfg->cqiSetup.cqiRepType)
-      {
-         uint8_t     k;  /*SubBand Size (RB) */
-         RG_SCH_GET_CQI_J_VAL(cellCb->bwCfg.dlTotalBw, j);
-         RG_SCH_GET_CQI_K_VAL(cellCb->bwCfg.dlTotalBw, k);
-         cqiCb->J = j; /*Number of Bandwidth Parts*/
-         /*h: reporting instances required for a complete CQI/PMI report */
-         /*j:Number of bandwidth parts; k: Subband Size*/
-         cqiCb->h = (cqiCb->cqiCfg.cqiSetup.k *j )+1; 
-         /* ccpu00140905- L-size is coming as 3 for 100Rbs where it should be 2*/
-         temp = RGSCH_CEIL(cellCb->bwCfg.dlTotalBw, (j*k));
-         cqiCb->label = (temp & (temp-1)) ?
-            (1+ rgSCHUtlLog32bitNbase2(temp)) : rgSCHUtlLog32bitNbase2(temp);
-
-         rgSCHTomUtlPcqiSbCalcBpIdx(timingInfo,ueCb, cqiCb); 
-      }
-#ifdef LTE_ADV
-      else
-      {
-         cqiCb->prioLvl = RG_SCH_CQI_PRIO_LVL_1;
-      }
-#endif
-
-      /*    Place the UE in cellCb->tIUeLstCp  */
-      cqiCb->cqiLstEnt.node=(PTR) cqiCb;
-#ifdef LTE_ADV
-      cqiCb->isCqiIgnoByCollsn = FALSE;
-      cqiCb->isRiIgnoByCollsn = FALSE;
-#endif
-
-
-      cmLListAdd2Tail(&cellCb->pCqiSrsSrLst[cqiCb->nCqiTrIdx].cqiLst,
-            &cqiCb->cqiLstEnt);  
-
-
-      /* 4. Rank Indicator Cfg handler */
-      rgSCHCfgRiUeCfg(cellCb, ueCb, cqiCfg, ueCat);
-   }
-   else
-   { 
-      cqiCb->cqiCfg.type =  RGR_SCH_PCQI_REL;
-      if(cqiCb->nCqiTrIdx != RG_SCH_INVALID_IDX)
-      {
-         cmLListDelFrm(&cellCb->pCqiSrsSrLst[cqiCb->nCqiTrIdx].cqiLst,\
-               &cqiCb->cqiLstEnt);
-      } 
-      if(cqiCb->nRiTrIdx != RG_SCH_INVALID_IDX)
-      {
-         cmLListDelFrm(&cellCb->pCqiSrsSrLst[cqiCb->nRiTrIdx].riLst, \
-               &cqiCb->riLstEnt);
-          RG_SCH_RECORD(&cqiCb->histElem,RGSCH_ACTION_DEL,
-            &cellCb->pCqiSrsSrLst[cqiCb->nRiTrIdx].riLst);
-      }
-      cqiCb->nCqiTrIdx = RG_SCH_INVALID_IDX;
-      cqiCb->nRiTrIdx   = RG_SCH_INVALID_IDX;
-      cqiCb->riDist   = RG_SCH_INVALID_IDX; 
-   } 
-   ueCb->nPCqiCb = cqiCb;
-   ueCb->nPRiCb = cqiCb;
-   return ROK;
-}
-
-/**
- * @brief Handles Periodic  RI  configuration for a UE.
- *
- * @details
- *
- *     Function : rgSCHCfgRiUeCfg 
- *
- *     Invoking Module Processing:
- *      - This shall be invoked by SCH_GOM at UE configuration. It shall do the
- *      validations for the spec-defined values.
- *        
- *     Processing Steps:
- *     - For UE-specific Periodic RI  related configuration, 
- *      - If Periodic RI is configured,
- *        - Update UE with the configured values.
- - Compute and Update next occurance of RI Tranmission instance.
- - Update the  RI offset and RI perodicity information
- *
- *     - Return ROK
- *
- *  @param[in]  RgSchCellCb  *cell
- *  @param[in]  RgSchUeCb    *ue
- *  @param[in]  RgrUePrdDlCqiCfg *cqiCfg
- *  @param[in]  CmLteUeCategory   ueCat
- *  @return  S16
- *      -# ROK
- *
- **/
-S16 rgSCHCfgRiUeCfg
-(
-RgSchCellCb        *cellCb, 
-RgSchUeCb          *ueCb, 
-RgrUePrdDlCqiCfg   *cqiCfg,
-CmLteUeCategory    ueCat
-)
-{
-   uint16_t     crntTime;  
-   uint16_t     riTrInsTime;  
-   uint8_t      j; /*Bandwidth parts. Valid for Modes 2-0, 2-1*/         
-   uint16_t     periodicity; 
-   uint16_t    tempIdx; 
-   RgSchUePCqiCb *cqiCb = NULLP;
-
-   crntTime = (cellCb->crntTime.sfn * RGSCH_NUM_SUB_FRAMES_5G)
-      +(cellCb->crntTime.slot);
-   cqiCb = RG_SCH_GET_UE_CELL_CQI_CB(ueCb,cellCb);
-   /* 1. Rank Indicator is enabled  */
-   if(cqiCfg->cqiSetup.riEna)
-   {
-
-      rgSCHUtlGetCfgPerOff(RG_SCH_RI_TBL, 
-            cqiCfg->cqiSetup.riCfgIdx,
-            &cqiCb->riPeri, &cqiCb->riOffset);
-
-      DU_LOG("\nDEBUG  -->  SCH : rgSCHCfgRiUeCfg(): RI Peri=%d, RI Offset=%d UEID:%d", 
-            cqiCb->riPeri, cqiCb->riOffset,ueCb->ueId);
-
-      cqiCb->perRiVal = 1;
-      cqiCb->invalidateCqi = FALSE;
-
-      if(RGR_UE_PCQI_WB_REP == cqiCfg->cqiSetup.cqiRepType)
-      {
-         /* 
-            1. wideband RI reporting is configured 
-            (Mode 1-0 or 1-1)
-            (10*sfn+floor(subframe)-Noffsetcqi-NoffsetRI )Mod(NCqiperiod
-          *MriPeriod)=0  
-          */ 
-         periodicity = cqiCb->cqiPeri * cqiCb->riPeri; 
-      }
-      else
-      {
-         /*
-         *  Where Widesband and Subband RI reporting is configured
-         *   (Mode 2-0 or 2-1 )
-         *   (10*sfn+floor(subframe)-Noffsetcqi-NoffsetRI )
-         *   Mod(H. NCqiperiod *MriPeriod )=0 
-         *   where H= J * K +1;  J=Number of bandwidth parts(BW/subsize). 
-         *   K is RGR interf input 
-         */
-
-         RG_SCH_GET_CQI_J_VAL(cellCb->bwCfg.dlTotalBw, j);
-         cqiCb->h = (cqiCb->cqiCfg.cqiSetup.k *j )+1;  
-         periodicity = cqiCb->h * cqiCb->cqiPeri * 
-                                  cqiCb->riPeri; 
-      }
-
-      /* In case of SFN wraparound, the SB CQI reporting cycle breaks
-       * and RI->WB CQI->SBCQI.. should resume. RI is repositioned 
-       * accordingly. WBCQI handling is naturally accomplished */
-      if (periodicity >= RGSCH_MAX_SUBFRM_5G)
-      {
-         periodicity = cqiCb->cqiOffset - cqiCb->riOffset + 
-                       RGSCH_MAX_SUBFRM_5G - (crntTime);
-         tempIdx = crntTime + periodicity;
-        DU_LOG("\nINFO  -->  SCH : CHECK_SID - periodicity %d tempIdx %d\n", periodicity, tempIdx);
-      }
-      else
-      {
-         if ((crntTime + TFU_RECPREQ_DLDELTA + periodicity) > 
-                            (RGSCH_MAX_SUBFRM_5G - 1))
-         {
-            riTrInsTime = (periodicity - cqiCb->cqiOffset + cqiCb->riOffset) % periodicity; 
-            tempIdx = RGSCH_MAX_SUBFRM_5G + (periodicity - riTrInsTime);
-         }
-         else
-         {
-            riTrInsTime = ((periodicity +crntTime )- \
-               cqiCb->cqiOffset + cqiCb->riOffset)\
-                       % periodicity;
-            tempIdx = (crntTime + (periodicity -riTrInsTime));
-         }
-      }
-      if (tempIdx <= (crntTime + TFU_RECPREQ_DLDELTA))
-      {
-         tempIdx = tempIdx + periodicity; 
-      }
-      cqiCb->nRiTrIdx = tempIdx 
-         % RG_SCH_PCQI_SRS_SR_TRINS_SIZE;
-      if(periodicity >= RG_SCH_PCQI_SRS_SR_TRINS_SIZE)
-      {  
-         cqiCb->riDist = rgSCHUtlFindDist((uint16_t)(crntTime + TFU_RECPREQ_DLDELTA),
-                (uint16_t) tempIdx);
-      }
-      else
-      {
-         cqiCb->riDist =0; 
-      }
-      if(ueCb->mimoInfo.txMode == RGR_UE_TM_3 
-            || ueCb->mimoInfo.txMode == RGR_UE_TM_4)
-      {
-         if (cellCb->numTxAntPorts ==2)
-         {
-            cqiCb->riNumBits = 1;
-         }
-         else if(cellCb->numTxAntPorts ==4)
-         {
-            if(ueCat == CM_LTE_UE_CAT_8)
-            {
-               cqiCb->riNumBits = 3;
-            }
-            else if(ueCat >= CM_LTE_UE_CAT_5)  
-            {
-               cqiCb->riNumBits = 2;
-            }
-            else
-            {
-               cqiCb->riNumBits = 1;
-            }
-         }
-      }
-      /*    Place the UE in cellCb->tIUeLstCp  */
-      cqiCb->riLstEnt.node=(PTR) cqiCb;
-
-      cmLListAdd2Tail(&cellCb->pCqiSrsSrLst[cqiCb->nRiTrIdx].riLst,
-            &cqiCb->riLstEnt);  
-      RG_SCH_RECORD(&cqiCb->histElem,RGSCH_ACTION_ADD,
-         &cellCb->pCqiSrsSrLst[cqiCb->nRiTrIdx].riLst);
-     
-
-   }
-   else
-   {
-      cqiCb->nRiTrIdx = RG_SCH_INVALID_IDX;
-      cqiCb->riDist   = RG_SCH_INVALID_IDX; 
-   }
-
-   return ROK;
-
-}
-
-/* @brief Handles SRS configuration for a UE.
- *
- * @details
- *
- *     Function : rgSCHCfgSrsUeCfg 
- *
- *     Invoking Module Processing:
- *      - This shall be invoked by SCH_GOM at UE configuration. It shall do the
- *      validations for the spec-defined values.
- *        
- *     Processing Steps:
- *     - For UE-specific SRS  related configuration, 
- *      - If SRS is configured,
- *        - Update UE with the configured values.
- - Compute and Update next occurance of SRS Tranmission instance.
- - Update the  SRS offset and SRS perodicity information
- - Add Ue to cell's srs list
- *      - else
- *        - next occurance transmission instance of SRS  = RG_SCH_INVALID_IDX
- *
- *     - Return ROK
- *
- *  @param[in]  RgSchCellCb  *cell
- *  @param[in]  RgSchUeCb    *ue
- *  @param[in]  RgrUeUlSrsCfg   *srsCfg
- *
- *  @return  S16
- *      -# ROK
- *      -# RFAILED
- */
-S16 rgSCHCfgSrsUeCfg
-(
-RgSchCellCb     *cellCb,
-RgSchUeCb       *ueCb,
-RgrUeUlSrsCfg   *srsCfg 
-)
-{
-   uint16_t      srsTrInsTime;
-   uint16_t      crntTime;  
-   uint16_t      tempIdx;
-
-   crntTime = (cellCb->crntTime.sfn * RGSCH_NUM_SUB_FRAMES_5G)
-      +(cellCb->crntTime.slot);
-
-   if(RGR_SCH_SRS_SETUP == srsCfg->type) 
-   {
-      /*  1. Copy the Received Cfg parameters to local cb  */
-      memcpy(&ueCb->srsCb.srsCfg, srsCfg, sizeof(RgrUeUlSrsCfg));
-
-#ifndef LTE_TDD
-      /* 2.  Compute SRS Offset and Periodicity */
-      rgSCHUtlGetCfgPerOff( RG_SCH_FDD_SRS_TBL, 
-            srsCfg->srsSetup.srsCfgIdx,
-            &ueCb->srsCb.peri, &ueCb->srsCb.offset);      
-#else
-      rgSCHUtlGetCfgPerOff( RG_SCH_TDD_SRS_TBL, 
-            srsCfg->srsSetup.srsCfgIdx,
-            &ueCb->srsCb.peri, &ueCb->srsCb.offset);      
-#endif       
-
-      DU_LOG("\nDEBUG  -->  SCH : rgSCHCfgSrsUeCfg(): SRS Peri=%d, SRS Offset=%d UEID:%d", 
-            ueCb->srsCb.peri,ueCb->srsCb.offset,ueCb->ueId);
-
-      /*  3. Compute next Tranmission index for SRS */ 
-      /*     Referenence: 36.213 Section:8.2
-             i. SRS transmission instances for TDD with  period > 2 and for FDD are 
-             ((10*sfn +Ksrs-suframeoffset))/mod(periodicity))  
-             FDD: Ksrs is 0...9
-             TDD: Ksrs Table 8.2-3: 
-             ii.The SRS transmission instances for TDD (periodicity == 2)
-             (Ksrs-Toffset)mod(5)==0.  Note: This is not supported now  
-      */ 
-
-      srsTrInsTime = ((ueCb->srsCb.peri+crntTime) - ueCb->srsCb.offset)
-         %ueCb->srsCb.peri;
-     tempIdx = (crntTime + (ueCb->srsCb.peri - srsTrInsTime));
-#ifdef LTE_TDD
-      if (tempIdx  <=  (crntTime + TFU_DELTA))
-#else
-      if (tempIdx  <=  (crntTime + TFU_RECPREQ_DLDELTA))
-#endif
-      {
-         tempIdx = tempIdx + ueCb->srsCb.peri;
-      }
-      ueCb->srsCb.nSrsTrIdx =(uint16_t) (tempIdx 
-         % RG_SCH_PCQI_SRS_SR_TRINS_SIZE);
-      if(ueCb->srsCb.peri >= RG_SCH_PCQI_SRS_SR_TRINS_SIZE)
-      {
-#ifdef LTE_TDD
-         ueCb->srsCb.srsDist = rgSCHUtlFindDist((uint8_t)(crntTime+TFU_DELTA), 
-                                                    (uint16_t)tempIdx); 
-#else
-         ueCb->srsCb.srsDist = rgSCHUtlFindDist((uint8_t)(crntTime + TFU_RECPREQ_DLDELTA), 
-                                                    (uint16_t)tempIdx); 
-#endif
-      }
-      else
-      {
-         ueCb->srsCb.srsDist = 0; 
-      }
-
-      /*UE Tx Antenna Selection - START*/
-      if(ueCb->ul.ulTxAntSel.pres == TRUE )
-      {
-          /*for both partial and full sounding bandwidth, 
-           and when frequency hopping is disabled */
-         ueCb->srsCb.selectedAnt = (crntTime/ueCb->srsCb.peri)%2; 
-      }
-      else
-      {
-         /* TS 36.213 specifies that if Tx Antenna Selection is 
-            disabled/not supported then its Port 0*/
-         ueCb->srsCb.selectedAnt=0; 
-      }
-      ueCb->validTxAnt = ueCb->srsCb.selectedAnt; 
-      /*UE Tx Antenna Selection - ENDS*/
-
-      ueCb->srsCb.srsLstEnt.node=(PTR)ueCb;
-      cmLListAdd2Tail(&cellCb->pCqiSrsSrLst[ueCb->srsCb.nSrsTrIdx].srsLst,
-            &ueCb->srsCb.srsLstEnt);  
-
-
-   }
-   else
-   {
-      /*  SRS Release / Not configured */
-      ueCb->srsCb.srsCfg.type = RGR_SCH_SRS_REL;
-      if(ueCb->srsCb.nSrsTrIdx != RG_SCH_INVALID_IDX)
-      {
-         cmLListDelFrm(&cellCb->pCqiSrsSrLst[ueCb->srsCb.nSrsTrIdx].srsLst,
-               &ueCb->srsCb.srsLstEnt);
-      }
-      ueCb->srsCb.nSrsTrIdx = RG_SCH_INVALID_IDX; 
-      ueCb->srsCb.srsLstEnt.node =(PTR) NULLP;
-   }
-
-   return ROK;
-}
-
-
-/* * @brief Handles SR configuration for a UE.
- *
- * @details
- *
- *     Function : rgSCHCfgSrUeCfg 
- *
- *     Invoking Module Processing:
- *      - This shall be invoked by SCH_GOM at UE configuration. It shall do the
- *      validations for the spec-defined values.
- *        
- *      - If SR is configured,
- *        - Update UE with the configured values.
- - Compute and Update next occurance of SR Tranmission instance.
- - Update the  SR offset and SR perodicity information
- - Add Ue to cell->tIUeLstCp[n]  
- *      - else
- *        - next occurance transmission instance of SR = RG_INVALID_SR_ID
- *
- *
- *     - Return ROK
- *
- *  @param[in]  RgSchCellCb  *cell
- *  @param[in]  RgSchUeCb    *ue
- *  @param[in]  RgrUeSrCfg       *srCfg
- *
- *  @return  S16
- *      -# ROK
- *      -# RFAILED
- */
-S16 rgSCHCfgSrUeCfg
-(
-RgSchCellCb      *cellCb,
-RgSchUeCb        *ueCb,
-RgrUeSrCfg       *srCfg
-)
-{
-   uint16_t     srTrInsTime;
-   uint16_t     crntTime;
-
-
-   crntTime = (cellCb->crntTime.sfn * RGSCH_NUM_SUB_FRAMES_5G)
-      +(cellCb->crntTime.slot);
-   if(srCfg->type == RGR_SCH_SR_SETUP) 
-   {
-      /*  1. Copy the Received Cfg parameters to local cb  */
-      memcpy(&ueCb->srCb.srCfg, srCfg, sizeof(RgrUeSrCfg));
-
-
-      /*  2. Compute SR periodicity and offset */
-      rgSCHUtlGetCfgPerOff( RG_SCH_SR_TBL, 
-            srCfg->srSetup.srCfgIdx,
-            &ueCb->srCb.peri, &ueCb->srCb.offset);
-    
-      DU_LOG("\nDEBUG  -->  SCH : SR Config: idx(%u), period (%u) offset (%u) UEID:%d",
-            srCfg->srSetup.srCfgIdx,
-            ueCb->srCb.peri, 
-            ueCb->srCb.offset,
-            ueCb->ueId);
-#ifdef EMTC_ENABLE
-      if(ueCb->isEmtcUe)
-      {
-         rgSchfillPucchSrRepNumCountemtc(ueCb);
-      }
-#endif
-      /*   3. Compute Next Transmission Instance */
-
-      srTrInsTime = ((ueCb->srCb.peri+crntTime) - ueCb->srCb.offset)
-         %ueCb->srCb.peri;
-      ueCb->srCb.nSrTrIdx = (crntTime + (ueCb->srCb.peri- srTrInsTime)); 
-#ifdef LTE_TDD
-      if (ueCb->srCb.nSrTrIdx  <= (crntTime + TFU_DELTA))
-#else
-      if (ueCb->srCb.nSrTrIdx  <= (crntTime + TFU_RECPREQ_DLDELTA))
-#endif
-      {
-         ueCb->srCb.nSrTrIdx = ueCb->srCb.nSrTrIdx +  ueCb->srCb.peri;
-      }
-      ueCb->srCb.nSrTrIdx = ueCb->srCb.nSrTrIdx 
-         % RG_SCH_PCQI_SRS_SR_TRINS_SIZE;
-      ueCb->srCb.srLstEnt.node= (PTR) ueCb;
-
-      /* 4. Place UE in Cell SR Tranmisison Instance List  */
-      cmLListAdd2Tail(&cellCb->pCqiSrsSrLst[ueCb->srCb.nSrTrIdx].srLst,
-            &ueCb->srCb.srLstEnt);  
-   }
-   else
-   {
-      ueCb->srCb.srCfg.type =  RGR_SCH_SR_REL;
-
-      if(ueCb->srCb.nSrTrIdx != RG_SCH_INVALID_IDX)
-      {
-         cmLListDelFrm(&cellCb->pCqiSrsSrLst[ueCb->srCb.nSrTrIdx].srLst,
-               &ueCb->srCb.srLstEnt);
-      }
-      ueCb->srCb.nSrTrIdx = RG_SCH_INVALID_IDX; 
-      ueCb->srCb.srLstEnt.node = (PTR)NULLP;
-   }
-
-   return ROK;
-}
-
-
-/*****************************************************************
- *    UE PCQI, RI, SRS and SR       Re Configuration Functions    *
- *                                                                *
- ******************************************************************/
-
-
-/* * @brief Handles Periodic CQI, PMI, RI  Re-configuration for a UE.
- *
- * @details
- *
- *     Function : rgSCHCfgPCqiUeReCfg 
- *
- *     Invoking Module Processing:
- *      - This shall be invoked by SCH_GOM at UE Re configuration. It shall do the
- *      validations for the spec-defined values.
- *        
- *     Processing Steps:
- *     - For UE-specific Periodic CQI  related configuration, 
- *      - If Periodic CQI/PMI is re configured(first time enabled),
- *          - Update UE with the configured values.
- *         - Compute and Update next occurance of CQI/PMI or RI Tranmission 
- *         instance.
- *         - Update the CQI offset and CQI perodicity information
- *         - Add Ue to cell's list 
- *      - If Periodic CQI/PMI is re configured(modify),
- *         - Update UE with the configured values.
- *         - Del Ue from cell->tIUeLstCp list 
- *          - Compute and Update next occurance of CQI/PMI or RI Tranmission
- *          instance.
- *         - Update the CQI offset and CQI perodicity information
- *         - Add Ue to cell's list
- *      - If Periodic CQI/PMI is re configured(disabled),
- *        - Update UE with the configured values.
- *         - Del Ue from cell's list  
- *         - Update next occurance of CQI/PMI or RI Tranmission instance.
- *        - next occurance of CQI/PMI = RG_INVALID_CQIPMI_ID
- *
- *     - For UE-specific Periodic RI  related configuration, 
- *      - If Periodic RI is configured(first time enabled),
- *        - Update UE with the configured values.
- *          - Compute and Update next occurance of RI Tranmission instance.
- *         - Update the  RI offset and RI perodicity information
- *      - If Periodic RI is configured(modify),
- *        - Update UE with the configured values.
- *         - Compute and Update next occurance of RI Tranmission instance.
- *         - Update the  RI offset and RI perodicity information
- *      - else
- *        - next occurance of RI  = RG_INVALID_CQIPMI_ID
- *
- *     - Return ROK
- *
- *  @param[in]  RgSchCellCb  *cell
- *  @param[in]  RgSchUeCb    *ue
- *  @param[in]  RgrUeCfg     *ueCfg
- *
- *  @return  S16
- *      -# ROK
- *
- */
-S16 rgSCHCfgPCqiUeReCfg
-(
-RgSchCellCb        *cellCb, 
-RgSchUeCb          *ueCb, 
-RgrUePrdDlCqiCfg   *cqiCfg,
-CmLteUeCategory      ueCat
-)
-{
-
-   RgSchUePCqiCb *cqiCb = NULLP;
-
-   cqiCb = RG_SCH_GET_UE_CELL_CQI_CB(ueCb,cellCb);
-   /* Fix: ccpu00124008 Fix for incorrect check causing missed CQI reception instance */
-   if((cqiCfg->type == RGR_SCH_PCQI_SETUP) &&
-         (cqiCb->cqiCfg.type != RGR_SCH_PCQI_SETUP))
-   {
-      /* 1. cqi is in Release (Disable) state,  Recfg is allowing Setup (Enable)
-      */
-      rgSCHCfgPCqiUeCfg(cellCb, ueCb, cqiCfg, ueCat);
-
-   }
-   else if((cqiCfg->type == RGR_SCH_PCQI_SETUP) &&
-         (cqiCb->cqiCfg.type == RGR_SCH_PCQI_SETUP ))
-   {
-
-      /*
-         2. Present is SETUP(Enable) state,  Recfg is modifying SETUP(Enable)
-
-         2.1 Delete UE from the cqiList 
-         2.2 Set next occurance Transmission instace to "INVALID"
-         2.3 Compute Next occurance Transmission instace 
-         2.4 Placed ue in Transmission instance list.
-         */    
-      if(cqiCb->nCqiTrIdx != RG_SCH_INVALID_IDX )
-         cmLListDelFrm(&cellCb->pCqiSrsSrLst[cqiCb->nCqiTrIdx].cqiLst,
-               &cqiCb->cqiLstEnt); 
-
-      if(cqiCb->nRiTrIdx != RG_SCH_INVALID_IDX )
-      {
-         cmLListDelFrm(&cellCb->pCqiSrsSrLst[cqiCb->nRiTrIdx].riLst,
-               &cqiCb->riLstEnt); 
-         RG_SCH_RECORD(&cqiCb->histElem,RGSCH_ACTION_DEL,
-            &cellCb->pCqiSrsSrLst[cqiCb->nRiTrIdx].riLst);
-      }
-
-
-      cqiCb->cqiLstEnt.next = NULLP;
-      cqiCb->cqiLstEnt.prev  = NULLP;
-      cqiCb->nCqiTrIdx = RG_SCH_INVALID_IDX;
-      cqiCb->nRiTrIdx  = RG_SCH_INVALID_IDX;
-      cqiCb->riDist    = RG_SCH_INVALID_IDX;
-
-      rgSCHCfgPCqiUeCfg(cellCb, ueCb, cqiCfg, ueCat);
-   }
-   else
-   {
-      /* Present is SETUP(Enable) state,  Recfg is Release(Disable)  */
-      rgSCHCfgPCqiUeCfg(cellCb, ueCb, cqiCfg, ueCat);
-   }
-
-   /* ccpu00140578:: */
-   cqiCb->riRecpPrcsd = FALSE;
-   return ROK;
-}
-
-
-/* * @brief Handles SRS  Re-configuration for a UE.
- *
- * @details
- *
- *     Function : rgSCHCfgSrsUeReCfg 
- *
- *     Invoking Module Processing:
- *      - This shall be invoked by SCH_GOM at UE Re configuration. It shall do the
- *      validations for the spec-defined values.
- *        
- *     Processing Steps:
- *     - For UE-specific SRS  related re configuration, 
- *      - If SRS is configured modified(First time Enabled),
- *        - Update UE with the configured values.
- *         - Compute and Update next occurance of SRS Tranmission instance.
- *        - Update the  SRS offset and SRS perodicity information
- *        - Add Ue to cell's list  
- *      - If SRS is configured modified(Changed offset or index ),
- *      - Delete UE from cell->tIUeLstCp[n] if present  
- *      - Update UE with the configured values.
- *      - Compute and Update next occurance of SRS Tranmission instance.
- *      - Update the  SRS offset and SRS perodicity information
- *      - Add Ue to cell's list  
- *      - If SRS is configured modified(disabled),
- *      - Delete UE from cell->tIUeLstCp[n] if present  
- *        - Update next occurance of SRS Tranmission instance to "INVALID".
- *        - Update the  SRS offset and SRS perodicity information "INVALID"
- *      - else
- *        - ROK 
- *
- *     - Return ROK
- *
- *  @param[in]  RgSchCellCb  *cell
- *  @param[in]  RgSchUeCb    *ue
- *  @param[in]  RgrUeUlSrsCfg    *srsCfg
- *
- *  @return  S16
- *      -# ROK
- *      -# RFAILED
- */
-S16 rgSCHCfgSrsUeReCfg
-(
-RgSchCellCb        *cellCb, 
-RgSchUeCb          *ueCb, 
-RgrUeUlSrsCfg      *srsCfg
-)
-{
-
-
-   if(( RGR_SCH_SRS_SETUP == srsCfg->type) ||
-         ( RGR_SCH_SRS_SETUP != ueCb->srsCb.srsCfg.type ))
-   {
-      /*     1. Present is Release(Disable) state,  Recfg is allowing
-       *     SETUP(Enable)  */
-      rgSCHCfgSrsUeCfg(cellCb, ueCb, srsCfg);
-   } 
-   else if (( RGR_SCH_SRS_SETUP == srsCfg->type ) &&
-         ( RGR_SCH_SRS_SETUP  == ueCb->srsCb.srsCfg.type))
-   {
-
-      /*     2. Present is SETUP(Eanble) state,  Recfg is modifying SETUP(Enable) 
-
-             2.1 Delete UE from the cqiList 
-             2.2 Set next occurance Transmission instance to "INVALID"
-             2.3 Compute Next occurance Transmission instance 
-             2.4 Placed ue in Transmission instance list.
-             */ 
-      if (ueCb->srsCb.nSrsTrIdx != RG_SCH_INVALID_IDX)
-      {
-         cmLListDelFrm(&cellCb->pCqiSrsSrLst[ueCb->srsCb.nSrsTrIdx].srsLst,
-               &ueCb->srsCb.srsLstEnt);
-         ueCb->srsCb.nSrsTrIdx = RG_SCH_INVALID_IDX;
-      }
-
-      rgSCHCfgSrsUeCfg(cellCb, ueCb, srsCfg);
-   }
-   else
-   {
-      /* 3. Present is SETUP(Enable) state,  Recfg is Release(Disable)*/ 
-      rgSCHCfgSrsUeCfg(cellCb, ueCb, srsCfg);
-   }
-   /* ccpu00140578:: */
-   ueCb->srsCb.srsRecpPrcsd = FALSE;
-
-   return ROK;
-}
-
-/* @brief Handles  SR Re-configuration for a UE.
- *
- * @details
- *
- *     Function : rgSCHCfgSrUeReCfg 
- *
- *     Invoking Module Processing:
- *      - This shall be invoked by SCH_GOM at UE Re configuration. 
- *      It shall do the validations for the spec-defined values.
- *        
- *     Processing Steps:
- *     - For UE-specific SR  related re configuration, 
- *      - If SR is configured modified(First time Enabled),
- *        - Update UE with the configured values.
- *          - Compute and Update next occurance of SR Tranmission instance.
- *         - Update the  SR offset and SR perodicity information
- *         - Add Ue to cell->tIUeLstCp[n]  
- *      - If SR is configured modified(Changed offset or index ),
- *      - Delete UE from cell->tIUeLstCp[n] if present  
- *       - Update UE with the configured values.
- *       - Compute and Update next occurance of SR Tranmission instance.
- *       - Update the  SR offset and SR perodicity information
- *       - Add Ue to cell->tIUeLstCp[n]  
- *      - If SR is configured modified(disabled),
- *      - Delete UE from cell->tIUeLstCp[n] if present  
- *         - Update next occurance of SR Tranmission instance to "INVALID".
- *         - Update the  SR offset and SR perodicity information "INVALID"
- *      - else
- *        - ROK 
- *
- *
- *
- *     - Return ROK
- *
- *  @param[in]  RgSchCellCb  *cell
- *  @param[in]  RgSchUeCb    *ue
- *  @param[in]  RgrUeCfg     *ueCfg
- *
- *  @return  S16
- *      -# ROK
- *      -# RFAILED
- */
-S16 rgSCHCfgSrUeReCfg
-(
-RgSchCellCb    *cellCb, 
-RgSchUeCb      *ueCb, 
-RgrUeSrCfg     *srCfg
-)
-{
-
-   /* Fix : syed Incorrect check for SR RECFG */
-   if((srCfg->type == RGR_SCH_SR_SETUP) &&
-         (ueCb->srCb.srCfg.type != RGR_SCH_SR_SETUP))
-   {
-      /*
-         1. Present is Release(Disable) state,  Recfg is allowing SETUP(Enable) 
-         */
-      rgSCHCfgSrUeCfg(cellCb, ueCb, srCfg);
-   } 
-   else if((srCfg->type == RGR_SCH_SR_SETUP) &&
-         (ueCb->srCb.srCfg.type == RGR_SCH_SR_SETUP))
-   {
-
-      /*   2. Present is SETUP(Eanble) state,  Recfg is modifying SETUP(Enable) 
-
-           2.1 Delete UE from the cqiList 
-           2.2 Compute Next occurance Transmission instace 
-           */      
-      if(ueCb->srCb.nSrTrIdx != RG_SCH_INVALID_IDX )
-      {
-         cmLListDelFrm(&cellCb->pCqiSrsSrLst[ueCb->srCb.nSrTrIdx].srLst, 
-               &ueCb->srCb.srLstEnt);
-         ueCb->srCb.nSrTrIdx = RG_SCH_INVALID_IDX;
-      }
-      rgSCHCfgSrUeCfg(cellCb, ueCb, srCfg);
-
-   }
-   else
-   {
-      /* 3. Present is SETUP(Enable) state,  Recfg is Release(Disable) */
-      rgSCHCfgSrUeCfg(cellCb, ueCb, srCfg);
-   }
-
-   return ROK;
-}
-
-/* @brief Handles  ACQI Re-configuration for a UE.
- *
- * @details
- *
- *     Function : rgSCHCfgAcqiUeReCfg 
- *
- *     Invoking Module Processing:
- *      - This shall be invoked by SCH_GOM at UE Re configuration. 
- *      It shall do the validations for the spec-defined values.
- *        
- *     Processing Steps:
- *     - For UE-specific ACQI  related re configuration, 
- *          - Check if the ACQI Mode has been changed from the
- *             existing Configuration.
- *     - If the configuration has been changed,
- *          - Call Aperiodic Config function to change the config
- *      - else
- *        - ROK 
- *
- *
- *     - Return ROK
- *
- *  @param[in]  RgSchCellCb  *cell
- *  @param[in]  RgSchUeCb    *ue
- *  @param[in]  RgrUeAprdDlCqiCfg   *acqiCfg
- *
- *  @return  S16
- *      -# ROK
- *      -# RFAILED
- */
-S16 rgSCHCfgAcqiUeReCfg
-(
-RgSchCellCb    *cellCb, 
-RgSchUeCb      *ueCb, 
-RgrUeAprdDlCqiCfg   *acqiCfg,
-CmLteUeCategory   ueCat
-)
-{
-
-   return (rgSCHCfgACqiUeCfg(cellCb,ueCb,(RG_SCH_CMN_GET_ACQICB(ueCb,cellCb))
-                                    ,ueCb->mimoInfo.txMode, acqiCfg, ueCat));
-
-}
-
-/*****************************************************************
- *   UE PCQI, RI, SRS and SR Configuration  Delete                *
- *                                                                *
- *****************************************************************/
-
-/* @brief Free Periodic CQI/PMI/RI, SRS and SR transmission instance 
- * related data structures of this UE from CellCb 
- *
- * @details
- *
- *     Function : rgSCHCfgPCqiSrsSrUeDel
- *
- *     Invoking Module Processing:
- *      - This shall be invoked by SCH_GOM at Ue deletion.
- *
- *     Processing Steps:
- *      - For SRS Transmission Instance
- *       - if (srsTxInst!= RG_INVALID)
- *        - Remove from the cellCb->tIUeLstCp[srsTxInst*3+2]
- *       - else
- *        - Nothing to do
- *      - For SR Transmission Instance
- *       - if (srTxInst!= RG_INVALID)
- *        - Remove from the cellCb->tIUeLstCp[srTxInst*3+1]
- *       - else
- *        - Nothing to do
- *      - For Periodic CQI/PMI RI  Transmission Instance
- *       - if (pCqiTxInst!= RG_INVALID)
- *        - Remove from the cellCb->tIUeLstCp[srTxInst*3+0]
- *       - else
- *        - Nothing to do
- *      - Return ROK
- *  @param[in]  RgSchCellCb  *cell
- *  @param[in]  RgSchUeCb    *ue
- *
- *  @return  S16
- *      -# ROK
- */
-S16 rgSCHCfgPCqiSrsSrUeDel 
-(
-RgSchCellCb      *cellCb,
-RgSchUeCb        *ueCb
-)
-{
-#ifdef LTE_ADV
-   uint32_t cellIdx;
-   uint32_t sCellCnt = 0;
-#endif
-   RgSchUePCqiCb *cqiRiCb = NULLP;
-
-   cqiRiCb = RG_SCH_GET_UE_CELL_CQI_CB(ueCb,cellCb);
-
-
-
-   /* Delete SRS Transmission Instance  */
-   if (ueCb->srsCb.nSrsTrIdx != RG_SCH_INVALID_IDX)
-   {
-      cmLListDelFrm(&cellCb->pCqiSrsSrLst[ueCb->srsCb.nSrsTrIdx].srsLst,
-            &ueCb->srsCb.srsLstEnt); 
-      ueCb->srsCb.nSrsTrIdx = RG_SCH_INVALID_IDX;
-   }
-
-   /* Delete SR Transmission Instance  */
-   if (ueCb->srCb.nSrTrIdx != RG_SCH_INVALID_IDX)
-   {
-      cmLListDelFrm(&cellCb->pCqiSrsSrLst[ueCb->srCb.nSrTrIdx].srLst,
-            &ueCb->srCb.srLstEnt); 
-      ueCb->srCb.nSrTrIdx = RG_SCH_INVALID_IDX;
-   }
-
-   /* Delete Periodic CQI/PMI  Transmission Instance  */
-   if (cqiRiCb->nCqiTrIdx != RG_SCH_INVALID_IDX)
-   {
-      cmLListDelFrm(&cellCb->pCqiSrsSrLst[cqiRiCb->nCqiTrIdx].cqiLst, 
-            &cqiRiCb->cqiLstEnt); 
-      cqiRiCb->nCqiTrIdx = RG_SCH_INVALID_IDX;
-
-      /* Delete Periodic  RI  Transmission Instance  */
-
-      if (cqiRiCb->nRiTrIdx != RG_SCH_INVALID_IDX)
-      {
-         cmLListDelFrm(&cellCb->pCqiSrsSrLst[cqiRiCb->nRiTrIdx].riLst, 
-               &cqiRiCb->riLstEnt); 
-         RG_SCH_RECORD(&cqiRiCb->histElem,RGSCH_ACTION_DEL,
-            &cellCb->pCqiSrsSrLst[cqiRiCb->nRiTrIdx].riLst);
-         cqiRiCb->nRiTrIdx = RG_SCH_INVALID_IDX;
-      }
-   }
-
-#ifdef LTE_ADV
-   for (cellIdx =1; cellIdx <= RG_SCH_MAX_SCELL; cellIdx++)
-   {
-      /* If a serving cell is configured */
-      if(ueCb->cellInfo[cellIdx] != NULLP)
-      {
-         /* If the serving cell is in ACTIVE state and 
-            If it is not the same serving cell as cqiRiCb for which 
-            collision is being checked */
-         cqiRiCb = &ueCb->cellInfo[cellIdx]->cqiCb;
-         /* Delete Periodic CQI/PMI  Transmission Instance  */
-         if (cqiRiCb->nCqiTrIdx != RG_SCH_INVALID_IDX)
-         {
-            cmLListDelFrm(&cellCb->pCqiSrsSrLst[cqiRiCb->nCqiTrIdx].cqiLst, 
-                  &cqiRiCb->cqiLstEnt); 
-            cqiRiCb->nCqiTrIdx = RG_SCH_INVALID_IDX;
-
-            /* Delete Periodic  RI  Transmission Instance  */
-
-            if (cqiRiCb->nRiTrIdx != RG_SCH_INVALID_IDX)
-            {
-               cmLListDelFrm(&cellCb->pCqiSrsSrLst[cqiRiCb->nRiTrIdx].riLst, 
-                     &cqiRiCb->riLstEnt); 
-               RG_SCH_RECORD(&cqiRiCb->histElem,RGSCH_ACTION_DEL,
-                  &cellCb->pCqiSrsSrLst[cqiRiCb->nRiTrIdx].riLst);
-               cqiRiCb->nRiTrIdx = RG_SCH_INVALID_IDX;
-            }
-         }
-         sCellCnt++;
-         /* If all of the num of configured scells are checked then break */
-         if (sCellCnt == ueCb->numSCells)
-         {
-            break;
-         }   
-      }
-   }
-#endif
-
-   return ROK;
-}
-
-
-/* @brief Search the cfgIdx in given table and retrive periodicity & offset
- * @details
- *
- *     Function : rgSCHUtlGetCfgPerOff 
- *
- *     Invoking Module Processing:
- *      - This shall be invoked by Cfg Module 
- *
- *     Processing Steps:
- *          binary search for given entry in table
- *          find the periodicty, offset for a given config index from the table
- *      - Return ROK
- *  @param[in]  RgSchPerTbl tbl
- *  @param[in]  uint16_t      cfgIdx
- *  @param[out] uint16_t     *peri 
- *  @param[out] uint16_t     *offset 
- *
- *  @return  S16
- *      -# ROK
- *
- */
-S16 rgSCHUtlGetCfgPerOff
-(
-RgSchPerTbl   tbl,
-uint16_t      cfgIdx, 
-uint16_t      *peri, 
-uint16_t      *offset
-)
-{
-   uint8_t     mid;
-   uint8_t     min = 0;
-   uint8_t     max = 0;
-   const RgSchUePCqiSrsSrCfgIdxTbl* table;
-  
-   /* Added the function instead of the MACRO to get the 
-    * periodicity table */
-   table = rgSCHCfgUtlGetPcqiSrsSrRiTbl ( tbl,&min,&max );
-   do{
-      mid = (min+max)/2;
-      if (( cfgIdx >= table[mid].min) &&
-            ( cfgIdx <= table[mid].max))
-      {
-         *peri = table[mid].peri;
-         *offset = cfgIdx - table[mid].offset;
-         break;
-      } 
-
-      if ( cfgIdx > table[mid].min)
-      {
-         min = mid+1;
-      }
-      else
-      {
-         max = mid-1;
-      }
-
-   }while( min <= max );
-
-   return ROK;
-} 
-
-
-/***********************************************************
- *
- *     Func : rgSCHCfgUtlFetchAcqiBitSz
- *
- *
- *     Desc : Fetch the CQI/PMI bits for a UE based on the mode and store them 
- *                for decoding. 
- *
- *     Ret  : Void
- *            ROK - void
- *
- *     Notes:
- *
- *     File :
- *
- **********************************************************/
-static Void rgSCHCfgUtlFetchAcqiBitSz
-(
-RgSchUeACqiCb  *acqiCb,
-uint8_t        numTxAnt,
-uint8_t*       cqiPmiSzR1,
-uint8_t*       cqiPmiSzRn1
-)
-{
-
-   uint32_t    confRepMode;
-
-   confRepMode = acqiCb->aCqiCfg.aprdModeEnum;
-   switch(confRepMode)
-   {
-      case RGR_APRD_CQI_MOD12:
-         {
-            if(numTxAnt == 2)
-            {
-               *cqiPmiSzR1 = 4 + 2*acqiCb->N;
-               *cqiPmiSzRn1 = 8+ acqiCb->N;
-            }
-            else if(numTxAnt == 4)
-            {
-               *cqiPmiSzR1 = 4 + 4*acqiCb->N;
-               *cqiPmiSzRn1 = 8 + 4*acqiCb->N;
-            }
-         }
-         break;
-
-      case RGR_APRD_CQI_MOD20:
-         {
-            *cqiPmiSzR1 = 6 + acqiCb->L;
-            *cqiPmiSzRn1 = 6  + acqiCb->L;
-         }
-         break;
-
-      case RGR_APRD_CQI_MOD22:
-         {
-            if(numTxAnt == 2)
-            {
-               *cqiPmiSzR1 = 10 + acqiCb->L;
-               *cqiPmiSzRn1 = 14 + acqiCb->L;
-            }
-            else if(numTxAnt == 4)
-            {
-               *cqiPmiSzR1 = 14 + acqiCb->L;
-               *cqiPmiSzRn1 = 20 + acqiCb->L;
-            }
-         }
-         break;
-
-      case RGR_APRD_CQI_MOD30:
-         {
-            *cqiPmiSzR1 = 4 + 2*acqiCb->N;
-            *cqiPmiSzRn1 = 4 + 2*acqiCb->N;
-         }
-         break;
-
-      case RGR_APRD_CQI_MOD31:
-         {
-            if(numTxAnt == 2)
-            {
-               *cqiPmiSzR1 = 6 + 2*acqiCb->N;
-               *cqiPmiSzRn1 = 9 + 4*acqiCb->N;
-            }
-            else if(numTxAnt == 4)
-            {
-               *cqiPmiSzR1 = 8 + 2*acqiCb->N;
-               *cqiPmiSzRn1 = 12 + 4*acqiCb->N;
-            }
-         }
-         break;
-      default:
-         break;
-   }
-   return;
-}
-/* Added the function rgSCHCfgUtlGetPcqiCrsSrRiTbl to be used
- * instead of the MACRO RG_SCH_GET_PERIODICITY_TBL */
-/***********************************************************
- *
- *     Func : rgSCHCfgUtlGetPcqiCrsSrRiTbl
- *
- *
- *     Desc :  Get the Srs Cqi Crs Ri Table 
- *
- *     Ret  : Void
- *            ROK - void
- *
- *     Notes:
- *
- *     File :
- *
- **********************************************************/
-
-static const RgSchUePCqiSrsSrCfgIdxTbl *  rgSCHCfgUtlGetPcqiSrsSrRiTbl
-(
-RgSchPerTbl tblType, 
-uint8_t* min, 
-uint8_t* max
-)
-{
-    const RgSchUePCqiSrsSrCfgIdxTbl * table;
-    
-    switch (tblType)
-    {
-
-        case RG_SCH_FDD_PCQI_TBL:
-        {
-            table = rgSchUePCqiCfgIdxFddTbl;
-            * min = 0;
-            * max=RG_SCH_CQIPMI_CFGIDX_MAX_FDD;
-            break;
-        }
-        case RG_SCH_TDD_PCQI_TBL:
-        {
-            table = rgSchUeCqiPmiCfgIdxTddTbl;
-            * min = 0;
-            * max=RG_SCH_CQIPMI_CFGIDX_MAX_TDD;
-            break;
-        }
-        case RG_SCH_RI_TBL:
-        {
-            table = rgSchUeRiCfgIdxTbl;
-            * min = 0;
-            * max=RG_SCH_RI_CFGIDX_MAX;
-            break;
-        }
-        case RG_SCH_FDD_SRS_TBL:
-        {
-            table = rgSchUeSrsCfgIdxFddTbl;
-            * min = 0;
-            * max=RG_SCH_SRS_ISRS_INDX_MAX_FDD;
-            break;
-        }
-        case RG_SCH_TDD_SRS_TBL:
-        {
-            table = rgSchUeSrsCfgIdxTddTbl;
-            * min = 0;
-            * max=RG_SCH_SRS_ISRS_INDX_MAX_TDD;
-            break;
-        }
-        case RG_SCH_SR_TBL:
-        {
-            table = rgSchUeSrCfgIdxTbl;
-            * min = 0;
-            * max=RG_SCH_ISR_INDX_MAX;
-            break;
-        }
-        default:
-        {
-            table = (const RgSchUePCqiSrsSrCfgIdxTbl *) 0;
-            * min = 0;
-            * max = 0;
-            break;
-        }
-
-    }
-    return  ( table );
-}
-/* #endif */
-#endif /* TFU_UPGRADE */
-
-/***********************************************************
- *
- *     Func : rgSCHCfgVldtDrxUeCfg
- *
- *
- *     Desc : Validates UE DRX Timers Configuration recieved from RRC.
- *
- *     Ret  : S16
- *            ROK - Success
- *            RFAILED - Failed
- *
- *     Notes:
- *
- *     File :
- *
- **********************************************************/
-static S16 rgSCHCfgVldtDrxUeCfg
-(
-RgSchCellCb       *cell,
-RgrUeDrxCfg       *ueDrxCfg
-)
-{
-
-   if (ueDrxCfg->isDrxEnabled == FALSE)
-   {
-      return ROK;
-   }
-
-#ifdef LTEMAC_R9
-   if ( ueDrxCfg->cqiMask.pres )
-   {
-      if ( ueDrxCfg->cqiMask.val != RGR_DRX_SETUP )
-      {
-#ifdef ALIGN_64BIT
-         DU_LOG("\nERROR  -->  SCH : Invalid cqiMask configuration (%d)",
-                  ueDrxCfg->cqiMask.val);
-#else
-         DU_LOG("\nERROR  -->  SCH : Invalid cqiMask configuration(%ld)",
-                  ueDrxCfg->cqiMask.val);
-#endif
-         return RFAILED;
-      }
-   }
-#endif /*LTEMAC_R9*/
-#ifdef EMTC_ENABLE
-   if(ueDrxCfg->isEmtcUe)
-   {
-      if(ueDrxCfg->drxOnDurTmrR13Pres)
-      {
-         if ( rgSCHEmtcCfgVldtDrxOnDurCfg(ueDrxCfg->drxOnDurTmr) != ROK )
-         {
-            DU_LOG("\nERROR  -->  SCH : Invalid onDurTimer configuration(%d)",
-               ueDrxCfg->drxOnDurTmr);
-            return RFAILED;
-         }
-       }
-         else
-         {
-            if (rgSCHCfgVldtDrxOnDurCfg(ueDrxCfg->drxOnDurTmr) != ROK )
-            {
-               DU_LOG("\nERROR  -->  SCH : Invalid onDurTimer configuration(%d) for EMTC",
-               ueDrxCfg->drxOnDurTmr);
-               return RFAILED;
-            }
-
-         }
-    }
-   else
-#endif
-   {
-      if ( rgSCHCfgVldtDrxOnDurCfg(ueDrxCfg->drxOnDurTmr) != ROK )
-      {
-         DU_LOG("\nERROR  -->  SCH : Invalid onDurTimer configuration(%d) for EMTC",
-               ueDrxCfg->drxOnDurTmr);
-         return RFAILED;
-      }
-   }
-
-   if ( rgSCHCfgVldtDrxInActvCfg(ueDrxCfg->drxInactvTmr) != ROK )
-   {
-      DU_LOG("\nERROR  -->  SCH : Invalid Inactivity configuration(%d)",
-               ueDrxCfg->drxInactvTmr);
-      return RFAILED;
-   }
-#ifdef EMTC_ENABLE
-   if(ueDrxCfg->isEmtcUe)
-   {
-      if(ueDrxCfg->drxRetxTmrR13Pres)
-      {
-         if ( rgSCHEmtcCfgVldtDrxReTxCfg(ueDrxCfg->drxRetxTmr) != ROK )
-         {
-            DU_LOG("\nERROR  -->  SCH : Invalid DrxReTX configuration(%d) for EMTC",
-               ueDrxCfg->drxRetxTmr);
-            return RFAILED;
-         }
-      }
-         else
-         {
-            if (rgSCHCfgVldtDrxReTxCfg(ueDrxCfg->drxRetxTmr) != ROK )
-            {
-               DU_LOG("\nERROR  -->  SCH : Invalid DrxReTX configuration(%d)",
-               ueDrxCfg->drxRetxTmr);
-               return RFAILED;
-            }
-
-         }
-    }
-   else
-#endif
-   {
-      if ( rgSCHCfgVldtDrxReTxCfg(ueDrxCfg->drxRetxTmr) != ROK )
-      {
-         DU_LOG("\nERROR  -->  SCH : Invalid DrxReTX configuration(%d)",
-               ueDrxCfg->drxRetxTmr);
-         return RFAILED;
-      }
-   }
-#ifdef EMTC_ENABLE
-   if(ueDrxCfg->isEmtcUe)
-   {
-      if ( rgSCHEmtcCfgVldtDrxUlReTxCfg(ueDrxCfg->emtcDrxUlRetxTmr) != ROK )
-      {
-         DU_LOG("\nERROR  -->  SCH : Invalid DrxReTX configuration(%d) for EMTC",
-               ueDrxCfg->drxRetxTmr);
-         return RFAILED;
-      }
-
-   }
-#endif
-
-   if ( rgSCHCfgVldtDrxLngCycCfg(ueDrxCfg->drxLongCycleOffst) != ROK )
-   {
-      DU_LOG("\nERROR  -->  SCH : Invalid LongCycle configuration");
-      return RFAILED;
-   }
-
-   if ( ueDrxCfg->drxLongCycleOffst.longDrxCycle < ueDrxCfg->drxOnDurTmr ) 
-   {
-      DU_LOG("\nERROR  -->  SCH : Invalid combination of Long DRX Cycle " 
-              " and onDuration timer values");
-      return RFAILED;
-   }
-
-#ifdef LTE_TDD
-   if( rgSCHCfgVldtTddDrxCycCfg(cell, ueDrxCfg->drxLongCycleOffst.longDrxCycle, 
-       ueDrxCfg->drxOnDurTmr, ueDrxCfg->drxLongCycleOffst.drxStartOffst) != ROK)
-   {
-      DU_LOG("\nERROR  -->  SCH : Invalid combination of Long DRX Cycle " 
-              " and onDuration timer values");
-      return RFAILED;
-   }
-#endif
-  
-   if( TRUE == ueDrxCfg->drxShortDrx.pres )
-   { 
-      if ( ueDrxCfg->drxShortDrx.shortDrxCycle < ueDrxCfg->drxOnDurTmr )
-      {
-         DU_LOG("\nERROR  -->  SCH : Invalid combination of short DRX "
-                 "Cycle and onDuration timer values");
-         return RFAILED;
-      }
-
-      if ( (ueDrxCfg->drxLongCycleOffst.longDrxCycle %
-               ueDrxCfg->drxShortDrx.shortDrxCycle) != 0)
-      {
-         DU_LOG("\nERROR  -->  SCH : Long DRX cycle is not multiple of "
-                 "short DRX cycle");
-         return RFAILED;
-      }
-
-      if ( rgSCHCfgVldtDrxShrtCycCfg(ueDrxCfg->drxShortDrx) != ROK )
-      {
-         DU_LOG("\nERROR  -->  SCH : Invalid Short Cycle configuration");
-         return RFAILED;
-      }
-
-#ifdef LTE_TDD
-      if( rgSCHCfgVldtTddDrxCycCfg(cell, ueDrxCfg->drxShortDrx.shortDrxCycle, 
-             ueDrxCfg->drxOnDurTmr, 
-             ueDrxCfg->drxLongCycleOffst.drxStartOffst % 
-             ueDrxCfg->drxShortDrx.shortDrxCycle) != ROK)
-      { 
-         DU_LOG("\nERROR  -->  SCH : Invalid combination of Long DRX Cycle " 
-                 " and onDuration timer values");
-         return RFAILED;
-      }
-#endif
-   }
-   
-   return ROK;
-}/*rgSCHCfgVldtDrxUeCfg*/
-      
-/***********************************************************
- *
- *     Func : rgSCHCfgVldtDrxOnDurCfg
- *
- *
- *     Desc : Validates UE DRX On Duration configuration 
- *            recieved from RRC.
- *
- *     Ret  : S16
- *            ROK - Success
- *            RFAILED - Failed
- *
- *     Notes:
- *
- *     File :
- *
- **********************************************************/
-static S16 rgSCHCfgVldtDrxOnDurCfg
-(
-uint8_t      onDurTmr 
-)
-{
-
-   switch ( onDurTmr )
-   {
-      case RGR_DRX_PRD_1PSF:
-      case RGR_DRX_PRD_2PSF:
-      case RGR_DRX_PRD_3PSF:
-      case RGR_DRX_PRD_4PSF:
-      case RGR_DRX_PRD_5PSF:
-      case RGR_DRX_PRD_6PSF:
-      case RGR_DRX_PRD_8PSF:
-      case RGR_DRX_PRD_10PSF:
-      case RGR_DRX_PRD_20PSF:
-      case RGR_DRX_PRD_30PSF:
-      case RGR_DRX_PRD_40PSF:
-      case RGR_DRX_PRD_50PSF:
-      case RGR_DRX_PRD_60PSF:
-      case RGR_DRX_PRD_80PSF:
-      case RGR_DRX_PRD_100PSF:
-      case RGR_DRX_PRD_200PSF:
-         break;
-
-      default:
-         {
-            return RFAILED;
-         }
-   }/*switch(onDurTmr)*/
-
-   return ROK;
-}/*rgSCHCfgVldtOnDurCfg*/
-
-/***********************************************************
- *
- *     Func : rgSCHCfgVldtDrxInActvCfg
- *
- *
- *     Desc : Validates UE DRX InActivity configuration 
- *            recieved from RRC.
- *
- *     Ret  : S16
- *            ROK - Success
- *            RFAILED - Failed
- *
- *     Notes:
- *
- *     File :
- *
- **********************************************************/
-static S16 rgSCHCfgVldtDrxInActvCfg(uint16_t inActvTmr)
-{
-   switch ( inActvTmr )
-   {
-      case RGR_DRX_PRD_1PSF:
-      case RGR_DRX_PRD_2PSF:
-      case RGR_DRX_PRD_3PSF:
-      case RGR_DRX_PRD_4PSF:
-      case RGR_DRX_PRD_5PSF:
-      case RGR_DRX_PRD_6PSF:
-      case RGR_DRX_PRD_8PSF:
-      case RGR_DRX_PRD_10PSF:
-      case RGR_DRX_PRD_20PSF:
-      case RGR_DRX_PRD_30PSF:
-      case RGR_DRX_PRD_40PSF:
-      case RGR_DRX_PRD_50PSF:
-      case RGR_DRX_PRD_60PSF:
-      case RGR_DRX_PRD_80PSF:
-      case RGR_DRX_PRD_100PSF:
-      case RGR_DRX_PRD_200PSF:
-      case RGR_DRX_PRD_300PSF:
-      case RGR_DRX_PRD_500PSF:
-      case RGR_DRX_PRD_750PSF:
-      case RGR_DRX_PRD_1280PSF:
-      case RGR_DRX_PRD_1920PSF:
-      case RGR_DRX_PRD_2560PSF:
-         break;
-
-      default:
-         {
-            return RFAILED;
-         }
-   }/*switch(InactvTmr)*/
-
-   return ROK;
-}/*rgSCHCfgVldtDrxInActvCfg*/
-
-/***********************************************************
- *
- *     Func : rgSCHCfgVldtDrxReTxCfg
- *
- *
- *     Desc : Validates DRX ReTx timer  configuration 
- *            recieved from RRC.
- *
- *     Ret  : S16
- *            ROK - Success
- *            RFAILED - Failed
- *
- *     Notes:
- *
- *     File :
- *
- **********************************************************/
-static S16 rgSCHCfgVldtDrxReTxCfg(uint8_t reTxTmr)
-{
-   switch ( reTxTmr )
-   {
-      case RGR_DRX_PRD_1PSF:
-      case RGR_DRX_PRD_2PSF:
-      case RGR_DRX_PRD_4PSF:
-      case RGR_DRX_PRD_6PSF:
-      case RGR_DRX_PRD_8PSF:
-      case RGR_DRX_PRD_16PSF:
-      case RGR_DRX_PRD_24PSF:
-      case RGR_DRX_PRD_33PSF:
-         break;
-
-      default:
-         {
-            return RFAILED;
-         }
-   }/*switch(drxRetxTmr)*/
-
-   return ROK;
-}/*rgSCHCfgVldtDrxReTxCfg*/
-
-/***********************************************************
- *
- *     Func : rgSCHCfgVldtDrxShrtCycCfg
- *
- *
- *     Desc : Validates DRX Short Cycle timer  configuration 
- *            recieved from RRC.
- *
- *     Ret  : S16
- *            ROK - Success
- *
- *            RFAILED - Failed
- *
- *     Notes:
- *
- *     File :
- *
- **********************************************************/
-static S16 rgSCHCfgVldtDrxLngCycCfg(RgrDrxLongCycleOffst lngCycleOffst)
-{
-   if ( rgSCHCfgVldtDrxLngCyclTmrs(lngCycleOffst.longDrxCycle) != ROK )
-   {
-      return RFAILED;
-   }
-
-   if ( lngCycleOffst.drxStartOffst >= lngCycleOffst.longDrxCycle ) 
-   {
-      return RFAILED;  
-   }
-
-   return ROK;
-}/*rgSCHCfgVldtDrxLngCycCfg*/
-
-/***********************************************************
- *
- *     Func : rgSCHCfgVldtDrxLngCyclTmrs
- *
- *
- *     Desc : Validates DRX Long Cycle timer values 
- *            recieved from RRC.
- *
- *     Ret  : S16
- *            ROK - Success
- *
- *            RFAILED - Failed
- *
- *     Notes:
- *
- *     File :
- *
- **********************************************************/
-static S16 rgSCHCfgVldtDrxLngCyclTmrs(uint16_t val)
-{
-
-   switch ( val )
-   {
-      case RGR_DRX_PRD_10SF:
-      case RGR_DRX_PRD_20SF:
-      case RGR_DRX_PRD_32SF:
-      case RGR_DRX_PRD_40SF:
-      case RGR_DRX_PRD_64SF:
-      case RGR_DRX_PRD_80SF:
-      case RGR_DRX_PRD_128SF:
-      case RGR_DRX_PRD_160SF:
-      case RGR_DRX_PRD_256SF:
-      case RGR_DRX_PRD_320SF:
-      case RGR_DRX_PRD_512SF:
-      case RGR_DRX_PRD_640SF:
-      case RGR_DRX_PRD_1024SF:
-      case RGR_DRX_PRD_1280SF:
-      case RGR_DRX_PRD_2048SF:
-      case RGR_DRX_PRD_2560SF:
-         break;
-
-      default:
-         {
-            return RFAILED;
-         }
-   }/*switch(longDrxCycle)*/
-
-   return ROK;
-}/*rgSCHCfgVldtDrxLngCyclTmrs*/
-
-/***********************************************************
- *
- *     Func : rgSCHCfgVldtDrxShrtCycCfg
- *
- *
- *     Desc : Validates DRX Short Cycle timer  configuration 
- *            recieved from RRC.
- *
- *     Ret  : S16
- *            ROK - Success
- *
- *            RFAILED - Failed
- *
- *     Notes:
- *
- *     File :
- *
- **********************************************************/
-static S16 rgSCHCfgVldtDrxShrtCycCfg(RgrDrxShortDrx shrtCycCfg )
-{
-   switch(shrtCycCfg.shortDrxCycle)
-   {
-      case RGR_DRX_PRD_2SF:
-      case RGR_DRX_PRD_5SF:
-      case RGR_DRX_PRD_8SF:
-      case RGR_DRX_PRD_10SF:
-      case RGR_DRX_PRD_16SF:
-      case RGR_DRX_PRD_20SF:
-      case RGR_DRX_PRD_32SF:
-      case RGR_DRX_PRD_40SF:
-      case RGR_DRX_PRD_64SF:
-      case RGR_DRX_PRD_80SF:
-      case RGR_DRX_PRD_128SF:
-      case RGR_DRX_PRD_160SF:
-      case RGR_DRX_PRD_256SF:
-      case RGR_DRX_PRD_320SF:
-      case RGR_DRX_PRD_640SF:
-         break;
-
-      default:
-         {
-            return RFAILED;
-         }
-
-   }/*switch(shortDrxCycle)*/
-
-   if ( (shrtCycCfg.drxShortCycleTmr < RGR_DRX_SHRTCYCLE_MIN) ||
-         (shrtCycCfg.drxShortCycleTmr > RGR_DRX_SHRTCYCLE_MAX)
-      )
-   {
-      return RFAILED;
-   }
-
-   return ROK;
-}
-
-/**
- * @brief Handler for TA related UE Reconfiguration.
- *
- * @details
- *
- *     Function : rgSCHCfgUeTaRecfg
- *     
- *     This function shall fetch the TA timer related information into the
- *     respective ueCb from the UE configuration as provided by the 
- *     upper layers. 
- *           
- *  @param[in]  RgSchCellCb   *cell 
- *  @param[in]  RgSchUeCb     *ueCb 
- *  @param[in]  RgrUeCfg      *ueCfg 
- *  @param[out] RgSchErrInfo  *errInfo 
- *  @return     S16
- *      -# ROK 
- *      -# RFAILED 
- **/
-static Void rgSCHCfgUeTaRecfg
-(
-RgSchCellCb       *cell,
-RgSchUeCb         *ueCb,
-RgrUeRecfg        *ueCfg,
-RgSchErrInfo      *err
-)
-{
-   UNUSED(err);
-
-   /* Update the TA related information */
-   
-   if (ueCfg->ueTaTmrRecfg.pres)
-   {
-      /* Configuring taTmr with 30 deficit, to enable eNodeB sending
-       * TA command before the expiry of TA at UE. Also considering for 
-       * possible retx for this TA command */
-      /* [ccpu00121813]-ADD-Added chk if tatmr val > 30 */
-      if(ueCfg->ueTaTmrRecfg.taTmr > 30)
-      {
-         ueCb->dl.taCb.cfgTaTmr = ueCfg->ueTaTmrRecfg.taTmr - 30;
-      }
-       /* If TA Timer is running. Stop it and then start it*/
-      if (ueCb->taTmr.tmrEvnt != TMR_NONE)
-      {
-         rgSCHTmrStopTmr(cell, ueCb->taTmr.tmrEvnt, ueCb);
-         rgSCHTmrStartTmr(cell, ueCb, RG_SCH_TMR_TA, ueCb->dl.taCb.cfgTaTmr);
-      }
-      else
-      {
-         rgSCHTmrStartTmr(cell, ueCb, RG_SCH_TMR_TA, ueCb->dl.taCb.cfgTaTmr);
-      }
-   }
-   return;
-}  /* rgSCHCfgUeTaRecfg */
-
-/* ccpu00117452 - MOD - Changed macro name from
-   RGR_RRM_DLPWR_CNTRL to RGR_CQI_REPT */
-#if ((defined (RGR_CQI_REPT)) && (defined (RGR_V2)))
-/***********************************************************
- *
- *     Func : rgSCHCfgUeCqiReptReCfg
- *
- *
- *     Desc : Reconfiguration of PUSH N CQI Reporting 
- *
- *     Ret  : RFAILED in case of failure
- *            ROK if success
- *
- *     Notes:
- *
- *     File :
- *
- **********************************************************/
-static S16 rgSCHCfgUeCqiReptReCfg
-(
-RgSchCellCb    *cell,
-RgSchUeCb      *ue,
-RgrUeRecfg     *ueRecfg
-)
-{
-   S16 retVal;
-
-   /* Check has it been disabled */
-   if(ueRecfg->ueCqiReptCfg.numColltdCqiRept)
-   {
-    /* Check if we need to send CQI reports collagted so far and send if so */
-      if(ue->schCqiInfo.cqiCount >=
-              ueRecfg->ueCqiReptCfg.numColltdCqiRept)
-      {
-         RgrStaIndInfo *staInfo;
-      /* if yes, Send StaInd to RRM */
-         retVal = rgSCHUtlAllocSBuf (cell->instIdx,(Data**)&staInfo,
-                  sizeof(RgrStaIndInfo));
-         if(retVal != ROK)
-         {
-            DU_LOG("\nERROR  -->  SCH : Could not allocate memory for sending StaInd OLD CRNTI:%d",ueRecfg->oldCrnti);
-            return (retVal);
-         }
-
-      /* Fill StaInd for sending collated N CQI rpeort                        */
-         rgSCHUtlFillSndStaInd(cell, ue, staInfo,
-               ueRecfg->ueCqiReptCfg.numColltdCqiRept);
-      }
-   }
-   else
-   {
-      ue->schCqiInfo.cqiCount = 0;
-   }
-
-   ue->cqiReptCfgInfo.numColltdCqiRept =
-      ueRecfg->ueCqiReptCfg.numColltdCqiRept;
-   return ROK;
-} /* End of rgSCHCfgUeCqiReptReCfg */
-#endif /* End of RGR_CQI_REPT */
-/*This function Added Ue in ongoing L2 Meas*/
-/*LTE_L2_MEAS_PHASE2*/
-#ifdef LTE_L2_MEAS
-static S16 rgSchAddToL2Meas(RgSchCellCb *cellCb,RgSchDlLcCb *dlLc)
-{
-   CmLList             *lnk;
-   uint16_t       idx;
-   RgSchL2MeasCb       *measCb = NULLP;
-   lnk = cellCb->l2mList.first;
-
-   while(lnk != NULLP)
-   {
-      /* Get the MeasCb : RgSchL2MeasCb */
-      measCb = (RgSchL2MeasCb *)lnk->node;
-      if (measCb->measReq.measType & LRG_L2MEAS_AVG_PRB_PER_QCI_DL)
-      {
-         for(idx = 0;idx < measCb->measReq.avgPrbQciDl.numQci;idx++)
-         {
-            if(measCb->measReq.avgPrbQciDl.qci[idx] == dlLc->qciCb->qci)
-            {
-               break; /*exit from for loop*/
-            } 
-         }     
-         if(idx  == measCb->measReq.avgPrbQciDl.numQci)
-         {
-            measCb->measReq.avgPrbQciDl.qci[measCb->measReq.avgPrbQciDl.numQci++] = dlLc->qciCb->qci;
-         }             
-      }
-      lnk = lnk->next;
-   }/*End of while loop*/
-
-   return ROK;
-}
-#endif
-#ifdef LTE_ADV
-/**
- * @brief UE SCell Buffer Free 
- *
- * @details
- *
- *     Function : rgSCHSCellFreeBuf
- *
- *     This functions will free allocated memory 
- *     for UE secondart cellCB
- *     
- *
- *  @param[in]  Inst         inst 
- *  @param[in]  RgSchUeCb    *ue
- *  @param[int] RgrUeRecfg   *ueRecfg
- *  @param[out] uint8_t           idx 
- *  @return  VOID
- **/
-Void rgSCHSCellFreeBuf
-(
-Inst         inst,         
-RgSchUeCb    *ue,
-RgrUeRecfg   *ueRecfg,
-uint8_t      idx
-)
-{
-   RgSchUeCellInfo *sCellInfo = NULLP;
-   RgrUeSecCellCfg *sCellInfoRecfg = NULLP;
-   
-
-   for(uint8_t i = 0; i <= idx; i++)
-   {
-      sCellInfoRecfg = &ueRecfg->ueSCellCfgInfo.ueSCellDedCfg[i]; 
-      sCellInfo = ue->cellInfo[(sCellInfoRecfg->sCellIdx)];
-      
-      if (NULLP != sCellInfo)
-      {
-         rgSCHUtlFreeSBuf(inst, (Data**)&(sCellInfo),
-               sizeof(RgSchUeCellInfo));
-         ue->cellInfo[(sCellInfoRecfg->sCellIdx)] = NULLP;
-
-      } 
-   }
-   return;
-}
-#endif
-/**********************************************************************
-         End of file
-**********************************************************************/