X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=src%2F5gnrsch%2Fsch_common.c;h=cb97e8f6ecbc8e116d16aa4fc7bae4929c76ca3a;hb=6fee61a10e1ad48ff7105b3201038ac8a337fd4a;hp=6b01730c041e94cbd31b137b009d2ffa14c9f9ee;hpb=b864875ccd95278bcfcc40187def1ed7a6fb8aa4;p=o-du%2Fl2.git diff --git a/src/5gnrsch/sch_common.c b/src/5gnrsch/sch_common.c index 6b01730c0..cb97e8f6e 100644 --- a/src/5gnrsch/sch_common.c +++ b/src/5gnrsch/sch_common.c @@ -671,7 +671,7 @@ uint8_t schDlRsrcAllocMsg4(SchCellCb *cell, SlotTimingInfo msg4Time, uint8_t ueI pdsch->numLayers = 1; pdsch->transmissionScheme = 0; pdsch->refPoint = 0; - pdsch->dmrs.dlDmrsSymbPos = 4; /* Bitmap value 00000000000100 i.e. using 3rd symbol for PDSCH DMRS */ + pdsch->dmrs.dlDmrsSymbPos = DL_DMRS_SYMBOL_POS; pdsch->dmrs.dmrsConfigType = 0; /* type-1 */ pdsch->dmrs.dlDmrsScramblingId = cell->cellCfg.phyCellId; pdsch->dmrs.scid = 0; @@ -864,7 +864,7 @@ uint8_t schDlRsrcAllocDlMsg(SchCellCb *cell, SlotTimingInfo slotTime, uint16_t c pdsch->numLayers = 1; pdsch->transmissionScheme = 0; pdsch->refPoint = 0; - pdsch->dmrs.dlDmrsSymbPos = 4; /* Bitmap value 00000000000100 i.e. using 3rd symbol for PDSCH DMRS */ + pdsch->dmrs.dlDmrsSymbPos = DL_DMRS_SYMBOL_POS; pdsch->dmrs.dmrsConfigType = 0; /* type-1 */ pdsch->dmrs.dlDmrsScramblingId = cell->cellCfg.phyCellId; pdsch->dmrs.scid = 0; @@ -2056,83 +2056,51 @@ void schIncrSlot(SlotTimingInfo *timingInfo, uint8_t incr, uint16_t numSlotsPerR * @return pointer to return Value(ROK, RFAILED) * * ****************************************************************/ -uint8_t schFillPagePdschCfg(SchCellCb *cell, PdschCfg *pagePdschCfg, SlotTimingInfo slotTime, uint16_t tbSize, uint8_t mcs, uint16_t startPrb) +uint8_t schFillPagePdschCfg(SchCellCb *cell, PageDlSch *pageDlSch, SlotTimingInfo slotTime, uint16_t tbSize, uint8_t mcs, uint16_t startPrb) { - uint8_t cwCount = 0; uint8_t dmrsStartSymbol, startSymbol, numSymbol; /* fill the PDSCH PDU */ - pagePdschCfg->pduBitmap = 0; /* PTRS and CBG params are excluded */ - pagePdschCfg->rnti = P_RNTI; /* SI-RNTI */ - pagePdschCfg->pduIndex = 0; - pagePdschCfg->numCodewords = 1; - for(cwCount = 0; cwCount < pagePdschCfg->numCodewords; cwCount++) - { - pagePdschCfg->codeword[cwCount].targetCodeRate = 308; - pagePdschCfg->codeword[cwCount].qamModOrder = 2; - pagePdschCfg->codeword[cwCount].mcsIndex = mcs; - pagePdschCfg->codeword[cwCount].mcsTable = 0; /* notqam256 */ - pagePdschCfg->codeword[cwCount].rvIndex = 0; - tbSize = tbSize + TX_PAYLOAD_HDR_LEN; - pagePdschCfg->codeword[cwCount].tbSize = tbSize; - } - pagePdschCfg->dataScramblingId = cell->cellCfg.phyCellId; - pagePdschCfg->numLayers = 1; - pagePdschCfg->transmissionScheme = 0; - pagePdschCfg->refPoint = 0; - pagePdschCfg->dmrs.dlDmrsSymbPos = 4; /* Bitmap value 00000000000100 i.e. using 3rd symbol for PDSCH DMRS */ - pagePdschCfg->dmrs.dmrsConfigType = 0; /* type-1 */ - pagePdschCfg->dmrs.dlDmrsScramblingId = cell->cellCfg.phyCellId; - pagePdschCfg->dmrs.scid = 0; - pagePdschCfg->dmrs.numDmrsCdmGrpsNoData = 1; - pagePdschCfg->dmrs.dmrsPorts = 0x0001; - pagePdschCfg->dmrs.mappingType = DMRS_MAP_TYPE_A; /* Type-A */ - pagePdschCfg->dmrs.nrOfDmrsSymbols = NUM_DMRS_SYMBOLS; - pagePdschCfg->dmrs.dmrsAddPos = DMRS_ADDITIONAL_POS; - - pagePdschCfg->pdschFreqAlloc.resourceAllocType = 1; /* RAT type-1 RIV format */ + pageDlSch->tbInfo.mcs = mcs; + tbSize = tbSize + TX_PAYLOAD_HDR_LEN; + pageDlSch->tbInfo.tbSize = tbSize; + pageDlSch->dmrs.dmrsType = 0; /* type-1 */ + pageDlSch->dmrs.nrOfDmrsSymbols = NUM_DMRS_SYMBOLS; + pageDlSch->dmrs.dmrsAddPos = DMRS_ADDITIONAL_POS; + /* the RB numbering starts from coreset0, and PDSCH is always above SSB */ - pagePdschCfg->pdschFreqAlloc.startPrb = startPrb; - pagePdschCfg->pdschFreqAlloc.numPrb = schCalcNumPrb(tbSize, mcs, NUM_PDSCH_SYMBOL); - pagePdschCfg->pdschFreqAlloc.vrbPrbMapping = 0; /* non-interleaved */ - pagePdschCfg->pdschTimeAlloc.rowIndex = 1; + pageDlSch->freqAlloc.startPrb = startPrb; + pageDlSch->freqAlloc.numPrb = schCalcNumPrb(tbSize, mcs, NUM_PDSCH_SYMBOL); + pageDlSch->vrbPrbMapping = 0; /* non-interleaved */ /* This is Intel's requirement. PDSCH should start after PDSCH DRMS symbol */ - pagePdschCfg->pdschTimeAlloc.startSymb = 3; /* spec-38.214, Table 5.1.2.1-1 */ - pagePdschCfg->pdschTimeAlloc.numSymb = NUM_PDSCH_SYMBOL; + pageDlSch->timeAlloc.mappingType = DMRS_MAP_TYPE_A; /* Type-A */ + pageDlSch->timeAlloc.startSymb = 3; /* spec-38.214, Table 5.1.2.1-1 */ + pageDlSch->timeAlloc.numSymb = NUM_PDSCH_SYMBOL; /* Find total symbols occupied including DMRS */ - dmrsStartSymbol = findDmrsStartSymbol(pagePdschCfg->dmrs.dlDmrsSymbPos); + dmrsStartSymbol = findDmrsStartSymbol(4); /* If there are no DRMS symbols, findDmrsStartSymbol() returns MAX_SYMB_PER_SLOT, * in that case only PDSCH symbols are marked as occupied */ if(dmrsStartSymbol == MAX_SYMB_PER_SLOT) { - startSymbol = pagePdschCfg->pdschTimeAlloc.startSymb; - numSymbol = pagePdschCfg->pdschTimeAlloc.numSymb; + startSymbol = pageDlSch->timeAlloc.startSymb; + numSymbol = pageDlSch->timeAlloc.numSymb; } /* If DMRS symbol is found, mark DMRS and PDSCH symbols as occupied */ else { startSymbol = dmrsStartSymbol; - numSymbol = pagePdschCfg->dmrs.nrOfDmrsSymbols + pagePdschCfg->pdschTimeAlloc.numSymb; + numSymbol = pageDlSch->dmrs.nrOfDmrsSymbols + pageDlSch->timeAlloc.numSymb; } /* Allocate the number of PRBs required for DL PDSCH */ if((allocatePrbDl(cell, slotTime, startSymbol, numSymbol,\ - &pagePdschCfg->pdschFreqAlloc.startPrb, pagePdschCfg->pdschFreqAlloc.numPrb)) != ROK) + &pageDlSch->freqAlloc.startPrb, pageDlSch->freqAlloc.numPrb)) != ROK) { DU_LOG("\nERROR --> SCH : allocatePrbDl() failed for DL MSG"); return RFAILED; } - - pagePdschCfg->beamPdschInfo.numPrgs = 1; - pagePdschCfg->beamPdschInfo.prgSize = 1; - pagePdschCfg->beamPdschInfo.digBfInterfaces = 0; - pagePdschCfg->beamPdschInfo.prg[0].pmIdx = 0; - pagePdschCfg->beamPdschInfo.prg[0].beamIdx[0] = 0; - pagePdschCfg->txPdschPower.powerControlOffset = 0; - pagePdschCfg->txPdschPower.powerControlOffsetSS = 0; - return ROK; }