X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=src%2F5gnrsch%2Fsch_harq_ul.c;h=c5433f9fec1355de00dd94e9927eefca8dba7189;hb=f73456bd55152c329601f8286ae67fe9875025bc;hp=55c9b44c8c135eb489392ad68ce472fec76d22c9;hpb=9fd2f2ab1c817f48e988f5524e4a9f9d10ae1f92;p=o-du%2Fl2.git diff --git a/src/5gnrsch/sch_harq_ul.c b/src/5gnrsch/sch_harq_ul.c index 55c9b44c8..c5433f9fe 100644 --- a/src/5gnrsch/sch_harq_ul.c +++ b/src/5gnrsch/sch_harq_ul.c @@ -24,6 +24,7 @@ #include "du_app_mac_inf.h" #include "mac_sch_interface.h" #include "sch.h" +#include "sch_tmr.h" #include "sch_utils.h" #ifdef NR_DRX #include "sch_drx.h" @@ -49,7 +50,7 @@ void schUlHqAddToFreeList(SchUlHqProcCb *hqP); void schUlHqEntInit(SchCellCb *cellCb, SchUeCb *ueCb) { ueCb->ulHqEnt.numHqPrcs = SCH_MAX_NUM_UL_HQ_PROC; - ueCb->ulHqEnt.maxHqTx = cellCb->cellCfg.schHqCfg.maxUlDataHqTx; + ueCb->ulHqEnt.maxHqTx = cellCb->schHqCfg.maxUlDataHqTx; ueCb->ulHqEnt.cell = cellCb; ueCb->ulHqEnt.ue =ueCb; schUlHqEntReset(cellCb, ueCb, &ueCb->ulHqEnt); @@ -84,9 +85,11 @@ void schUlHqEntReset(SchCellCb *cellCb, SchUeCb *ueCb, SchUlHqEnt *hqE) hqP->ulHqEntLnk.node = (PTR)hqP; hqP->ulHqProcLink.node = (PTR)hqP; hqP->ulSlotLnk.node = (PTR)hqP; + cellCb->api->SchInitUlHqProcCb(hqP); schUlHqAddToFreeList(hqP); } } + /** * @brief Add hq process to free list of UL Harq entity * @@ -213,12 +216,15 @@ uint8_t schUlGetAvlHqProcess(SchCellCb *cellCb, SchUeCb *ueCb, SchUlHqProcCb **h **/ void schUlReleaseHqProcess(SchUlHqProcCb *hqP, Bool togNdi) { + SchCellCb *cellCb = NULLP; if (togNdi == TRUE) { hqP->tbInfo.ndi ^= 1; } - cmLListDeleteLList(&hqP->ulLcPrbEst.dedLcList); - cmLListDeleteLList(&hqP->ulLcPrbEst.defLcList); + + cellCb = hqP->hqEnt->cell; + cellCb->api->SchFreeUlHqProcCb(hqP); + schUlHqDeleteFromInUseList(hqP); schUlHqAddToFreeList(hqP); } @@ -239,17 +245,7 @@ void schUlHqProcessNack(SchUlHqProcCb *hqP) { if (hqP->tbInfo.txCntr < hqP->maxHqTxPerHqP) { - cmLListAdd2Tail(&(hqP->hqEnt->ue->ulRetxHqList), &hqP->ulHqProcLink); -#ifdef NR_DRX - if(hqP->hqEnt->ue->ueDrxInfoPres == true) - { - schDrxStrtUlHqRttTmr(hqP); - } - else -#endif - { - addUeToBeScheduled(hqP->hqEnt->cell, hqP->hqEnt->ue->ueId); - } + hqP->hqEnt->cell->api->SchAddToUlHqRetxList(hqP); } else { @@ -273,6 +269,35 @@ void schUlHqProcessAck(SchUlHqProcCb *hqP) { schUlReleaseHqProcess(hqP, TRUE); } + +/** + * @brief Deletes HARQ Entity + * + * @details + * + * Function : schUlHqEntDelete + * + * This function deletes HARQ entity and its member paremeters + * + * @param[in] Pointer to UE + * @return + * -# void + **/ +void schUlHqEntDelete(SchUeCb *ueCb) +{ + uint8_t count; + SchUlHqProcCb *hqP; + + cmLListDeleteLList(&ueCb->ulHqEnt.free); + cmLListDeleteLList(&ueCb->ulHqEnt.inUse); + for(count=0; count < ueCb->ulHqEnt.numHqPrcs; count++) + { + hqP = &(ueCb->ulHqEnt.procs[count]); + ueCb->cellCb->api->SchDeleteUlHqProcCb(hqP); + } + memset(&ueCb->ulHqEnt, 0, sizeof(SchUlHqEnt)); +} + /********************************************************************** End of file **********************************************************************/