X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=src%2F5gnrsch%2Fsch_slot_ind.c;h=59501bc78b73c7631ff53430563d8a79086684dc;hb=ace81c4951bcf19172a207377f57da42dc112515;hp=42679065eada8acb066bae747316596d94c08add;hpb=d76403d03e7b7f60cd515f1b834d28278685a70b;p=o-du%2Fl2.git diff --git a/src/5gnrsch/sch_slot_ind.c b/src/5gnrsch/sch_slot_ind.c index 42679065e..59501bc78 100644 --- a/src/5gnrsch/sch_slot_ind.c +++ b/src/5gnrsch/sch_slot_ind.c @@ -73,7 +73,7 @@ uint8_t sendDlAllocToMac(DlSchedInfo *dlSchedInfo, Inst inst) memset(&pst, 0, sizeof(Pst)); FILL_PST_SCH_TO_MAC(pst, inst); - pst.event = EVENT_DL_ALLOC; + pst.event = EVENT_DL_SCH_INFO; return(*schMacDlAllocOpts[pst.selector])(&pst, dlSchedInfo); @@ -96,7 +96,7 @@ uint8_t sendDlAllocToMac(DlSchedInfo *dlSchedInfo, Inst inst) * RFAILED - failure * * ****************************************************************/ -void schCalcSlotValues(SlotIndInfo slotInd, SchSlotValue *schSlotValue) +void schCalcSlotValues(SlotTimingInfo slotInd, SchSlotValue *schSlotValue) { /**************************************************************** * PHY_DELTA - the physical layer delta * @@ -180,6 +180,12 @@ uint8_t schFillBoGrantDlSchedInfo(SchCellCb *cell, DlSchedInfo *dlSchedInfo, DlM } ueCb->dlInfo.dlLcCtxt[lcIdx].bo = 0; } + + if (!dlMsgAlloc->numLc) + { + DU_LOG("\nDEBUG --> SCH : No bo for any lcid\n"); + return ROK; + } /* pdcch and pdsch data is filled */ schDlRsrcAllocDlMsg(dlMsgAlloc, cell, crnti, &accumalatedSize, slot); @@ -221,7 +227,7 @@ uint8_t schFillBoGrantDlSchedInfo(SchCellCb *cell, DlSchedInfo *dlSchedInfo, DlM * RFAILED - failure * * ****************************************************************/ -uint8_t schProcessSlotInd(SlotIndInfo *slotInd, Inst schInst) +uint8_t schProcessSlotInd(SlotTimingInfo *slotInd, Inst schInst) { uint8_t ssb_rep, ueIdx, lcgIdx, ret = ROK; uint16_t slot; @@ -241,8 +247,13 @@ uint8_t schProcessSlotInd(SlotIndInfo *slotInd, Inst schInst) dlBrdcstAlloc->sib1Trans = NO_SIB1; cell = schCb[schInst].cells[schInst]; + if(cell == NULLP) + { + DU_LOG("\nERROR --> SCH : Cell Does not exist"); + return RFAILED; + } ssb_rep = cell->cellCfg.ssbSchCfg.ssbPeriod; - memcpy(&cell->slotInfo, slotInd, sizeof(SlotIndInfo)); + memcpy(&cell->slotInfo, slotInd, sizeof(SlotTimingInfo)); dlBrdcstAlloc->ssbIdxSupported = 1; slot = dlSchedInfo.schSlotValue.currentTime.slot; @@ -301,6 +312,9 @@ uint8_t schProcessSlotInd(SlotIndInfo *slotInd, Inst schInst) } } + /* Check for Pending RA Requests */ + schProcessRaReq(*slotInd, cell); + /* check for RAR */ if(cell->schDlSlotInfo[dlSchedInfo.schSlotValue.rarTime.slot]->rarInfo != NULLP) { @@ -325,7 +339,7 @@ uint8_t schProcessSlotInd(SlotIndInfo *slotInd, Inst schInst) dlBrdcstAlloc->ssbTrans, dlBrdcstAlloc->sib1Trans); - SCH_FREE(cell->schDlSlotInfo[slot]->rarInfo,sizeof(RarAlloc)); + SCH_FREE(cell->schDlSlotInfo[slot]->rarInfo,sizeof(RarInfo)); cell->schDlSlotInfo[slot]->rarInfo = NULLP; } @@ -390,13 +404,13 @@ uint8_t schProcessSlotInd(SlotIndInfo *slotInd, Inst schInst) } memset(dciInfo,0,sizeof(DciInfo)); /* update the SFN and SLOT */ - memcpy(&dlSchedInfo.schSlotValue.ulDciTime, slotInd, sizeof(SlotIndInfo)); + memcpy(&dlSchedInfo.schSlotValue.ulDciTime, slotInd, sizeof(SlotTimingInfo)); slot = dlSchedInfo.schSlotValue.ulDciTime.slot; /* Update PUSCH allocation */ schFillPuschAlloc(ueCb, slot, totDataReq, &schPuschInfo); /* Fill DCI for UL grant */ schFillUlDci(ueCb, schPuschInfo, dciInfo); - memcpy(&dciInfo->slotIndInfo, &dlSchedInfo.schSlotValue.ulDciTime, sizeof(SlotIndInfo)); + memcpy(&dciInfo->slotIndInfo, &dlSchedInfo.schSlotValue.ulDciTime, sizeof(SlotTimingInfo)); dlSchedInfo.ulGrant = dciInfo; } }