X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=src%2F5gnrrlc%2Frlc_utl_dl.c;h=870ff96c6c53ba14ab65c3327485786b0bbc77d4;hb=959944c4b572d2027bceb7bb474a8fc40f85ec1c;hp=6e681dfaa9b08af1adfccf3c406eff7c65d30d57;hpb=53d1aa768db96eca4c320f5e46da800c08c82006;p=o-du%2Fl2.git diff --git a/src/5gnrrlc/rlc_utl_dl.c b/src/5gnrrlc/rlc_utl_dl.c index 6e681dfaa..870ff96c6 100755 --- a/src/5gnrrlc/rlc_utl_dl.c +++ b/src/5gnrrlc/rlc_utl_dl.c @@ -97,24 +97,24 @@ Void PrintRLCStats(Void) RlcCb* dlInst = rlcCb[1]; RlcCb* ulInst = rlcCb[0]; - DU_LOG("\nINFO --> RLC_DL : RLC Stats: PDUs Sent = (%ld), PdusRext = (%ld), TimeOut = (%ld), SduDiscarded = (%ld)", + DU_LOG("\nINFO --> RLC_DL : RLC Stats: PDUs Sent = (%ld), PdusRext = (%ld), TimeOut = (%ld), SduDiscarded = (%ld)", dlInst->genSts.pdusSent, dlInst->genSts.pdusRetx, dlInst->genSts.protTimeOut, dlInst->genSts.numSduDisc); - DU_LOG("\nINFO --> RLC_DL : RLC Stats: PDUs Rcvd = (%ld), unexpPdus = (%ld), errorPdus = (%ld)", + DU_LOG("\nINFO --> RLC_DL : RLC Stats: PDUs Rcvd = (%ld), unexpPdus = (%ld), errorPdus = (%ld)", ulInst->genSts.pdusRecv, ulInst->genSts.unexpPdusRecv, ulInst->genSts.errorPdusRecv); - DU_LOG("\nINFO --> RLC_DL : RLC Stats: AMDL: " + DU_LOG("\nINFO --> RLC_DL : RLC Stats: AMDL: " "StaPduSent:%lu NacksInStaPdu:%lu BytesUnused:%lu PollTimerExpires SRB:%lu ", gRlcStats.amRlcStats.numDLStaPduSent, gRlcStats.amRlcStats.numDLNacksInStaPdu, gRlcStats.amRlcStats.numDLBytesUnused, gRlcStats.amRlcStats.numDLPollTimerExpiresSrb); - DU_LOG("\nINFO --> RLC_DL : RLC Stats: AMDL: " + DU_LOG("\nINFO --> RLC_DL : RLC Stats: AMDL: " "DRB:%lu MaxRetx:%lu RetransPdus:%lu", gRlcStats.amRlcStats.numDLPollTimerExpiresDrb, gRlcStats.amRlcStats.numDLMaxRetx, gRlcStats.amRlcStats.numDLRetransPdus); - DU_LOG("\nINFO --> RLC_DL : RLC Stats: AMUL: " + DU_LOG("\nINFO --> RLC_DL : RLC Stats: AMUL: " " PdusDiscarded:%lu ReAsmblTimerExpires:%lu StaPduRcvd:%lu NackInStaPduRcvd:%lu ", gRlcStats.amRlcStats.numULPdusDiscarded, gRlcStats.amRlcStats.numULReAsmblTimerExpires, gRlcStats.amRlcStats.numULStaPduRcvd, gRlcStats.amRlcStats.numULNackInStaPduRcvd); @@ -143,24 +143,24 @@ Void PrintRLCStats(Void) RlcCb* ulInst = rlcCb[0]; DU_LOG ("\n ================================ RLC STATS ===========================\n"); - DU_LOG("\nINFO --> RLC_DL : RLC Stats: PDUs Sent = (%d), PdusRext = (%d), TimeOut = (%d), SduDiscarded = (%d)", + DU_LOG("\nINFO --> RLC_DL : RLC Stats: PDUs Sent = (%d), PdusRext = (%d), TimeOut = (%d), SduDiscarded = (%d)", dlInst->genSts.pdusSent, dlInst->genSts.pdusRetx, dlInst->genSts.protTimeOut, dlInst->genSts.numSduDisc); - DU_LOG("\nINFO --> RLC_DL : RLC Stats: PDUs Rcvd = (%d), unexpPdus = (%d), errorPdus = (%d)", + DU_LOG("\nINFO --> RLC_DL : RLC Stats: PDUs Rcvd = (%d), unexpPdus = (%d), errorPdus = (%d)", ulInst->genSts.pdusRecv, ulInst->genSts.unexpPdusRecv, ulInst->genSts.errorPdusRecv); - DU_LOG("\nINFO --> RLC_DL : RLC Stats: AMDL: " + DU_LOG("\nINFO --> RLC_DL : RLC Stats: AMDL: " "StaPduSent:%u NacksInStaPdu:%u BytesUnused:%u PollTimerExpires SRB:%u ", gRlcStats.amRlcStats.numDLStaPduSent, gRlcStats.amRlcStats.numDLNacksInStaPdu, gRlcStats.amRlcStats.numDLBytesUnused, gRlcStats.amRlcStats.numDLPollTimerExpiresSrb); - DU_LOG("\nINFO --> RLC_DL : RLC Stats: AMDL: " + DU_LOG("\nINFO --> RLC_DL : RLC Stats: AMDL: " "DRB:%u MaxRetx:%u RetransPdus:%u", gRlcStats.amRlcStats.numDLPollTimerExpiresDrb, gRlcStats.amRlcStats.numDLMaxRetx, gRlcStats.amRlcStats.numDLRetransPdus); - DU_LOG("\nINFO --> RLC_DL : RLC Stats: AMUL: " + DU_LOG("\nINFO --> RLC_DL : RLC Stats: AMUL: " " PdusDiscarded:%u ReAsmblTimerExpires:%u StaPduRcvd:%u NackInStaPduRcvd:%u ", gRlcStats.amRlcStats.numULPdusDiscarded, gRlcStats.amRlcStats.numULReAsmblTimerExpires, gRlcStats.amRlcStats.numULStaPduRcvd, gRlcStats.amRlcStats.numULNackInStaPduRcvd); @@ -224,7 +224,7 @@ uint8_t rlcSendDedLcDlData(Pst *post, SpId spId, RguDDatReqInfo *datReqInfo) RguDDatReqPerUe datPerUe; /* DL data info per UE */ RguDatReqTb datPerTb; /* DL data info per TB */ RguLchDatReq datPerLch; /* DL data info per Lch */ - RlcData *dlData = NULLP; /* DL data to be sent to MAC */ + RlcDlData *dlData = NULLP; /* DL data to be sent to MAC */ RlcDlRrcMsgRsp *dlRrcMsgRsp = NULLP; /*DL RRC Rsp to be sent to DU*/ Pst pst; /* Post structure */ uint16_t pduLen; /* PDU length */ @@ -234,7 +234,7 @@ uint8_t rlcSendDedLcDlData(Pst *post, SpId spId, RguDDatReqInfo *datReqInfo) uint8_t ret = ROK; RLC_ALLOC_SHRABL_BUF(RLC_MEM_REGION_DL, RLC_POOL, - dlData, sizeof(RlcData)); + dlData, sizeof(RlcDlData)); if(dlData == NULLP) { DU_LOG("\nERROR --> RLC_DL : rlcSendDedLcDlData: Memory allocation failed for dl data"); @@ -242,7 +242,7 @@ uint8_t rlcSendDedLcDlData(Pst *post, SpId spId, RguDDatReqInfo *datReqInfo) datReqInfo, sizeof(RguDDatReqInfo)); return RFAILED; } - memset(dlData, 0, sizeof(RlcData)); + memset(dlData, 0, sizeof(RlcDlData)); for(ueIdx = 0; ueIdx < datReqInfo->nmbOfUeGrantPerTti; ueIdx++) { @@ -265,7 +265,6 @@ uint8_t rlcSendDedLcDlData(Pst *post, SpId spId, RguDDatReqInfo *datReqInfo) lcId = datPerLch.lcId; for(pduIdx = 0; pduIdx < datPerLch.pdu.numPdu; pduIdx++) { - dlData->pduInfo[dlData->numPdu].commCh = FALSE; dlData->pduInfo[dlData->numPdu].lcId = datPerLch.lcId; /* Copy Message to fixed buffer to send */ @@ -282,7 +281,7 @@ uint8_t rlcSendDedLcDlData(Pst *post, SpId spId, RguDDatReqInfo *datReqInfo) dlData->pduInfo[pduIdx].pduLen); } RLC_FREE_SHRABL_BUF(RLC_MEM_REGION_DL, RLC_POOL, - dlData, sizeof(RlcData)); + dlData, sizeof(RlcDlData)); RLC_FREE_SHRABL_BUF(post->region, post->pool, datReqInfo, sizeof(RguDDatReqInfo)); return RFAILED; @@ -298,8 +297,7 @@ uint8_t rlcSendDedLcDlData(Pst *post, SpId spId, RguDDatReqInfo *datReqInfo) dlData->numPdu++; }/* For per PDU */ dlData->boStatus[dlData->numLc].cellId = datReqInfo->cellId; - GET_UE_IDX(datPerUe.rnti, dlData->boStatus[dlData->numLc].ueIdx); - dlData->boStatus[dlData->numLc].commCh = false; + GET_UE_ID(datPerUe.rnti, dlData->boStatus[dlData->numLc].ueId); dlData->boStatus[dlData->numLc].lcId = datPerLch.lcId; dlData->boStatus[dlData->numLc].bo = datPerLch.boReport.bo + datPerLch.boReport.estRlcHdrSz; dlData->numLc++; @@ -320,8 +318,7 @@ uint8_t rlcSendDedLcDlData(Pst *post, SpId spId, RguDDatReqInfo *datReqInfo) break; } boStatus->cellId = dlData->cellId; - GET_UE_IDX(dlData->rnti, boStatus->ueIdx); - boStatus->commCh = FALSE; + GET_UE_ID(dlData->rnti, boStatus->ueId); boStatus->lcId = dlData->boStatus[lchIdx].lcId; boStatus->bo = dlData->boStatus[lchIdx].bo; @@ -334,10 +331,10 @@ uint8_t rlcSendDedLcDlData(Pst *post, SpId spId, RguDDatReqInfo *datReqInfo) ret = RFAILED; break; } - DU_LOG("\nINFO --> RLC_DL : rlcSendDedLcDlData: BO Status sent successfully for LCID:%d,BO:%d",\ + DU_LOG("\nDEBUG --> RLC_DL : rlcSendDedLcDlData: BO Status sent successfully for LCID:%d,BO:%d",\ boStatus->lcId, boStatus->bo); } - RLC_FREE_SHRABL_BUF(RLC_MEM_REGION_DL, RLC_POOL, dlData, sizeof(RlcData)); + RLC_FREE_SHRABL_BUF(RLC_MEM_REGION_DL, RLC_POOL, dlData, sizeof(RlcDlData)); RLC_FREE_SHRABL_BUF(post->region, post->pool, datReqInfo, sizeof(RguDDatReqInfo)); return (ret); } @@ -351,7 +348,7 @@ uint8_t rlcSendDedLcDlData(Pst *post, SpId spId, RguDDatReqInfo *datReqInfo) 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(pst.region, pst.pool, dlData, sizeof(RlcDlData)); RLC_FREE_SHRABL_BUF(RLC_MEM_REGION_DL, RLC_POOL, datReqInfo, sizeof(RguDDatReqInfo)); return RFAILED; @@ -370,7 +367,7 @@ uint8_t rlcSendDedLcDlData(Pst *post, SpId spId, RguDDatReqInfo *datReqInfo) 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(pst.region, pst.pool, dlData, sizeof(RlcDlData)); RLC_FREE_SHRABL_BUF(post->region, post->pool, datReqInfo, sizeof(RguDDatReqInfo)); RLC_FREE_SHRABL_BUF(pst.region, pst.pool, dlRrcMsgRsp, sizeof(RlcDlRrcMsgRsp)); return RFAILED; @@ -389,6 +386,11 @@ uint8_t rlcSendDedLcDlData(Pst *post, SpId spId, RguDDatReqInfo *datReqInfo) return RFAILED; } } + else + { + RLC_FREE_SHRABL_BUF(pst.region, pst.pool, dlRrcMsgRsp, sizeof(RlcDlRrcMsgRsp)); + } + } /* For Data per UE */ RLC_FREE_SHRABL_BUF(RLC_MEM_REGION_DL, RLC_POOL, datReqInfo, sizeof(RguDDatReqInfo)); @@ -443,6 +445,7 @@ uint8_t rlcUtlSendToMac(RlcCb *gCb, SuId suId, KwDStaIndInfo *staIndInfo) //Debug uint32_t staIndSz=0,datIndSz = 0; + RlcTptPerSnssai *snssaiTputNode = NULLP; datReqInfo = NULLP; RLC_ALLOC_SHRABL_BUF(RLC_MEM_REGION_DL, RLC_POOL, @@ -458,8 +461,8 @@ uint8_t rlcUtlSendToMac(RlcCb *gCb, SuId suId, KwDStaIndInfo *staIndInfo) { staInd = &staIndInfo->staInd[idx]; /* Fetch Ue control block */ - GET_UE_IDX(staInd->rnti, ueId); - if(ROK != rlcDbmFetchDlUeCb(gCb, ueId, staIndInfo->cellId,&ueCb)) + GET_UE_ID(staInd->rnti, ueId); + if(ROK != rlcDbmFetchDlUeCb(gCb, ueId, staIndInfo->cellId, &ueCb)) { /* Fetch UeCb failed */ DU_LOG("\nERROR --> RLC_DL : rlcUtlSendToMac: UeId[%u]:ueCb not found", @@ -479,6 +482,7 @@ uint8_t rlcUtlSendToMac(RlcCb *gCb, SuId suId, KwDStaIndInfo *staIndInfo) #ifdef LTE_L2_MEAS ueCb->tbIdx = (ueCb->tbIdx+1) % RLC_MAX_TB_PER_UE; #endif + snssaiTputNode = NULLP; for (count = 0;count < staIndTb->nmbLch; count++) { #ifdef LTE_L2_MEAS @@ -499,8 +503,20 @@ uint8_t rlcUtlSendToMac(RlcCb *gCb, SuId suId, KwDStaIndInfo *staIndInfo) if (rbCb && (!rlcDlUtlIsReestInProgress(rbCb))) { /* Cosider buffer size for throughput calculation */ - if(gCb->rlcThpt.thptPerUe[ueId-1].ueId == ueId) - gCb->rlcThpt.thptPerUe[ueId-1].dataVol += staIndTb->lchStaInd[count].totBufSize; + if(gCb->rlcThpt.ueTputInfo.thptPerUe[ueId-1].ueId == ueId) + gCb->rlcThpt.ueTputInfo.thptPerUe[ueId-1].dataVol += staIndTb->lchStaInd[count].totBufSize; + + if(rbCb->snssai) + { + snssaiTputNode = rlcHandleSnssaiTputlist(gCb, rbCb->snssai, SEARCH, DIR_DL); + if(snssaiTputNode != NULLP) + { + snssaiTputNode->dataVol += staIndTb->lchStaInd[count].totBufSize; + DU_LOG("\nINFO --> RLC_DL: SNSSAI List Grant:%d, lcId:%d, total :%ld",\ + staIndTb->lchStaInd[count].totBufSize, staIndTb->lchStaInd[count].lcId,\ + snssaiTputNode->dataVol); + } + } staIndSz += staIndTb->lchStaInd[count].totBufSize; datReq.pduSz = staIndTb->lchStaInd[count].totBufSize; @@ -685,8 +701,7 @@ uint8_t rlcUtlSendDedLcBoStatus(RlcCb *gCb, RlcDlRbCb *rbCb, int32_t bo, \ boStatus, sizeof(RlcBoStatus)); boStatus->cellId = rbCb->rlcId.cellId; - boStatus->ueIdx = rbCb->rlcId.ueId; - boStatus->commCh = FALSE; + boStatus->ueId = rbCb->rlcId.ueId; boStatus->lcId = rbCb->lch.lChId; boStatus->bo = bo + estHdrSz;