#include "rlc_utils.h"
#include "rlc_mac_inf.h"
+#include "du_app_rlc_inf.h"
#include "rlc_lwr_inf_api.h"
+#include "rlc_upr_inf_api.h"
#include "ss_rbuf.h"
#include "ss_rbuf.x"
-EXTERN SsRngBufCnt rngCb;
+SsRngBufCnt rngCb;
#if (defined(MAC_RLC_HARQ_STA_RBUF) && defined(LTE_L2_MEAS))
-extern uint32_t isDatReqProcessed;
+uint32_t isDatReqProcessed;
#endif
#define RLC_MODULE (RLC_DBGMASK_DUT | RLC_DBGMASK_DL) /* for debugging purpose */
#if (defined(MAC_RLC_HARQ_STA_RBUF) && defined(LTE_L2_MEAS)) || defined (SS_RBUF)
-EXTERN void rlcUtlDlBatchProcHqStaInd ARGS ((Void));
+void rlcUtlDlBatchProcHqStaInd ARGS ((Void));
#endif
Void ResetRLCStats(Void)
{
RguDatReqTb datPerTb; /* DL data info per TB */
RguLchDatReq datPerLch; /* DL data info per Lch */
RlcData *dlData; /* DL data to be sent to MAC */
+ RlcDlRrcMsgRsp *dlRrcMsgRsp;/* DL Data Msg Rsp sent to DU */
Pst pst; /* Post structure */
uint16_t pduLen; /* PDU length */
uint16_t copyLen; /* Number of bytes copied */
dlData = NULLP;
+ dlRrcMsgRsp = NULLP;
RLC_ALLOC_SHRABL_BUF(RLC_MEM_REGION_DL, RLC_POOL,
dlData, sizeof(RlcData));
-#if (ERRCLASS & ERRCLS_ADD_RES)
if ( dlData == NULLP )
{
DU_LOG("\nRLC: rlcSendDedLcDlData: Memory allocation failed for dl data");
datReqInfo, sizeof(RguDDatReqInfo));
return RFAILED;
}
-#endif /* ERRCLASS & ERRCLS_ADD_RES */
for(ueIdx = 0; ueIdx < datReqInfo->nmbOfUeGrantPerTti; ueIdx++)
{
}/* For Data per Lch */
}/* For Data per Tb */
+ RLC_ALLOC_SHRABL_BUF(RLC_MEM_REGION_DL, RLC_POOL,
+ dlRrcMsgRsp, sizeof(RlcDlRrcMsgRsp));
+ if( dlRrcMsgRsp == NULLP )
+ {
+ DU_LOG("\nRLC: rlcSendDedLcDlData: Memory allocation failed for dlRrcMsgRsp");
+ for(pduIdx = 0; pduIdx < dlData->numPdu; pduIdx++)
+ {
+ RLC_FREE_SHRABL_BUF(pst.region, pst.pool, dlData->pduInfo[pduIdx].pduBuf,\
+ dlData->pduInfo[pduIdx].pduLen);
+ }
+ RLC_FREE_SHRABL_BUF(pst.region, pst.pool, dlData, sizeof(RlcData));
+ RLC_FREE_SHRABL_BUF(RLC_MEM_REGION_DL, RLC_POOL,
+ datReqInfo, sizeof(RguDDatReqInfo));
+ return RFAILED;
+ }
+
+ dlRrcMsgRsp->cellId = dlData->cellId;
+ dlRrcMsgRsp->crnti = dlData->rnti;
+
/* Sending DL Data per UE to MAC */
memset(&pst, 0, sizeof(Pst));
FILL_PST_RLC_TO_MAC(pst, RLC_DL_INST, EVENT_DL_DATA_TO_MAC);
dlData->pduInfo[pduIdx].pduLen);
}
RLC_FREE_SHRABL_BUF(pst.region, pst.pool, dlData, sizeof(RlcData));
+ /* Update DL RRC MSG Rsp State */
+ dlRrcMsgRsp->state = TRANSMISSION_FAILED;
+ }
+ else
+ dlRrcMsgRsp->state = TRANSMISSION_COMPLETE;
+
+ /* Send Dl RRC Msg Rsp to DU APP */
+ FILL_PST_RLC_TO_DUAPP(pst, RLC_DL_INST, EVENT_DL_RRC_MSG_RSP_TO_DU);
+ if(rlcSendDlRrcMsgRspToDu(&pst, dlRrcMsgRsp) != ROK)
+ {
+ RLC_FREE_SHRABL_BUF(pst.region, pst.pool, dlRrcMsgRsp, sizeof(RlcDlRrcMsgRsp));
}
} /* For Data per UE */
*/
/* kw005.201 added support for L2 Measurement */
#ifdef LTE_L2_MEAS_RLC
-#ifdef ANSI
Void rlcUtlEmptySduQ
(
RlcCb *gCb,
CmLListCp *sduQ
)
#else
-Void rlcUtlEmptySduQ(gCb,rbCb, sduQ)
-RlcCb *gCb;
-RlcDlRbCb *rbCb;
-CmLListCp *sduQ;
-#endif
-#else
-#ifdef ANSI
Void rlcUtlEmptySduQ
(
RlcCb *gCb,
CmLListCp *sduQ
)
-#else
-Void rlcUtlEmptySduQ(gCb,sduQ)
-RlcCb *gCb;
-CmLListCp *sduQ;
-#endif
#endif
{
#ifdef LTE_L2_MEAS_RLC
*
* @return void
*/
-#ifdef ANSI
-Void rlcDlUtlSetReestInProgressForRB
-(
-RlcCb *gCb,
-RlcDlRbCb *rbCb
-)
-#else
-Void rlcDlUtlSetReestInProgressForRB(gCb,rbCb)
-RlcCb *gCb;
-RlcDlRbCb *rbCb;
-#endif
+Void rlcDlUtlSetReestInProgressForRB(RlcCb *gCb,RlcDlRbCb *rbCb)
{
rbCb->reestInProgress = TRUE;
*
* @return Void
*/
-#ifdef ANSI
-Void rlcDlUtlResetReestInProgress
-(
-RlcDlRbCb *rbCb
-)
-#else
-Void rlcDlUtlResetReestInProgress(rbCb)
-RlcDlRbCb *rbCb;
-#endif
+Void rlcDlUtlResetReestInProgress(RlcDlRbCb *rbCb)
{
rbCb->reestInProgress = FALSE;
*
* @return void
*/
-#ifdef ANSI
-Void rlcDlUtlSetReestInProgressForAllRBs
-(
-RlcCb *gCb,
-RlcDlUeCb *ueCb
-)
-#else
-Void rlcDlUtlSetReestInProgressForAllRBs(gCb,ueCb)
-RlcCb *gCb;
-RlcDlUeCb *ueCb;
-#endif
+Void rlcDlUtlSetReestInProgressForAllRBs(RlcCb *gCb,RlcDlUeCb *ueCb)
{
uint32_t rbIdx;
*
* @return Void
*/
-#ifdef ANSI
-Void rlcUtlInitToBeFreed
-(
-RlcCb *gCb,
-RlcDlDataToBeFreed *toBeFreed
-)
-#else
-Void rlcUtlInitToBeFreed(gCb, toBeFreed)
-RlcCb *gCb;
-RlcDlDataToBeFreed *toBeFreed;
-#endif
+Void rlcUtlInitToBeFreed(RlcCb *gCb,RlcDlDataToBeFreed *toBeFreed)
{
cmLListInit(&(toBeFreed->sduLst));
cmLListInit(&(toBeFreed->rbLst));
*
* @return Void
*/
-#ifdef ANSI
-Void rlcUtlInitializeSelfPst
-(
-RlcCb *gCb
-)
-#else
-Void rlcUtlInitializeSelfPst(gCb)
-RlcCb *gCb;
-#endif
+Void rlcUtlInitializeSelfPst(RlcCb *gCb)
{
Pst *selfPst = &gCb->u.dlCb->selfPst;
*
* @return Void
*/
-#ifdef ANSI
-Void rlcUtlAddReTxPduToBeFreedQueue
-(
-RlcCb *gCb,
-RlcRetx *retx
-)
-#else
-Void rlcUtlAddReTxPduToBeFreedQueue(gCb, retx)
-RlcCb *gCb;
-RlcRetx *retx;
-#endif
+Void rlcUtlAddReTxPduToBeFreedQueue(RlcCb *gCb,RlcRetx *retx)
{
cmLListAdd2Tail(&(gCb->u.dlCb->toBeFreed.reTxLst), &(retx->lstEnt));
return;
*
* @return Void
*/
-#ifdef ANSI
-Void rlcUtlAddTxPduToBeFreedQueue
-(
-RlcCb *gCb,
-RlcTx *pdu
-)
-#else
-Void rlcUtlAddTxPduToBeFreedQueue(gCb, pdu)
-RlcCb *gCb;
-RlcTx *pdu;
-#endif
+Void rlcUtlAddTxPduToBeFreedQueue(RlcCb *gCb,RlcTx *pdu)
{
pdu->rlsLnk.node = (PTR)pdu;
cmLListAdd2Tail(&(gCb->u.dlCb->toBeFreed.txLst), &(pdu->rlsLnk));
* - TRUE if more data to be freed
* - FALSE if all the data has been freed
*/
-#ifdef ANSI
-PRIVATE Bool rlcUtlFreeDlAmRbMemory
-(
-RlcCb *gCb,
-RlcDlRbCb *rbCb,
-uint32_t *toBeFreed
-)
-#else
-PRIVATE Bool rlcUtlFreeDlAmRbMemory(gCb, rbCb, toBeFreed)
-RlcCb *gCb;
-RlcDlRbCb *rbCb;
-uint32_t *toBeFreed
-#endif
+static Bool rlcUtlFreeDlAmRbMemory(RlcCb *gCb,RlcDlRbCb *rbCb,uint32_t *toBeFreed)
{
RlcRetx *retx; /* retransmission buffer */
RlcSn mTxNext; /* send state variable */
*
* @return Void
*/
-#ifdef ANSI
-Void rlcUtlFreeDlMemory
-(
-RlcCb *gCb
-)
-#else
-Void rlcUtlFreeDlMemory(gCb)
-RlcCb *gCb;
-#endif
+Void rlcUtlFreeDlMemory(RlcCb *gCb)
{
uint32_t toBeFreed;
* @return Void
*
*/
-#ifdef ANSI
Void rlcUtlUpdateBurstSdus
(
RlcCb *gCb,
S32 dataVol,
uint32_t schPduSz
)
-#else
-Void rlcUtlUpdateBurstSdus (gCb, rbCb, contSduLst, dataVol, schPduSz)
-RlcCb *gCb;
-RlcDlRbCb *rbCb;
-RlcContSduLst *contSduLst;
-S32 dataVol;
-uint32_t schPduSz;
-#endif
{
RlcL2MeasDlIpTh *l2MeasDlIpThruput = NULLP;
RlcL2MeasTb *l2MeasTb = NULLP;
uint8_t idx;
uint8_t currTbIdx;
- VOLATILE uint32_t startTime = 0;
+ volatile uint32_t startTime = 0;
RlcContSduLst *dstContSduLst;
*
* @return Void
*/
-#ifdef ANSI
-Void rlcUtlUpdateContainedSduLst
-(
-uint8_t sduIdx,
-RlcContSduLst *contSduLst
-)
-#else
-Void rlcUtlUpdateContainedSduLst(sduIdx, contSduLst)
-uint8_t sduIdx;
-RlcContSduLst *contSduLst;
-#endif
+Void rlcUtlUpdateContainedSduLst(uint8_t sduIdx,RlcContSduLst *contSduLst)
{
if (contSduLst->numSdus < RLC_L2MEAS_MAX_OUTSTNGSDU)
{
*
* @return Void
*/
-#ifdef ANSI
Void rlcUtlUpdateOutStandingSduLst
(
RlcL2MeasDlIpTh *dlIpThPut,
-uint8_t sduIdx,
-MsgLen sduLen,
-uint32_t sduId,
-Bool newIdx
+uint8_t sduIdx,
+MsgLen sduLen,
+uint32_t sduId,
+Bool newIdx
)
-#else
-Void rlcUtlUpdateOutStandingSduLst(dlIpThPut, sduIdx, sduLen, sduId, newIdx)
-RlcL2MeasDlIpTh *dlIpThPut;
-uint8_t sduIdx;
-MsgLen sduLen;
-uint32_t sduId;
-Bool newIdx;
-#endif
{
if (sduIdx < RLC_L2MEAS_MAX_OUTSTNGSDU)
{
}
return;
}
-#ifdef ANSI
-RlcL2MeasTb * rlcUtlGetCurMeasTb
-(
-RlcCb *gCb,
-RlcDlRbCb *rbCb
-)
-#else
-RlcL2MeasTb * rlcUtlGetCurMeasTb(gCb, rbCb)
-RlcCb *gCb;
-RlcDlRbCb *rbCb;
-#endif
+RlcL2MeasTb * rlcUtlGetCurMeasTb(RlcCb *gCb,RlcDlRbCb *rbCb)
{
RlcL2MeasTb *curL2MeasTb;
uint16_t idx;
* -# ROK
*/
-#ifdef ANSI
S16 rlcUtlProcHarqInd
(
RlcCb *gCb,
RlcDlUeCb *ueCb,
uint8_t tbIdx
)
-#else
-S16 rlcUtlProcHarqInd(gCb, hqStaInd, ueCb, tbIdx)
-RlcCb *gCb;
-RguHarqStatusInd *hqStaInd;
-RlcDlUeCb *ueCb;
-uint8_t tbIdx;
-#endif
{
#ifdef LTE_L2_MEAS
RlcDlRbCb *rlcRbCb; /* KW Control Block */
#endif
uint8_t timeAddedFlag;
S16 ret;
- VOLATILE uint32_t startTime = 0;
+ volatile uint32_t startTime = 0;
/*kw005.201 Code added for DL IP thruput measurement*/
/*starting Task*/
* -# ROK
*/
-#ifdef ANSI
-S16 rlcUtlSndDlL2MeasCfm
-(
-RlcCb *gCb,
-RlcL2MeasEvtCb *measEvtCb
-)
-#else
-S16 rlcUtlSndDlL2MeasCfm(gCb, measEvtCb)
-RlcCb *gCb;
-RlcL2MeasEvtCb *measEvtCb;
-#endif
+S16 rlcUtlSndDlL2MeasCfm(RlcCb *gCb,RlcL2MeasEvtCb *measEvtCb)
{
uint32_t qciIdx;
RlcL2MeasCb *measCb = NULLP;
* -# ROK
*/
-#ifdef ANSI
-S16 rlcUtlSndDlL2MeasNCfm
-(
-RlcCb *gCb,
-RlcL2MeasReqEvt *measReqEvt,
-RlcL2MeasCfmEvt *measCfmEvt
-)
-#else
-S16 rlcUtlSndDlL2MeasNCfm(gCb,measReqEvt, measCfmEvt)
-RlcCb *gCb;
-RlcL2MeasReqEvt *measReqEvt;
-RlcL2MeasCfmEvt *measCfmEvt;
-#endif
+S16 rlcUtlSndDlL2MeasNCfm(RlcCb *gCb,RlcL2MeasReqEvt *measReqEvt,RlcL2MeasCfmEvt *measCfmEvt)
{
RlcMiLkwL2MeasCfm(&gCb->genCfg.lmPst, measCfmEvt);
*
* @return Void
*/
-#ifdef ANSI
-Void rlcUtlResetDlL2MeasInRlcRb
-(
-RlcCb *gCb,
-RlcL2MeasCb *measCb,
-uint8_t measType
-)
-#else
-Void rlcUtlResetDlL2MeasInRlcRb(gCb, measCb, measType)
-RlcCb *gCb;
-RlcL2MeasCb *measCb;
-uint8_t measType;
-#endif
+Void rlcUtlResetDlL2MeasInRlcRb(RlcCb *gCb,RlcL2MeasCb *measCb,uint8_t measType)
{
uint32_t ueIdx;
uint32_t qciIdx;
} /* rlcUtlResetDlL2MeasInRlcRb */
#endif
-PRIVATE Void dumpRLCDlRbInformation(RlcDlRbCb* dlRbCb)
+static Void dumpRLCDlRbInformation(RlcDlRbCb* dlRbCb)
{
if(dlRbCb->mode == CM_LTE_MODE_UM)
{
* @return Void
*/
-#ifdef ANSI
-void rlcUtlFreeDlMem
-(
- Void
-)
-#else
-void rlcUtlFreeDlMem()
-Void;
-#endif
+void rlcUtlFreeDlMem( Void)
{
rlcUtlFreeDlMemory(RLC_GET_RLCCB(RLC_DL_INST));
}
#if defined(MAC_RLC_HARQ_STA_RBUF) || defined (SS_RBUF)
#ifdef LTE_L2_MEAS
-#ifdef ANSI
-void rlcUtlDlBatchProcHqStaInd
-(
- Void
-)
-#else
-void rlcUtlDlBatchProcHqStaInd()
-Void;
-#endif
+void rlcUtlDlBatchProcHqStaInd( Void)
{
/* Read from Ring Buffer and process PDCP packets */
//Pst pst = {0};
* @return Void
*
*/
-#ifdef ANSI
-Void rlcUtlTrigPdbFlowCntrl
-(
-RlcCb *gCb,
-RlcDlRbCb *rbCb,
-uint32_t pktAdmitCnt
-)
-#else
-Void rlcUtlTrigPdbFlowCntrl(gCb,rbCb,pktAdmitCnt)
-RlcCb *gCb;
-RlcDlRbCb *rbCb;
-uint32_t pktAdmitCnt;
-#endif
+Void rlcUtlTrigPdbFlowCntrl(RlcCb *gCb,RlcDlRbCb *rbCb,uint32_t pktAdmitCnt)
{
KwuFlowCntrlIndInfo *flowCntrlInfo;
RlcKwuSapCb* rlckwuSap;
*
* @return Void
*/
-#ifdef ANSI
-Void rlcUtlDelTxBuf
-(
-CmLListCp *txBufLst,
-RlcTx *txBuf,
-RlcCb *gCb
-)
-#else
-Void rlcUtlDelTxBuf(txBufLst, txBuf, gCb)
-CmLListCp *txBufLst;
-RlcTx *txBuf;
-RlcCb *gCb;
-#endif
+Void rlcUtlDelTxBuf (CmLListCp *txBufLst,RlcTx *txBuf,RlcCb *gCb)
{
uint32_t hashKey;
CmLListCp *txBufLstCp;
*
* @return Void
*/
-#ifdef ANSI
-Void rlcUtlRemovTxBuf
-(
-CmLListCp *txBufLst,
-RlcTx *txBuf,
-RlcCb *gCb
-)
-#else
-Void rlcUtlRemovTxBuf(txBufLst, txBuf, gCb)
-CmLListCp *txBufLst;
-RlcTx *txBuf;
-RlcCb *gCb;
-#endif
+Void rlcUtlRemovTxBuf(CmLListCp *txBufLst,RlcTx *txBuf,RlcCb *gCb)
{
uint32_t hashKey;
CmLListCp *txBufLstCp;