From: pborla Date: Sun, 18 Aug 2024 14:34:58 +0000 (+0530) Subject: [Bug-ID: ODUHIGH-625]: Adding trigger for BuildAndSendRlcMaxRetransIndToDu and handli... X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=commitdiff_plain;h=refs%2Fchanges%2F69%2F13269%2F2;p=o-du%2Fl2.git [Bug-ID: ODUHIGH-625]: Adding trigger for BuildAndSendRlcMaxRetransIndToDu and handling RlcMaxRetransInd at DU Change-Id: Ic621583d5d2707889fb1465fab99f72a9a3d6aa7 Signed-off-by: pborla --- diff --git a/src/5gnrrlc/rlc_amm_dl.c b/src/5gnrrlc/rlc_amm_dl.c index 8ff2695ff..f1016fb45 100755 --- a/src/5gnrrlc/rlc_amm_dl.c +++ b/src/5gnrrlc/rlc_amm_dl.c @@ -53,6 +53,7 @@ #include "rlc_utils.h" /* RLC defines */ #include "rlc_dl_ul_inf.h" #include "rlc_dl.h" +#include "rlc_mgr.h" //UDAY #ifdef L2_OPTMZ @@ -2230,6 +2231,11 @@ static Void rlcAmmDlMarkPduForReTx(RlcCb *gCb,RlcDlRbCb *rbCb,RlcRetx *retx) rlcUtlSendDedLcBoStatus(gCb, rbCb, 0,0,0,0); rlcAmmSndStaInd(gCb, rbCb, retx); gRlcStats.amRlcStats.numDLMaxRetx++; + + /* As per 38.322, RLC on reaching maxRetxThreshold in AM mode following needs to be done: */ + /* if RETX_COUNT = maxRetxThreshold: */ + /* - indicate to upper layers that max retransmission has been reached. "*/ + BuildAndSendRlcMaxRetransIndToDu(rbCb->rlcId.cellId, rbCb->rlcId.ueId, rbCb->lch.lChId, rbCb->lch.lChType); } rlcRemRetxPdu(gCb,rbCb, retx); diff --git a/src/5gnrrlc/rlc_mgr.h b/src/5gnrrlc/rlc_mgr.h index 956b77282..423ce02ee 100644 --- a/src/5gnrrlc/rlc_mgr.h +++ b/src/5gnrrlc/rlc_mgr.h @@ -22,6 +22,7 @@ uint8_t SendRlcUeCreateRspToDu(Pst *pst, RlcCfgCfmInfo *cfgRsp); uint8_t SendRlcUeReconfigRspToDu(Pst *pst, RlcCfgCfmInfo *cfgRsp); uint8_t sendRlcUeDeleteRspToDu(uint16_t cellId, uint8_t ueId, CauseOfResult status); uint8_t sendRlcUeReestablishRspToDu(uint16_t cellId,uint8_t ueId, CauseOfResult status); +uint8_t BuildAndSendRlcMaxRetransIndToDu(uint16_t cellId,uint8_t ueId, uint8_t lcId, uint8_t lcType); /********************************************************************** End of file **********************************************************************/ diff --git a/src/du_app/du_ue_mgr.c b/src/du_app/du_ue_mgr.c index c3e2d1d92..a6d0f9117 100644 --- a/src/du_app/du_ue_mgr.c +++ b/src/du_app/du_ue_mgr.c @@ -166,8 +166,17 @@ uint8_t DuProcRlcMaxRetransInd(Pst *pst, RlcMaxRetransInfo *maxRetransInfo) GET_CRNTI(crnti, ueId); if(duCb.actvCellLst[cellIdx]->ueCb[ueId-1].crnti == crnti) { - /*TODO: complete the processing of max retransmission */ - ret = ROK; + + /* As the spec 38.322 in Sec5.3.2(ARQ Procedures) doesn't mention exactly what upper layer needs to do as next steps:*/ + /* if RETX_COUNT = maxRetxThreshold:- indicate to upper layers that max retransmission has been reached.*/ + /*Thus as per our implementation scope, DU-Initiated UE release is triggered */ + + if(BuildAndSendUeContextReleaseReq(maxRetransInfo->cellId, maxRetransInfo->ueId) != ROK) + { + DU_LOG("\nERROR --> DU APP : Failed to build and send ue context release request"); + } + else + ret = ROK; } else DU_LOG("\nERROR --> DU APP : DuProcRlcMaxRetransInd(): CRNTI [%d] not found", crnti);