X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=src%2F5gnrrlc%2Fkw_lim.c;h=303745a8f2933c9105cd0c6c51b5bed72d5c3edc;hb=e550b2091fb29289d12a5722b189acbede7862f0;hp=298ecefb28c9f6c93db8ac07c69bb2df49249965;hpb=d10b52519198632f93deae9574adc69c7ce12efa;p=o-du%2Fl2.git diff --git a/src/5gnrrlc/kw_lim.c b/src/5gnrrlc/kw_lim.c index 298ecefb2..303745a8f 100755 --- a/src/5gnrrlc/kw_lim.c +++ b/src/5gnrrlc/kw_lim.c @@ -227,27 +227,15 @@ U8 status; * */ -#ifdef ANSI -PUBLIC S16 RlcMacProcUlData -( -Pst* pst, -SuId suId, -RlcMacData *ulData -) -#else -PUBLIC S16 RlcMacProcUlData(pst, suId, ulData) -Pst* pst; -SuId suId; -RlcMacData *ulData; -#endif +PUBLIC S16 RlcMacProcUlData(Pst *pst, SuId suId, RlcMacData *ulData) { U8 idx; U8 lcId; /* Logical Channel */ U8 numDLch = 0; /* Number of dedicated logical channel */ Bool dLchPduPres; /* PDU received on dedicated 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 */ + RguDDatIndInfo *dLchUlDat; /* UL data on dedicated logical channel */ + RguCDatIndInfo *cLchUlDat; /* UL data on common logical channel */ /* Initializing dedicated logical channel Database */ for(idx = 0; idx < RGU_MAX_LC; idx++) @@ -264,19 +252,21 @@ RlcMacData *ulData; { if(ulData->pduInfo[idx].commCh) { - cmMemset((U8*)&cLchUlDat, (U8)0, sizeof(RguCDatIndInfo)); + KW_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; + cLchUlDat->cellId = ulData->cellId; + cLchUlDat->rnti = ulData->rnti; + cLchUlDat->lcId = ulData->pduInfo[idx].lcId; + cLchUlDat->pdu = ulData->pduInfo[idx].pduBuf; - KwLiRguCDatInd(pst, suId, &cLchUlDat); + KwLiRguCDatInd(pst, suId, cLchUlDat); } else { if(!dLchPduPres) { + KW_SHRABL_STATIC_BUF_ALLOC(pst->region, pst->pool, dLchUlDat, sizeof(RguDDatIndInfo)); dLchPduPres = TRUE; } @@ -290,21 +280,23 @@ RlcMacData *ulData; * and call its handler */ if(dLchPduPres) { - dLchUlDat.cellId = ulData->cellId; - dLchUlDat.rnti = ulData->rnti; + dLchUlDat->cellId = ulData->cellId; + dLchUlDat->rnti = ulData->rnti; for(idx = 0; idx < RGU_MAX_LC; idx++) { if(dLchData[idx].pdu.numPdu) { - cmMemcpy((U8 *)&dLchUlDat.lchData[numDLch], (U8 *)&dLchData[idx], sizeof(RguLchDatInd)); + cmMemcpy((U8 *)&dLchUlDat->lchData[numDLch], (U8 *)&dLchData[idx], sizeof(RguLchDatInd)); numDLch++; } } - dLchUlDat.numLch = numDLch; - KwLiRguDDatInd(pst, suId, &dLchUlDat); + dLchUlDat->numLch = numDLch; + KwLiRguDDatInd(pst, suId, dLchUlDat); } + + KW_FREE_SHRABL_BUF(pst->region, pst->pool, ulData, sizeof(RlcMacData)); RETVALUE(ROK); }/* End of RlcMacProcUlData */ @@ -481,24 +473,14 @@ RguDDatIndInfo *datInd; * RFAILED - failure * * ****************************************************************/ -#ifdef ANSI -PUBLIC S16 RlcMacProcSchedRep -( -Pst *pst, -SuId suId, -RlcMacSchedRep *schRep -) -#else -PUBLIC S16 RlcMacProcSchedRep(pst, suId, schRep) -Pst *pst; -SuId suId; -RlcMacSchedRep *schRep; -#endif +PUBLIC S16 RlcMacProcSchedRep(Pst *pst, SuId suId, RlcMacSchedRep *schRep) { U8 idx; /* Iterator */ U8 nmbDLch = 0; /* Number of dedicated logical channles */ - RguCStaIndInfo cLchSchInfo; /* Common logical channel scheduling result */ - RguDStaIndInfo dLchSchInfo; /* Dedicated logical channel scheduling result */ + RguCStaIndInfo *cLchSchInfo; /* Common logical channel scheduling result */ + RguDStaIndInfo *dLchSchInfo; /* Dedicated logical channel scheduling result */ + + DU_LOG("\nRLC : Received scheduling report from MAC"); for(idx=0; idx < schRep->nmbLch; idx++) { @@ -506,14 +488,15 @@ RlcMacSchedRep *schRep; * and trigger the handler for each common lch separately */ if(schRep->lchSta[idx].commCh) { - cmMemset((U8*)&cLchSchInfo, (U8)0, sizeof(RguCStaIndInfo)); + KW_SHRABL_STATIC_BUF_ALLOC(pst->region, pst->pool, cLchSchInfo, sizeof(RguCStaIndInfo)); + cmMemset((U8*)cLchSchInfo, (U8)0, sizeof(RguCStaIndInfo)); - cLchSchInfo.cellId = schRep->cellId; - cLchSchInfo.lcId = schRep->lchSta[idx].lchStaInd.lcId; - //cLchSchInfo.transId = schRep->timeToTx; /* TODO : fill transId suing timeToTx */ - cLchSchInfo.rnti = schRep->rnti; + cLchSchInfo->cellId = schRep->cellId; + cLchSchInfo->lcId = schRep->lchSta[idx].lchStaInd.lcId; + //cLchSchInfo->transId = schRep->timeToTx; /* TODO : fill transId suing timeToTx */ + cLchSchInfo->rnti = schRep->rnti; - KwLiRguCStaInd(pst, suId, &cLchSchInfo); + KwLiRguCStaInd(pst, suId, cLchSchInfo); } else @@ -522,16 +505,18 @@ RlcMacSchedRep *schRep; * scheduling report is received */ if(nmbDLch == 0) { - dLchSchInfo.cellId = schRep->cellId; - dLchSchInfo.nmbOfUeGrantPerTti = 1; - dLchSchInfo.staInd[0].rnti = schRep->rnti; - //dLchSchInfo.staInd[0].transId = schRep->timeToTx; /* TODO : fill transId suing timeToTx */ - dLchSchInfo.staInd[0].nmbOfTbs = 1; - //dLchSchInfo.staInd[0].fillCrlPdu = /* TODO : Check the value needed to be filled */ + KW_SHRABL_STATIC_BUF_ALLOC(pst->region, pst->pool, dLchSchInfo, sizeof(RguDStaIndInfo)); + + dLchSchInfo->cellId = schRep->cellId; + dLchSchInfo->nmbOfUeGrantPerTti = 1; + dLchSchInfo->staInd[0].rnti = schRep->rnti; + //dLchSchInfo->staInd[0].transId = schRep->timeToTx; /* TODO : fill transId suing timeToTx */ + dLchSchInfo->staInd[0].nmbOfTbs = 1; + //dLchSchInfo->staInd[0].fillCrlPdu = /* TODO : Check the value needed to be filled */ } /* Fill logical channel scheduling info */ - cmMemcpy((U8 *)&dLchSchInfo.staInd[0].staIndTb[0].lchStaInd[nmbDLch], (U8 *)&schRep->lchSta[idx].lchStaInd, sizeof(RguLchStaInd)); + cmMemcpy((U8 *)&dLchSchInfo->staInd[0].staIndTb[0].lchStaInd[nmbDLch], (U8 *)&schRep->lchSta[idx].lchStaInd, sizeof(RguLchStaInd)); nmbDLch++; } @@ -541,9 +526,11 @@ RlcMacSchedRep *schRep; /* Calling handler for all dedicated channels scheduling*/ if(nmbDLch) { - dLchSchInfo.staInd[0].staIndTb[0].nmbLch = nmbDLch; - KwLiRguDStaInd(pst, suId, &dLchSchInfo); + dLchSchInfo->staInd[0].staIndTb[0].nmbLch = nmbDLch; + KwLiRguDStaInd(pst, suId, dLchSchInfo); } + + KW_SHRABL_STATIC_BUF_FREE(pst->region, pst->pool, schRep, sizeof(RlcMacSchedRep)); RETVALUE(ROK); }