BuildK0K1Table(ueCb->cellCb, &ueCb->k0K1InfoTbl, false, pdschCfg,\
ueCfg->spCellCfg.servCellCfg.initDlBwp.pdschCfg, dlDataToUlAck->dlDataToUlAckListCount,\
dlDataToUlAck->dlDataToUlAckList);
+ }
+ else
+ {
+ BuildK0K1Table(ueCb->cellCb, &ueCb->k0K1InfoTbl, false, pdschCfg,\
+ ueCfg->spCellCfg.servCellCfg.initDlBwp.pdschCfg, DEFAULT_UL_ACK_LIST_COUNT, defaultUlAckTbl);
+ }
ueCb->k0K1TblPrsnt = true;
BuildK2InfoTable(ueCb->cellCb, ueCfg->spCellCfg.servCellCfg.initUlBwp.puschCfg.timeDomRsrcAllocList,\
ueCfg->spCellCfg.servCellCfg.initUlBwp.puschCfg.numTimeDomRsrcAlloc,\
NULLP, &ueCb->k2InfoTbl);
ueCb->k2TblPrsnt = true;
- }
}
}
if (isRetx == FALSE)
{
puschInfo.harqProcId = SCH_HARQ_PROC_ID;
+ puschInfo.crnti = ueCb->crnti;
puschInfo.fdAlloc.resAllocType = SCH_ALLOC_TYPE_1;
puschInfo.fdAlloc.resAlloc.type1.startPrb = startPrb;
puschInfo.fdAlloc.resAlloc.type1.numPrb = numRb;
else
{
puschInfo.harqProcId = hqP->procId;
+ puschInfo.crnti = ueCb->crnti;
puschInfo.fdAlloc.resAllocType = hqP->puschResType;
puschInfo.fdAlloc.resAlloc.type1.startPrb = hqP->puschStartPrb;
puschInfo.fdAlloc.resAlloc.type1.numPrb = hqP->puschNumPrb;
#endif
}
schUlSlotInfo = cellCb->schUlSlotInfo[puschTime.slot];
- SCH_ALLOC(schUlSlotInfo->schPuschInfo, sizeof(SchPuschInfo));
- if(!schUlSlotInfo->schPuschInfo)
+ SCH_ALLOC(schUlSlotInfo->schPuschInfo[ueCb->ueId - 1], sizeof(SchPuschInfo));
+ if(!schUlSlotInfo->schPuschInfo[ueCb->ueId - 1])
{
DU_LOG("\nERROR --> SCH: Memory allocation failed in schAllocMsg3Pusch");
return RFAILED;
}
- memcpy(schUlSlotInfo->schPuschInfo, &puschInfo, sizeof(SchPuschInfo));
+ cellCb->schUlSlotInfo[puschTime.slot]->puschPres = true;
+ memcpy(schUlSlotInfo->schPuschInfo[ueCb->ueId - 1], &puschInfo, sizeof(SchPuschInfo));
return ROK;
}
+
/*******************************************************************
*
* @brief Fills UL DCI information for MSG3 retransmission
{
SchDlHqProcCb *hqP;
SchHqDlMap *hqDlMap;
- CmLList *node;
+ CmLList *node = NULLP;
uint8_t fdbkPos = 0;
hqDlMap = ueCb->hqDlmap[slotInd->slot];
{
return;
}
- if (ueCb->cellCb->raCb[ueCb->ueId-1].raState != SCH_RA_STATE_MSG4_PENDING)
+
+ while(fdbkPos < numHarq)
{
node = hqDlMap->hqList.first;
- while(node)
+ if(node == NULLP)
+ {
+ DU_LOG("\nERROR : SCH --> DL HARQ list is empty thus no need to process the dl harq feedback!");
+ return;
+ }
+ if (ueCb->cellCb->raCb[ueCb->ueId-1].raState != SCH_RA_STATE_MSG4_PENDING)
+ {
+ while(node)
+ {
+ hqP = (SchDlHqProcCb*)node->node;
+ node = node->next;
+ cmLListDelFrm(&hqDlMap->hqList, &hqP->dlSlotLnk);
+ /*
+ Decode harq feedback if needed post FAPI message decoding also or check how to decode this FAPI msg.
+ case 1 semi static harq Ack/Nack codebook //Supported
+ case 2 dynamic harq ACK/NACK codebook //Not supported
+ */
+ schDlHqFeedbackUpdate(hqP, harqPayload[fdbkPos++], HQ_TB_ACKED);//Marking 2nd TB as ACKED for now as only one TB to be used
+ }
+ }
+ else
{
hqP = (SchDlHqProcCb*)node->node;
- node = node->next;
- cmLListDelFrm(&hqDlMap->hqList, &hqP->ulSlotLnk);
- /*
- Decode harq feedback if needed post FAPI message decoding also or check how to decode this FAPI msg.
- case 1 semi static harq Ack/Nack codebook //Supported
- case 2 dynamic harq ACK/NACK codebook //Not supported
- */
- schDlHqFeedbackUpdate(hqP, harqPayload[fdbkPos++], HQ_TB_ACKED);//Marking 2nd TB as ACKED for now as only one TB to be used
+ cmLListDelFrm(&hqDlMap->hqList, &hqP->dlSlotLnk);
+ schMsg4FeedbackUpdate(hqP, harqPayload[fdbkPos++]);
}
}
- else
- {
- node = hqDlMap->hqList.first;
- hqP = (SchDlHqProcCb*)node->node;
- cmLListDelFrm(&hqDlMap->hqList, &hqP->ulSlotLnk);
- schMsg4FeedbackUpdate(hqP, harqPayload[fdbkPos++]);
- }
}
/**********************************************************************
End of file