#include "kw_udx.x"
#include "kw_dl.x"
#include "kw_ul.x"
+#include "rlc_utils.h"
#ifdef __cplusplus
EXTERN "C" {
#if (ERRCLASS & ERRCLS_INT_PAR)
if (pst->dstInst >= MAX_RLC_INSTANCES)
{
- RETVALUE (RFAILED);
+ return (RFAILED);
}
#endif
tRlcCb = RLC_GET_RLCCB(pst->dstInst);
KW_SEND_SAPID_ALARM(tRlcCb,suId,LKW_EVENT_LI_BND_CFM, LCM_CAUSE_INV_STATE);
- RETVALUE(RFAILED);
+ return RFAILED;
}
if ((suId >= tRlcCb->genCfg.maxRguSaps) || (suId < 0))
KW_SEND_SAPID_ALARM(tRlcCb,suId, LKW_EVENT_LI_BND_CFM, LCM_CAUSE_INV_SUID);
- RETVALUE(RFAILED);
+ return RFAILED;
}
#endif /* ERRCLASS & ERRCLS_INT_PAR */
/* Send an alarm with proper event and cause */
KW_SEND_SAPID_ALARM(tRlcCb, suId, event, cause);
- RETVALUE(ROK);
+ return ROK;
} /* KwLiRguBndCfm */
/**
*
*/
-PUBLIC S16 RlcMacProcUlData(Pst *pst, SuId suId, RlcMacData *ulData)
+uint8_t RlcProcUlData(Pst *pst, RlcMacData *ulData)
{
U8 idx;
U8 lcId; /* Logical Channel */
RguLchDatInd dLchData[RGU_MAX_LC]; /* PDU info on dedicated logical channel */
RguDDatIndInfo *dLchUlDat; /* UL data on dedicated logical channel */
RguCDatIndInfo *cLchUlDat; /* UL data on common logical channel */
+ uint16_t copyLen;
/* Initializing dedicated logical channel Database */
for(idx = 0; idx < RGU_MAX_LC; idx++)
/* Seggregate PDUs received on common and dedicated channels
* and call common channel's handler */
- for(idx = 0; idx< ulData->nmbPdu; idx++)
+ for(idx = 0; idx< ulData->numPdu; idx++)
{
if(ulData->pduInfo[idx].commCh)
{
- RLC_SHRABL_STATIC_BUF_ALLOC(pst->region, pst->pool, cLchUlDat, sizeof(RguCDatIndInfo));
- cmMemset((U8*)cLchUlDat, (U8)0, sizeof(RguCDatIndInfo));
-
- cLchUlDat->cellId = ulData->cellId;
- cLchUlDat->rnti = ulData->rnti;
- cLchUlDat->lcId = ulData->pduInfo[idx].lcId;
- cLchUlDat->pdu = ulData->pduInfo[idx].pduBuf;
-
- KwLiRguCDatInd(pst, suId, cLchUlDat);
+ RLC_SHRABL_STATIC_BUF_ALLOC(pst->region, pst->pool, cLchUlDat, sizeof(RguCDatIndInfo));
+ cmMemset((U8*)cLchUlDat, (U8)0, sizeof(RguCDatIndInfo));
+
+ cLchUlDat->cellId = ulData->cellId;
+ GET_UE_IDX(ulData->rnti, cLchUlDat->rnti);
+ cLchUlDat->lcId = ulData->pduInfo[idx].lcId;
+
+ /* Copy fixed buffer to message */
+ if(SGetMsg(RLC_MEM_REGION_UL, RLC_POOL, &cLchUlDat->pdu) != ROK)
+ {
+ DU_LOG("\nRLC : Memory allocation failed at RlcProcUlData");
+ return RFAILED;
+ }
+ reverseFixBuf(ulData->pduInfo[idx].pduBuf, ulData->pduInfo[idx].pduLen);
+ SCpyFixMsg(ulData->pduInfo[idx].pduBuf, cLchUlDat->pdu, 0, \
+ ulData->pduInfo[idx].pduLen, (MsgLen *)©Len);
+
+ KwLiRguCDatInd(pst, 0, cLchUlDat);
}
else
{
- if(!dLchPduPres)
- {
- RLC_SHRABL_STATIC_BUF_ALLOC(pst->region, pst->pool, dLchUlDat, sizeof(RguDDatIndInfo));
- dLchPduPres = TRUE;
- }
-
- lcId = ulData->pduInfo[idx].lcId;
- dLchData[lcId].pdu.mBuf[dLchData[lcId].pdu.numPdu] = ulData->pduInfo[idx].pduBuf;
- dLchData[lcId].pdu.numPdu++;
+ if(!dLchPduPres)
+ {
+ RLC_SHRABL_STATIC_BUF_ALLOC(pst->region, pst->pool, dLchUlDat, sizeof(RguDDatIndInfo));
+ dLchPduPres = TRUE;
+ }
+
+ lcId = ulData->pduInfo[idx].lcId;
+ dLchData[lcId].pdu.mBuf[dLchData[lcId].pdu.numPdu] = ulData->pduInfo[idx].pduBuf;
+ dLchData[lcId].pdu.numPdu++;
}
}
for(idx = 0; idx < RGU_MAX_LC; idx++)
{
- if(dLchData[idx].pdu.numPdu)
- {
- cmMemcpy((U8 *)&dLchUlDat->lchData[numDLch], (U8 *)&dLchData[idx], sizeof(RguLchDatInd));
- numDLch++;
- }
+ if(dLchData[idx].pdu.numPdu)
+ {
+ cmMemcpy((U8 *)&dLchUlDat->lchData[numDLch], (U8 *)&dLchData[idx], sizeof(RguLchDatInd));
+ numDLch++;
+ }
}
dLchUlDat->numLch = numDLch;
- KwLiRguDDatInd(pst, suId, dLchUlDat);
+ KwLiRguDDatInd(pst, 0, dLchUlDat);
}
RLC_FREE_SHRABL_BUF(pst->region, pst->pool, ulData, sizeof(RlcMacData));
- RETVALUE(ROK);
+ return ROK;
-}/* End of RlcMacProcUlData */
+}/* End of RlcProcUlData */
PUBLIC int rlcDDatIndRcvd;
PUBLIC int rlcCDatIndRcvd;
if (pst->dstInst >= MAX_RLC_INSTANCES)
{
RLC_SHRABL_STATIC_BUF_FREE(pst->region, pst->pool, datInd, sizeof(RguCDatIndInfo));
- RETVALUE (RFAILED);
+ return (RFAILED);
}
#endif
if (tRlcCb->genCfg.rlcMode == LKW_RLC_MODE_DL)
{
RLC_SHRABL_STATIC_BUF_FREE(pst->region, pst->pool, datInd, sizeof(RguCDatIndInfo));
- RETVALUE(RFAILED);
+ return RFAILED;
}
#endif
RLOG_ARG1(L_ERROR,DBG_LCID,datInd->lcId, "Invalid LcId, Max is [%d]",
KW_MAX_LCH_PER_CELL);
RLC_SHRABL_STATIC_BUF_FREE(pst->region, pst->pool, datInd, sizeof(RguCDatIndInfo));
- RETVALUE(RFAILED);
+ return RFAILED;
}
#endif /* (ERRCLASS & ERRCLS_DEBUG) */
/* Fetch RbCb from lcId */
- kwDbmFetchUlRbCbFromLchId(tRlcCb, 0, datInd->cellId, datInd->lcId, &rbCb);
+ kwDbmFetchUlRbCbFromLchId(tRlcCb, datInd->rnti, datInd->cellId, datInd->lcId, &rbCb);
if (!rbCb)
{
RLOG_ARG1(L_ERROR, DBG_CELLID,datInd->cellId, "LcId [%d] not found",
datInd->lcId);
RLC_SHRABL_STATIC_BUF_FREE(pst->region, pst->pool, datInd, sizeof(RguCDatIndInfo));
- RETVALUE(RFAILED);
+ return RFAILED;
}
/* Dispatch to TM Module */
RLC_SHRABL_STATIC_BUF_FREE(pst->region, pst->pool, datInd, sizeof(RguCDatIndInfo));
- RETVALUE(ROK);
+ return ROK;
} /* KwLiRguCDatInd */
/**
if (pst->dstInst >= MAX_RLC_INSTANCES)
{
RLC_SHRABL_STATIC_BUF_FREE(pst->region, pst->pool, datInd, sizeof(RguDDatIndInfo));
- RETVALUE (RFAILED);
+ return (RFAILED);
}
#endif
{
RLOG1(L_DEBUG,"KwLiRguDDatInd(pst, suId(%d))recieved in DL Inst",suId);
RLC_SHRABL_STATIC_BUF_FREE(pst->region, pst->pool, datInd, sizeof(RguDDatIndInfo));
- RETVALUE(RFAILED);
+ return RFAILED;
}
#endif
kwUtlRcvFrmLi(RLC_GET_RLCCB(pst->dstInst),datInd);
#endif
#endif
- RETVALUE(ROK);
+ return ROK;
} /* KwLiRguDDatInd */
RLC_SHRABL_STATIC_BUF_FREE(pst->region, pst->pool, schRep, sizeof(RlcMacSchedRepInfo));
- RETVALUE(ROK);
+ return ROK;
}
/**
if (pst->dstInst >= MAX_RLC_INSTANCES)
{
RLC_SHRABL_STATIC_BUF_FREE(pst->region, pst->pool, staInd, sizeof(RguCStaIndInfo));
- RETVALUE (RFAILED);
+ return (RFAILED);
}
#endif
EKW040,
(ErrVal) suId,
"KwLiRguCStaInd: Invalid RGU suId\n");
- RETVALUE(RFAILED);
+ return RFAILED;
}
if (tRlcCb->genCfg.rlcMode == LKW_RLC_MODE_UL)
{
"Received in RLC UL CELLID:%d",
staInd->cellId);
RLC_SHRABL_STATIC_BUF_FREE(pst->region, pst->pool, staInd, sizeof(RguCStaIndInfo));
- RETVALUE(RFAILED);
+ return RFAILED;
}
#endif
KW_MAX_LCH_PER_CELL,
staInd->cellId);
RLC_SHRABL_STATIC_BUF_FREE(pst->region, pst->pool, staInd, sizeof(RguCStaIndInfo));
- RETVALUE(RFAILED);
+ return RFAILED;
}
#endif /* (ERRCLASS & ERRCLS_DEBUG) */
/* Fertch RbCb from lcId */
"LcId [%d] not found CELLID:%d",
staInd->lcId);
RLC_SHRABL_STATIC_BUF_FREE(pst->region, pst->pool, staInd, sizeof(RguCStaIndInfo));
- RETVALUE(RFAILED);
+ return RFAILED;
}
/* Dispatch to TM Module */
#else
RLC_SHRABL_STATIC_BUF_FREE(pst->region, pst->pool, staInd, sizeof(RguCStaIndInfo));
#endif
- RETVALUE(ROK);
+ return ROK;
} /* KwLiRguCStaInd */
/**
if (pst->dstInst >= MAX_RLC_INSTANCES)
{
RLC_SHRABL_STATIC_BUF_FREE(pst->region, pst->pool, staInd, sizeof(RguDStaIndInfo));
- RETVALUE (RFAILED);
+ return (RFAILED);
}
#endif
{
RLOG_ARG0(L_ERROR,DBG_CELLID,staInd->cellId,"Received in RLC UL ");
RLC_SHRABL_STATIC_BUF_FREE(pst->region, pst->pool, staInd, sizeof(RguDStaIndInfo));
- RETVALUE(RFAILED);
+ return RFAILED;
}
if ((suId >= gCb->genCfg.maxRguSaps) || (suId < 0))
{
EKW040,
(ErrVal) suId,
"KwLiRguDStaInd: Invalid RGU suId\n");
- RETVALUE(RFAILED);
+ return RFAILED;
}
#endif
kwUtlSndToLi(gCb, suId, staInd);
/* kw002.201 :Freeing from proper region */
RLC_SHRABL_STATIC_BUF_FREE(pst->region, pst->pool, staInd, sizeof(RguDStaIndInfo));
- RETVALUE(ROK);
+ return ROK;
} /* KwLiRguDStaInd */
/**
}
}
}
- RETVALUE(ROK);
+ return ROK;
}
/* kw005.201 added support for L2 Measurement */
#ifdef LTE_L2_MEAS
ret = kwDbmFetchDlUeCb(tRlcCb, ueKey.ueId, ueKey.cellId, &ueCb);
if (ret != ROK )
{
- RETVALUE(RFAILED);
+ return RFAILED;
}
/*Call kwUtlProcHarqInd as many times as number of Tbs present*/
kwUtlProcHarqInd(tRlcCb, staInd, ueCb, tbIdx);
}
- RETVALUE(ROK);
+ return ROK;
} /* KwLiRguHqStaInd */
#endif /* LTE_L2_MEAS */