uint8_t ueIdx, lcIdx;
uint16_t slot;
uint16_t crnti = 0;
- uint16_t accumalatedSize = 0;
+ uint32_t accumalatedSize = 0;
SchUeCb *ueCb = NULLP;
while(cell->boIndBitMap)
SCH_ALLOC(dlMsgAlloc, sizeof(DlMsgAlloc));
if(!dlMsgAlloc)
{
- DU_LOG("\nMAC: Memory Allocation failed for ded DL msg alloc");
+ DU_LOG("\nERROR --> SCH : Memory Allocation failed for ded DL msg alloc");
return RFAILED;
}
memset(dlMsgAlloc, 0, sizeof(DlMsgAlloc));
/* calculation for BO includse RLC and MAC header size */
dlMsgAlloc->lcSchInfo[dlMsgAlloc->numLc].schBytes = \
- ueCb->dlInfo.dlLcCtxt[lcIdx].bo + RLC_HDR_SIZE + MAC_HDR_SIZE;
+ ueCb->dlInfo.dlLcCtxt[lcIdx].bo + MAC_HDR_SIZE;
accumalatedSize += dlMsgAlloc->lcSchInfo[dlMsgAlloc->numLc].schBytes;
dlMsgAlloc->numLc++;
}
}
/* pdcch and pdsch data is filled */
- schDlRsrcAllocDlMsg(dlMsgAlloc, cell, crnti, accumalatedSize, slot);
+ schDlRsrcAllocDlMsg(dlMsgAlloc, cell, crnti, &accumalatedSize, slot);
+ /* Calculated TB size could be less than the total size requested.
+ * Hence, updated the scheduled bytes report. Following is valid only for
+ * one LC.
+ * TODO : Update the scheduling byte report for multiple LC based on QCI
+ * and Priority */
+ dlMsgAlloc->lcSchInfo[dlMsgAlloc->numLc -1].schBytes = accumalatedSize;
/* PUCCH resource */
schAllocPucchResource(cell, dlMsgAlloc->crnti, slot);
memcpy(&cell->slotInfo, slotInd, sizeof(SlotIndInfo));
dlBrdcstAlloc->ssbIdxSupported = 1;
- sfnSlot = ((dlSchedInfo.schSlotValue.broadcastTime.sfn * 10) +
- dlSchedInfo.schSlotValue.broadcastTime.slot);
+ sfnSlot = dlSchedInfo.schSlotValue.broadcastTime.sfn * cell->numSlots +
+ dlSchedInfo.schSlotValue.broadcastTime.slot;
slot = dlSchedInfo.schSlotValue.currentTime.slot;
if (sfnSlot % SCH_MIB_TRANS == 0)
{
dlBrdcstAlloc->ssbTrans = SSB_TRANSMISSION;
+ if(!cell->firstSsbTransmitted)
+ cell->firstSsbTransmitted = true;
}
- else if (sfnSlot % ssb_rep == 0)
+ else if (cell->firstSsbTransmitted && (sfnSlot % ssb_rep == 0))
{
dlBrdcstAlloc->ssbTrans = SSB_REPEAT;
}
if(sfnSlot % cell->cellCfg.sib1SchCfg.sib1NewTxPeriod == 0)
{
dlBrdcstAlloc->sib1Trans = SIB1_TRANSMISSION;
+ if(!cell->firstSib1Transmitted)
+ cell->firstSib1Transmitted = true;
}
- else if (sfnSlot % cell->cellCfg.sib1SchCfg.sib1RepetitionPeriod == 0)
+ else if (cell->firstSib1Transmitted && (sfnSlot % cell->cellCfg.sib1SchCfg.sib1RepetitionPeriod == 0))
{
dlBrdcstAlloc->sib1Trans = SIB1_REPITITION;
}
ret = schBroadcastAlloc(cell,dlBrdcstAlloc,slot);
if(ret != ROK)
{
- DU_LOG("\nschBroadcastAlloc failed");
+ DU_LOG("\nERROR --> SCH : schBroadcastAlloc failed");
return (ret);
}
}
SCH_ALLOC(rarAlloc, sizeof(RarAlloc));
if(!rarAlloc)
{
- DU_LOG("\nMAC: Memory Allocation failed for RAR alloc");
+ DU_LOG("\nERROR --> SCH : Memory Allocation failed for RAR alloc");
return RFAILED;
}
SCH_ALLOC(msg4Alloc, sizeof(DlMsgAlloc));
if(!msg4Alloc)
{
- DU_LOG("\nMAC: Memory Allocation failed for msg4 alloc");
+ DU_LOG("\nERROR --> SCH : Memory Allocation failed for msg4 alloc");
return RFAILED;
}
SCH_ALLOC(dciInfo, sizeof(DciInfo));
if(!dciInfo)
{
- DU_LOG("\nMAC: Memory Allocation failed for dciInfo alloc");
+ DU_LOG("\nERROR --> SCH : Memory Allocation failed for dciInfo alloc");
return RFAILED;
}
memset(dciInfo,0,sizeof(DciInfo));
ret = sendDlAllocToMac(&dlSchedInfo, schInst);
if(ret != ROK)
{
- DU_LOG("\nSending DL Broadcast allocation from SCH to MAC failed");
+ DU_LOG("\nERROR --> SCH : Sending DL Broadcast allocation from SCH to MAC failed");
return (ret);
}