X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=src%2F5gnrsch%2Fsch_ue_mgr.c;h=fcc671e314a82c49da4752557174db42814b7292;hb=2e3617064e27b8d7bb5ba74319f8c1c99491b8dd;hp=81e7309ceb1e32c0971947b1e724b6e83c00c87c;hpb=f1f733a2f14d22b8725e121fa0f5e70a7febc9af;p=o-du%2Fl2.git diff --git a/src/5gnrsch/sch_ue_mgr.c b/src/5gnrsch/sch_ue_mgr.c index 81e7309ce..fcc671e31 100644 --- a/src/5gnrsch/sch_ue_mgr.c +++ b/src/5gnrsch/sch_ue_mgr.c @@ -370,12 +370,17 @@ uint8_t fillSchUeCbFrmCfgReq(Inst inst, SchUeCb *ueCb, SchUeCfgReq *ueCfg) 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; - } } } @@ -1513,7 +1518,7 @@ void schUpdateHarqFdbk(SchUeCb *ueCb, uint8_t numHarq, uint8_t *harqPayload, Slo { SchDlHqProcCb *hqP; SchHqDlMap *hqDlMap; - CmLList *node; + CmLList *node = NULLP; uint8_t fdbkPos = 0; hqDlMap = ueCb->hqDlmap[slotInd->slot]; @@ -1522,29 +1527,37 @@ void schUpdateHarqFdbk(SchUeCb *ueCb, uint8_t numHarq, uint8_t *harqPayload, Slo { 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