X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=src%2F5gnrsch%2Fsch_crc.c;h=a49096dac7262adb105cdcf69a3724fc6ac5b19f;hb=HEAD;hp=406d67f4fbc20f5b4a8bc9e9524ca1d5c1b23902;hpb=6bd517aac8dc6e3166389be3f468c58ba56d5608;p=o-du%2Fl2.git diff --git a/src/5gnrsch/sch_crc.c b/src/5gnrsch/sch_crc.c index 406d67f4f..a49096dac 100644 --- a/src/5gnrsch/sch_crc.c +++ b/src/5gnrsch/sch_crc.c @@ -24,6 +24,7 @@ #include "du_app_mac_inf.h" #include "mac_sch_interface.h" #include "sch.h" +#include "sch_tmr.h" #include "sch_utils.h" /** @@ -31,7 +32,7 @@ * * @details * - * Function : schProcessCrcInd + * Function : SchProcCrcInd * * This function process CRC indication * @@ -41,24 +42,25 @@ * -# ROK * -# RFAILED **/ -uint8_t schProcessCrcInd(CrcIndInfo *crcInd, Inst schInst) +uint8_t SchProcCrcInd(Pst *pst, CrcIndInfo *crcInd) { - SchCellCb *cell = schCb[schInst].cells[schInst]; - uint16_t count=0; + uint16_t crcCnt=0; uint8_t ueId=0; SchUlHqProcCb *hqP = NULLP; - - while(count numCrcInd) + Inst schInst = pst->dstInst - SCH_INST_START; + SchCellCb *cell = schCb[schInst].cells[schInst]; + + while(crcCnt < crcInd->numCrcInd) { GET_UE_ID(crcInd->crnti, ueId); if (cell->raCb[ueId-1].raState == SCH_RA_STATE_MSG3_PENDING) { - if (crcInd->crcInd[count]) + if (crcInd->crcInd[crcCnt]) { /* failure case*/ - if (cell->raCb[ueId-1].msg3HqProc.tbInfo.txCntr < cell->cellCfg.schRachCfg.maxMsg3Tx) + if (cell->raCb[ueId-1].msg3HqProc.tbInfo.txCntr < cell->maxMsg3Tx) { - addUeToBeScheduled(cell, ueId); + cell->api->SchCrcInd(cell, ueId); cell->raCb[ueId - 1].retxMsg3HqProc = &cell->raCb[ueId - 1].msg3HqProc; } else @@ -76,40 +78,40 @@ uint8_t schProcessCrcInd(CrcIndInfo *crcInd, Inst schInst) } else { - if(cell->ueCb[ueId-1].hqUlmap[crcInd->timingInfo.slot]) + if (cell->ueCb[ueId-1].hqUlmap[crcInd->timingInfo.slot]->hqList.count == 0) { - if (cell->ueCb[ueId-1].hqUlmap[crcInd->timingInfo.slot]->hqList.count == 0) - { - DU_LOG("\n ERROR no harq stored in ul hq map at slot %d ue id %d\n",crcInd->timingInfo.slot, ueId); - continue; - } - if (cell->ueCb[ueId-1].hqUlmap[crcInd->timingInfo.slot]->hqList.first == 0) - { - DU_LOG("\n ERROR NULL harq stored in ul hq map at slot %d ue id %d\n",crcInd->timingInfo.slot, ueId); - continue; - } - hqP = (SchUlHqProcCb*) cell->ueCb[ueId-1].hqUlmap[crcInd->timingInfo.slot]->hqList.first->node; - if(hqP == NULLP) - { - continue; + crcCnt++; + continue; + } + if (cell->ueCb[ueId-1].hqUlmap[crcInd->timingInfo.slot]->hqList.first == 0) + { + DU_LOG("\nERROR --> SCH: NULL harq stored in ul hq map at slot %d ue id %d\n",\ + crcInd->timingInfo.slot, ueId); + crcCnt++; + continue; + } + hqP = (SchUlHqProcCb*) cell->ueCb[ueId-1].hqUlmap[crcInd->timingInfo.slot]->hqList.first->node; + if(hqP == NULLP) + { + crcCnt++; + continue; + } + else + { + if (crcInd->crcInd[crcCnt]) + { + /* failure case*/ + schUlHqProcessNack(hqP); } else { - if (crcInd->crcInd[count]) - { - /* failure case*/ - schUlHqProcessNack(hqP); - } - else - { - /* pass case*/ - schUlHqProcessAck(hqP); - } + /* pass case*/ + schUlHqProcessAck(hqP); } - cmLListDelFrm(&(cell->ueCb[ueId-1].hqUlmap[crcInd->timingInfo.slot]->hqList), &hqP->ulSlotLnk); } + cmLListDelFrm(&(cell->ueCb[ueId-1].hqUlmap[crcInd->timingInfo.slot]->hqList), &hqP->ulSlotLnk); } - count++; + crcCnt++; } return ROK; }