SsbInfo ssbInfo[MAX_SSB_IDX]; /*!< SSB info */
bool sib1Pres; /*!< Flag to determine if SIB1 is present in this slot */
uint8_t pdcchUe; /*!< UE for which PDCCH Common is scheduled in this slot */
- uint8_t pdschUe; /*!< UE for which PDSCH is scheduled in this slot */
RarAlloc *rarAlloc[MAX_NUM_UE]; /*!< RAR allocation per UE*/
DciInfo *ulGrant;
DlMsgSchInfo *dlMsgAlloc[MAX_NUM_UE]; /*!< Dl msg allocation per UE*/
schAllocPucchResource(cell, pucchTime, cell->raCb[ueId-1].tcrnti, &cell->ueCb[ueId-1], isRetxMsg4, *msg4HqProc);
cell->schDlSlotInfo[pdcchTime.slot]->pdcchUe = ueId;
- cell->schDlSlotInfo[pdschTime.slot]->pdschUe = ueId;
cell->schUlSlotInfo[pucchTime.slot]->pucchUe = ueId;
cell->raCb[ueId-1].msg4recvd = FALSE;
if(isRetxMsg4)
bool isMsg4Pending = false, isMsg4Scheduled = false;
bool isDlMsgPending = false, isDlMsgScheduled = false;
bool isUlGrantPending = false, isUlGrantScheduled = false;
+ bool isNodeFreed = false;
fcfsCell = (SchFcfsCellCb *)cell->schSpcCell;
/* Select first UE in the linked list to be scheduled next */
pendingUeNode = fcfsCell->ueToBeScheduled.first;
- if(pendingUeNode)
+ while(pendingUeNode)
{
if(pendingUeNode->node)
{
if(isRarScheduled || isMsg4Scheduled)
{
schFcfsRemoveUeFrmScheduleLst(cell, pendingUeNode);
+ isNodeFreed = true;
}
/* If RAR/MSG4 is pending but couldnt be scheduled then,
* put this UE at the end of linked list to be scheduled later */
else
{
schFcfsRemoveUeFrmScheduleLst(cell, pendingUeNode);
+ isNodeFreed = true;
}
}
}
+ if(cell->schDlSlotInfo[slotInd->slot]->prbAlloc.numPrbAlloc >= MAX_NUM_RB)
+ {
+ DU_LOG("\nINFO --> SCH: No PRB available to proceed with next UE");
+ return;
+ }
+ if(isNodeFreed == false)
+ {
+ pendingUeNode= pendingUeNode->next;
+ }
+ else
+ {
+ pendingUeNode = fcfsCell->ueToBeScheduled.first;
+ }
}
}
ADD_DELTA_TO_TIME(dciTime, rarTime, k0, cell->numSlots);
rarSlot = rarTime.slot;
- /* If PDSCH is already scheduled on this slot, cannot schedule PDSCH for another UE here. */
- if(cell->schDlSlotInfo[rarSlot]->pdschUe != 0)
- continue;
-
/* If Contention-FREE RA is in progress, allocate resources for
* PUCCH for next UL message */
if(cell->raReq[ueId-1]->isCFRA)
}
cell->schDlSlotInfo[dciSlot]->pdcchUe = ueId;
- cell->schDlSlotInfo[rarSlot]->pdschUe = ueId;
if(cell->raReq[ueId-1]->isCFRA)
cell->schUlSlotInfo[pucchTime.slot]->pucchUe = ueId;
else
schAllocPucchResource(cell, pucchTime, crnti, ueCb, isRetx, *hqP);
- cell->schDlSlotInfo[pdschTime.slot]->pdschUe = ueId;
cell->schUlSlotInfo[pucchTime.slot]->pucchUe = ueId;
/*Re-setting the BO's of all DL LCs in this UE*/
continue;
}
#endif
- if(cell->schDlSlotInfo[pdschTime->slot]->pdschUe != 0)
- {
- continue;
- }
numK1 = k0K1InfoTbl->k0k1TimingInfo[pdcchTime->slot].k0Indexes[k0TblIdx].k1TimingInfo.numK1;
for(k1TblIdx = 0; k1TblIdx < numK1; k1TblIdx++)
#define MAX_NUM_CELL 2 /* Changed to 2 to support cell Id 2 even if there is only one cell in DU */
#define MAX_NUM_MU 4
#define MAX_NUM_UE 3
-#define MAX_NUM_UE_PER_TTI 1
+#define MAX_NUM_UE_PER_TTI 2
#define MAX_NUM_LC MAX_DRB_LCID + 1 /*Spec 38.331: Sec 6.4: maxLC-ID Keyword*/
#define MAX_NUM_SRB 3 /* Max. no of Srbs */
#define MAX_NUM_DRB 29 /* spec 38.331, maxDRB */