X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=src%2F5gnrsch%2Fsch_ue_mgr.c;h=67c05a8e200b7c07d3cc09386993d9c4440a7c42;hb=b5b72edf4ea89b4064284c63dfa936b1c24718d6;hp=9116d10ff59871b3ab1a4e00755e7bf3c8ff543a;hpb=d1f428c3527bfff3b3eae2715e91ae8449ad1784;p=o-du%2Fl2.git diff --git a/src/5gnrsch/sch_ue_mgr.c b/src/5gnrsch/sch_ue_mgr.c index 9116d10ff..67c05a8e2 100644 --- a/src/5gnrsch/sch_ue_mgr.c +++ b/src/5gnrsch/sch_ue_mgr.c @@ -27,6 +27,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" @@ -53,7 +54,6 @@ void SchSendUeCfgRspToMac(SchUeCfgReq *ueCfg, Inst inst,\ Pst rspPst; cfgRsp->cellId = ueCfg->cellId; - cfgRsp->ueId = ueCfg->ueId; cfgRsp->crnti = ueCfg->crnti; cfgRsp->rsp = result; @@ -86,7 +86,6 @@ void SchSendUeRecfgRspToMac(SchUeRecfgReq *ueRecfgReq, Inst inst,\ Pst rspPst; reCfgRsp->cellId = ueRecfgReq->cellId; - reCfgRsp->ueId = ueRecfgReq->ueId; reCfgRsp->crnti = ueRecfgReq->crnti; reCfgRsp->rsp = result; @@ -295,7 +294,7 @@ uint8_t fillSchUeCbFrmCfgReq(Inst inst, SchUeCb *ueCb, SchUeCfgReq *ueCfg) bool isLcIdValid = FALSE; ueCb->ueCfg.cellId = ueCfg->cellId; - ueCb->ueCfg.ueId = ueCfg->ueId; + ueCb->ueCfg.ueId = ueCb->ueId; ueCb->ueCfg.crnti = ueCfg->crnti; if(ueCfg->macCellGrpCfgPres == true) { @@ -321,7 +320,7 @@ uint8_t fillSchUeCbFrmCfgReq(Inst inst, SchUeCb *ueCb, SchUeCfgReq *ueCfg) schInitDrxHarqCb(&ueCb->ulHqEnt.procs[idx].ulDrxHarqCb); } /* convert all the drx configuration recived in ms/subms into number of slots and store into the drxUeCb */ - schFillDrxUeCb(ueCb->cellCb->cellCfg.numerology, ueCfg->macCellGrpCfg.drxCfg, &ueCb->drxUeCb); + schFillDrxUeCb(ueCb->cellCb->numerology, ueCfg->macCellGrpCfg.drxCfg, &ueCb->drxUeCb); /* Calculate the onduration timer and short cycle timer (if shortcycle configuration is present) as soon as we * recived ueCfg request */ schAddUeInOndurationList(ueCb->cellCb, ueCb, 0); @@ -331,7 +330,7 @@ uint8_t fillSchUeCbFrmCfgReq(Inst inst, SchUeCb *ueCb, SchUeCfgReq *ueCfg) { /* convert all the drx configuration recived in ms/subms into number * of slots and store into the drxUeCb */ - schFillDrxUeCb(ueCb->cellCb->cellCfg.numerology, ueCfg->macCellGrpCfg.drxCfg, &ueCb->drxUeCb); + schFillDrxUeCb(ueCb->cellCb->numerology, ueCfg->macCellGrpCfg.drxCfg, &ueCb->drxUeCb); /* Recalculate/Restart timer based on their presence */ schDrxUeReCfgTimer(ueCb->cellCb, ueCb); @@ -461,8 +460,8 @@ uint8_t fillSchUeCbFrmRecfgReq(Inst inst, SchUeCb *ueCb, SchUeRecfgReq *ueRecfg) ueCb->ueCfg.cellId = ueRecfg->cellId; - ueCb->ueCfg.ueId = ueRecfg->ueId; ueCb->ueCfg.crnti = ueRecfg->crnti; + GET_UE_ID(ueRecfg->crnti, ueCb->ueCfg.ueId); ueCb->ueCfg.dataTransmissionAction = ueRecfg->dataTransmissionInfo; if(ueRecfg->macCellGrpRecfgPres == true) { @@ -488,7 +487,7 @@ uint8_t fillSchUeCbFrmRecfgReq(Inst inst, SchUeCb *ueCb, SchUeRecfgReq *ueRecfg) schInitDrxHarqCb(&ueCb->ulHqEnt.procs[idx].ulDrxHarqCb); } /* convert all the drx configuration recived in ms/subms into number of slots and store into the drxUeCb */ - schFillDrxUeCb(ueCb->cellCb->cellCfg.numerology, ueRecfg->macCellGrpRecfg.drxCfg, &ueCb->drxUeCb); + schFillDrxUeCb(ueCb->cellCb->numerology, ueRecfg->macCellGrpRecfg.drxCfg, &ueCb->drxUeCb); /* Calculate the onduration timer and short cycle timer (if shortcycle configuration is present) as soon as we * recived ueCfg request */ schAddUeInOndurationList(ueCb->cellCb, ueCb, 0); @@ -498,7 +497,7 @@ uint8_t fillSchUeCbFrmRecfgReq(Inst inst, SchUeCb *ueCb, SchUeRecfgReq *ueRecfg) { /* convert all the drx configuration recived in ms/subms into number * of slots and store into the drxUeCb */ - schFillDrxUeCb(ueCb->cellCb->cellCfg.numerology, ueRecfg->macCellGrpRecfg.drxCfg, &ueCb->drxUeCb); + schFillDrxUeCb(ueCb->cellCb->numerology, ueRecfg->macCellGrpRecfg.drxCfg, &ueCb->drxUeCb); /* Recalculate/Restart timer based on their presence */ schDrxUeReCfgTimer(ueCb->cellCb, ueCb); @@ -745,6 +744,7 @@ SchCellCb *getSchCellCb(uint16_t srcEvent, Inst inst, uint16_t cellId) uint8_t SchAddUeConfigReq(Pst *pst, SchUeCfgReq *ueCfg) { uint8_t lcIdx = 0, ret = ROK, idx = 0; + uint16_t ueId = 0; SchCellCb *cellCb = NULLP; SchUeCb *ueCb = NULLP; SchUeCfgRsp cfgRsp; @@ -765,7 +765,8 @@ uint8_t SchAddUeConfigReq(Pst *pst, SchUeCfgReq *ueCfg) return RFAILED; } /* Search if UE already configured */ - ueCb = &cellCb->ueCb[ueCfg->ueId - 1]; + GET_UE_ID(ueCfg->crnti, ueId); + ueCb = &cellCb->ueCb[ueId - 1]; if((ueCb->crnti == ueCfg->crnti) && (ueCb->state == SCH_UE_STATE_ACTIVE)) { @@ -777,11 +778,11 @@ uint8_t SchAddUeConfigReq(Pst *pst, SchUeCfgReq *ueCfg) /* Fill received Ue Configuration in UeCb */ memset(ueCb, 0, sizeof(SchUeCb)); - ueCb->ueId = ueCfg->ueId; ueCb->crnti = ueCfg->crnti; + GET_UE_ID(ueCb->crnti, ueCb->ueId); ueCb->cellCb = cellCb; - schUlHqEntInit(cellCb, &cellCb->ueCb[ueCfg->ueId-1]); - schDlHqEntInit(cellCb, &cellCb->ueCb[ueCfg->ueId-1]); + schUlHqEntInit(cellCb, &cellCb->ueCb[ueCb->ueId-1]); + schDlHqEntInit(cellCb, &cellCb->ueCb[ueCb->ueId-1]); SCH_ALLOC(ueCb->hqDlmap, sizeof(SchHqDlMap*)*(ueCb->cellCb->numSlots)); SCH_ALLOC(ueCb->hqUlmap, sizeof(SchHqUlMap*)*(ueCb->cellCb->numSlots));