*/
\f
/* 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 */
#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 */
#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 */
#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
TRC2(kwTmmQSdu)
- KW_ALLOC(gCb,sdu,sizeof(KwSdu));
+ RLC_ALLOC(gCb,sdu,sizeof(KwSdu));
#if (ERRCLASS & ERRCLS_ADD_RES)
if ( sdu == NULLP )
{
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)
{
#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;
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
* 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,
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
{
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;
}
}
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",
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;
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;
}
* -# 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
#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)
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",
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;
}