Desc: Source code for RLC Transparent mode assembly and
reassembly.This file contains following functions
- --kwTmmQSdu
- --kwTmmSndToLi
- --kwTmmRcvFrmLi
+ --rlcTmmQSdu
+ --rlcTmmSendToMac
+ --rlcTmmRcvFrmMac
--kwTmmReEstablish
File: kw_tmm_dl.c
**********************************************************************/
-static const char* RLOG_MODULE_NAME="TMM";
-static int RLOG_MODULE_ID=2048;
-static int RLOG_FILE_ID=200;
/**
* @file kw_tmm_dl.c
* @brief RLC Transparent Mode module
*/
\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 */
#include "kw.x"
#include "kw_udx.x"
#include "kw_dl.x"
+#include "rlc_utils.h"
+#include "rlc_mac_inf.h"
+#include "rlc_lwr_inf_api.h"
-#define KW_MODULE (KW_DBGMASK_TM | KW_DBGMASK_DL)
+#define RLC_MODULE (RLC_DBGMASK_TM | RLC_DBGMASK_DL)
-PRIVATE Void kwTmmSndStaRsp ARGS((KwCb *gCb, KwDlRbCb *rbCb,
+static Void rlcTmmSendBoSta ARGS((RlcCb *gCb, RlcDlRbCb *rbCb,
MsgLen bo, KwuDatReqInfo *datReqInfo));
-extern U32 rgMacGT ;
+uint32_t rgMacGT ;
/** @addtogroup tmmode */
/*@{*/
* -# ROK
* -# RFAILED
*/
-#ifdef ANSI
-PUBLIC Void kwTmmQSdu
+Void rlcTmmQSdu
(
-KwCb *gCb,
-KwDlRbCb *rbCb,
+RlcCb *gCb,
+RlcDlRbCb *rbCb,
KwuDatReqInfo *datReqInfo,
Buffer *mBuf
)
-#else
-PUBLIC Void kwTmmQSdu(gCb,rbCb,datReqInfo,mBuf)
-KwCb *gCb;
-KwDlRbCb *rbCb;
-KwuDatReqInfo *datReqInfo;
-Buffer *mBuf;
-#endif
{
- KwSdu *sdu;
+ RlcSdu *sdu;
- TRC2(kwTmmQSdu)
-
-
- KW_ALLOC(gCb,sdu,sizeof(KwSdu));
+ RLC_ALLOC(gCb,sdu,sizeof(RlcSdu));
#if (ERRCLASS & ERRCLS_ADD_RES)
if ( sdu == NULLP )
{
- RLOG_ARG2(L_FATAL,DBG_RBID,rbCb->rlcId.rbId,
- "Memory Allocation failed UEID:%d CELLID:%d",
- rbCb->rlcId.ueId,
- rbCb->rlcId.cellId);
- RETVOID;
+ DU_LOG("\nERROR --> RLC_DL : Memory Allocation failed UEID:%d CELLID:%d",
+ rbCb->rlcId.ueId, rbCb->rlcId.cellId);
+ return;
}
#endif /* ERRCLASS & ERRCLS_ADD_RES */
#ifdef CCPU_OPT
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)
{
cmLListAdd2Tail(&(rbCb->m.tm.sduQ), &(sdu->lstEnt));
sdu->lstEnt.node = (PTR)sdu;
- kwTmmSndStaRsp(gCb, rbCb, sdu->sduSz, datReqInfo);
- RETVOID;
+ rlcTmmSendBoSta(gCb, rbCb, sdu->sduSz, datReqInfo);
+ return;
}
/**
* -# ROK
* -# RFAILED
*/
-#ifdef ANSI
-PUBLIC Void kwTmmSndToLi
-(
-KwCb *gCb,
-SuId suId,
-KwDlRbCb *rbCb,
-RguCStaIndInfo *staInd
-)
-#else
-PUBLIC Void kwTmmSndToLi(gCb, suId, rbCb, staInd)
-KwCb *gCb;
-SuId suId;
-KwDlRbCb *rbCb;
-RguCStaIndInfo *staInd;
-#endif
+void rlcTmmSendToMac(RlcCb *gCb, SuId suId, RlcDlRbCb *rbCb, RguCStaIndInfo *staInd)
{
+ Pst pst;
CmLList *node; /* Current Link List Node */
- KwSdu *sdu; /* SDU */
- RlcMacData *dlData;
- S16 timeDiff = 0;
- Ticks curTime = 0;
-
- TRC2(kwTmmSndToLi)
-
+ RlcSdu *sdu; /* SDU */
+ RlcData *dlData;
+ uint16_t pduLen;
+ uint16_t copyLen;
+ int16_t 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);
+ sdu = (RlcSdu *)(node->node);
if ( rbCb->lch.lChType == CM_LTE_LCH_BCCH ||
rbCb->lch.lChType == CM_LTE_LCH_PCCH )
{
- U16 sfn, subframe;
+ uint16_t 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,
- "Releasing SDU of RNTI = %d for RNTI = %d UEID:%d CELLID:%d",
- sdu->mode.tm.rnti,
- staInd->rnti,
- rbCb->rlcId.ueId,
- rbCb->rlcId.cellId);
- RLOG_ARG4(L_DEBUG,DBG_RBID,rbCb->rlcId.rbId,
- "sfn %d subframe %d UEID:%d CELLID:%d",
- sfn,
- subframe,
- rbCb->rlcId.ueId,
- rbCb->rlcId.cellId);
+ DU_LOG("\nINFO --> RLC_DL : rlcTmmSendToMac: Releasing SDU of RNTI = %d for RNTI = %d \
+ UEID:%d CELLID:%d", sdu->mode.tm.rnti, staInd->rnti, rbCb->rlcId.ueId,
+ rbCb->rlcId.cellId);
+ DU_LOG("\nINFO --> RLC_DL : rlcTmmSendToMac: sfn %d slot %d UEID:%d CELLID:%d",
+ sfn, 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));
+ ODU_PUT_MSG_BUF(sdu->mBuf);
+ RLC_FREE(gCb, sdu, sizeof(RlcSdu));
}
else
{
{
timeDiff = curTime - sdu->arrTime;
}
- RLOG_ARG4(L_DEBUG, DBG_RBID,rbCb->rlcId.rbId,
- "TMM: TmSdu Sta Indication received for Rnti %d Sdu Rnti %d "
- " UEID:%d CELLID:%d",
- staInd->rnti,
- sdu->mode.tm.rnti,
- rbCb->rlcId.ueId,
- rbCb->rlcId.cellId);
- RLOG_ARG4(L_DEBUG, DBG_RBID,rbCb->rlcId.rbId,
- "TMM: TmSdu Sta Indication received : timeDiff %d SduQCnt %lu"
- " UEID:%d CELLID:%d",
- timeDiff,
- rbCb->m.tm.sduQ.count,
- rbCb->rlcId.ueId,
- rbCb->rlcId.cellId);
+ DU_LOG("\nDEBUG --> RLC_DL : rlcTmmSendToMac: TMM: TmSdu Sta Indication received \
+ for Rnti %d Sdu Rnti %d UEID:%d CELLID:%d", staInd->rnti,
+ sdu->mode.tm.rnti, rbCb->rlcId.ueId, rbCb->rlcId.cellId);
+ DU_LOG("\nDEBUG --> RLC_DL : rlcTmmSendToMac: TMM: TmSdu Sta Indication received : \
+ timeDiff %d SduQCnt %d UEID:%d CELLID:%d", timeDiff, rbCb->m.tm.sduQ.count,
+ rbCb->rlcId.ueId, rbCb->rlcId.cellId);
if (timeDiff > 40)
{
/* Memory leak needs to be fixed */
node = node->next;
- RLOG_ARG3(L_DEBUG, DBG_RBID,rbCb->rlcId.rbId,
- " timeDiff greater than 40, so deleting the Sdu %u "
- " UEID:%d CELLID:%d",
- sdu->mode.tm.rnti,
- rbCb->rlcId.ueId,
- rbCb->rlcId.cellId);
+ DU_LOG("\nERROR --> RLC_DL : rlcTmmSendToMac: timeDiff greater than 40, so deleting\
+ the Sdu %u UEID:%d CELLID:%d", sdu->mode.tm.rnti, rbCb->rlcId.ueId,
+ rbCb->rlcId.cellId);
cmLListDelFrm(&(rbCb->m.tm.sduQ), &sdu->lstEnt);
- KW_FREE_BUF(sdu->mBuf);
- KW_FREE(gCb, sdu, sizeof(KwSdu));
+ ODU_PUT_MSG_BUF(sdu->mBuf);
+ RLC_FREE(gCb, sdu, sizeof(RlcSdu));
continue;
}
{
/* Memory leak needs to be fixed */
node = node->next;
- RLOG_ARG4(L_DEBUG,DBG_RBID,rbCb->rlcId.rbId,
- "TMM: Searching for Rnti %d Skipping Sdu for Rnti %d"
- " UEID:%d CELLID:%d",
- staInd->rnti,
- sdu->mode.tm.rnti,
- rbCb->rlcId.ueId,
- rbCb->rlcId.cellId);
- RLOG_ARG4(L_DEBUG,DBG_RBID,rbCb->rlcId.rbId,
- " timeDiff %d sdu->arrTime %d"
- " UEID:%d CELLID:%d",
- timeDiff,
- sdu->arrTime,
- rbCb->rlcId.ueId,
- rbCb->rlcId.cellId);
- RLOG_ARG4(L_DEBUG,DBG_RBID,rbCb->rlcId.rbId,
- "curTime %d SduQCnt %lu and continuing"
- " UEID:%d CELLID:%d",
- curTime,
- rbCb->m.tm.sduQ.count,
- rbCb->rlcId.ueId,
- rbCb->rlcId.cellId);
+ DU_LOG("\nDEBUG --> RLC_DL : rlcTmmSendToMac: TMM: Searching for Rnti %d Skipping \
+ Sdu for Rnti %d UEID:%d CELLID:%d", staInd->rnti, sdu->mode.tm.rnti,
+ rbCb->rlcId.ueId, rbCb->rlcId.cellId);
+ DU_LOG("\nINFO --> RLC_DL : rlcTmmSendToMac: timeDiff %d sdu->arrTime %d UEID:%d CELLID:%d",
+ timeDiff, sdu->arrTime, rbCb->rlcId.ueId, rbCb->rlcId.cellId);
+ DU_LOG("\nINFO --> RLC_DL : rlcTmmSendToMac: curTime %d SduQCnt %d and continuing"
+ " UEID:%d CELLID:%d", curTime, rbCb->m.tm.sduQ.count, rbCb->rlcId.ueId,
+ rbCb->rlcId.cellId);
continue;
}
else
{
- RLOG_ARG3(L_DEBUG, DBG_RBID,rbCb->rlcId.rbId,
- "TMM: TmSdu found %u UEID:%d CELLID:%d",
- sdu->mode.tm.rnti,
- rbCb->rlcId.ueId,
- rbCb->rlcId.cellId);
+ DU_LOG("\nDEBUG --> RLC_DL : rlcTmmSendToMac: TMM: TmSdu found %u UEID:%d CELLID:%d",
+ sdu->mode.tm.rnti, rbCb->rlcId.ueId, rbCb->rlcId.cellId);
break;
}
}
}
if ( node == NULLP )
{
- RLOG_ARG2(L_ERROR,DBG_RBID,rbCb->rlcId.rbId,
- "SDU not found TM Queue is empty UEID:%d CELLID:%d",
- rbCb->rlcId.ueId,
- rbCb->rlcId.cellId);
- RETVOID;
+ DU_LOG("\nERROR --> RLC_DL : rlcTmmSendToMac: SDU not found TM Queue is empty UEID:%d CELLID:%d",
+ rbCb->rlcId.ueId, rbCb->rlcId.cellId);
+ return;
}
- sdu = (KwSdu *)node->node;
+ sdu = (RlcSdu *)node->node;
- KW_ALLOC_SHRABL_BUF(gCb->u.dlCb->rguDlSap[suId].pst.region,
- gCb->u.dlCb->rguDlSap[suId].pst.pool,
- dlData,(Size)sizeof(RlcMacData));
+ RLC_ALLOC_SHRABL_BUF(RLC_MEM_REGION_DL, RLC_POOL,
+ dlData,(Size)sizeof(RlcData));
#if (ERRCLASS & ERRCLS_ADD_RES)
if ( dlData == NULLP )
{
- RLOG_ARG2(L_FATAL,DBG_RBID,rbCb->rlcId.rbId,
- "Memory Allocation failed UEID:%d CELLID:%d",
- rbCb->rlcId.ueId,
- rbCb->rlcId.cellId);
- RETVOID;
+ DU_LOG("\nERROR --> RLC_DL : rlcTmmSendToMac: Memory Allocation failed UEID:%d CELLID:%d",
+ rbCb->rlcId.ueId, rbCb->rlcId.cellId);
+ return;
}
#endif /* ERRCLASS & ERRCLS_ADD_RES */
- dlData->timeToTx.sfn = sdu->mode.tm.sfn;
- dlData->timeToTx.subframe = sdu->mode.tm.subframe;
+ dlData->slotInfo.sfn = sdu->mode.tm.sfn;
+ dlData->slotInfo.slot = sdu->mode.tm.slot;
dlData->cellId = rbCb->rlcId.cellId;
dlData->rnti = sdu->mode.tm.rnti;
- dlData->nmbPdu = 1;
+ dlData->numPdu = 1;
dlData->pduInfo[0].commCh = TRUE;
dlData->pduInfo[0].lcId = rbCb->lch.lChId;
- dlData->pduInfo[0].pduBuf = sdu->mBuf;
+
+ /* Copy Message to fixed buffer to send */
+ ODU_GET_MSG_LEN(sdu->mBuf, (MsgLen *)&pduLen);
+ RLC_ALLOC_SHRABL_BUF(RLC_MEM_REGION_DL, RLC_POOL,
+ dlData->pduInfo[0].pduBuf, pduLen);
+ if (dlData->pduInfo[0].pduBuf == NULLP )
+ {
+ DU_LOG("\nERROR --> RLC_DL : Memory allocation failed");
+ return;
+ }
+ ODU_COPY_MSG_TO_FIX_BUF(sdu->mBuf, 0, pduLen, \
+ dlData->pduInfo[0].pduBuf, (MsgLen *)©Len);
+ dlData->pduInfo[0].pduLen = pduLen;
+
+ /* Free message */
+ ODU_PUT_MSG_BUF(sdu->mBuf);
/* kw005.201 ccpu00117318, updating the statistics */
gCb->genSts.bytesSent += sdu->sduSz;
gCb->genSts.pdusSent++;
- kwUtlIncrementKwuStsSduTx(gCb->u.dlCb->kwuDlSap + rbCb->kwuSapId);
+ rlcUtlIncrementKwuStsSduTx(gCb->u.dlCb->rlcKwuDlSap + rbCb->k1wuSapId);
/* remove SDU from queue */
sdu->mBuf = NULLP;
cmLListDelFrm(&(rbCb->m.tm.sduQ),
&sdu->lstEnt);
- KW_FREE(gCb,sdu, sizeof(KwSdu));
+ RLC_FREE(gCb,sdu, sizeof(RlcSdu));
- /* If trace flag is enabled send the trace indication */
- if(gCb->init.trc == TRUE)
+ /* Fill Pst structure. Copying rguSap->pst to pst to avoid any
+ * changes in rguSap->pst */
+ memset(&pst, 0, sizeof(Pst));
+ FILL_PST_RLC_TO_MAC(pst, RLC_DL_INST, EVENT_DL_DATA_TO_MAC);
+
+ if(RlcSendDlDataToMac(&pst, dlData) != ROK)
{
- /* Populate the trace params */
- kwLmmSendTrc(gCb,EVTRLCDLDAT, NULLP);
- }
-
- RlcMacSendDlData(&(gCb->u.dlCb->rguDlSap[suId].pst),
- gCb->u.dlCb->rguDlSap[suId].spId,
- dlData);
- RETVOID;
+ RLC_FREE_SHRABL_BUF(pst.region, pst.pool, dlData->pduInfo[0].pduBuf, \
+ dlData->pduInfo[0].pduLen);
+ RLC_FREE_SHRABL_BUF(pst.region, pst.pool, dlData, sizeof(RlcData));
+ }
+
+ return;
}
/**
* @return S16
* -# ROK
*/
-#ifdef ANSI
-PUBLIC Void kwDlTmmReEstablish
+Void rlcDlTmmReEstablish
(
-KwCb *gCb,
-KwDlRbCb *rbCb
+RlcCb *gCb,
+RlcDlRbCb *rbCb
)
-#else
-PUBLIC Void kwDlTmmReEstablish(gCb,rbCb)
-KwCb *gCb;
-KwDlRbCb *rbCb;
-#endif
{
- TRC2(kwDlTmmReEstablish)
-
#ifdef LTE_L2_MEAS_RLC
- kwUtlEmptySduQ(gCb, rbCb, &rbCb->m.tm.sduQ);
+ rlcUtlEmptySduQ(gCb, rbCb, &rbCb->m.tm.sduQ);
#else
- kwUtlEmptySduQ(gCb,&rbCb->m.tm.sduQ);
+ rlcUtlEmptySduQ(gCb,&rbCb->m.tm.sduQ);
#endif
- RETVOID;
+ return;
}
/**
*
* -# RFAILED
*/
-#ifdef ANSI
-PRIVATE Void kwTmmSndStaRsp
-(
-KwCb *gCb,
-KwDlRbCb *rbCb,
-MsgLen bo,
-KwuDatReqInfo *datReqInfo
-)
-#else
-PRIVATE Void kwTmmSndStaRsp(rbCb,bo,datReqInfo)
-KwCb *gCb;
-KwDlRbCb *rbCb;
-MsgLen bo;
-KwuDatReqInfo *datReqInfo;
-#endif
+static void rlcTmmSendBoSta(RlcCb *gCb, RlcDlRbCb *rbCb, MsgLen bo, KwuDatReqInfo *datReqInfo)
{
-// RguCStaRspInfo *staRspInfo; /* Status Response Information */
- RlcMacBOStatus *boStatus; /* Buffer occupancy status information */
- KwRguSapCb *rguSap; /* SAP Information */
-
- TRC3(kwTmmSndStaRsp)
-
-
- rguSap = &(gCb->u.dlCb->rguDlSap[rbCb->rguSapId]);
+ Pst pst; /* Post structure */
+ RlcBoStatus *boStatus; /* Buffer occupancy status information */
- KW_ALLOC_SHRABL_BUF(gCb->u.dlCb->rguDlSap[rbCb->rguSapId].pst.region,
- gCb->u.dlCb->rguDlSap[rbCb->rguSapId].pst.pool,
- boStatus, sizeof(RguCStaRspInfo));
-#if (ERRCLASS & ERRCLS_ADD_RES)
+ RLC_ALLOC_SHRABL_BUF(RLC_MEM_REGION_DL, RLC_POOL,
+ boStatus, sizeof(RlcBoStatus));
if ( boStatus == NULLP )
{
- RLOG_ARG2(L_FATAL,DBG_RBID,rbCb->rlcId.rbId,
- "Memory Allocation failed UEID:%d CELLID:%d",
- rbCb->rlcId.ueId,
- rbCb->rlcId.cellId);
- RETVOID;
+ DU_LOG("\nERROR --> RLC_DL : Memory Allocation failed UEID:%d CELLID:%d",\
+ rbCb->rlcId.ueId, rbCb->rlcId.cellId);
+ return;
}
-#endif /* ERRCLASS & ERRCLS_ADD_RES */
boStatus->cellId = rbCb->rlcId.cellId;
- boStatus->rnti = rbCb->rlcId.ueId;
+ boStatus->ueIdx = rbCb->rlcId.ueId;
boStatus->commCh = TRUE;
boStatus->lcId = rbCb->lch.lChId;
boStatus->bo = bo;
if(gCb->init.trc == TRUE)
{
/* Populate the trace params */
- kwLmmSendTrc(gCb, EVTRLCBOSTA, NULLP);
+ rlcLmmSendTrc(gCb, EVENT_BO_STATUS_TO_MAC, NULLP);
}
- RlcMacSendBOStatus(&rguSap->pst, rguSap->spId, boStatus);
+ /* Fill Pst structure. Copying rguSap->pst to pst to avoid any
+ * changes in rguSap->pst */
+ memset(&pst, 0, sizeof(Pst));
+ FILL_PST_RLC_TO_MAC(pst, RLC_DL_INST, EVENT_DL_DATA_TO_MAC);
+
+ if(RlcSendBoStatusToMac(&pst, boStatus) != ROK)
+ {
+ RLC_FREE_SHRABL_BUF(pst.region, pst.pool, boStatus, sizeof(RlcBoStatus));
+ }
- RETVOID;
+ return;
}
#ifdef _cplusplus