RlcSn mSn;
uint8_t fByte;
bool discFlg;
-#ifdef LTE_L2_MEAS_RLC
- MsgLen rlcSduSz; /*Holds length of Rlc Sdu*/
-#endif /* LTE_L2_MEAS */
+ RlcTptPerSnssai *snssaiTputNode = NULLP;
+ MsgLen pduSz = 0; /*Holds length of Rlc Sdu*/
amUl = &RLC_AMUL;
numPduToProcess = RLC_MIN(pduInfo->numPdu, RGU_MAX_PDU);
DU_LOG("\nDEBUG --> RLC_UL : rlcAmmProcessPdus: numPdu[%d],numPduToProcess[%d] UEID:%d CELLID:%d",
- numPdu, numPduToProcess, rbCb->rlcId.ueId, rbCb->rlcId.cellId);
+ numPdu, numPduToProcess, rbCb->rlcId.ueId, rbCb->rlcId.cellId);
while (numPdu < numPduToProcess)
{
discFlg = FALSE;
pdu = pduInfo->mBuf[numPdu++];
-
+ snssaiTputNode = NULLP;
if (! pdu)
{
DU_LOG("\nERROR --> RLC_UL : rlcAmmProcessPdus: Null Pdu UEID:%d CELLID:%d",
- rbCb->rlcId.ueId, rbCb->rlcId.cellId);
+ rbCb->rlcId.ueId, rbCb->rlcId.cellId);
gCb->genSts.errorPdusRecv++;
break;
}
if (rlcAmmExtractHdr(gCb, rbCb, pdu, &amHdr, &fByte) != ROK)
{
DU_LOG("\nERROR --> RLC_UL : rlcAmmProcessPdus: Header Extraction Failed UEID:%d CELLID:%d",
- rbCb->rlcId.ueId, rbCb->rlcId.cellId);
+ rbCb->rlcId.ueId, rbCb->rlcId.cellId);
ODU_PUT_MSG_BUF(pdu);
gCb->genSts.errorPdusRecv++;
continue;
if((amHdr.si == RLC_SI_LAST_SEG) && (!amHdr.so))
{
DU_LOG("\nERROR --> RLC_UL : rlcAmmProcessPdus: Dropping PDU because SO can't be zero\
- for last segment sn:%u UEID:%d CELLID:%d", amHdr.sn, rbCb->rlcId.ueId,
- rbCb->rlcId.cellId);
+ for last segment sn:%u UEID:%d CELLID:%d", amHdr.sn, rbCb->rlcId.ueId,
+ rbCb->rlcId.cellId);
ODU_PUT_MSG_BUF(pdu);
continue;
}
#ifndef TENB_ACC
#ifndef TENB_T2K3K_SPECIFIC_CHANGES
#ifndef LTE_PAL_ENB
- /* Changed the condition to TRUE from ROK */
+ /* Changed the condition to TRUE from ROK */
if(isMemThreshReached(rlcCb[0]->init.region) == TRUE)
{
uint32_t rlculdrop;
- rlculdrop++;
- ODU_PUT_MSG_BUF(pdu);
- continue;
+ rlculdrop++;
+ ODU_PUT_MSG_BUF(pdu);
+ continue;
}
#endif
#else
rlcUtlCalUlIpThrPut(gCb, rbCb, pdu, ttiCnt);
#endif /* LTE_L2_MEAS */
+ if(rbCb->snssai)
+ {
+ snssaiTputNode = rlcHandleSnssaiTputlist(gCb, rbCb->snssai, SEARCH, DIR_UL);
+ if(snssaiTputNode != NULLP)
+ {
+ ODU_GET_MSG_LEN(pdu, &pduSz);
+ snssaiTputNode->dataVol += (uint64_t)pduSz;
+ DU_LOG("\nINFO --> RLC_UL: SNSSAI AMM_UL List PduLen:%d, lcId:%d, total :%ld",\
+ pduSz, rbCb->lch.lChId, snssaiTputNode->dataVol);
+ }
+ }
/* Update rxNextHighestRcvd */
MODAMR(sn, mSn, amUl->rxNext, amUl->snModMask);
MODAMR(amUl->rxNextHighestRcvd, mrxNextHighestRcvd, amUl->rxNext, amUl->snModMask);
amUl->rxNextHighestRcvd = ((sn + 1) & (amUl->snModMask));
DU_LOG("\nDEBUG --> RLC_UL : rlcAmmProcessPdus: Updated rxNextHighestRcvd = %d UEID:%d CELLID:%d",
- amUl->rxNextHighestRcvd, rbCb->rlcId.ueId, rbCb->rlcId.cellId);
+ amUl->rxNextHighestRcvd, rbCb->rlcId.ueId, rbCb->rlcId.cellId);
}
-
+
recBuf = rlcUtlGetRecBuf(amUl->recBufLst, sn);
if ((NULLP != recBuf) && ( recBuf->allRcvd))
{
/* deliver the reassembled RLC SDU to upper layer,
- But not removed from the table */
+ But not removed from the table */
rlcAmmUlReassembleSdus(gCb, rbCb, recBuf);
recBuf->isDelvUpperLayer = TRUE;
MODAMR(amUl->vrMr, tVrMr, amUl->rxNext, amUl->snModMask);
-
+
/* Update rxHighestStatus */
if (sn == amUl->rxHighestStatus)
{
while (mSn <= tVrMr)
{
if ((NULLP != recBuf) && (recBuf->allRcvd) &&
- (TRUE == recBuf->isDelvUpperLayer))
- {
- /* RecBuf should remove from table
- since PDU is already sent to upper layer */
- recBuf->isDelvUpperLayer = FALSE;
- rlcUtlDelRecBuf(amUl->recBufLst, recBuf, gCb);
+ (TRUE == recBuf->isDelvUpperLayer))
+ {
+ /* RecBuf should remove from table
+ since PDU is already sent to upper layer */
+ recBuf->isDelvUpperLayer = FALSE;
+ rlcUtlDelRecBuf(amUl->recBufLst, recBuf, gCb);
}
else
{
Bool snInWin = RLC_AM_CHK_SN_WITHIN_RECV_WINDOW(amUl->rxNextStatusTrig, amUl);
/* spec 38.322v15.3.0 - 5.2.3.2.3 */
if((amUl->rxNextStatusTrig == amUl->rxNext) || ( (!snInWin) &&
- (amUl->rxNextStatusTrig != amUl->vrMr) )||
- (amUl->rxNextStatusTrig == amUl->rxNext && recBuf &&recBuf->noMissingSeg))
+ (amUl->rxNextStatusTrig != amUl->vrMr) )||
+ (amUl->rxNextStatusTrig == amUl->rxNext && recBuf &&recBuf->noMissingSeg))
{
rlcStopTmr(gCb,(PTR)rbCb, EVENT_RLC_AMUL_REASSEMBLE_TMR);
tmrRunning = FALSE;
DU_LOG("\nINFO --> RLC_UL: rlcAmmProcessPdus: Stopped ReAssembly Timer rxNextStatusTigger = %d"
- "rxNextReassembly = %d", amUl->rxNextStatusTrig, amUl->rxNext);
+ "rxNextReassembly = %d", amUl->rxNextStatusTrig, amUl->rxNext);
}
}
{
/* spec 38.322v15.3.0 - 5.2.3.2.3 */
if((amUl->rxNextHighestRcvd > amUl->rxNext) || ((amUl->rxNextHighestRcvd == amUl->rxNext) &&
- (recBuf && (!recBuf->noMissingSeg))))
+ (recBuf && (!recBuf->noMissingSeg))))
{
rlcStartTmr(gCb,(PTR)rbCb, EVENT_RLC_AMUL_REASSEMBLE_TMR);
amUl->rxNextStatusTrig = amUl->rxNextHighestRcvd;
DU_LOG("\nDEBUG --> RLC_UL : rlcAmmProcessPdus: Updated rxNextStatusTrig = %d"
- "UEID:%d CELLID:%d", amUl->rxNextStatusTrig, rbCb->rlcId.ueId,
- rbCb->rlcId.cellId);
+ "UEID:%d CELLID:%d", amUl->rxNextStatusTrig, rbCb->rlcId.ueId,
+ rbCb->rlcId.cellId);
}
}
}
rlcStopTmr(gCb,(PTR)rbCb, EVENT_RLC_AMUL_STA_PROH_TMR);
}
+ RLC_FREE(gCb,rbCb->snssai, sizeof (Snssai));
/* on the first loop winSz is always greater than zero
while( ( curSn < windSz ) hence changing to do while */