Desc: Source code for RLC Utility Module
This file contains following functions
- --rlcUtlSndToLi
- --rlcUtlRcvFrmLi
+ --rlcUtlSendToMac
+ --rlcUtlRcvFrmMac
--rlcUtlEmptySduQ
- --rlcUtlSndDatInd
+ --rlcUtlSendUlDataToDu
--kwUtlShutDown
File: kw_utl_ul.c
#include "kw.x" /* RLC inlcudes */
#include "kw_ul.x" /* RLC uplink includes */
-#include "ss_rbuf.h"
-#include "ss_rbuf.x"
+#include "rlc_utils.h"
+#include "du_app_rlc_inf.h"
+#include "rlc_upr_inf_api.h"
+
#ifdef SS_RBUF
S16 SMrkUlPkt(Buffer *mbuf);
#endif
* -# RFAILED
*
*/
-#ifdef ANSI
-S16 rlcUtlRcvFrmLi
-(
-RlcCb *gCb,
-KwDatIndInfo *datIndInfo
-)
-#else
-S16 rlcUtlRcvFrmLi(gCb,datIndInfo)
-RlcCb *gCb;
-KwDatIndInfo *datIndInfo;
-#endif
+uint8_t rlcUtlRcvFrmMac(RlcCb *gCb, KwDatIndInfo *datIndInfo)
{
- U32 count; /* Loop Counter */
+ uint32_t count; /* Loop Counter */
KwPduInfo *pduInfo; /* PDU Information */
RlcUlRbCb *rbCb; /* RB Control Block */
RlcUlUeCb *ueCb; /* UE Control Block */
-/* kw005.201 added support for L2 Measurement */
-
- TRC2(rlcUtlRcvFrmLi)
-
ueCb = NULLP;
if( ROK != rlcDbmFetchUlUeCb(gCb,datIndInfo->rnti,datIndInfo->cellId,&(ueCb)))
{
/* Fetch UeCb failed */
- RLOG_ARG1(L_ERROR,DBG_CELLID,datIndInfo->cellId,
- "UEID:%d UeCb not found",
+ DU_LOG("\nRLC : rlcUtlRcvFrmMac : UEID:%d UeCb not found",
datIndInfo->rnti);
/* free the buffers inside the datIndInfo */
- U32 i,j;
+ uint32_t i,j;
for(i = 0; i< datIndInfo->numLch; i++)
{
for(j = 0; j < datIndInfo->lchData[i].pdu.numPdu; j++)
*/
if(rbCb == NULLP)
{
- U32 j;
+ uint32_t j;
for(j = 0; j < pduInfo->numPdu; j++)
{
if(pduInfo->mBuf[j])
* @return S16
* -# ROK
*/
-#ifdef ANSI
-S16 rlcUtlSndDatInd
-(
-RlcCb *gCb,
-RlcUlRbCb *rbCb,
-Buffer *sdu
-)
-#else
-S16 rlcUtlSndDatInd(gCb,rbCb,sdu)
-RlcCb *gCb;
-RlcUlRbCb *rbCb;
-Buffer *sdu;
-#endif
+uint8_t rlcUtlSendUlDataToDu(RlcCb *gCb, RlcUlRbCb *rbCb, Buffer *sdu)
{
#ifndef KW_PDCP
KwuDatIndInfo *datIndInfo; /* Data Indication Information */
KwuDatIndInfo datIndInfoTmp;
#endif
-
- TRC3(rlcUtlSndDatInd)
-
+ RlcUlRrcMsgInfo *ulRrcMsgInfo;
+ uint16_t msgLen, copyLen;
+ Pst pst;
#ifndef KW_PDCP
/* Creating static memory for KwuDatIndInfo. #else will be
#if (ERRCLASS & ERRCLS_ADD_RES )
if ( datIndInfo == NULLP )
{
- RLOG_ARG2(L_FATAL,DBG_RBID,rbCb->rlcId.rbId,
- "Memory allocation failed UEID:%d CELLID:%d",
- rbCb->rlcId.ueId,
- rbCb->rlcId.cellId);
+ DU_LOG("\nRLC : rlcUtlSendUlDataToDu: Memory allocation failed UEID:%d \
+ CELLID:%d", rbCb->rlcId.ueId, rbCb->rlcId.cellId);
RLC_FREE_BUF(sdu);
return RFAILED;
}
datIndInfo->isOutOfSeq = rbCb->m.amUl.isOutOfSeq;
#endif /* KW_PDCP */
- /* If trace flag is enabled send the trace indication */
- if(gCb->init.trc == TRUE)
+ /* Filling UL RRC Message Info */
+ RLC_ALLOC_SHRABL_BUF(RLC_MEM_REGION_UL, RLC_POOL,
+ ulRrcMsgInfo, sizeof(RlcUlRrcMsgInfo));
+ if (ulRrcMsgInfo)
{
- /* Populate the trace params */
- rlcLmmSendTrc(gCb,KWU_EVT_DAT_IND, sdu);
- }
-#ifndef KW_PDCP
+ ulRrcMsgInfo->cellId = rbCb->rlcId.cellId;
+ ulRrcMsgInfo->ueIdx = rbCb->rlcId.ueId;
+ ulRrcMsgInfo->lcId = rbCb->lch.lChId;
+ RLC_ALLOC_SHRABL_BUF(RLC_MEM_REGION_UL, RLC_POOL,
+ ulRrcMsgInfo->rrcMsg, msgLen);
+ if (ulRrcMsgInfo->rrcMsg)
+ {
+ ODU_GET_MSG_LEN(sdu, (MsgLen *)&msgLen);
+ ODU_COPY_MSG_TO_FIX_BUF(sdu, 0, msgLen, ulRrcMsgInfo->rrcMsg, (MsgLen *)©Len);
+ ulRrcMsgInfo->msgLen = msgLen;
+
+ /* Sending UL RRC Message transfeer to DU APP */
+ memset(&pst, 0, sizeof(Pst));
+ FILL_PST_RLC_TO_DUAPP(pst, RLC_UL_INST, EVENT_UL_RRC_MSG_TRANS_TO_DU);
+ rlcSendUlRrcMsgToDu(&pst, ulRrcMsgInfo);
+ }
+ else
+ {
+ DU_LOG("\nRLC : rlcUtlSendUlDataToDu: Memory allocation failed for rrcMsg");
+ RLC_FREE_SHRABL_BUF(RLC_MEM_REGION_UL, RLC_POOL, ulRrcMsgInfo, sizeof(RlcUlRrcMsgInfo));
+ return RFAILED;
+ }
+ }
+ else
+ {
+ DU_LOG("\nRLC : rlcUtlSendUlDataToDu: Memory allocation failed for ulRrcMsgInfo");
+ return RFAILED;
+ }
- RlcUiKwuDatInd(&gCb->genCfg.lmPst, datIndInfo, sdu);
-#endif
- return (ROK);
-} /* rlcUtlSndDatInd */
+ return ROK;
+} /* rlcUtlSendUlDataToDu */
PRIVATE Void dumpRLCUlRbInformation(RlcUlRbCb* ulRbCb)
gCb->u.ulCb->rlcL2Cb.rlcNumMeas=0;
for(cntr = 0; cntr < LKW_MAX_L2MEAS; cntr++)
{
- cmMemset((U8 *)&(gCb->u.ulCb->rlcL2Cb.rlcL2EvtCb[cntr]), 0, sizeof(RlcL2MeasEvtCb));
+ memset(&(gCb->u.ulCb->rlcL2Cb.rlcL2EvtCb[cntr]), 0, sizeof(RlcL2MeasEvtCb));
}
gCb->u.ulCb->rlcL2Cb.rlcL2EvtCb[RLC_L2MEAS_UL_IP].measCb.measType = LKW_L2MEAS_UL_IP;
return ROK;
#endif
{
VOLATILE U32 startTime = 0;
- TRC2(rlcUtlCalUlIpThrPutIncTTI)
/*starting Task*/
SStartTask(&startTime, PID_RLC_IP_TPT_INCTTI);
{
MsgLen rlcSduSz = 0; /*Holds length of Rlc Sdu*/
VOLATILE U32 startTime = 0;
- TRC2(rlcUtlCalUlIpThrPut)
-
/*starting Task*/
SStartTask(&startTime, PID_RLC_IP_TPT_INCVOL);
RlcL2MeasEvtCb *measEvtCb;
#endif
{
- TRC3(rlcUtlHdlL2TmrExp)
#ifdef LTE_L2_MEAS_RLC
U16 qciIdx;
U32 cfmIdx =0;
/* Discard new changes ends */
- TRC3(rlcUtlSndUlL2MeasCfm)
-
/* kw006.201 ccpu00120058 emoved 64 bit compilation warning */
#ifndef ALIGN_64BIT
RLOG1(L_DEBUG,"rlcUtlSndUlL2MeasCfm(transId(%ld))", measEvtCb->transId);
/* Clean up the RB data structures */
measCb = &measEvtCb->measCb;
- cmMemset((U8*)&measCfmEvt, 0, sizeof(RlcL2MeasCfmEvt));
+ memset(&measCfmEvt, 0, sizeof(RlcL2MeasCfmEvt));
measCfmEvt.transId = measEvtCb->transId;
measCfmEvt.measType = measCb->measType;
RlcL2MeasCfmEvt *measCfmEvt;
#endif
{
- TRC3(rlcUtlSndUlL2MeasNCfm)
RlcMiLkwL2MeasCfm(&gCb->genCfg.lmPst, measCfmEvt);
return ROK;
U8 msbNibble = 0;
U8 numFaild = 0;
-
- TRC3(rlcUtlValidateL2Meas)
-
idx = 0;
rbCb = NULLP;
ret = ROK;
U8 lsbNibble = 0;
U8 msbNibble = 0;
- TRC3(rlcUtlValidateIpThL2Meas)
-
measType = measReqEvt->measReq.measType;
/* Check for the range of measType */
/* LKW_L2MEAS_DL_IP+ LKW_L2MEAS_UL_IP = 0x0030*/
U8 measType;
#endif
{
- TRC3(rlcUtlPlcMeasDatInL2Sts)
-
/* We should check the number of measType in the request. This can be done
* by looking at each bit in the measType. Also store the measData in the
* correct index of l2Sts in RbCb.
*
* @return Void
*/
-#ifdef ANSI
-Void rlcUtlStoreRecBuf
-(
-CmLListCp *recBufLst,
-RlcAmRecBuf *recBuf,
-RlcSn sn
-)
-#else
-Void rlcUtlStoreRecBuf(recBufLst, recBuf, sn)
-CmLListCp *recBufLst;
-RlcAmRecBuf *recBuf;
-RlcSn sn;
-#endif
+void rlcUtlStoreRecBuf(CmLListCp *recBufLst, RlcAmRecBuf *recBuf, RlcSn sn)
{
- U32 hashKey;
-
- TRC3(rlcUtlStoreRecBuf)
+ uint32_t hashKey;
hashKey = (sn % RLC_RCV_BUF_BIN_SIZE );
recBuf->lnk.node = (PTR)recBuf;
cmLListAdd2Tail(&(recBufLst[hashKey]), &recBuf->lnk);
- RETVOID;
+ return;
} /* rlcUtlStoreRecBuf */
/**
*
* @return Void
*/
-#ifdef ANSI
-RlcAmRecBuf* rlcUtlGetRecBuf
-(
-CmLListCp *recBufLst,
-RlcSn sn
-)
-#else
-RlcAmRecBuf* rlcUtlGetRecBuf(recBufLst, sn)
-CmLListCp *recBufLst;
-RlcSn sn;
-#endif
+RlcAmRecBuf* rlcUtlGetRecBuf(CmLListCp *recBufLst, RlcSn sn)
{
- U32 hashKey;
+ uint32_t hashKey;
CmLListCp *recBufLstCp;
RlcAmRecBuf *recBuf;
CmLList *node = NULLP;
- TRC3(rlcUtlGetRecBuf)
-
hashKey = (sn % RLC_RCV_BUF_BIN_SIZE );
recBufLstCp = &recBufLst[hashKey];
recBuf = (RlcAmRecBuf *) node->node;
if(recBuf->amHdr.sn == sn)
{
- return (recBuf);
+ return recBuf;
}
CM_LLIST_NEXT_NODE(recBufLstCp, node);
}
- return (NULLP);
+ return NULLP;
} /* rlcUtlStoreRecBuf */
/**
*
*
* @return Void
*/
-#ifdef ANSI
-Void rlcUtlDelRecBuf
-(
-CmLListCp *recBufLst,
-RlcAmRecBuf *recBuf,
-RlcCb *gCb
-)
-#else
-Void rlcUtlDelRecBuf(recBufLst, recBufi, gCb)
-CmLListCp *recBufLst;
-RlcAmRecBuf *recBuf;
-RlcCb *gCb;
-#endif
+void rlcUtlDelRecBuf(CmLListCp *recBufLst, RlcAmRecBuf *recBuf, RlcCb *gCb)
{
- U32 hashKey;
+ uint32_t hashKey;
CmLListCp *recBufLstCp;
- TRC3(rlcUtlDelRecBuf)
-
hashKey = (recBuf->amHdr.sn % RLC_RCV_BUF_BIN_SIZE );
recBufLstCp = &recBufLst[hashKey];
cmLListDelFrm(recBufLstCp, &recBuf->lnk);
RLC_FREE_WC(gCb, recBuf, sizeof(RlcAmRecBuf));
- RETVOID;
+ return;
} /* rlcUtlDelRecBuf */