void (* SchDeleteUlHqProcCb)(SchUlHqProcCb *hqP);
void (* SchScheduleSlot)(SchCellCb *cell, SlotTimingInfo *slotInd, Inst schInst);
uint32_t (* SchScheduleDlLc)(SlotTimingInfo pdcchTime, SlotTimingInfo pdschTime, uint8_t pdschNumSymbols, \
- bool isRetx, SchDlHqProcCb **hqP);
+ uint16_t *startPrb, bool isRetx, SchDlHqProcCb **hqP);
uint8_t (* SchScheduleUlLc)(SlotTimingInfo dciTime, SlotTimingInfo puschTime, uint8_t startStmb, \
uint8_t symbLen, bool isRetx, SchUlHqProcCb **hqP);
}SchAllApis;
{
if(*sharedPRB <= (estPrb - remReservedPRB))
{
- DU_LOG("\nDEBUG --> SCH: SharedPRB is less");
+ DU_LOG("\nDEBUG --> SCH: SharedPRB is less");
*sharedPRB = 0;
}
else
* RFAILED
*
* ****************************************************************/
-uint32_t schFcfsScheduleDlLc(SlotTimingInfo pdcchTime, SlotTimingInfo pdschTime, uint8_t pdschNumSymbols, bool isRetx, SchDlHqProcCb **hqP)
+uint32_t schFcfsScheduleDlLc(SlotTimingInfo pdcchTime, SlotTimingInfo pdschTime, uint8_t pdschNumSymbols, \
+ uint16_t *startPrb, bool isRetx, SchDlHqProcCb **hqP)
{
SchFcfsHqProcCb *fcfsHqProcCb;
SchUeCb *ueCb;
uint8_t lcIdx = 0;
- uint16_t startPrb = 0, maxFreePRB = 0;
+ uint16_t maxFreePRB = 0;
uint16_t mcsIdx = 0;
uint32_t accumalatedSize = 0;
CmLListCp *lcLL = NULLP;
}
/*[Step3]: Calculate Best FREE BLOCK with MAX PRB count*/
- maxFreePRB = searchLargestFreeBlock((*hqP)->hqEnt->cell, pdschTime, &startPrb, DIR_DL);
+ maxFreePRB = searchLargestFreeBlock((*hqP)->hqEnt->cell, pdschTime, startPrb, DIR_DL);
/*[Step4]: Estimation of PRB and BO which can be allocated to each LC in
* the list based on RRM policy*/
if((fcfsHqProcCb->lcCb.dedLcList.count == NULLP) || ((maxFreePRB < rsvdDedicatedPRB)))
{
fcfsHqProcCb->lcCb.sharedNumPrb = maxFreePRB;
- DU_LOG("\nDEBUG --> SCH : DL Only Default Slice is scheduled, sharedPRB Count:%d",\
+ DU_LOG("\nDEBUG --> SCH : DL Only Default Slice is scheduled, sharedPRB Count:%d",\
fcfsHqProcCb->lcCb.sharedNumPrb);
/*PRB Alloc for Default LCs*/
ulSchedInfo->prachSchInfo.prachFormat = prachFormat;
ulSchedInfo->prachSchInfo.numRa = numRa;
ulSchedInfo->prachSchInfo.prachStartSymb = prachStartSymbol;
- DU_LOG("\nINFO --> SCH : RACH occassion set for slot %d", prachOccasionTimingInfo.slot);
+ DU_LOG("\nINFO --> SCH : RACH occassion set for slot %d", prachOccasionTimingInfo.slot);
}
/**
* RFAILED
*
* ****************************************************************/
-uint32_t schSliceBasedScheduleDlLc(SlotTimingInfo pdcchTime, SlotTimingInfo pdschTime, uint8_t pdschNumSymbols, bool isRetx, SchDlHqProcCb **hqP)
+uint32_t schSliceBasedScheduleDlLc(SlotTimingInfo pdcchTime, SlotTimingInfo pdschTime, uint8_t pdschNumSymbols,\
+ uint16_t *startPrb, bool isRetx, SchDlHqProcCb **hqP)
{
SchSliceBasedHqProcCb *schSpcHqProcCb;
SchUeCb *ueCb;
uint8_t lcIdx = 0;
- uint16_t startPrb = 0, maxFreePRB = 0;
+ uint16_t maxFreePRB = 0;
uint16_t mcsIdx = 0;
uint32_t accumalatedSize = 0;
CmLListCp *lcLL = NULLP;
}
/*[Step3]: Calculate Best FREE BLOCK with MAX PRB count*/
- maxFreePRB = searchLargestFreeBlock((*hqP)->hqEnt->cell, pdschTime, &startPrb, DIR_DL);
+ maxFreePRB = searchLargestFreeBlock((*hqP)->hqEnt->cell, pdschTime, startPrb, DIR_DL);
/*[Step4]: Estimation of PRB and BO which can be allocated to each LC in
* the list based on RRM policy*/
if((schSpcHqProcCb->lcCb.dedLcList.count == NULLP) || ((maxFreePRB < rsvdDedicatedPRB)))
{
schSpcHqProcCb->lcCb.sharedNumPrb = maxFreePRB;
- DU_LOG("\nDEBUG --> SCH : DL Only Default Slice is scheduled, sharedPRB Count:%d",\
+ DU_LOG("\nDEBUG --> SCH : DL Only Default Slice is scheduled, sharedPRB Count:%d",\
schSpcHqProcCb->lcCb.sharedNumPrb);
/*PRB Alloc for Default LCs*/
fillDlMsgInfo(dciSlotAlloc, crnti, isRetx, *hqP);
dciSlotAlloc->transportBlock[0].ndi = isRetx;
- accumalatedSize = cell->api->SchScheduleDlLc(pdcchTime, pdschTime, pdschNumSymbols, isRetx, hqP);
+ accumalatedSize = cell->api->SchScheduleDlLc(pdcchTime, pdschTime, pdschNumSymbols, &startPrb, isRetx, hqP);
/*Below case will hit if NO LC(s) are allocated due to resource crunch*/
if (!accumalatedSize)
DU_LOG("\nCall Flow: ENTEGTP -> ENTDUAPP : EVENT_HDL_RECV_DL_DATA\n");
#endif
- DU_LOG("\nDEBUG --> DU_APP : Processing DL data in duHdlEgtpDlData()");
+ DU_LOG("\nDEBUG --> DU_APP : Processing DL data in duHdlEgtpDlData()");
if(!egtpMsg->msg)
{