X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=src%2F5gnrsch%2Frg_sch_drx.c;h=c4b84a8738bf942d75b2f565a3d84087df3a24e0;hb=4d45b914f9e94203603d3b9fdbcb1aad361301dd;hp=3b40582521efc68931721ebfed0982b07cfad014;hpb=3235ecfc7414aa0b72d0ad50db63ae8b5626045b;p=o-du%2Fl2.git diff --git a/src/5gnrsch/rg_sch_drx.c b/src/5gnrsch/rg_sch_drx.c index 3b4058252..c4b84a873 100755 --- a/src/5gnrsch/rg_sch_drx.c +++ b/src/5gnrsch/rg_sch_drx.c @@ -37,15 +37,7 @@ static int RLOG_MODULE_ID=4096; static int RLOG_FILE_ID=163; /* header include files -- defines (.h) */ -#include "envopt.h" /* environment options */ -#include "envdep.h" /* environment dependent */ -#include "envind.h" /* environment independent */ -#include "gen.h" /* general layer */ -#include "ssi.h" /* system service interface */ -#include "cm_hash.h" /* common hash list */ -#include "cm_llist.h" /* common linked list library */ -#include "cm_err.h" /* common error */ -#include "cm_lte.h" /* common LTE */ +#include "common_def.h" #include "lrg.h" #include "rgr.h" #include "rgm.h" @@ -62,15 +54,6 @@ static int RLOG_FILE_ID=163; #include "rl_common.h" /* header/extern include files (.x) */ -#include "gen.x" /* general layer typedefs */ -#include "ssi.x" /* system services typedefs */ -#include "cm5.x" /* common timers */ -#include "cm_hash.x" /* common hash list */ -#include "cm_lib.x" /* common library */ -#include "cm_llist.x" /* common linked list */ -#include "cm_mblk.x" /* memory management */ -#include "cm_tkns.x" /* common tokens */ -#include "cm_lte.x" /* common tokens */ #include "tfu.x" /* TFU types */ #include "lrg.x" /* layer management typedefs for MAC */ #include "rgr.x" /* layer management typedefs for MAC */ @@ -294,10 +277,10 @@ RgUeUlHqCb *hqE * - Processing is divided into respective timer handling. * - Calculate the DL and UL indices as follows * @code - * dlIndex = (cell->crntTime.sfn * 10 + cell->crntTime.subframe + + * dlIndex = (cell->crntTime.sfn * 10 + cell->crntTime.slot + * RG_SCH_DRX_DL_DELTA) % RG_SCH_MAX_DRXQ_SIZE; * - * ulIndex = (cell->crntTime.sfn * 10 + cell->crntTime.subframe + + * ulIndex = (cell->crntTime.sfn * 10 + cell->crntTime.slot + * RG_SCH_DRX_UL_DELTA) % RG_SCH_MAX_DRXQ_SIZE; * @endcode * - Call rgSCHDrxTtiHdlOnDur to handle onDurationTimer handling @@ -335,10 +318,10 @@ RgSchCellCb *cell; TRC2(rgSCHDrxTtiInd ); - dlIndex = (cell->crntTime.sfn * RGSCH_NUM_SUB_FRAMES_5G + cell->crntTime.subframe + + dlIndex = (cell->crntTime.sfn * RGSCH_NUM_SUB_FRAMES_5G + cell->crntTime.slot + RG_SCH_DRX_DL_DELTA) % RG_SCH_MAX_DRXQ_SIZE; - ulIndex = (cell->crntTime.sfn * RGSCH_NUM_SUB_FRAMES_5G + cell->crntTime.subframe + + ulIndex = (cell->crntTime.sfn * RGSCH_NUM_SUB_FRAMES_5G + cell->crntTime.slot + RG_SCH_DRX_UL_DELTA) % RG_SCH_MAX_DRXQ_SIZE; #ifdef LTEMAC_R9 @@ -422,7 +405,7 @@ U16 ulIndex; #if ( ERRCLASS & ERRCLS_INT_PAR ) if ( cell == (RgSchCellCb* )NULLP ) { - RETVALUE(RFAILED); + return RFAILED; } #endif @@ -430,7 +413,7 @@ U16 ulIndex; rgSCHDrxTtiHdlOnDurUl(cell, ulIndex); - RETVALUE(ROK); + return ROK; }/*rgSCHDrxTtiHdlOnDur*/ @@ -490,7 +473,7 @@ U16 ulIndex; #if ( ERRCLASS & ERRCLS_INT_PAR ) if ( cell == (RgSchCellCb* )NULLP) { - RETVALUE(RFAILED); + return RFAILED; } #endif @@ -678,7 +661,7 @@ U16 ulIndex; cellSch = RG_SCH_CMN_GET_CELL(cell); cellSch->apisDl->rgSCHDlInactvtUes(cell,&dlInactvLst); - RETVALUE(ROK); + return ROK; }/*rgSCHDrxTtiHdlInActv*/ /** @brief This function handles the per TTI processing for DRX short cycle @@ -726,7 +709,7 @@ U16 ulIndex; #if ( ERRCLASS & ERRCLS_INT_PAR ) if ( cell == (RgSchCellCb* )NULLP ) { - RETVALUE(RFAILED); + return RFAILED; } #endif @@ -762,7 +745,7 @@ U16 ulIndex; rgSCHDrxMvToNxtOnDurOcc(cell,ue,RG_SCH_DRX_DL_DELTA,TRUE); }/*while(node)...*/ - RETVALUE(ROK); + return ROK; }/*rgSCHDrxTtiHdlShortCycle*/ @@ -812,7 +795,7 @@ U16 ulIndex; #if ( ERRCLASS & ERRCLS_INT_PAR) if ( cell == (RgSchCellCb *)NULLP ) { - RETVALUE(RFAILED); + return RFAILED; } #endif /*ERRCLASS & ERRCLS_INT_PAR*/ @@ -823,7 +806,7 @@ U16 ulIndex; rgSCHDrxTtiHdlUlHarqRTT(cell, ulIndex); - RETVALUE(ROK); + return ROK; } /** @brief This function is called by the common scheduler as part of @@ -886,7 +869,7 @@ U8 direction; { #ifndef LTE_TDD curTimeInSf = (cell->crntTime.sfn * RGSCH_NUM_SUB_FRAMES_5G) + - (cell->crntTime.subframe) +RG_SCH_DRX_UL_DELTA; + (cell->crntTime.slot) +RG_SCH_DRX_UL_DELTA; #endif #ifdef LTE_TDD @@ -897,7 +880,7 @@ U8 direction; { #ifndef LTE_TDD curTimeInSf = (cell->crntTime.sfn * RGSCH_NUM_SUB_FRAMES_5G) + - (cell->crntTime.subframe) + RG_SCH_DRX_DL_DELTA; + (cell->crntTime.slot) + RG_SCH_DRX_DL_DELTA; #endif #ifdef LTE_TDD @@ -1089,7 +1072,7 @@ U8 tbCnt; * so that UE is scheduled for retransmission in the next subframe*/ /* ccpu00134196-[Add]-DRX retx timer changes */ harqRTTExpIndx = ((hqP->tbInfo[tbCnt].timingInfo.sfn * RGSCH_NUM_SUB_FRAMES_5G) + - hqP->tbInfo[tbCnt].timingInfo.subframe + RG_SCH_MIN_HARQ_RTT) + hqP->tbInfo[tbCnt].timingInfo.slot + RG_SCH_MIN_HARQ_RTT) % RG_SCH_MAX_DRXQ_SIZE; fdbkDelta = RGSCH_CALC_SF_DIFF(cell->crntTime, hqP->tbInfo[tbCnt].timingInfo); @@ -1202,7 +1185,7 @@ PUBLIC S16 rgSCHDrxUeCfg (cell, ue, ueCfg) #if ( ERRCLASS & ERRCLS_INT_PAR ) if ( cell == (RgSchCellCb* )NULLP) { - RETVALUE(RFAILED); + return RFAILED; } if ((ue == (RgSchUeCb* )NULLP) @@ -1211,7 +1194,7 @@ PUBLIC S16 rgSCHDrxUeCfg (cell, ue, ueCfg) { RLOG_ARG0(L_ERROR,DBG_CELLID,cell->cellId, "rgSCHDrxUeCfg():" "Invalid params.cell or ue or ueCfg is NULL "); - RETVALUE(RFAILED); + return RFAILED; } #endif @@ -1224,7 +1207,7 @@ PUBLIC S16 rgSCHDrxUeCfg (cell, ue, ueCfg) { RLOG_ARG1(L_ERROR,DBG_CELLID,cell->cellId, "Memory allocation FAILED for DRX UECB CRBTI:%d",ue->ueId); - RETVALUE(ret); + return (ret); } ueDrxCb = ue->drxCb; @@ -1276,9 +1259,9 @@ PUBLIC S16 rgSCHDrxUeCfg (cell, ue, ueCfg) rgSCHDrxGetNxtOnDur (cell, ueDrxCb, &nxtOnDur,RG_SCH_NO_DELTA); - nxtOnDurTime = ((nxtOnDur.sfn * RGSCH_NUM_SUB_FRAMES_5G) + nxtOnDur.subframe); + nxtOnDurTime = ((nxtOnDur.sfn * RGSCH_NUM_SUB_FRAMES_5G) + nxtOnDur.slot); curTime = ((cell->crntTime.sfn * RGSCH_NUM_SUB_FRAMES_5G) + - cell->crntTime.subframe); + cell->crntTime.slot); onDurIndx = nxtOnDurTime % RG_SCH_MAX_DRXQ_SIZE; @@ -1307,7 +1290,7 @@ PUBLIC S16 rgSCHDrxUeCfg (cell, ue, ueCfg) ueDrxCb->shortCycleEnt.node = (PTR)ue; } - RETVALUE(ret); + return (ret); } /* end of rgSCHDrxUeCfg */ /** @brief This function gets the next occurance of onDurationTimer from the @@ -1363,7 +1346,7 @@ PRIVATE S16 rgSCHDrxGetNxtOnDur (cell, drxCb, nxtOnDur, delta) #if ( ERRCLASS & ERRCLS_INT_PAR ) if ( cell == (RgSchCellCb* )NULLP ) { - RETVALUE(RFAILED); + return RFAILED; } if( (drxCb == (RgSchDrxUeCb* )NULLP) @@ -1374,7 +1357,7 @@ PRIVATE S16 rgSCHDrxGetNxtOnDur (cell, drxCb, nxtOnDur, delta) RLOG_ARG0(L_ERROR,DBG_CELLID,cell->cellId, "rgSCHDrxGetNxOnDur():Invalid params." "cell/drxCb/nxtOnDur is NULL"); - RETVALUE(RFAILED); + return RFAILED; } #endif @@ -1388,7 +1371,7 @@ PRIVATE S16 rgSCHDrxGetNxtOnDur (cell, drxCb, nxtOnDur, delta) cycleLen = drxCb->shortDrxCycle; } - curTime = ((cell->crntTime.sfn * RGSCH_NUM_SUB_FRAMES_5G) + cell->crntTime.subframe); + curTime = ((cell->crntTime.sfn * RGSCH_NUM_SUB_FRAMES_5G) + cell->crntTime.slot); curTime += delta; /*TODO: see if we need to take care of wrap arounds */ @@ -1396,8 +1379,8 @@ PRIVATE S16 rgSCHDrxGetNxtOnDur (cell, drxCb, nxtOnDur, delta) { /* offset is the nextOnDur */ nxtOnDur->sfn = drxCb->drxStartOffset / RGSCH_NUM_SUB_FRAMES_5G; - nxtOnDur->subframe = (U8)(drxCb->drxStartOffset % RGSCH_NUM_SUB_FRAMES_5G); - nxtDist = ((nxtOnDur->sfn * RGSCH_NUM_SUB_FRAMES_5G) + nxtOnDur->subframe); + nxtOnDur->slot = (U8)(drxCb->drxStartOffset % RGSCH_NUM_SUB_FRAMES_5G); + nxtDist = ((nxtOnDur->sfn * RGSCH_NUM_SUB_FRAMES_5G) + nxtOnDur->slot); } else { @@ -1410,8 +1393,8 @@ PRIVATE S16 rgSCHDrxGetNxtOnDur (cell, drxCb, nxtOnDur, delta) /* Perfect match pick up the current time */ /*nxtOnDur should be set to equal to currentTime + DELTA */ nxtOnDur->sfn = (U16)curTime / RGSCH_NUM_SUB_FRAMES_5G; - nxtOnDur->subframe = (U16)curTime % RGSCH_NUM_SUB_FRAMES_5G; - nxtDist = ((nxtOnDur->sfn * RGSCH_NUM_SUB_FRAMES_5G) + nxtOnDur->subframe); + nxtOnDur->slot = (U16)curTime % RGSCH_NUM_SUB_FRAMES_5G; + nxtDist = ((nxtOnDur->sfn * RGSCH_NUM_SUB_FRAMES_5G) + nxtOnDur->slot); } else @@ -1419,7 +1402,7 @@ PRIVATE S16 rgSCHDrxGetNxtOnDur (cell, drxCb, nxtOnDur, delta) nxtDist = drxCb->drxStartOffset + (numOfCycles + 1) * cycleLen; nxtOnDur->sfn = (U16)nxtDist / RGSCH_NUM_SUB_FRAMES_5G; - nxtOnDur->subframe = (U16)nxtDist % RGSCH_NUM_SUB_FRAMES_5G; + nxtOnDur->slot = (U16)nxtDist % RGSCH_NUM_SUB_FRAMES_5G; } } @@ -1430,9 +1413,9 @@ PRIVATE S16 rgSCHDrxGetNxtOnDur (cell, drxCb, nxtOnDur, delta) { nxtDist = nxtDist + cycleLen; nxtOnDur->sfn = (U16)nxtDist / RGSCH_NUM_SUB_FRAMES_5G; - nxtOnDur->subframe = (U16)nxtDist % RGSCH_NUM_SUB_FRAMES_5G; + nxtOnDur->slot = (U16)nxtDist % RGSCH_NUM_SUB_FRAMES_5G; } - RETVALUE(ROK); + return ROK; } /* end of rgSCHDrxGetNxtOnDur */ /** @brief This function is a utility function to copy the UE configuration from @@ -1470,7 +1453,7 @@ PRIVATE S16 rgSCHDrxCpyUeCfg (ueCb, drxCfg) (drxCfg == (RgrUeDrxCfg* )NULLP) ) { - RETVALUE(RFAILED); + return RFAILED; } #endif @@ -1488,7 +1471,7 @@ PRIVATE S16 rgSCHDrxCpyUeCfg (ueCb, drxCfg) ueCb->shortDrxCycle = drxCfg->drxShortDrx.shortDrxCycle; ueCb->shortCycleTmrLen = drxCfg->drxShortDrx.drxShortCycleTmr; - RETVALUE(ROK); + return ROK; } /* end of rgSCHDrxCpyUeCfg */ #ifdef RGR_V2 @@ -1564,7 +1547,7 @@ PUBLIC S16 rgSCHDrxUeReCfg (cell, ue, ueReCfg) RLOG_ARG1(L_ERROR,DBG_CELLID,cell->cellId, "rgSCHdrxUeReCfg():""Memory allocation FAILED for DRX UE Cb CRNTI:%d", ue->ueId); - RETVALUE(ret); + return (ret); } ue->isDrxEnabled = TRUE; /* sachin */ @@ -1595,7 +1578,7 @@ PUBLIC S16 rgSCHDrxUeReCfg (cell, ue, ueReCfg) } if( ue->drxCb == NULLP ) { - RETVALUE(RFAILED); + return RFAILED; } ueDrxCb = ue->drxCb; @@ -1667,9 +1650,9 @@ PUBLIC S16 rgSCHDrxUeReCfg (cell, ue, ueReCfg) } - nxtOnDurTime = (nxtOnDur.sfn * RGSCH_NUM_SUB_FRAMES_5G) + nxtOnDur.subframe; + nxtOnDurTime = (nxtOnDur.sfn * RGSCH_NUM_SUB_FRAMES_5G) + nxtOnDur.slot; curTime = ((cell->crntTime.sfn * RGSCH_NUM_SUB_FRAMES_5G) + - cell->crntTime.subframe); + cell->crntTime.slot); /* If Onduration timer of old configuration is already running then waiting till it expires */ if((ueDrxCb->onDurExpIndx != DRX_INVALID) && (ueDrxCb->onDurExpDistance != DRX_TMR_EXPRD)) @@ -1747,7 +1730,7 @@ PUBLIC S16 rgSCHDrxUeReCfg (cell, ue, ueReCfg) } } - RETVALUE(ROK); + return ROK; } /* end of rgSCHDrxUeReCfg */ #endif @@ -1917,7 +1900,7 @@ PUBLIC S16 rgSCHDrxUeDel (cell, ue) ueDrxCb->drxDlInactvMask = DRX_UE_INACTIVE; ueDrxCb->drxUlInactvMask = DRX_UE_INACTIVE; - RETVALUE(ROK); + return ROK; }/*rgSCHDrxUeDel*/ /** @brief This function is called at the time of RGR cell configuration. @@ -1960,7 +1943,7 @@ PUBLIC S16 rgSCHDrxCellCfg (cell, cellCfg) { RLOG_ARG0(L_ERROR,DBG_CELLID,cell->cellId, "rgSCHDrxCellCfg():Invalid Params. cell/cellCfg is NULL"); - RETVALUE(RFAILED); + return RFAILED; } #endif @@ -1972,7 +1955,7 @@ PUBLIC S16 rgSCHDrxCellCfg (cell, cellCfg) { RLOG_ARG0(L_ERROR,DBG_CELLID,cell->cellId,"rgSCHDrxCellCfg():" "Memory allocation FAILED for DRX cell Cb"); - RETVALUE(ret); + return (ret); } /* delInUlScan determines which index scans the queue last. @@ -1992,7 +1975,7 @@ PUBLIC S16 rgSCHDrxCellCfg (cell, cellCfg) cell->drxCb->delInUlScan = TRUE; } - RETVALUE(ret); + return (ret); } /* end of rgSchDrxCellCfg */ @@ -2083,14 +2066,14 @@ PUBLIC S16 rgSCHDrxSrInd (cell, ue) #if ( ERRCLASS & ERRCLS_INT_PAR ) if ( cell == (RgSchCellCb* )NULLP) { - RETVALUE(ROK); + return ROK; } if( (ue == (RgSchUeCb* )NULLP)) { RLOG_ARG0(L_ERROR,DBG_CELLID,cell->cellId, "rgSCHDrxSrInd():Invalid Params. cell/ue is NULL"); - RETVALUE(RFAILED); + return RFAILED; } #endif /* KWork fix - shifted this down */ @@ -2104,7 +2087,7 @@ PUBLIC S16 rgSCHDrxSrInd (cell, ue) /* Update UE's inactive mask and if required move UE to ACTIVE state */ RG_SCH_CMN_UL_UPDT_INACTV_MASK( cell, ue, RG_DRX_INACTIVE); - RETVALUE(ROK); + return ROK; } /* rgSCHDrxSrInd */ @@ -2232,10 +2215,10 @@ Bool calcFrmOffst; rgSCHDrxGetNxtOnDur(cell,drxUe,&nxtOnDur,(U8)idx); nxtOnDurInSf = ((nxtOnDur.sfn * RGSCH_NUM_SUB_FRAMES_5G) + - nxtOnDur.subframe); + nxtOnDur.slot); curTime = ((cell->crntTime.sfn * RGSCH_NUM_SUB_FRAMES_5G) + - cell->crntTime.subframe); + cell->crntTime.slot); nxtOnDurIndex = nxtOnDurInSf % RG_SCH_MAX_DRXQ_SIZE; drxUe->distance = (nxtOnDurInSf-curTime) / RG_SCH_MAX_DRXQ_SIZE; @@ -2330,7 +2313,7 @@ PRIVATE S16 rgSCHDrxGetNxtTmrExpry (cell,curTime,duration,tmrExpryIdx) (tmrExpryIdx == (CmLteTimingInfo* )NULLP) ) { - RETVALUE(RFAILED); + return RFAILED; } #endif @@ -2339,14 +2322,14 @@ PRIVATE S16 rgSCHDrxGetNxtTmrExpry (cell,curTime,duration,tmrExpryIdx) tddCfgMode = cell->ulDlCfgIdx; crntTime.sfn = curTime / RGSCH_NUM_SUB_FRAMES_5G; - crntTime.subframe = curTime % RGSCH_NUM_SUB_FRAMES_5G; + crntTime.slot = curTime % RGSCH_NUM_SUB_FRAMES_5G; /* First calculate the number of DL subframes till next SFN */ dlSfTillNxtSFN = rgSchDrxDLSfTillNxtSFN[isDwPtsCnted][tddCfgMode] - [(crntTime.subframe % RGSCH_NUM_SUB_FRAMES)]; + [(crntTime.slot % RGSCH_NUM_SUB_FRAMES)]; if ( dlSfTillNxtSFN >= duration ) @@ -2428,7 +2411,7 @@ PRIVATE S16 rgSCHDrxGetNxtTmrExpry (cell,curTime,duration,tmrExpryIdx) tmrExpryIdx->sfn = tmrExpryIdx->sfn - (RG_SCH_CMN_MAX_SFN_NUM + 1); } - RETVALUE(ROK); + return ROK; }/*rgSCHDrxGetNxtTmrExpry*/ /** @brief This function calculates the next onDuration Occurence @@ -2476,7 +2459,7 @@ PRIVATE Void rgSCHDrxCalcNxtTmrExpry (cell,ue,delta,tmrLen,distance,idx) TRC2(rgSCHDrxCalcNxtTmrExpry) curTimeInSf = cell->crntTime.sfn * RGSCH_NUM_SUB_FRAMES_5G + - cell->crntTime.subframe; + cell->crntTime.slot; /* add delta to curTime */ curTimeInSf += delta; @@ -2567,7 +2550,7 @@ U16 offSet; if(((RGSCH_MAX_SUBFRM_5G + endTimeInSf- startTime) % RGSCH_MAX_SUBFRM_5G) >= drxCycle) { - RETVALUE(RFAILED); + return RFAILED; } startTime = (startTime + drxCycle); @@ -2579,7 +2562,7 @@ U16 offSet; }while((drxCycle % RGSCH_NUM_SUB_FRAMES) && (startTime < (drxCycle * RGSCH_NUM_SUB_FRAMES/2))); - RETVALUE(ROK); + return ROK; } #endif /*LTE_TDD */ @@ -2779,7 +2762,7 @@ U16 dlIndex; drxCell = (cell->drxCb); delInUlScan = drxCell->delInUlScan; - //printf("CELL Timer [SFN : %d],[SF : %d]\n",cell->crntTime.sfn,cell->crntTime.subframe); + //printf("CELL Timer [SFN : %d],[SF : %d]\n",cell->crntTime.sfn,cell->crntTime.slot); node = drxCell->drxQ[dlIndex].onDurationQ.first; @@ -2843,11 +2826,11 @@ U16 dlIndex; cmLListAdd2Tail(&(drxCell->drxQ[expiryIndex].onDurationExpQ), &(drxUe->onDurationExpEnt)); - //printf("DRXOnDuration Timer Started at [SFN : %d],[SF : %d]\n",cell->crntTime.sfn,cell->crntTime.subframe); + //printf("DRXOnDuration Timer Started at [SFN : %d],[SF : %d]\n",cell->crntTime.sfn,cell->crntTime.slot); drxUe->onDurationExpEnt.node = (PTR)ue; drxUe->onDurExpIndx = expiryIndex; - //printf("DRxOnDuration will Expire = [%d]\n",(cell->crntTime.sfn*10+cell->crntTime.subframe+drxUe->onDurTmrLen)); + //printf("DRxOnDuration will Expire = [%d]\n",(cell->crntTime.sfn*10+cell->crntTime.slot+drxUe->onDurTmrLen)); if ( delInUlScan == FALSE ) {