[Bug-ID: ODUHIGH-625]: Adding trigger for BuildAndSendRlcMaxRetransIndToDu and handli... 69/13269/2
authorpborla <pborla@radisys.com>
Sun, 18 Aug 2024 14:34:58 +0000 (20:04 +0530)
committerpborla <pborla@radisys.com>
Tue, 20 Aug 2024 05:05:14 +0000 (10:35 +0530)
Change-Id: Ic621583d5d2707889fb1465fab99f72a9a3d6aa7
Signed-off-by: pborla <pborla@radisys.com>
src/5gnrrlc/rlc_amm_dl.c
src/5gnrrlc/rlc_mgr.h
src/du_app/du_ue_mgr.c

index 8ff2695..f1016fb 100755 (executable)
@@ -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);
index 956b772..423ce02 100644 (file)
@@ -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
 **********************************************************************/
index c3e2d1d..a6d0f91 100644 (file)
@@ -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);