+/*******************************************************************
+*
+* @brief Fill PDSCH info in Page Alloc
+*
+* @details
+*
+* Function : schFillPagePdschCfg
+*
+* Functionality: Fill PDSCH info in Page Alloc
+*
+* @params[in] SchCellCb *cell, PdschCfg *pagePdschCfg, SlotTimingInfo slotTime,
+* uint16_t tbsSize, uint8_t mcs, uint16_t startPrb
+*
+* @return pointer to return Value(ROK, RFAILED)
+*
+* ****************************************************************/
+uint8_t schFillPagePdschCfg(SchCellCb *cell, PageDlSch *pageDlSch, SlotTimingInfo slotTime, uint16_t tbSize, uint8_t mcs, uint16_t startPrb)
+{
+ uint8_t dmrsStartSymbol, startSymbol, numSymbol;
+
+ /* fill the PDSCH PDU */
+
+ 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 */
+ 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 */
+ 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(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)