X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=src%2F5gnrsch%2Frg_sch_mga.c;h=d57979c423d07cd2e67524b5889bc51fd017dba0;hb=8133a1985d2c53074af88c44edfb9231af64b433;hp=bdd694e148be32b5db4cb56259f006fbff6898e5;hpb=0a26c487f1b6bbb5217e47b15fa8273b2e749283;p=o-du%2Fl2.git diff --git a/src/5gnrsch/rg_sch_mga.c b/src/5gnrsch/rg_sch_mga.c index bdd694e14..d57979c42 100755 --- a/src/5gnrsch/rg_sch_mga.c +++ b/src/5gnrsch/rg_sch_mga.c @@ -31,9 +31,6 @@ /** @file rg_sch_mga.c @brief This module handles schedulers' measurement gap and ack-nack repetiton functionality */ -static const char* RLOG_MODULE_NAME="MAC"; -static int RLOG_MODULE_ID=4096; -static int RLOG_FILE_ID=169; /* header include files -- defines (.h) */ #include "common_def.h" @@ -45,8 +42,6 @@ static int RLOG_FILE_ID=169; #include "rg_sch_err.h" #include "rg_sch.h" #include "rg_sch_cmn.h" -#include "rl_interface.h" -#include "rl_common.h" /* header/extern include files (.x) */ #include "tfu.x" /* RGU types */ @@ -56,36 +51,36 @@ static int RLOG_FILE_ID=169; #include "rg_sch.x" /* typedefs for Scheduler */ /* local defines */ -PRIVATE S16 rgSCHMeasGapANRepUtlAddUe ARGS(( +static S16 rgSCHMeasGapANRepUtlAddUe ARGS(( RgSchCellCb *cell, RgSchUeCb *ue, RgrUeMeasGapCfg *cfg)); -PRIVATE S16 rgSCHMeasGapANRepUtlRmvUe ARGS(( +static S16 rgSCHMeasGapANRepUtlRmvUe ARGS(( RgSchCellCb *cell, RgSchUeCb *ue)); -PRIVATE S16 rgSchAckNackRepUtlRmvUe ARGS(( +static S16 rgSchAckNackRepUtlRmvUe ARGS(( RgSchCellCb *cell, RgSchUeCb *ue)); -PRIVATE Void rgSchAckNackRepUtlHdlTti ARGS(( +static Void rgSchAckNackRepUtlHdlTti ARGS(( RgSchCellCb *cell, CmLListCp *ackNackRepQ)); -PRIVATE Void rgSCHMeasGapANRepUtlHdlTti ARGS(( +static Void rgSCHMeasGapANRepUtlHdlTti ARGS(( RgSchCellCb *cell, CmLListCp *measGapQ)); #ifdef LTE_TDD -PRIVATE U8 rgSCHAckNakRepFindUlDuration ARGS(( +static uint8_t rgSCHAckNakRepFindUlDuration ARGS(( RgSchCellCb *cell, RgSchDlSf *dlSf, CmLteTimingInfo repTime, -U8 repCnt)); -PRIVATE Void rgSCHAckNakRepGetUlOffsetFrmDl ARGS(( +uint8_t repCnt)); +static Void rgSCHAckNakRepGetUlOffsetFrmDl ARGS(( RgSchDlSf *dlSf, CmLteTimingInfo crntDlTime, -U8 *noSubfrms)); +uint8_t *noSubfrms)); #endif /** @@ -124,24 +119,9 @@ U8 *noSubfrms)); * -# ROK **/ -#ifdef ANSI -S16 rgSCHMeasGapANRepUeCfg -( -RgSchCellCb *cell, -RgSchUeCb *ue, -RgrUeCfg *ueCfg -) -#else -S16 rgSCHMeasGapANRepUeCfg(cell, ue, ueCfg) -RgSchCellCb *cell; -RgSchUeCb *ue; -RgrUeCfg *ueCfg; -#endif +S16 rgSCHMeasGapANRepUeCfg(RgSchCellCb *cell,RgSchUeCb *ue,RgrUeCfg *ueCfg) { - TRC2(rgSCHMeasGapANRepUeCfg); - - ue->measGapCb.isMesGapEnabled = ueCfg->ueMesGapCfg.isMesGapEnabled; if (ueCfg->ueMesGapCfg.isMesGapEnabled) @@ -200,28 +180,13 @@ RgrUeCfg *ueCfg; * -# RFAILED **/ -#ifdef ANSI -S16 rgSCHMeasGapANRepUeRecfg -( -RgSchCellCb *cell, -RgSchUeCb *ue, -RgrUeRecfg *ueRecfg -) -#else -S16 rgSCHMeasGapANRepUeRecfg(cell, ue, ueRecfg) -RgSchCellCb *cell; -RgSchUeCb *ue; -RgrUeRecfg *ueRecfg; -#endif +S16 rgSCHMeasGapANRepUeRecfg(RgSchCellCb *cell,RgSchUeCb *ue,RgrUeRecfg *ueRecfg) { RgrUeMeasGapCfg *reCfg; RgSchUeMeasGapCb *ueMeasCb; RgrUeAckNackRepCfg *ackNackReCfg = &(ueRecfg->ueAckNackRecfg); RgSchUeAckNakRepCb *ackNakRepCb = &(ue->ackNakRepCb); - TRC2(rgSCHMeasGapANRepUeRecfg); - - reCfg = &(ueRecfg->ueMeasGapRecfg); ueMeasCb = &(ue->measGapCb); @@ -307,23 +272,9 @@ RgrUeRecfg *ueRecfg; * @param * @return */ -#ifdef ANSI -PRIVATE S16 rgSCHMeasGapANRepUtlAddUe -( -RgSchCellCb *cell, -RgSchUeCb *ue, -RgrUeMeasGapCfg *cfg -) -#else -PRIVATE S16 rgSCHMeasGapANRepUtlAddUe (cell, ue, cfg) -RgSchCellCb *cell; -RgSchUeCb *ue; -RgrUeMeasGapCfg *cfg; -#endif +static S16 rgSCHMeasGapANRepUtlAddUe(RgSchCellCb *cell,RgSchUeCb *ue,RgrUeMeasGapCfg *cfg) { - TRC2(rgSCHMeasGapANRepUtlAddUe); - switch (cfg->gapPrd) { case RG_MEAS_GAPPRD_40: @@ -338,8 +289,7 @@ RgrUeMeasGapCfg *cfg; &(ue->measGapCb.measQLnk)); break; default: - RLOG_ARG1(L_ERROR,DBG_CELLID,cell->cellId, - "rgSCHMeasGapANRepUeRecfg() Incorrect GAP Period" + DU_LOG("\nERROR --> SCH : rgSCHMeasGapANRepUeRecfg() Incorrect GAP Period" "CRNTI:%d",ue->ueId); return RFAILED; } @@ -361,21 +311,9 @@ RgrUeMeasGapCfg *cfg; * @param * @return */ -#ifdef ANSI -PRIVATE S16 rgSCHMeasGapANRepUtlRmvUe -( -RgSchCellCb *cell, -RgSchUeCb *ue -) -#else -PRIVATE S16 rgSCHMeasGapANRepUtlRmvUe (cell, ue) -RgSchCellCb *cell; -RgSchUeCb *ue; -#endif +static S16 rgSCHMeasGapANRepUtlRmvUe(RgSchCellCb *cell,RgSchUeCb *ue) { - TRC2(rgSCHMeasGapANRepUtlRmvUe); - switch (ue->measGapCb.gapPrd) { case RG_MEAS_GAPPRD_40: @@ -423,24 +361,9 @@ RgSchUeCb *ue; * -# ROK **/ -#ifdef ANSI -Void rgSCHMeasGapANRepUeDel -( -RgSchCellCb *cell, -RgSchUeCb *ue, -Bool isUeDel -) -#else -Void rgSCHMeasGapANRepUeDel(cell, ue, isUeDel) -RgSchCellCb *cell; -RgSchUeCb *ue; -Bool isUeDel; -#endif +Void rgSCHMeasGapANRepUeDel(RgSchCellCb *cell,RgSchUeCb *ue,Bool isUeDel) { - - TRC2(rgSCHMeasGapANRepUeDel); - if (ue->measGapCb.isMesGapEnabled) { rgSCHMeasGapANRepUtlRmvUe (cell, ue); @@ -485,7 +408,7 @@ Bool isUeDel; rgSCHTmrStopTmr (cell, RG_SCH_TMR_ACKNACK_REP, ue); rgSchAckNackRepUtlRmvUe (cell, ue); } - RETVOID; + return; } /** @brief This function deletes the UEs information related to ACK NACK @@ -504,28 +427,16 @@ Bool isUeDel; * @param * @return */ -#ifdef ANSI -PRIVATE S16 rgSchAckNackRepUtlRmvUe -( - RgSchCellCb *cell, - RgSchUeCb *ue - ) -#else -PRIVATE S16 rgSchAckNackRepUtlRmvUe (cell, ue) - RgSchCellCb *cell; - RgSchUeCb *ue; -#endif +static S16 rgSchAckNackRepUtlRmvUe(RgSchCellCb *cell,RgSchUeCb *ue) { - U8 hqIdx; - U8 repIdx; + uint8_t hqIdx; + uint8_t repIdx; RgSchDlHqProcCb *hqP; - U8 tbCnt; - - RgSchDlHqEnt *hqEnt = RG_SCH_CMN_GET_UE_HQE(ue, cell); + uint8_t tbCnt; - TRC3(rgSchAckNackRepUtlRmvUe); + RgSchDlHqEnt *hqEnt = RG_SCH_CMN_GET_UE_HQE(ue, cell); for (hqIdx = 0; hqIdx < hqEnt->numHqPrcs; hqIdx++) { @@ -617,23 +528,13 @@ PRIVATE S16 rgSchAckNackRepUtlRmvUe (cell, ue) * -# ROK **/ -#ifdef ANSI -S16 rgSCHMeasGapANRepTtiHndl -( -RgSchCellCb *cell -) -#else -S16 rgSCHMeasGapANRepTtiHndl(cell) -RgSchCellCb *cell; -#endif +S16 rgSCHMeasGapANRepTtiHndl(RgSchCellCb *cell) { - U8 offset; + uint8_t offset; CmLListCp *queue; RgSchDlSf *dlSf; CmLteTimingInfo repTime; - TRC2(rgSCHMeasGapANRepTtiHndl); - /* Measurement GAP Starts at offSet - however at MAC we are concerned at * subframe + TFU_DELTA. */ @@ -699,23 +600,11 @@ RgSchCellCb *cell; * @param CmLListCp *ackNakRepQ * @return Void */ -#ifdef ANSI -PRIVATE Void rgSchAckNackRepUtlHdlTti -( -RgSchCellCb *cell, -CmLListCp *ackNackRepQ -) -#else -PRIVATE Void rgSchAckNackRepUtlHdlTti (cell, ackNackRepQ) -RgSchCellCb *cell; -CmLListCp *ackNackRepQ; -#endif +static Void rgSchAckNackRepUtlHdlTti(RgSchCellCb *cell,CmLListCp *ackNackRepQ) { CmLList *node; RgSchUeCb *ue; - TRC2(rgSchAckNackRepUtlHdlTti); - node = ackNackRepQ->first; while (node) { @@ -728,7 +617,7 @@ CmLListCp *ackNackRepQ; } node = node->next; } /* end of while */ - RETVOID; + return; } /* end of */ @@ -746,23 +635,11 @@ CmLListCp *ackNackRepQ; * @param * @return */ -#ifdef ANSI -PRIVATE Void rgSCHMeasGapANRepUtlHdlTti -( -RgSchCellCb *cell, -CmLListCp *measGapQ -) -#else -PRIVATE Void rgSCHMeasGapANRepUtlHdlTti (cell, measGapQ) -RgSchCellCb *cell; -CmLListCp *measGapQ; -#endif +static Void rgSCHMeasGapANRepUtlHdlTti(RgSchCellCb *cell,CmLListCp *measGapQ) { CmLList *node; RgSchUeCb *ue; - TRC2(rgSCHMeasGapANRepUtlHdlTti); - node = measGapQ->first; while (node) { @@ -771,7 +648,7 @@ CmLListCp *measGapQ; rgSCHTmrStartTmr (cell, ue, RG_SCH_TMR_MEASGAP, RG_SCH_MEAS_GAP_LEN); node = node->next; } /* end of while */ - RETVOID; + return; } /* end of */ @@ -821,35 +698,23 @@ CmLListCp *measGapQ; * @return S16 * -# ROK **/ -#ifdef ANSI -S16 rgSCHMeasGapANRepGetDlInactvUe -( -RgSchCellCb *cell, -CmLListCp *dlInactvUeLst -) -#else -S16 rgSCHMeasGapANRepGetDlInactvUe(cell, dlInactvUeLst) -RgSchCellCb *cell; -CmLListCp *dlInactvUeLst; -#endif +S16 rgSCHMeasGapANRepGetDlInactvUe(RgSchCellCb *cell,CmLListCp *dlInactvUeLst) { - U8 offset; + uint8_t offset; CmLList *node; CmLList *hqNode; CmLListCp *queue; RgSchUeCb *ue; RgSchDlSf *dlSf; CmLteTimingInfo ackNakTime; - U16 schedTime; - U8 harqFdbkOffset; + uint16_t schedTime; + uint8_t harqFdbkOffset; #ifdef LTE_TDD - U8 repCntr; + uint8_t repCntr; #endif RgSchDlHqProcCb *hqP; RgSchDlHqTbCb *tbCb; - U32 i; - - TRC2(rgSCHMeasGapANRepGetDlInactvUe); + uint32_t i; schedTime = cell->crntTime.sfn * RGSCH_NUM_SUB_FRAMES_5G + cell->crntTime.slot + RG_DL_DELTA; @@ -970,7 +835,7 @@ CmLListCp *dlInactvUeLst; /* Start timer */ #ifdef LTE_TDD repCntr = rgSCHAckNakRepFindUlDuration(cell, dlSf, ackNakTime, - (U8)(ue->ackNakRepCb.repCntr - 1)); + (uint8_t)(ue->ackNakRepCb.repCntr - 1)); rgSCHTmrStartTmr (cell, ue, RG_SCH_TMR_DL_ACKNACK, repCntr); #else rgSCHTmrStartTmr (cell, ue, RG_SCH_TMR_DL_ACKNACK, @@ -1028,37 +893,25 @@ CmLListCp *dlInactvUeLst; * -# ROK **/ -#ifdef ANSI -S16 rgSCHMeasGapANRepGetUlInactvUe -( -RgSchCellCb *cell, -CmLListCp *ulInactvUeLst -) -#else -S16 rgSCHMeasGapANRepGetUlInactvUe(cell, ulInactvUeLst) -RgSchCellCb *cell; -CmLListCp *ulInactvUeLst; -#endif +S16 rgSCHMeasGapANRepGetUlInactvUe(RgSchCellCb *cell,CmLListCp *ulInactvUeLst) { - U8 offset; - CmLList *node; - CmLList *hqNode; - CmLListCp *queue; - RgSchUeCb *ue; - CmLteTimingInfo ackNakTime; - RgSchDlSf *dlSf; - U16 schedTime; - U8 pdcchToPuschGap; - U8 idx=0; + uint8_t offset; + CmLList *node; + CmLList *hqNode; + CmLListCp *queue; + RgSchUeCb *ue; + CmLteTimingInfo ackNakTime; + RgSchDlSf *dlSf; + uint16_t schedTime; + uint8_t pdcchToPuschGap; + uint8_t idx=0; #ifdef LTE_TDD - U8 repCntr; + uint8_t repCntr; #endif RgSchDlHqProcCb *hqP; RgSchDlHqTbCb *tbCb; - U32 i; - - TRC2(rgSCHMeasGapANRepGetUlInactvUe); + uint32_t i; /*ccpu00139481- Meas Gap should be monitored in UL with TFU_ULCNTRL_DLDELTA*/ schedTime = cell->crntTime.sfn * RGSCH_NUM_SUB_FRAMES_5G + cell->crntTime.slot + \ @@ -1090,7 +943,8 @@ CmLListCp *ulInactvUeLst; * ahead - UE cant read PDCCH format0 if it is in measurement gap. */ rgSCHTmrStartTmr (cell, ue, RG_SCH_TMR_UL_MEASGAP, (RG_SCH_MEAS_GAP_LEN + pdcchToPuschGap - idx)); - //printf("Starting Meas Gap 40 @ DL TTI- (%d:%d) K-%d offset-%d Len %d \n", ackNakTime.sfn, ackNakTime.subframe, harqFdbkOffset, offset, RG_SCH_MEAS_GAP_LEN + harqFdbkOffset-idx); + //DU_LOG("\nINFO --> SCH : Starting Meas Gap 40 @ DL TTI- (%d:%d) K-%d offset-%d Len %d \n", ackNakTime.sfn,\ + ackNakTime.subframe, harqFdbkOffset, offset, RG_SCH_MEAS_GAP_LEN + harqFdbkOffset-idx); } node = node->next; } @@ -1112,7 +966,8 @@ CmLListCp *ulInactvUeLst; /* Start timer */ rgSCHTmrStartTmr (cell, ue, RG_SCH_TMR_UL_MEASGAP, (RG_SCH_MEAS_GAP_LEN + pdcchToPuschGap - idx)); - //printf("Starting Meas Gap 80 @ DL TTI- (%d:%d) K-%d offset-%d Len %d \n", ackNakTime.sfn, ackNakTime.subframe, harqFdbkOffset, offset, RG_SCH_MEAS_GAP_LEN + harqFdbkOffset-idx); + //DU_LOG("\nINFO --> SCH : Starting Meas Gap 80 @ DL TTI- (%d:%d) K-%d offset-%d Len %d \n", ackNakTime.sfn,\ + ackNakTime.subframe, harqFdbkOffset, offset, RG_SCH_MEAS_GAP_LEN + harqFdbkOffset-idx); } node = node->next; } @@ -1207,21 +1062,10 @@ CmLListCp *ulInactvUeLst; * -# ROK **/ -#ifdef ANSI -Void rgSCHMeasGapANRepDlInactvTmrExpry -( -RgSchUeCb *ue, -U8 tmrEvnt -) -#else -Void rgSCHMeasGapANRepDlInactvTmrExpry(ue, tmrEvnt) -RgSchUeCb *ue; -U8 tmrEvnt; -#endif +Void rgSCHMeasGapANRepDlInactvTmrExpry(RgSchUeCb *ue,uint8_t tmrEvnt) { RgSchCellCb *cell = ue->cell; - TRC2(rgSCHMeasGapANRepDlInactvTmrExpry); switch (tmrEvnt) { @@ -1237,7 +1081,7 @@ U8 tmrEvnt; cmInitTimers (&ue->measGapCb.measGapDlInactvTmr, 1); cmInitTimers (&ue->ackNakRepCb.ackNakRepDlInactvTmr, 1); } - RETVOID; + return; } /** @@ -1267,20 +1111,9 @@ U8 tmrEvnt; * -# ROK **/ -#ifdef ANSI -Void rgSCHMeasGapANRepUlInactvTmrExpry -( -RgSchUeCb *ue, -U8 tmrEvnt -) -#else -Void rgSCHMeasGapANRepUlInactvTmrExpry(ue, tmrEvnt) -RgSchUeCb *ue; -U8 tmrEvnt; -#endif +Void rgSCHMeasGapANRepUlInactvTmrExpry(RgSchUeCb *ue,uint8_t tmrEvnt) { RgSchCellCb *cell = ue->cell; - TRC2(rgSCHMeasGapANRepUlInactvTmrExpry); switch (tmrEvnt) { @@ -1296,7 +1129,7 @@ U8 tmrEvnt; cmInitTimers (&ue->measGapCb.measGapUlInactvTmr, 1); cmInitTimers (&ue->ackNakRepCb.ackNakRepUlInactvTmr, 1); } - RETVOID; + return; } /** @@ -1321,23 +1154,13 @@ U8 tmrEvnt; * -# ROK **/ -#ifdef ANSI -Void rgSCHMeasGapANRepTmrExpry -( -RgSchUeCb *ue -) -#else -Void rgSCHMeasGapANRepTmrExpry(ue) -RgSchUeCb *ue; -#endif +Void rgSCHMeasGapANRepTmrExpry(RgSchUeCb *ue) { - TRC2(rgSCHMeasGapANRepTmrExpry); - ue->measGapCb.isMeasuring = FALSE; cmInitTimers (&ue->measGapCb.measGapTmr, 1); - RETVOID; + return; } /** @@ -1362,23 +1185,13 @@ RgSchUeCb *ue; * -# ROK **/ -#ifdef ANSI -Void rgSCHAckNakRepTmrExpry -( -RgSchUeCb *ue -) -#else -Void rgSCHAckNakRepTmrExpry(ue) -RgSchUeCb *ue; -#endif +Void rgSCHAckNakRepTmrExpry(RgSchUeCb *ue) { - TRC2(rgSCHAckNakRepTmrExpry); - ue->ackNakRepCb.isAckNakRep = FALSE; cmInitTimers (&ue->ackNakRepCb.ackNakRepTmr, 1); - RETVOID; + return; } @@ -1413,26 +1226,14 @@ RgSchUeCb *ue; * -# ROK **/ -#ifdef ANSI -Void rgSCHAckNakRepAddToQ -( -RgSchCellCb *cell, -RgSchDlSf *crntDlSf -) -#else -Void rgSCHAckNakRepAddToQ(cell, crntDlSf) -RgSchCellCb *cell; -RgSchDlSf *crntDlSf; -#endif +Void rgSCHAckNakRepAddToQ(RgSchCellCb *cell,RgSchDlSf *crntDlSf) { RgSchUeCb *ue; CmLList *node; CmLList *hqNode; RgSchDlHqProcCb *hqP; RgSchDlHqTbCb *tbCb; - U32 i; - - TRC2(rgSCHAckNakRepAddToQ); + uint32_t i; node = crntDlSf->ueLst.first; while (node) @@ -1458,7 +1259,7 @@ RgSchDlSf *crntDlSf; } } } - RETVOID; + return; } @@ -1476,36 +1277,21 @@ RgSchDlSf *crntDlSf; * @param[in] RgSchCellCb *cell * @param[in] RgSchDlSf *dlSf * @param[in] CmLteTimingInfo repTime - * @param[in] U8 repCnt + * @param[in] uint8_t repCnt * - * @return U8 + * @return uint8_t * **/ -#ifdef ANSI -PRIVATE U8 rgSCHAckNakRepFindUlDuration -( -RgSchCellCb *cell, -RgSchDlSf *dlSf, -CmLteTimingInfo repTime, -U8 repCnt -) -#else -PRIVATE U8 rgSCHAckNakRepFindUlDuration(cell, dlSf, repTime, repCnt) -RgSchCellCb *cell; -RgSchDlSf *dlSf; -CmLteTimingInfo repTime; -U8 repCnt; -#endif +static uint8_t rgSCHAckNakRepFindUlDuration(RgSchCellCb *cell,RgSchDlSf *dlSf,CmLteTimingInfo repTime,uint8_t repCnt) { CmLteTimingInfo ulfrm; - U8 noSubfrms = 0; - U16 ulDlCfgIdx = cell->ulDlCfgIdx; - S16 rem = 0; + uint8_t noSubfrms = 0; + uint16_t ulDlCfgIdx = cell->ulDlCfgIdx; + S16 rem = 0; S16 idx; - S8 diff; + S8 diff; - TRC2(rgSCHAckNakRepFindUlDuration) rgSCHAckNakRepGetUlOffsetFrmDl(dlSf, repTime, &noSubfrms); RG_SCH_ADD_TO_CRNT_TIME(repTime, ulfrm, noSubfrms); diff = repCnt-1; @@ -1538,27 +1324,14 @@ U8 repCnt; * * @param[in] RgSchDlSf *dlSf * @param[in] CmLteTimingInfo crntDlTime - * @param[in] U8 *noSubfrms + * @param[in] uint8_t *noSubfrms * - * @return U8 + * @return uint8_t * **/ -#ifdef ANSI -PRIVATE Void rgSCHAckNakRepGetUlOffsetFrmDl -( -RgSchDlSf *dlSf, -CmLteTimingInfo crntDlTime, -U8 *noSubfrms -) -#else -PRIVATE Void rgSCHAckNakRepGetUlOffsetFrmDl(dlSf, crntDlTime, noSubfrms) -RgSchDlSf *dlSf; -CmLteTimingInfo crntDlTime; -U8 *noSubfrms; -#endif - { - TRC2(rgSCHAckNakRepGetUlOffsetFrmDl) +static Void rgSCHAckNakRepGetUlOffsetFrmDl(RgSchDlSf *dlSf,CmLteTimingInfo crntDlTime,uint8_t *noSubfrms ) +{ if(dlSf->dlFdbkInfo.sfnOffset != 0) { @@ -1570,7 +1343,7 @@ U8 *noSubfrms; { *noSubfrms = dlSf->dlFdbkInfo.subframe - crntDlTime.subframe; } - RETVOID; + return; } #endif