X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=src%2F5gnrrlc%2Fkw_lim.c;h=765e5e6e0269d100f308bdeada91e590b092571f;hb=4d45b914f9e94203603d3b9fdbcb1aad361301dd;hp=508a6f3463c59f117b586a9c1c3263b34cf21b2b;hpb=5831bf6b3454aa200a92cd3e84209650734e4863;p=o-du%2Fl2.git diff --git a/src/5gnrrlc/kw_lim.c b/src/5gnrrlc/kw_lim.c index 508a6f346..765e5e6e0 100755 --- a/src/5gnrrlc/kw_lim.c +++ b/src/5gnrrlc/kw_lim.c @@ -71,6 +71,7 @@ static int RLOG_FILE_ID=196; #include "kw_udx.x" #include "kw_dl.x" #include "kw_ul.x" +#include "rlc_utils.h" #ifdef __cplusplus EXTERN "C" { @@ -121,7 +122,7 @@ U8 status; #if (ERRCLASS & ERRCLS_INT_PAR) if (pst->dstInst >= MAX_RLC_INSTANCES) { - RETVALUE (RFAILED); + return (RFAILED); } #endif tRlcCb = RLC_GET_RLCCB(pst->dstInst); @@ -135,7 +136,7 @@ U8 status; KW_SEND_SAPID_ALARM(tRlcCb,suId,LKW_EVENT_LI_BND_CFM, LCM_CAUSE_INV_STATE); - RETVALUE(RFAILED); + return RFAILED; } if ((suId >= tRlcCb->genCfg.maxRguSaps) || (suId < 0)) @@ -144,7 +145,7 @@ U8 status; KW_SEND_SAPID_ALARM(tRlcCb,suId, LKW_EVENT_LI_BND_CFM, LCM_CAUSE_INV_SUID); - RETVALUE(RFAILED); + return RFAILED; } #endif /* ERRCLASS & ERRCLS_INT_PAR */ @@ -185,7 +186,7 @@ U8 status; /* Send an alarm with proper event and cause */ KW_SEND_SAPID_ALARM(tRlcCb, suId, event, cause); - RETVALUE(ROK); + return ROK; } /* KwLiRguBndCfm */ /** @@ -206,7 +207,7 @@ U8 status; * */ -PUBLIC S16 RlcMacProcUlData(Pst *pst, SuId suId, RlcMacData *ulData) +uint8_t RlcProcUlData(Pst *pst, RlcMacData *ulData) { U8 idx; U8 lcId; /* Logical Channel */ @@ -215,6 +216,7 @@ PUBLIC S16 RlcMacProcUlData(Pst *pst, SuId suId, RlcMacData *ulData) RguLchDatInd dLchData[RGU_MAX_LC]; /* PDU info on dedicated logical channel */ RguDDatIndInfo *dLchUlDat; /* UL data on dedicated logical channel */ RguCDatIndInfo *cLchUlDat; /* UL data on common logical channel */ + uint16_t copyLen; /* Initializing dedicated logical channel Database */ for(idx = 0; idx < RGU_MAX_LC; idx++) @@ -227,31 +229,40 @@ PUBLIC S16 RlcMacProcUlData(Pst *pst, SuId suId, RlcMacData *ulData) /* Seggregate PDUs received on common and dedicated channels * and call common channel's handler */ - for(idx = 0; idx< ulData->nmbPdu; idx++) + for(idx = 0; idx< ulData->numPdu; idx++) { if(ulData->pduInfo[idx].commCh) { - RLC_SHRABL_STATIC_BUF_ALLOC(pst->region, pst->pool, cLchUlDat, sizeof(RguCDatIndInfo)); - cmMemset((U8*)cLchUlDat, (U8)0, sizeof(RguCDatIndInfo)); - - cLchUlDat->cellId = ulData->cellId; - cLchUlDat->rnti = ulData->rnti; - cLchUlDat->lcId = ulData->pduInfo[idx].lcId; - cLchUlDat->pdu = ulData->pduInfo[idx].pduBuf; - - KwLiRguCDatInd(pst, suId, cLchUlDat); + RLC_SHRABL_STATIC_BUF_ALLOC(pst->region, pst->pool, cLchUlDat, sizeof(RguCDatIndInfo)); + cmMemset((U8*)cLchUlDat, (U8)0, sizeof(RguCDatIndInfo)); + + cLchUlDat->cellId = ulData->cellId; + GET_UE_IDX(ulData->rnti, cLchUlDat->rnti); + cLchUlDat->lcId = ulData->pduInfo[idx].lcId; + + /* Copy fixed buffer to message */ + if(SGetMsg(RLC_MEM_REGION_UL, RLC_POOL, &cLchUlDat->pdu) != ROK) + { + DU_LOG("\nRLC : Memory allocation failed at RlcProcUlData"); + return RFAILED; + } + reverseFixBuf(ulData->pduInfo[idx].pduBuf, ulData->pduInfo[idx].pduLen); + SCpyFixMsg(ulData->pduInfo[idx].pduBuf, cLchUlDat->pdu, 0, \ + ulData->pduInfo[idx].pduLen, (MsgLen *)©Len); + + KwLiRguCDatInd(pst, 0, cLchUlDat); } else { - if(!dLchPduPres) - { - RLC_SHRABL_STATIC_BUF_ALLOC(pst->region, pst->pool, dLchUlDat, sizeof(RguDDatIndInfo)); - dLchPduPres = TRUE; - } - - lcId = ulData->pduInfo[idx].lcId; - dLchData[lcId].pdu.mBuf[dLchData[lcId].pdu.numPdu] = ulData->pduInfo[idx].pduBuf; - dLchData[lcId].pdu.numPdu++; + if(!dLchPduPres) + { + RLC_SHRABL_STATIC_BUF_ALLOC(pst->region, pst->pool, dLchUlDat, sizeof(RguDDatIndInfo)); + dLchPduPres = TRUE; + } + + lcId = ulData->pduInfo[idx].lcId; + dLchData[lcId].pdu.mBuf[dLchData[lcId].pdu.numPdu] = ulData->pduInfo[idx].pduBuf; + dLchData[lcId].pdu.numPdu++; } } @@ -264,21 +275,21 @@ PUBLIC S16 RlcMacProcUlData(Pst *pst, SuId suId, RlcMacData *ulData) for(idx = 0; idx < RGU_MAX_LC; idx++) { - if(dLchData[idx].pdu.numPdu) - { - cmMemcpy((U8 *)&dLchUlDat->lchData[numDLch], (U8 *)&dLchData[idx], sizeof(RguLchDatInd)); - numDLch++; - } + if(dLchData[idx].pdu.numPdu) + { + cmMemcpy((U8 *)&dLchUlDat->lchData[numDLch], (U8 *)&dLchData[idx], sizeof(RguLchDatInd)); + numDLch++; + } } dLchUlDat->numLch = numDLch; - KwLiRguDDatInd(pst, suId, dLchUlDat); + KwLiRguDDatInd(pst, 0, dLchUlDat); } RLC_FREE_SHRABL_BUF(pst->region, pst->pool, ulData, sizeof(RlcMacData)); - RETVALUE(ROK); + return ROK; -}/* End of RlcMacProcUlData */ +}/* End of RlcProcUlData */ PUBLIC int rlcDDatIndRcvd; PUBLIC int rlcCDatIndRcvd; @@ -322,7 +333,7 @@ RguCDatIndInfo *datInd; if (pst->dstInst >= MAX_RLC_INSTANCES) { RLC_SHRABL_STATIC_BUF_FREE(pst->region, pst->pool, datInd, sizeof(RguCDatIndInfo)); - RETVALUE (RFAILED); + return (RFAILED); } #endif @@ -333,7 +344,7 @@ RguCDatIndInfo *datInd; if (tRlcCb->genCfg.rlcMode == LKW_RLC_MODE_DL) { RLC_SHRABL_STATIC_BUF_FREE(pst->region, pst->pool, datInd, sizeof(RguCDatIndInfo)); - RETVALUE(RFAILED); + return RFAILED; } #endif @@ -344,18 +355,18 @@ RguCDatIndInfo *datInd; RLOG_ARG1(L_ERROR,DBG_LCID,datInd->lcId, "Invalid LcId, Max is [%d]", KW_MAX_LCH_PER_CELL); RLC_SHRABL_STATIC_BUF_FREE(pst->region, pst->pool, datInd, sizeof(RguCDatIndInfo)); - RETVALUE(RFAILED); + return RFAILED; } #endif /* (ERRCLASS & ERRCLS_DEBUG) */ /* Fetch RbCb from lcId */ - kwDbmFetchUlRbCbFromLchId(tRlcCb, 0, datInd->cellId, datInd->lcId, &rbCb); + kwDbmFetchUlRbCbFromLchId(tRlcCb, datInd->rnti, datInd->cellId, datInd->lcId, &rbCb); if (!rbCb) { RLOG_ARG1(L_ERROR, DBG_CELLID,datInd->cellId, "LcId [%d] not found", datInd->lcId); RLC_SHRABL_STATIC_BUF_FREE(pst->region, pst->pool, datInd, sizeof(RguCDatIndInfo)); - RETVALUE(RFAILED); + return RFAILED; } /* Dispatch to TM Module */ @@ -367,7 +378,7 @@ RguCDatIndInfo *datInd; RLC_SHRABL_STATIC_BUF_FREE(pst->region, pst->pool, datInd, sizeof(RguCDatIndInfo)); - RETVALUE(ROK); + return ROK; } /* KwLiRguCDatInd */ /** @@ -409,7 +420,7 @@ RguDDatIndInfo *datInd; if (pst->dstInst >= MAX_RLC_INSTANCES) { RLC_SHRABL_STATIC_BUF_FREE(pst->region, pst->pool, datInd, sizeof(RguDDatIndInfo)); - RETVALUE (RFAILED); + return (RFAILED); } #endif @@ -418,7 +429,7 @@ RguDDatIndInfo *datInd; { RLOG1(L_DEBUG,"KwLiRguDDatInd(pst, suId(%d))recieved in DL Inst",suId); RLC_SHRABL_STATIC_BUF_FREE(pst->region, pst->pool, datInd, sizeof(RguDDatIndInfo)); - RETVALUE(RFAILED); + return RFAILED; } #endif kwUtlRcvFrmLi(RLC_GET_RLCCB(pst->dstInst),datInd); @@ -430,7 +441,7 @@ RguDDatIndInfo *datInd; #endif #endif - RETVALUE(ROK); + return ROK; } /* KwLiRguDDatInd */ @@ -511,7 +522,7 @@ PUBLIC uint16_t RlcMacProcSchedRep(Pst *pst, SuId suId, RlcMacSchedRepInfo *schR RLC_SHRABL_STATIC_BUF_FREE(pst->region, pst->pool, schRep, sizeof(RlcMacSchedRepInfo)); - RETVALUE(ROK); + return ROK; } /** @@ -555,7 +566,7 @@ RguCStaIndInfo *staInd; if (pst->dstInst >= MAX_RLC_INSTANCES) { RLC_SHRABL_STATIC_BUF_FREE(pst->region, pst->pool, staInd, sizeof(RguCStaIndInfo)); - RETVALUE (RFAILED); + return (RFAILED); } #endif @@ -570,7 +581,7 @@ RguCStaIndInfo *staInd; EKW040, (ErrVal) suId, "KwLiRguCStaInd: Invalid RGU suId\n"); - RETVALUE(RFAILED); + return RFAILED; } if (tRlcCb->genCfg.rlcMode == LKW_RLC_MODE_UL) { @@ -578,7 +589,7 @@ RguCStaIndInfo *staInd; "Received in RLC UL CELLID:%d", staInd->cellId); RLC_SHRABL_STATIC_BUF_FREE(pst->region, pst->pool, staInd, sizeof(RguCStaIndInfo)); - RETVALUE(RFAILED); + return RFAILED; } #endif @@ -593,7 +604,7 @@ RguCStaIndInfo *staInd; KW_MAX_LCH_PER_CELL, staInd->cellId); RLC_SHRABL_STATIC_BUF_FREE(pst->region, pst->pool, staInd, sizeof(RguCStaIndInfo)); - RETVALUE(RFAILED); + return RFAILED; } #endif /* (ERRCLASS & ERRCLS_DEBUG) */ /* Fertch RbCb from lcId */ @@ -604,7 +615,7 @@ RguCStaIndInfo *staInd; "LcId [%d] not found CELLID:%d", staInd->lcId); RLC_SHRABL_STATIC_BUF_FREE(pst->region, pst->pool, staInd, sizeof(RguCStaIndInfo)); - RETVALUE(RFAILED); + return RFAILED; } /* Dispatch to TM Module */ @@ -626,7 +637,7 @@ RguCStaIndInfo *staInd; #else RLC_SHRABL_STATIC_BUF_FREE(pst->region, pst->pool, staInd, sizeof(RguCStaIndInfo)); #endif - RETVALUE(ROK); + return ROK; } /* KwLiRguCStaInd */ /** @@ -669,7 +680,7 @@ RguDStaIndInfo *staInd; if (pst->dstInst >= MAX_RLC_INSTANCES) { RLC_SHRABL_STATIC_BUF_FREE(pst->region, pst->pool, staInd, sizeof(RguDStaIndInfo)); - RETVALUE (RFAILED); + return (RFAILED); } #endif @@ -680,7 +691,7 @@ RguDStaIndInfo *staInd; { RLOG_ARG0(L_ERROR,DBG_CELLID,staInd->cellId,"Received in RLC UL "); RLC_SHRABL_STATIC_BUF_FREE(pst->region, pst->pool, staInd, sizeof(RguDStaIndInfo)); - RETVALUE(RFAILED); + return RFAILED; } if ((suId >= gCb->genCfg.maxRguSaps) || (suId < 0)) { @@ -689,14 +700,14 @@ RguDStaIndInfo *staInd; EKW040, (ErrVal) suId, "KwLiRguDStaInd: Invalid RGU suId\n"); - RETVALUE(RFAILED); + return RFAILED; } #endif kwUtlSndToLi(gCb, suId, staInd); /* kw002.201 :Freeing from proper region */ RLC_SHRABL_STATIC_BUF_FREE(pst->region, pst->pool, staInd, sizeof(RguDStaIndInfo)); - RETVALUE(ROK); + return ROK; } /* KwLiRguDStaInd */ /** @@ -772,7 +783,7 @@ RguFlowCntrlInd *flowCntrlInd; } } } - RETVALUE(ROK); + return ROK; } /* kw005.201 added support for L2 Measurement */ #ifdef LTE_L2_MEAS @@ -829,7 +840,7 @@ RguHarqStatusInd *staInd; ret = kwDbmFetchDlUeCb(tRlcCb, ueKey.ueId, ueKey.cellId, &ueCb); if (ret != ROK ) { - RETVALUE(RFAILED); + return RFAILED; } /*Call kwUtlProcHarqInd as many times as number of Tbs present*/ @@ -838,7 +849,7 @@ RguHarqStatusInd *staInd; kwUtlProcHarqInd(tRlcCb, staInd, ueCb, tbIdx); } - RETVALUE(ROK); + return ROK; } /* KwLiRguHqStaInd */ #endif /* LTE_L2_MEAS */