X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=src%2F5gnrsch%2Fsch_common.c;h=c8a6cca950d2be3963ab506c2bd16f70f820b86c;hb=904e86bfdd8b8caacb73b9b7ae40c279e5befb84;hp=c441a0c8c3126196ed4f643687ca262c9230f3d3;hpb=41eaaec52d3fe0d5c003e6c0676e9a18fc8ba37a;p=o-du%2Fl2.git diff --git a/src/5gnrsch/sch_common.c b/src/5gnrsch/sch_common.c index c441a0c8c..c8a6cca95 100644 --- a/src/5gnrsch/sch_common.c +++ b/src/5gnrsch/sch_common.c @@ -413,15 +413,26 @@ uint16_t fillPucchResourceInfo(SchPucchInfo *schPucchInfo, Inst inst, SlotTiming SchCellCb *cell = schCb[inst].cells[inst]; SchPucchCfgCmn *pucchCfg = NULLP; SchBwpParams *ulBwp = NULLP; +#ifdef NR_DRX + SchUeCb *ueCb = NULLP; +#endif uint16_t startPrb; GET_UE_ID(schPucchInfo->rnti, ueId); ueIdx = ueId -1; - if(cell->ueCb[ueIdx].ueCfg.spCellCfg.servCellCfg.initUlBwp.pucchCfgPres) +#ifdef NR_DRX + ueCb = schGetUeCb(cell, schPucchInfo->rnti); + if(ueCb->ueDrxInfoPres) + { + if(!ueCb->drxUeCb.drxUlUeActiveStatus) + return RFAILED; + } +#endif + if(cell->ueCb[ueIdx].ueCfg.spCellCfg.servCellRecfg.initUlBwp.pucchCfgPres) { /* fill pucch dedicated cfg */ ret = fillUlSchedPucchDedicatedCfg(cell,\ - &cell->ueCb[ueIdx].ueCfg.spCellCfg.servCellCfg.initUlBwp.pucchCfg, &slotInfo, schPucchInfo); + &cell->ueCb[ueIdx].ueCfg.spCellCfg.servCellRecfg.initUlBwp.pucchCfg, &slotInfo, schPucchInfo); if(ret == RFAILED) { memset(schPucchInfo, 0, sizeof(SchPucchInfo)); @@ -470,6 +481,9 @@ uint16_t fillPucchResourceInfo(SchPucchInfo *schPucchInfo, Inst inst, SlotTiming uint8_t schUlResAlloc(SchCellCb *cell, Inst schInst) { int ret = ROK; +#ifdef NR_DRX + SchUeCb *ueCb; +#endif UlSchedInfo ulSchedInfo; SchUlSlotInfo *schUlSlotInfo = NULLP; SlotTimingInfo ulTimingInfo; @@ -491,6 +505,15 @@ uint8_t schUlResAlloc(SchCellCb *cell, Inst schInst) if(schUlSlotInfo->schPuschInfo) { ulSchedInfo.crnti = schUlSlotInfo->schPuschInfo->crnti; + /* Check the ue drx status if the UE is active for uplink scheduling or not */ +#ifdef NR_DRX + ueCb = schGetUeCb(cell, ulSchedInfo.crnti); + if(ueCb->ueDrxInfoPres) + { + if(!ueCb->drxUeCb.drxUlUeActiveStatus) + return RFAILED; + } +#endif ulSchedInfo.dataType |= SCH_DATATYPE_PUSCH; memcpy(&ulSchedInfo.schPuschInfo, schUlSlotInfo->schPuschInfo, sizeof(SchPuschInfo)); @@ -507,6 +530,10 @@ uint8_t schUlResAlloc(SchCellCb *cell, Inst schInst) memcpy(&ulSchedInfo.schPucchInfo, &schUlSlotInfo->schPucchInfo, sizeof(SchPucchInfo)); } + else + { + return RFAILED; + } memset(&schUlSlotInfo->schPucchInfo, 0, sizeof(SchPucchInfo)); } @@ -789,8 +816,8 @@ uint8_t schDlRsrcAllocDlMsg(SchCellCb *cell, SlotTimingInfo slotTime, uint16_t c GET_UE_ID(crnti, ueId); ueCb = cell->ueCb[ueId-1]; - coreset1 = ueCb.ueCfg.spCellCfg.servCellCfg.initDlBwp.pdcchCfg.cRSetToAddModList[0]; - pdschCfg = ueCb.ueCfg.spCellCfg.servCellCfg.initDlBwp.pdschCfg; + coreset1 = ueCb.ueCfg.spCellCfg.servCellRecfg.initDlBwp.pdcchCfg.cRSetToAddModList[0]; + pdschCfg = ueCb.ueCfg.spCellCfg.servCellRecfg.initDlBwp.pdschCfg; /* fill BWP */ bwp->freqAlloc.numPrb = MAX_NUM_RB; @@ -2012,8 +2039,8 @@ bool schProcessSrOrBsrReq(SchCellCb *cell, SlotTimingInfo currTime, uint8_t ueId if(schGetSlotSymbFrmt(dciTime.slot, cell->slotFrmtBitMap) == DL_SLOT) #endif { - if(ueCb->ueCfg.spCellCfg.servCellCfg.initUlBwp.k2TblPrsnt) - k2InfoTbl = &ueCb->ueCfg.spCellCfg.servCellCfg.initUlBwp.k2InfoTbl; + if(ueCb->ueCfg.spCellCfg.servCellRecfg.initUlBwp.k2TblPrsnt) + k2InfoTbl = &ueCb->ueCfg.spCellCfg.servCellRecfg.initUlBwp.k2InfoTbl; else k2InfoTbl = &cell->cellCfg.schInitialUlBwp.k2InfoTbl; @@ -2021,7 +2048,7 @@ bool schProcessSrOrBsrReq(SchCellCb *cell, SlotTimingInfo currTime, uint8_t ueId { k2Index = k2InfoTbl->k2TimingInfo[dciTime.slot].k2Indexes[k2TblIdx]; - if(!ueCb->ueCfg.spCellCfg.servCellCfg.initUlBwp.k2TblPrsnt) + if(!ueCb->ueCfg.spCellCfg.servCellRecfg.initUlBwp.k2TblPrsnt) { k2Val = cell->cellCfg.schInitialUlBwp.puschCommon.timeDomRsrcAllocList[k2Index].k2; startSymb = cell->cellCfg.schInitialUlBwp.puschCommon.timeDomRsrcAllocList[k2Index].startSymbol; @@ -2029,9 +2056,9 @@ bool schProcessSrOrBsrReq(SchCellCb *cell, SlotTimingInfo currTime, uint8_t ueId } else { - k2Val = ueCb->ueCfg.spCellCfg.servCellCfg.initUlBwp.puschCfg.timeDomRsrcAllocList[k2Index].k2; - startSymb = ueCb->ueCfg.spCellCfg.servCellCfg.initUlBwp.puschCfg.timeDomRsrcAllocList[k2Index].startSymbol; - symbLen = ueCb->ueCfg.spCellCfg.servCellCfg.initUlBwp.puschCfg.timeDomRsrcAllocList[k2Index].symbolLength; + k2Val = ueCb->ueCfg.spCellCfg.servCellRecfg.initUlBwp.puschCfg.timeDomRsrcAllocList[k2Index].k2; + startSymb = ueCb->ueCfg.spCellCfg.servCellRecfg.initUlBwp.puschCfg.timeDomRsrcAllocList[k2Index].startSymbol; + symbLen = ueCb->ueCfg.spCellCfg.servCellRecfg.initUlBwp.puschCfg.timeDomRsrcAllocList[k2Index].symbolLength; } /* Check for number of Symbol of PUSCH should be same as original in case of transmisson*/ /* Calculating time frame to send PUSCH for SR */ @@ -2045,6 +2072,10 @@ bool schProcessSrOrBsrReq(SchCellCb *cell, SlotTimingInfo currTime, uint8_t ueId continue; } k2Found = true; + if(hqP) + { + ADD_DELTA_TO_TIME(puschTime, (*hqP)->puschTime, 0, cell->numSlots); + } break; } } @@ -2052,7 +2083,7 @@ bool schProcessSrOrBsrReq(SchCellCb *cell, SlotTimingInfo currTime, uint8_t ueId if(k2Found == true) { ret = schCalculateUlTbs(ueCb, puschTime, symbLen, &startPrb, &totDataReq, isRetx, *hqP); - + if(totDataReq > 0 && ret == ROK) { SCH_ALLOC(dciInfo, sizeof(DciInfo));