X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;ds=inline;f=src%2F5gnrrlc%2Fkw_tmm_dl.c;h=5b593c9ce8a26583ad4a7cd59f20d58e5f3cfa29;hb=5831bf6b3454aa200a92cd3e84209650734e4863;hp=730f3656b404acc3c2fbdaec77402ffc628cc29d;hpb=5625a52ad68f6ad93684e68bbbdbaef0d462cf9a;p=o-du%2Fl2.git diff --git a/src/5gnrrlc/kw_tmm_dl.c b/src/5gnrrlc/kw_tmm_dl.c index 730f3656b..5b593c9ce 100755 --- a/src/5gnrrlc/kw_tmm_dl.c +++ b/src/5gnrrlc/kw_tmm_dl.c @@ -42,18 +42,7 @@ static int RLOG_FILE_ID=200; */ /* header (.h) include files */ -#include "envopt.h" /* environment options */ -#include "envdep.h" /* environment dependent */ -#include "envind.h" /* environment independent */ - -#include "gen.h" /* general */ -#include "ssi.h" /* system services */ -#include "cm5.h" /* common timer defines */ -#include "cm_tkns.h" /* common tokens defines */ -#include "cm_mblk.h" /* common memory allocation library defines */ -#include "cm_llist.h" /* common link list defines */ -#include "cm_hash.h" /* common hash list defines */ -#include "cm_lte.h" /* common LTE defines */ +#include "common_def.h" #include "lkw.h" /* LKW defines */ #include "ckw.h" /* CKW defines */ #include "kwu.h" /* KWU defines */ @@ -66,16 +55,6 @@ static int RLOG_FILE_ID=200; #include "kw_dl.h" /* extern (.x) include files */ -#include "gen.x" /* general */ -#include "ssi.x" /* system services */ - -#include "cm5.x" /* common timer library */ -#include "cm_tkns.x" /* common tokens */ -#include "cm_mblk.x" /* common memory allocation */ -#include "cm_llist.x" /* common link list */ -#include "cm_hash.x" /* common hash list */ -#include "cm_lte.x" /* common LTE includes */ -#include "cm_lib.x" /* common memory allocation library */ #include "lkw.x" /* LKW */ #include "ckw.x" /* CKW */ #include "kwu.x" /* KWU */ @@ -87,7 +66,7 @@ static int RLOG_FILE_ID=200; #define KW_MODULE (KW_DBGMASK_TM | KW_DBGMASK_DL) -PRIVATE Void kwTmmSndStaRsp ARGS((KwCb *gCb, KwDlRbCb *rbCb, +PRIVATE Void kwTmmSndStaRsp ARGS((RlcCb *gCb, RlcDlRbCb *rbCb, MsgLen bo, KwuDatReqInfo *datReqInfo)); extern U32 rgMacGT ; /** @addtogroup tmmode */ @@ -114,15 +93,15 @@ extern U32 rgMacGT ; #ifdef ANSI PUBLIC Void kwTmmQSdu ( -KwCb *gCb, -KwDlRbCb *rbCb, +RlcCb *gCb, +RlcDlRbCb *rbCb, KwuDatReqInfo *datReqInfo, Buffer *mBuf ) #else PUBLIC Void kwTmmQSdu(gCb,rbCb,datReqInfo,mBuf) -KwCb *gCb; -KwDlRbCb *rbCb; +RlcCb *gCb; +RlcDlRbCb *rbCb; KwuDatReqInfo *datReqInfo; Buffer *mBuf; #endif @@ -132,7 +111,7 @@ Buffer *mBuf; TRC2(kwTmmQSdu) - KW_ALLOC(gCb,sdu,sizeof(KwSdu)); + RLC_ALLOC(gCb,sdu,sizeof(KwSdu)); #if (ERRCLASS & ERRCLS_ADD_RES) if ( sdu == NULLP ) { @@ -148,7 +127,7 @@ Buffer *mBuf; rbCb->lch.lChType == CM_LTE_LCH_PCCH ) { sdu->mode.tm.sfn = datReqInfo->tm.tmg.sfn; - sdu->mode.tm.subframe = datReqInfo->tm.tmg.subframe; + sdu->mode.tm.slot = datReqInfo->tm.tmg.slot; #ifdef EMTC_ENABLE if(rbCb->lch.lChType == CM_LTE_LCH_PCCH) { @@ -191,22 +170,22 @@ Buffer *mBuf; #ifdef ANSI PUBLIC Void kwTmmSndToLi ( -KwCb *gCb, +RlcCb *gCb, SuId suId, -KwDlRbCb *rbCb, +RlcDlRbCb *rbCb, RguCStaIndInfo *staInd ) #else PUBLIC Void kwTmmSndToLi(gCb, suId, rbCb, staInd) -KwCb *gCb; +RlcCb *gCb; SuId suId; -KwDlRbCb *rbCb; +RlcDlRbCb *rbCb; RguCStaIndInfo *staInd; #endif { CmLList *node; /* Current Link List Node */ KwSdu *sdu; /* SDU */ - RguCDatReqInfo *cDatReqInfo; /* Data Request Information */ + RlcMacData *dlData; S16 timeDiff = 0; Ticks curTime = 0; @@ -216,35 +195,35 @@ RguCStaIndInfo *staInd; CM_LLIST_FIRST_NODE(&(rbCb->m.tm.sduQ), node); - /* (Sfn,subframe) at which the message should be transmitted is - * validated with alloted (sfn,subframe)in the MAC layer */ + /* (Sfn,slot) at which the message should be transmitted is + * validated with alloted (sfn,slot)in the MAC layer */ while (node != NULLP) { sdu = (KwSdu *)(node->node); if ( rbCb->lch.lChType == CM_LTE_LCH_BCCH || rbCb->lch.lChType == CM_LTE_LCH_PCCH ) { - U16 sfn, subframe; + U16 sfn, slot; /* MS_FIX: syed sfn is of 10 bytes rather than 8 */ #ifdef EMTC_ENABLE - /* As part of CATM feature cross subframe scheduling is implemented , so there is some delta(currently 2) + /* As part of CATM feature cross slot scheduling is implemented , so there is some delta(currently 2) between MPDCCH and PDSCH,RLC expects cell crntTime of transmission of control dlsf, so one extra - information is provided in staInd, so that sfn,subframe should calculate from paging Timing information + information is provided in staInd, so that sfn,slot should calculate from paging Timing information in case of EMTC paging, instead of transId */ if(staInd->isEmtcPaging) { sfn = staInd->pagingTimingInfo.sfn; - subframe = staInd->pagingTimingInfo.subframe; + slot = staInd->pagingTimingInfo.slot; } else #endif { sfn = (staInd->transId >> 8) & 0x3FF; - subframe = staInd->transId & 0xFF; + slot = staInd->transId & 0xFF; } /* Table - * tm.subframe - current subframe + * tm.slot - current slot * 0,sfn 7,sfn-1 * 4,sfn 1,sfn * 5,sfn 2,sfn @@ -254,13 +233,13 @@ RguCStaIndInfo *staInd; * Take care of SFN wraparound. TODO: It is better for RLC * not to be aware of SCH DELTAs. So we should look for * sending actual transmission time to RLC. */ - if ((subframe + TFU_DELTA) >= 10) + if ((slot + TFU_DELTA) >= 10) { sfn = (sfn + 1)%1024; } if ((sdu->mode.tm.sfn != sfn) || - (sdu->mode.tm.subframe != ((subframe+TFU_DELTA)%10))) + (sdu->mode.tm.slot != ((slot+TFU_DELTA)%10))) { node = node->next; RLOG_ARG4(L_DEBUG,DBG_RBID,rbCb->rlcId.rbId, @@ -270,14 +249,14 @@ RguCStaIndInfo *staInd; rbCb->rlcId.ueId, rbCb->rlcId.cellId); RLOG_ARG4(L_DEBUG,DBG_RBID,rbCb->rlcId.rbId, - "sfn %d subframe %d UEID:%d CELLID:%d", + "sfn %d slot %d UEID:%d CELLID:%d", sfn, - subframe, + slot, rbCb->rlcId.ueId, rbCb->rlcId.cellId); cmLListDelFrm(&(rbCb->m.tm.sduQ), &sdu->lstEnt); - KW_FREE_BUF(sdu->mBuf); - KW_FREE(gCb, sdu, sizeof(KwSdu)); + RLC_FREE_BUF(sdu->mBuf); + RLC_FREE(gCb, sdu, sizeof(KwSdu)); } else { @@ -320,8 +299,8 @@ RguCStaIndInfo *staInd; rbCb->rlcId.ueId, rbCb->rlcId.cellId); cmLListDelFrm(&(rbCb->m.tm.sduQ), &sdu->lstEnt); - KW_FREE_BUF(sdu->mBuf); - KW_FREE(gCb, sdu, sizeof(KwSdu)); + RLC_FREE_BUF(sdu->mBuf); + RLC_FREE(gCb, sdu, sizeof(KwSdu)); continue; } @@ -374,11 +353,11 @@ RguCStaIndInfo *staInd; } sdu = (KwSdu *)node->node; - KW_ALLOC_SHRABL_BUF(gCb->u.dlCb->rguDlSap[suId].pst.region, + RLC_ALLOC_SHRABL_BUF(gCb->u.dlCb->rguDlSap[suId].pst.region, gCb->u.dlCb->rguDlSap[suId].pst.pool, - cDatReqInfo,(Size)sizeof(RguCDatReqInfo)); + dlData,(Size)sizeof(RlcMacData)); #if (ERRCLASS & ERRCLS_ADD_RES) - if ( cDatReqInfo == NULLP ) + if ( dlData == NULLP ) { RLOG_ARG2(L_FATAL,DBG_RBID,rbCb->rlcId.rbId, "Memory Allocation failed UEID:%d CELLID:%d", @@ -387,29 +366,15 @@ RguCStaIndInfo *staInd; RETVOID; } #endif /* ERRCLASS & ERRCLS_ADD_RES */ -#ifdef CCPU_OPT - if ( rbCb->lch.lChType == CM_LTE_LCH_BCCH || - rbCb->lch.lChType == CM_LTE_LCH_PCCH ) - { - cDatReqInfo->u.timeToTx.sfn = sdu->mode.tm.sfn; - cDatReqInfo->u.timeToTx.subframe = sdu->mode.tm.subframe; -#ifdef EMTC_ENABLE - if(rbCb->lch.lChType == CM_LTE_LCH_PCCH) - { - cDatReqInfo->pnb = sdu->mode.tm.pnb; - } -#endif - } - else - { - cDatReqInfo->u.rnti = sdu->mode.tm.rnti; - } -#endif - cDatReqInfo->pdu = sdu->mBuf; - cDatReqInfo->transId = rbCb->transId; - cDatReqInfo->cellId = rbCb->rlcId.cellId; - cDatReqInfo->lcId = rbCb->lch.lChId; - cDatReqInfo->lcType = rbCb->lch.lChType; + + dlData->timeToTx.sfn = sdu->mode.tm.sfn; + dlData->timeToTx.slot = sdu->mode.tm.slot; + dlData->cellId = rbCb->rlcId.cellId; + dlData->rnti = sdu->mode.tm.rnti; + dlData->nmbPdu = 1; + dlData->pduInfo[0].commCh = TRUE; + dlData->pduInfo[0].lcId = rbCb->lch.lChId; + dlData->pduInfo[0].pduBuf = sdu->mBuf; /* kw005.201 ccpu00117318, updating the statistics */ gCb->genSts.bytesSent += sdu->sduSz; @@ -421,18 +386,18 @@ RguCStaIndInfo *staInd; sdu->mBuf = NULLP; cmLListDelFrm(&(rbCb->m.tm.sduQ), &sdu->lstEnt); - KW_FREE(gCb,sdu, sizeof(KwSdu)); + RLC_FREE(gCb,sdu, sizeof(KwSdu)); /* If trace flag is enabled send the trace indication */ if(gCb->init.trc == TRUE) { /* Populate the trace params */ - kwLmmSendTrc(gCb,EVTRGUCDATREQ, NULLP); + kwLmmSendTrc(gCb,EVTRLCDLDAT, NULLP); } - KwLiRguCDatReq (&(gCb->u.dlCb->rguDlSap[suId].pst), - gCb->u.dlCb->rguDlSap[suId].spId, - cDatReqInfo); + RlcMacSendDlData(&(gCb->u.dlCb->rguDlSap[suId].pst), + gCb->u.dlCb->rguDlSap[suId].spId, + dlData); RETVOID; } @@ -452,18 +417,18 @@ RguCStaIndInfo *staInd; * -# ROK */ #ifdef ANSI -PUBLIC Void kwDlTmmReEstablish +PUBLIC Void rlcDlTmmReEstablish ( -KwCb *gCb, -KwDlRbCb *rbCb +RlcCb *gCb, +RlcDlRbCb *rbCb ) #else -PUBLIC Void kwDlTmmReEstablish(gCb,rbCb) -KwCb *gCb; -KwDlRbCb *rbCb; +PUBLIC Void rlcDlTmmReEstablish(gCb,rbCb) +RlcCb *gCb; +RlcDlRbCb *rbCb; #endif { - TRC2(kwDlTmmReEstablish) + TRC2(rlcDlTmmReEstablish) #ifdef LTE_L2_MEAS_RLC @@ -496,20 +461,21 @@ KwDlRbCb *rbCb; #ifdef ANSI PRIVATE Void kwTmmSndStaRsp ( -KwCb *gCb, -KwDlRbCb *rbCb, +RlcCb *gCb, +RlcDlRbCb *rbCb, MsgLen bo, KwuDatReqInfo *datReqInfo ) #else PRIVATE Void kwTmmSndStaRsp(rbCb,bo,datReqInfo) -KwCb *gCb; -KwDlRbCb *rbCb; +RlcCb *gCb; +RlcDlRbCb *rbCb; MsgLen bo; KwuDatReqInfo *datReqInfo; #endif { - RguCStaRspInfo *staRspInfo; /* Status Response Information */ +// RguCStaRspInfo *staRspInfo; /* Status Response Information */ + RlcMacBOStatus *boStatus; /* Buffer occupancy status information */ KwRguSapCb *rguSap; /* SAP Information */ TRC3(kwTmmSndStaRsp) @@ -517,11 +483,11 @@ KwuDatReqInfo *datReqInfo; rguSap = &(gCb->u.dlCb->rguDlSap[rbCb->rguSapId]); - KW_ALLOC_SHRABL_BUF(gCb->u.dlCb->rguDlSap[rbCb->rguSapId].pst.region, + RLC_ALLOC_SHRABL_BUF(gCb->u.dlCb->rguDlSap[rbCb->rguSapId].pst.region, gCb->u.dlCb->rguDlSap[rbCb->rguSapId].pst.pool, - staRspInfo,sizeof(RguCStaRspInfo)); + boStatus, sizeof(RguCStaRspInfo)); #if (ERRCLASS & ERRCLS_ADD_RES) - if ( staRspInfo == NULLP ) + if ( boStatus == NULLP ) { RLOG_ARG2(L_FATAL,DBG_RBID,rbCb->rlcId.rbId, "Memory Allocation failed UEID:%d CELLID:%d", @@ -530,38 +496,21 @@ KwuDatReqInfo *datReqInfo; RETVOID; } #endif /* ERRCLASS & ERRCLS_ADD_RES */ - staRspInfo->bo = bo; - staRspInfo->cellId = rbCb->rlcId.cellId; - staRspInfo->lcId = rbCb->lch.lChId; - staRspInfo->lcType = rbCb->lch.lChType; -#ifdef CCPU_OPT - if ( rbCb->lch.lChType == CM_LTE_LCH_BCCH || - rbCb->lch.lChType == CM_LTE_LCH_PCCH ) - { - staRspInfo->u.timeToTx.sfn = datReqInfo->tm.tmg.sfn; - staRspInfo->u.timeToTx.subframe = datReqInfo->tm.tmg.subframe; -#ifdef EMTC_ENABLE - if(rbCb->lch.lChType == CM_LTE_LCH_PCCH) - { - staRspInfo->emtcDiReason = datReqInfo->emtcDiReason; - staRspInfo->pnb = datReqInfo->pnb; - } -#endif - } - else if ( rbCb->lch.lChType == CM_LTE_LCH_CCCH ) - { - staRspInfo->u.rnti = datReqInfo->tm.rnti; - } -#endif + + boStatus->cellId = rbCb->rlcId.cellId; + boStatus->rnti = rbCb->rlcId.ueId; + boStatus->commCh = TRUE; + boStatus->lcId = rbCb->lch.lChId; + boStatus->bo = bo; /* If trace flag is enabled send the trace indication */ if(gCb->init.trc == TRUE) { /* Populate the trace params */ - kwLmmSendTrc(gCb,EVTRGUCSTARSP, NULLP); + kwLmmSendTrc(gCb, EVTRLCBOSTA, NULLP); } - KwLiRguCStaRsp(&rguSap->pst,rguSap->spId,staRspInfo); + RlcMacSendBOStatus(&rguSap->pst, rguSap->spId, boStatus); RETVOID; }