+ /* check for RAR */
+ if(cell->schDlSlotInfo[dlSchedInfo.schSlotValue.rarTime.slot]->rarInfo != NULLP)
+ {
+ slot = dlSchedInfo.schSlotValue.rarTime.slot;
+ SCH_ALLOC(rarAlloc, sizeof(RarAlloc));
+ if(!rarAlloc)
+ {
+ DU_LOG("\nMAC: Memory Allocation failed for RAR alloc");
+ return RFAILED;
+ }
+
+ dlSchedInfo.rarAlloc = rarAlloc;
+
+ /* RAR info is copied, this was earlier filled in schProcessRachInd */
+ memcpy(&rarAlloc->rarInfo,cell->schDlSlotInfo[slot]->rarInfo, sizeof(RarInfo));
+
+ /* pdcch and pdsch data is filled */
+ schFillRar(rarAlloc,
+ cell->schDlSlotInfo[slot]->rarInfo->raRnti,
+ cell->cellCfg.phyCellId,
+ cell->cellCfg.ssbSchCfg.ssbOffsetPointA);
+
+ SCH_FREE(cell->schDlSlotInfo[slot]->rarInfo,sizeof(RarAlloc));
+ cell->schDlSlotInfo[slot]->rarInfo = NULLP;
+ }
+
+ /* check for MSG4 */
+ if(cell->schDlSlotInfo[dlSchedInfo.schSlotValue.msg4Time.slot]->msg4Info != NULLP)
+ {
+ slot = dlSchedInfo.schSlotValue.msg4Time.slot;
+ SCH_ALLOC(msg4Alloc, sizeof(Msg4Alloc));
+ if(!msg4Alloc)
+ {
+ DU_LOG("\nMAC: Memory Allocation failed for msg4 alloc");
+ return RFAILED;
+ }
+
+ dlSchedInfo.msg4Alloc = msg4Alloc;
+
+ /* Msg4 info is copied, this was earlier filled in macSchDlRlcBoInfo */
+ memcpy(&msg4Alloc->msg4Info, cell->schDlSlotInfo[slot]->msg4Info, \
+ sizeof(Msg4Info));
+
+ /* pdcch and pdsch data is filled */
+ schDlRsrcAllocMsg4(msg4Alloc, cell, dlSchedInfo.schSlotValue.msg4Time.slot);
+
+ /* PUCCH resource */
+ schAllocPucchResource(cell, msg4Alloc->msg4Info.crnti, dlSchedInfo.schSlotValue.msg4Time.slot);
+
+ SCH_FREE(cell->schDlSlotInfo[dlSchedInfo.schSlotValue.msg4Time.slot]->msg4Info, sizeof(Msg4Info));
+ cell->schDlSlotInfo[dlSchedInfo.schSlotValue.msg4Time.slot]->msg4Info = NULL;
+ }
+
+
+ /* send msg to MAC */
+ ret = sendDlAllocToMac(&dlSchedInfo, schInst);