X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;ds=sidebyside;f=src%2F5gnrrlc%2Fkw_utl_dl.c;h=2d1938cb8071693e238f2a729ba07e5608ba5f2f;hb=5eb7213379dd0ffe146453e85d18871f07e58ce3;hp=e485439b60a96da66c62e87f06c2f26edee99375;hpb=def50dc175cebc67238db5f1acd5ff322a2279bd;p=o-du%2Fl2.git diff --git a/src/5gnrrlc/kw_utl_dl.c b/src/5gnrrlc/kw_utl_dl.c index e485439b6..2d1938cb8 100755 --- a/src/5gnrrlc/kw_utl_dl.c +++ b/src/5gnrrlc/kw_utl_dl.c @@ -73,19 +73,21 @@ static int RLOG_FILE_ID=209; #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) { @@ -230,14 +232,15 @@ uint8_t rlcSendDedLcDlData(Pst *post, SpId spId, RguDDatReqInfo *datReqInfo) 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"); @@ -245,7 +248,6 @@ uint8_t rlcSendDedLcDlData(Pst *post, SpId spId, RguDDatReqInfo *datReqInfo) datReqInfo, sizeof(RguDDatReqInfo)); return RFAILED; } -#endif /* ERRCLASS & ERRCLS_ADD_RES */ for(ueIdx = 0; ueIdx < datReqInfo->nmbOfUeGrantPerTti; ueIdx++) { @@ -304,6 +306,25 @@ uint8_t rlcSendDedLcDlData(Pst *post, SpId spId, RguDDatReqInfo *datReqInfo) }/* 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); @@ -315,6 +336,17 @@ uint8_t rlcSendDedLcDlData(Pst *post, SpId spId, RguDDatReqInfo *datReqInfo) 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 */ @@ -637,7 +669,6 @@ uint8_t rlcUtlSendDedLcBoStatus(RlcCb *gCb, RlcDlRbCb *rbCb, int32_t bo, \ */ /* kw005.201 added support for L2 Measurement */ #ifdef LTE_L2_MEAS_RLC -#ifdef ANSI Void rlcUtlEmptySduQ ( RlcCb *gCb, @@ -645,23 +676,11 @@ RlcDlRbCb *rbCb, 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 @@ -747,17 +766,7 @@ void rlcUtlCalcLiForSdu(RlcCb *gCb, uint16_t numLi, MsgLen msgLen, int16_t *pduS * * @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; @@ -806,15 +815,7 @@ bool rlcDlUtlIsReestInProgress(RlcDlRbCb *rbCb) * * @return Void */ -#ifdef ANSI -Void rlcDlUtlResetReestInProgress -( -RlcDlRbCb *rbCb -) -#else -Void rlcDlUtlResetReestInProgress(rbCb) -RlcDlRbCb *rbCb; -#endif +Void rlcDlUtlResetReestInProgress(RlcDlRbCb *rbCb) { rbCb->reestInProgress = FALSE; @@ -833,17 +834,7 @@ RlcDlRbCb *rbCb; * * @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; @@ -921,17 +912,7 @@ void rlcUtlIncrementGenStsBytesAndPdusSent(RlcGenSts *genSts, Buffer *pdu) * * @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)); @@ -949,15 +930,7 @@ RlcDlDataToBeFreed *toBeFreed; * * @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; @@ -1016,17 +989,7 @@ void rlcUtlAddSduToBeFreedQueue(RlcCb *gCb, RlcSdu *sdu) * * @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; @@ -1041,17 +1004,7 @@ RlcRetx *retx; * * @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)); @@ -1074,19 +1027,7 @@ RlcTx *pdu; * - 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 */ @@ -1177,15 +1118,7 @@ uint32_t *toBeFreed * * @return Void */ -#ifdef ANSI -Void rlcUtlFreeDlMemory -( -RlcCb *gCb -) -#else -Void rlcUtlFreeDlMemory(gCb) -RlcCb *gCb; -#endif +Void rlcUtlFreeDlMemory(RlcCb *gCb) { uint32_t toBeFreed; @@ -1346,7 +1279,6 @@ S16 rlcUtlL2MeasDlInit(RlcCb *gCb) * @return Void * */ -#ifdef ANSI Void rlcUtlUpdateBurstSdus ( RlcCb *gCb, @@ -1355,21 +1287,13 @@ RlcContSduLst *contSduLst, 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; @@ -1444,17 +1368,7 @@ uint32_t schPduSz; * * @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) { @@ -1482,23 +1396,14 @@ RlcContSduLst *contSduLst; * * @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) { @@ -1512,17 +1417,7 @@ Bool newIdx; } 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; @@ -1574,7 +1469,6 @@ RlcDlRbCb *rbCb; * -# ROK */ -#ifdef ANSI S16 rlcUtlProcHarqInd ( RlcCb *gCb, @@ -1582,13 +1476,6 @@ RguHarqStatusInd *hqStaInd, 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 */ @@ -1603,7 +1490,7 @@ uint8_t tbIdx; #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*/ @@ -1782,17 +1669,7 @@ uint8_t tbIdx; * -# 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; @@ -1939,19 +1816,7 @@ RlcL2MeasEvtCb *measEvtCb; * -# 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); @@ -1971,20 +1836,8 @@ RlcL2MeasCfmEvt *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; @@ -2047,7 +1900,7 @@ uint8_t measType; } /* rlcUtlResetDlL2MeasInRlcRb */ #endif -PRIVATE Void dumpRLCDlRbInformation(RlcDlRbCb* dlRbCb) +static Void dumpRLCDlRbInformation(RlcDlRbCb* dlRbCb) { if(dlRbCb->mode == CM_LTE_MODE_UM) { @@ -2134,15 +1987,7 @@ Void DumpRLCDlDebugInformation(Void) * @return Void */ -#ifdef ANSI -void rlcUtlFreeDlMem -( - Void -) -#else -void rlcUtlFreeDlMem() -Void; -#endif +void rlcUtlFreeDlMem( Void) { rlcUtlFreeDlMemory(RLC_GET_RLCCB(RLC_DL_INST)); } @@ -2166,15 +2011,7 @@ void rlcUtlGetCurrTime(uint32_t *currTime) #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}; @@ -2218,19 +2055,7 @@ Void; * @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; @@ -2323,19 +2148,7 @@ RlcTx* rlcUtlGetTxBuf(CmLListCp *txBufLst, RlcSn sn) * * @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; @@ -2363,19 +2176,7 @@ RlcCb *gCb; * * @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;