#include "rlc_utils.h" /* RLC defines */
#include "rlc_dl_ul_inf.h"
#include "rlc_dl.h"
+#include "rlc_mgr.h"
//UDAY
#ifdef L2_OPTMZ
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);
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
**********************************************************************/
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);