From: Harshita Lal Date: Wed, 8 Feb 2023 08:42:40 +0000 (+0000) Subject: Merge "[EPIC-ID: ODUHIGH-488][TASK-ID: ODUHIGH-494]SCH framework update to support... X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=commitdiff_plain;h=fa6899dae4aee415bbcfd00760b6e2b312ddceec;hp=6636207100c598cd70537d177670ef131e263931;p=o-du%2Fl2.git Merge "[EPIC-ID: ODUHIGH-488][TASK-ID: ODUHIGH-494]SCH framework update to support different scheduling algorithms" --- diff --git a/src/5gnrmac/lwr_mac_fsm.c b/src/5gnrmac/lwr_mac_fsm.c index 9c4b1b870..cb8c02e56 100644 --- a/src/5gnrmac/lwr_mac_fsm.c +++ b/src/5gnrmac/lwr_mac_fsm.c @@ -4208,11 +4208,11 @@ void fillPuschPdu(fapi_ul_tti_req_pdu_t *ulTtiReqPdu, fapi_vendor_ul_tti_req_pdu ulTtiReqPdu->pdu.pusch_pdu.numDmrsCdmGrpsNoData = 1; ulTtiReqPdu->pdu.pusch_pdu.dmrsPorts = 0; ulTtiReqPdu->pdu.pusch_pdu.resourceAlloc = \ - currUlSlot->ulInfo.schPuschInfo.resAllocType; + currUlSlot->ulInfo.schPuschInfo.fdAlloc.resAllocType; ulTtiReqPdu->pdu.pusch_pdu.rbStart = \ - currUlSlot->ulInfo.schPuschInfo.fdAlloc.startPrb; + currUlSlot->ulInfo.schPuschInfo.fdAlloc.resAlloc.type1.startPrb; ulTtiReqPdu->pdu.pusch_pdu.rbSize = \ - currUlSlot->ulInfo.schPuschInfo.fdAlloc.numPrb; + currUlSlot->ulInfo.schPuschInfo.fdAlloc.resAlloc.type1.numPrb; ulTtiReqPdu->pdu.pusch_pdu.vrbToPrbMapping = 0; ulTtiReqPdu->pdu.pusch_pdu.frequencyHopping = 0; ulTtiReqPdu->pdu.pusch_pdu.txDirectCurrentLocation = 0; @@ -4221,12 +4221,14 @@ void fillPuschPdu(fapi_ul_tti_req_pdu_t *ulTtiReqPdu, fapi_vendor_ul_tti_req_pdu currUlSlot->ulInfo.schPuschInfo.tdAlloc.startSymb; ulTtiReqPdu->pdu.pusch_pdu.nrOfSymbols = \ currUlSlot->ulInfo.schPuschInfo.tdAlloc.numSymb; +#ifdef INTEL_FAPI ulTtiReqPdu->pdu.pusch_pdu.mappingType = \ currUlSlot->ulInfo.schPuschInfo.dmrsMappingType; ulTtiReqPdu->pdu.pusch_pdu.nrOfDmrsSymbols = \ currUlSlot->ulInfo.schPuschInfo.nrOfDmrsSymbols; ulTtiReqPdu->pdu.pusch_pdu.dmrsAddPos = \ currUlSlot->ulInfo.schPuschInfo.dmrsAddPos; +#endif ulTtiReqPdu->pdu.pusch_pdu.puschData.rvIndex = \ currUlSlot->ulInfo.schPuschInfo.tbInfo.rv; ulTtiReqPdu->pdu.pusch_pdu.puschData.harqProcessId = \ @@ -4273,7 +4275,7 @@ void fillPucchPdu(fapi_ul_tti_req_pdu_t *ulTtiReqPdu, fapi_vendor_ul_tti_req_pdu { ulTtiReqPdu->pduType = PUCCH_PDU_TYPE; memset(&ulTtiReqPdu->pdu.pucch_pdu, 0, sizeof(fapi_ul_pucch_pdu_t)); - ulTtiReqPdu->pdu.pucch_pdu.rnti = currUlSlot->ulInfo.schPucchInfo.rnti; + ulTtiReqPdu->pdu.pucch_pdu.rnti = currUlSlot->ulInfo.crnti; /* TODO : Fill handle in raCb when scheduling pucch and access here */ ulTtiReqPdu->pdu.pucch_pdu.handle = 100; ulTtiReqPdu->pdu.pucch_pdu.bwpSize = macCellCfg->initialUlBwp.bwp.numPrb; @@ -4283,8 +4285,8 @@ void fillPucchPdu(fapi_ul_tti_req_pdu_t *ulTtiReqPdu, fapi_vendor_ul_tti_req_pdu ulTtiReqPdu->pdu.pucch_pdu.formatType = currUlSlot->ulInfo.schPucchInfo.pucchFormat; /* Supporting PUCCH Format 0 */ ulTtiReqPdu->pdu.pucch_pdu.multiSlotTxIndicator = 0; /* No Multi Slot transmission */ - ulTtiReqPdu->pdu.pucch_pdu.prbStart = currUlSlot->ulInfo.schPucchInfo.fdAlloc.startPrb; - ulTtiReqPdu->pdu.pucch_pdu.prbSize = currUlSlot->ulInfo.schPucchInfo.fdAlloc.numPrb; + ulTtiReqPdu->pdu.pucch_pdu.prbStart = currUlSlot->ulInfo.schPucchInfo.fdAlloc.resAlloc.type1.startPrb; + ulTtiReqPdu->pdu.pucch_pdu.prbSize = currUlSlot->ulInfo.schPucchInfo.fdAlloc.resAlloc.type1.numPrb; ulTtiReqPdu->pdu.pucch_pdu.startSymbolIndex = currUlSlot->ulInfo.schPucchInfo.tdAlloc.startSymb; ulTtiReqPdu->pdu.pucch_pdu.nrOfSymbols = currUlSlot->ulInfo.schPucchInfo.tdAlloc.numSymb; ulTtiReqPdu->pdu.pucch_pdu.freqHopFlag = currUlSlot->ulInfo.schPucchInfo.intraFreqHop; @@ -4299,18 +4301,18 @@ void fillPucchPdu(fapi_ul_tti_req_pdu_t *ulTtiReqPdu, fapi_vendor_ul_tti_req_pdu ulTtiReqPdu->pdu.pucch_pdu.timeDomainOccIdx = currUlSlot->ulInfo.schPucchInfo.timeDomOCC; ulTtiReqPdu->pdu.pucch_pdu.preDftOccIdx = currUlSlot->ulInfo.schPucchInfo.occIdx; /* Valid for Format 4 only */ ulTtiReqPdu->pdu.pucch_pdu.preDftOccLen = currUlSlot->ulInfo.schPucchInfo.occLen; /* Valid for Format 4 only */ - ulTtiReqPdu->pdu.pucch_pdu.pi2Bpsk = currUlSlot->ulInfo.schPucchInfo.cmnFormatCfg.pi2BPSK; - ulTtiReqPdu->pdu.pucch_pdu.addDmrsFlag = currUlSlot->ulInfo.schPucchInfo.cmnFormatCfg.addDmrs;/* Valid for Format 3, 4 only */ + ulTtiReqPdu->pdu.pucch_pdu.pi2Bpsk = currUlSlot->ulInfo.schPucchInfo.pi2BPSK; + ulTtiReqPdu->pdu.pucch_pdu.addDmrsFlag = currUlSlot->ulInfo.schPucchInfo.addDmrs;/* Valid for Format 3, 4 only */ ulTtiReqPdu->pdu.pucch_pdu.dmrsScramblingId = 0; /* Valid for Format 2 */ ulTtiReqPdu->pdu.pucch_pdu.dmrsCyclicShift = 0; /* Valid for Format 4 */ ulTtiReqPdu->pdu.pucch_pdu.srFlag = currUlSlot->ulInfo.schPucchInfo.srFlag; - ulTtiReqPdu->pdu.pucch_pdu.bitLenHarq = currUlSlot->ulInfo.schPucchInfo.numHarqBits; + ulTtiReqPdu->pdu.pucch_pdu.bitLenHarq = currUlSlot->ulInfo.schPucchInfo.harqInfo.harqBitLength; ulTtiReqPdu->pdu.pucch_pdu.bitLenCsiPart1 = 0; /* Valid for Format 2, 3, 4 */ ulTtiReqPdu->pdu.pucch_pdu.bitLenCsiPart2 = 0; /* Valid for Format 2, 3, 4 */ - ulTtiReqPdu->pdu.pucch_pdu.beamforming.numPrgs = 0; /* Not Supported */ - ulTtiReqPdu->pdu.pucch_pdu.beamforming.prgSize = 0; - ulTtiReqPdu->pdu.pucch_pdu.beamforming.digBfInterface = 0; - ulTtiReqPdu->pdu.pucch_pdu.beamforming.rx_bfi[0].beamIdx[0].beamidx = 0; + ulTtiReqPdu->pdu.pucch_pdu.beamforming.numPrgs = currUlSlot->ulInfo.schPucchInfo.beamPucchInfo.numPrgs; + ulTtiReqPdu->pdu.pucch_pdu.beamforming.prgSize = currUlSlot->ulInfo.schPucchInfo.beamPucchInfo.prgSize; + ulTtiReqPdu->pdu.pucch_pdu.beamforming.digBfInterface = currUlSlot->ulInfo.schPucchInfo.beamPucchInfo.digBfInterfaces; + ulTtiReqPdu->pdu.pucch_pdu.beamforming.rx_bfi[0].beamIdx[0].beamidx = currUlSlot->ulInfo.schPucchInfo.beamPucchInfo.prg[0].beamIdx[0]; ulTtiReqPdu->pduSize = sizeof(fapi_ul_pucch_pdu_t); diff --git a/src/5gnrmac/mac_cfg_hdl.c b/src/5gnrmac/mac_cfg_hdl.c index 4211c731f..23c1bf77a 100644 --- a/src/5gnrmac/mac_cfg_hdl.c +++ b/src/5gnrmac/mac_cfg_hdl.c @@ -712,24 +712,35 @@ uint8_t MacProcCellDeleteReq(Pst *pst, MacCellDeleteReq *cellDelete) **/ void freeMacSliceCfgReq(MacSliceCfgReq *cfgReq,Pst *pst) { - uint8_t cfgIdx = 0; - - if(cfgReq) - { - if(cfgReq->numOfConfiguredSlice) - { - for(cfgIdx = 0; cfgIdxnumOfConfiguredSlice; cfgIdx++) - { - if(cfgReq->listOfSliceCfg[cfgIdx]) - { - MAC_FREE_SHRABL_BUF(pst->region, pst->pool, cfgReq->listOfSliceCfg[cfgIdx]->rrmPolicyRatio, sizeof(RrmPolicyRatio)); - } - MAC_FREE_SHRABL_BUF(pst->region, pst->pool, cfgReq->listOfSliceCfg[cfgIdx], sizeof(MacSliceRrmPolicy)); - } - MAC_FREE_SHRABL_BUF(pst->region, pst->pool, cfgReq->listOfSliceCfg, cfgReq->numOfConfiguredSlice * sizeof(MacSliceRrmPolicy*)); - } - MAC_FREE_SHRABL_BUF(pst->region, pst->pool, cfgReq, sizeof(MacSliceCfgReq)); - } + uint8_t policyIdx = 0, memberListIdx=0; + + if(cfgReq->numOfRrmPolicy) + { + if(cfgReq->listOfRrmPolicy) + { + for(policyIdx = 0; policyIdxnumOfRrmPolicy; policyIdx++) + { + if(cfgReq->listOfRrmPolicy[policyIdx]) + { + if(cfgReq->listOfRrmPolicy[policyIdx]->numOfRrmPolicyMem) + { + if(cfgReq->listOfRrmPolicy[policyIdx]->rRMPolicyMemberList) + { + for(memberListIdx = 0; memberListIdxlistOfRrmPolicy[policyIdx]->numOfRrmPolicyMem; memberListIdx++) + { + MAC_FREE_SHRABL_BUF(pst->region, pst->pool, cfgReq->listOfRrmPolicy[policyIdx]->rRMPolicyMemberList[memberListIdx], sizeof(RrmPolicyMemberList)); + } + MAC_FREE_SHRABL_BUF(pst->region, pst->pool, cfgReq->listOfRrmPolicy[policyIdx]->rRMPolicyMemberList,\ + cfgReq->listOfRrmPolicy[policyIdx]->numOfRrmPolicyMem * sizeof(RrmPolicyMemberList*)); + } + } + MAC_FREE_SHRABL_BUF(pst->region, pst->pool, cfgReq->listOfRrmPolicy[policyIdx], sizeof(MacSliceRrmPolicy)); + } + } + MAC_FREE_SHRABL_BUF(pst->region, pst->pool, cfgReq->listOfRrmPolicy, cfgReq->numOfRrmPolicy * sizeof(MacSliceRrmPolicy*)); + } + } + } /** * @brief fill Mac Slice Config Rsp diff --git a/src/5gnrmac/mac_msg_hdl.c b/src/5gnrmac/mac_msg_hdl.c index 0b3e34d12..7e015afee 100644 --- a/src/5gnrmac/mac_msg_hdl.c +++ b/src/5gnrmac/mac_msg_hdl.c @@ -845,46 +845,50 @@ uint8_t FapiMacUciInd(Pst *pst, UciInd *macUciInd) * RFAILED - failure * **********************************************************************/ - uint8_t fillSliceCfgInfo(SchSliceCfgReq *schSliceCfgReq, MacSliceCfgReq *macSliceCfgReq) - { - uint8_t cfgIdx = 0; - - if(macSliceCfgReq->listOfSliceCfg) - { - schSliceCfgReq->numOfConfiguredSlice = macSliceCfgReq->numOfConfiguredSlice; - MAC_ALLOC(schSliceCfgReq->listOfConfirguration, schSliceCfgReq->numOfConfiguredSlice *sizeof(SchRrmPolicyOfSlice*)); - if(schSliceCfgReq->listOfConfirguration == NULLP) - { - DU_LOG("\nERROR --> MAC : Memory allocation failed in fillSliceCfgInfo"); - return RFAILED; - } - for(cfgIdx = 0; cfgIdxnumOfConfiguredSlice; cfgIdx++) - { - MAC_ALLOC(schSliceCfgReq->listOfConfirguration[cfgIdx], sizeof(SchRrmPolicyOfSlice)); - if(schSliceCfgReq->listOfConfirguration[cfgIdx] == NULLP) - { - DU_LOG("\nERROR --> MAC : Memory allocation failed in fillSliceCfgInfo"); - return RFAILED; - } - - memcpy(&schSliceCfgReq->listOfConfirguration[cfgIdx]->snssai, &macSliceCfgReq->listOfSliceCfg[cfgIdx]->snssai, sizeof(Snssai)); - - if(macSliceCfgReq->listOfSliceCfg[cfgIdx]->rrmPolicyRatio) - { - MAC_ALLOC(schSliceCfgReq->listOfConfirguration[cfgIdx]->rrmPolicyRatioInfo, sizeof(SchRrmPolicyRatio)); - if(schSliceCfgReq->listOfConfirguration[cfgIdx]->rrmPolicyRatioInfo == NULLP) - { - DU_LOG("\nERROR --> MAC : Memory allocation failed in fillSliceCfgInfo"); - return RFAILED; - } - schSliceCfgReq->listOfConfirguration[cfgIdx]->rrmPolicyRatioInfo->policyMaxRatio = macSliceCfgReq->listOfSliceCfg[cfgIdx]->rrmPolicyRatio->policyMaxRatio; - schSliceCfgReq->listOfConfirguration[cfgIdx]->rrmPolicyRatioInfo->policyMinRatio = macSliceCfgReq->listOfSliceCfg[cfgIdx]->rrmPolicyRatio->policyMinRatio; - schSliceCfgReq->listOfConfirguration[cfgIdx]->rrmPolicyRatioInfo->policyDedicatedRatio = macSliceCfgReq->listOfSliceCfg[cfgIdx]->rrmPolicyRatio->policyDedicatedRatio; - } - } - } - return ROK; - } +uint8_t fillSliceCfgInfo(SchSliceCfgReq *schSliceCfgReq, MacSliceCfgReq *macSliceCfgReq) +{ + uint8_t cfgIdx = 0, memberListIdx = 0, totalSliceCfgRecvd = 0; + + if(macSliceCfgReq->listOfRrmPolicy) + { + for(cfgIdx = 0; cfgIdxnumOfRrmPolicy; cfgIdx++) + { + totalSliceCfgRecvd += macSliceCfgReq->listOfRrmPolicy[cfgIdx]->numOfRrmPolicyMem; + } + + schSliceCfgReq->numOfConfiguredSlice = totalSliceCfgRecvd; + MAC_ALLOC(schSliceCfgReq->listOfSlices, schSliceCfgReq->numOfConfiguredSlice *sizeof(SchRrmPolicyOfSlice*)); + if(schSliceCfgReq->listOfSlices == NULLP) + { + DU_LOG("\nERROR --> MAC : Memory allocation failed in fillSliceCfgInfo"); + return RFAILED; + } + for(cfgIdx = 0; cfgIdxnumOfConfiguredSlice; cfgIdx++) + { + for(memberListIdx = 0; memberListIdxlistOfRrmPolicy[cfgIdx]->numOfRrmPolicyMem; memberListIdx++) + { + if(macSliceCfgReq->listOfRrmPolicy[cfgIdx]->rRMPolicyMemberList[memberListIdx]) + { + + MAC_ALLOC(schSliceCfgReq->listOfSlices[cfgIdx], sizeof(SchRrmPolicyOfSlice)); + if(schSliceCfgReq->listOfSlices[cfgIdx] == NULLP) + { + DU_LOG("\nERROR --> MAC : Memory allocation failed in fillSliceCfgInfo"); + return RFAILED; + } + + memcpy(&schSliceCfgReq->listOfSlices[cfgIdx]->snssai, &macSliceCfgReq->listOfRrmPolicy[cfgIdx]->rRMPolicyMemberList[memberListIdx]->snssai, sizeof(Snssai)); + + schSliceCfgReq->listOfSlices[cfgIdx]->rrmPolicyRatioInfo.maxRatio = macSliceCfgReq->listOfRrmPolicy[cfgIdx]->policyRatio.maxRatio; + schSliceCfgReq->listOfSlices[cfgIdx]->rrmPolicyRatioInfo.minRatio = macSliceCfgReq->listOfRrmPolicy[cfgIdx]->policyRatio.minRatio; + schSliceCfgReq->listOfSlices[cfgIdx]->rrmPolicyRatioInfo.dedicatedRatio = macSliceCfgReq->listOfRrmPolicy[cfgIdx]->policyRatio.dedicatedRatio; + } + } + } + } + return ROK; +} + /******************************************************************* * * @brief Processes Slice Cfg Request recived from DU @@ -973,7 +977,6 @@ uint8_t MacProcSliceRecfgReq(Pst *pst, MacSliceRecfgReq *macSliceRecfgReq) FILL_PST_MAC_TO_SCH(schPst, EVENT_SLICE_RECFG_REQ_TO_SCH); ret = SchMessageRouter(&schPst, (void *)schSliceRecfgReq); } - } freeMacSliceCfgReq(macSliceRecfgReq, pst); } diff --git a/src/5gnrsch/sch.c b/src/5gnrsch/sch.c index 5eb32b1e3..32ab5c23f 100644 --- a/src/5gnrsch/sch.c +++ b/src/5gnrsch/sch.c @@ -1721,7 +1721,7 @@ uint8_t fillSliceCfgRsp(bool sliceRecfg, SchSliceCfg *storedSliceCfg, SchCellCb { for(sliceIdx = 0; sliceIdxcellCfg.plmnInfoList.numSliceSupport; sliceIdx++) { - if(!memcmp(&schSliceCfgReq->listOfConfirguration[cfgIdx]->snssai, cellCb->cellCfg.plmnInfoList.snssai[sliceIdx], sizeof(Snssai))) + if(!memcmp(&schSliceCfgReq->listOfSlices[cfgIdx]->snssai, cellCb->cellCfg.plmnInfoList.snssai[sliceIdx], sizeof(Snssai))) { (*count)++; sliceFound = true; @@ -1732,11 +1732,11 @@ uint8_t fillSliceCfgRsp(bool sliceRecfg, SchSliceCfg *storedSliceCfg, SchCellCb else { /* Here comparing the slice cfg request with the slice stored in SchDb */ - if(storedSliceCfg->listOfConfirguration) + if(storedSliceCfg->listOfSlices) { for(sliceIdx = 0; sliceIdxnumOfSliceConfigured; sliceIdx++) { - if(!memcmp(&schSliceCfgReq->listOfConfirguration[cfgIdx]->snssai, &storedSliceCfg->listOfConfirguration[sliceIdx]->snssai,\ + if(!memcmp(&schSliceCfgReq->listOfSlices[cfgIdx]->snssai, &storedSliceCfg->listOfSlices[sliceIdx]->snssai,\ sizeof(Snssai))) { (*count)++; @@ -1755,7 +1755,7 @@ uint8_t fillSliceCfgRsp(bool sliceRecfg, SchSliceCfg *storedSliceCfg, SchCellCb } - schSliceCfgRsp->listOfSliceCfgRsp[cfgIdx]->snssai = schSliceCfgReq->listOfConfirguration[cfgIdx]->snssai; + schSliceCfgRsp->listOfSliceCfgRsp[cfgIdx]->snssai = schSliceCfgReq->listOfSlices[cfgIdx]->snssai; if(sliceFound == true) schSliceCfgRsp->listOfSliceCfgRsp[cfgIdx]->rsp = RSP_OK; else @@ -1793,8 +1793,8 @@ uint8_t addSliceCfgInSchDb(SchSliceCfg *storeSliceCfg, SchSliceCfgReq *cfgReq, S if(count) { storeSliceCfg->numOfSliceConfigured = count; - SCH_ALLOC(storeSliceCfg->listOfConfirguration, storeSliceCfg->numOfSliceConfigured * sizeof(SchRrmPolicyOfSlice*)); - if(storeSliceCfg->listOfConfirguration == NULLP) + SCH_ALLOC(storeSliceCfg->listOfSlices, storeSliceCfg->numOfSliceConfigured * sizeof(SchRrmPolicyOfSlice*)); + if(storeSliceCfg->listOfSlices == NULLP) { DU_LOG("\nERROR --> SCH : Failed to allocate memory in addSliceCfgInSchDb"); return RFAILED; @@ -1804,22 +1804,15 @@ uint8_t addSliceCfgInSchDb(SchSliceCfg *storeSliceCfg, SchSliceCfgReq *cfgReq, S { if(cfgRsp.listOfSliceCfgRsp[cfgIdx]->rsp == RSP_OK) { - SCH_ALLOC(storeSliceCfg->listOfConfirguration[sliceIdx], sizeof(SchRrmPolicyOfSlice)); - if(storeSliceCfg->listOfConfirguration[sliceIdx] == NULLP) + SCH_ALLOC(storeSliceCfg->listOfSlices[sliceIdx], sizeof(SchRrmPolicyOfSlice)); + if(storeSliceCfg->listOfSlices[sliceIdx] == NULLP) { DU_LOG("\nERROR --> SCH : Failed to allocate memory in addSliceCfgInSchDb"); return RFAILED; } - SCH_ALLOC(storeSliceCfg->listOfConfirguration[sliceIdx]->rrmPolicyRatioInfo, sizeof(SchRrmPolicyRatio)); - if(storeSliceCfg->listOfConfirguration[sliceIdx]->rrmPolicyRatioInfo == NULLP) - { - DU_LOG("\nERROR --> SCH : Failed to allocate memory in addSliceCfgInSchDb"); - return RFAILED; - } - - memcpy(&storeSliceCfg->listOfConfirguration[sliceIdx]->snssai, &cfgReq->listOfConfirguration[sliceIdx]->snssai, sizeof(Snssai)); - memcpy(storeSliceCfg->listOfConfirguration[sliceIdx]->rrmPolicyRatioInfo, cfgReq->listOfConfirguration[sliceIdx]->rrmPolicyRatioInfo, + memcpy(&storeSliceCfg->listOfSlices[sliceIdx]->snssai, &cfgReq->listOfSlices[sliceIdx]->snssai, sizeof(Snssai)); + memcpy(&storeSliceCfg->listOfSlices[sliceIdx]->rrmPolicyRatioInfo, &cfgReq->listOfSlices[sliceIdx]->rrmPolicyRatioInfo, sizeof(SchRrmPolicyRatio)); sliceIdx++; } @@ -1855,13 +1848,12 @@ void freeSchSliceCfgReq(SchSliceCfgReq *sliceCfgReq) { for(cfgIdx = 0; cfgIdxnumOfConfiguredSlice; cfgIdx++) { - if(sliceCfgReq->listOfConfirguration[cfgIdx]) + if(sliceCfgReq->listOfSlices[cfgIdx]) { - SCH_FREE(sliceCfgReq->listOfConfirguration[cfgIdx]->rrmPolicyRatioInfo, sizeof(SchRrmPolicyRatio)); - SCH_FREE(sliceCfgReq->listOfConfirguration[cfgIdx], sizeof(SchRrmPolicyOfSlice)); + SCH_FREE(sliceCfgReq->listOfSlices[cfgIdx], sizeof(SchRrmPolicyOfSlice)); } } - SCH_FREE(sliceCfgReq->listOfConfirguration, sliceCfgReq->numOfConfiguredSlice * sizeof(SchRrmPolicyOfSlice*)); + SCH_FREE(sliceCfgReq->listOfSlices, sliceCfgReq->numOfConfiguredSlice * sizeof(SchRrmPolicyOfSlice*)); } SCH_FREE(sliceCfgReq, sizeof(SchSliceCfgReq)); } @@ -1893,7 +1885,7 @@ uint8_t SchProcSliceCfgReq(Pst *pst, SchSliceCfgReq *schSliceCfgReq) DU_LOG("\nINFO --> SCH : Received Slice Cfg request from MAC"); if(schSliceCfgReq) { - if(schSliceCfgReq->listOfConfirguration) + if(schSliceCfgReq->listOfSlices) { /* filling the slice configuration response of each slice */ if(fillSliceCfgRsp(false, NULLP, schCb[inst].cells[0], schSliceCfgReq, &sliceCfgRsp, &count) != ROK) @@ -1942,7 +1934,7 @@ uint8_t modifySliceCfgInSchDb(SchSliceCfg *storeSliceCfg, SchSliceRecfgReq *recf if(count) { - if(storeSliceCfg->listOfConfirguration == NULLP) + if(storeSliceCfg->listOfSlices == NULLP) { DU_LOG("\nINFO --> SCH : Memory allocation failed in modifySliceCfgInSchDb"); return RFAILED; @@ -1954,9 +1946,9 @@ uint8_t modifySliceCfgInSchDb(SchSliceCfg *storeSliceCfg, SchSliceRecfgReq *recf { for(sliceIdx = 0; sliceIdxnumOfSliceConfigured; sliceIdx++) { - if(!memcmp(&storeSliceCfg->listOfConfirguration[sliceIdx]->snssai, &recfgReq->listOfConfirguration[cfgIdx]->snssai, sizeof(Snssai))) + if(!memcmp(&storeSliceCfg->listOfSlices[sliceIdx]->snssai, &recfgReq->listOfSlices[cfgIdx]->snssai, sizeof(Snssai))) { - memcpy(storeSliceCfg->listOfConfirguration[sliceIdx]->rrmPolicyRatioInfo, recfgReq->listOfConfirguration[cfgIdx]->rrmPolicyRatioInfo, + memcpy(&storeSliceCfg->listOfSlices[sliceIdx]->rrmPolicyRatioInfo, &recfgReq->listOfSlices[cfgIdx]->rrmPolicyRatioInfo, sizeof(SchRrmPolicyRatio)); break; } @@ -2020,7 +2012,7 @@ uint8_t SchProcSliceRecfgReq(Pst *pst, SchSliceRecfgReq *schSliceRecfgReq) DU_LOG("\nINFO --> SCH : Received Slice ReCfg request from MAC"); if(schSliceRecfgReq) { - if(schSliceRecfgReq->listOfConfirguration) + if(schSliceRecfgReq->listOfSlices) { /* filling the slice configuration response of each slice */ if(fillSliceCfgRsp(true, &schCb[inst].sliceCfg, NULLP, schSliceRecfgReq, &schSliceRecfgRsp, &count) != ROK) diff --git a/src/5gnrsch/sch.h b/src/5gnrsch/sch.h index 352c58294..5b2da4045 100644 --- a/src/5gnrsch/sch.h +++ b/src/5gnrsch/sch.h @@ -603,7 +603,7 @@ typedef struct schCellCb typedef struct schSliceCfg { uint8_t numOfSliceConfigured; - SchRrmPolicyOfSlice **listOfConfirguration; + SchRrmPolicyOfSlice **listOfSlices; }SchSliceCfg; /** diff --git a/src/5gnrsch/sch_common.c b/src/5gnrsch/sch_common.c index dff28ca4d..7fa1314e6 100644 --- a/src/5gnrsch/sch_common.c +++ b/src/5gnrsch/sch_common.c @@ -121,7 +121,7 @@ uint8_t schBroadcastSib1Alloc(SchCellCb *cell, SlotTimingInfo slotTime, DlBrdcst { uint8_t dmrsStartSymbol, startSymbol, numSymbol ; DmrsInfo dmrs; - FreqDomainAlloc freqAlloc; + ResAllocType1 freqAlloc; TimeDomainAlloc timeAlloc; SchDlSlotInfo *schDlSlotInfo = NULLP; @@ -217,7 +217,7 @@ void fillPucchFormat0(SchPucchInfo *ulSchedPucch, SchPucchResrcInfo *resrcInfo) { if(resrcInfo->SchPucchFormat.format0) { - ulSchedPucch->fdAlloc.numPrb = PUCCH_NUM_PRB_FORMAT_0_1_4; + ulSchedPucch->fdAlloc.resAlloc.type1.numPrb = PUCCH_NUM_PRB_FORMAT_0_1_4; ulSchedPucch->pucchFormat = PUCCH_FORMAT_0; ulSchedPucch->initialCyclicShift = resrcInfo->SchPucchFormat.format0->initialCyclicShift; ulSchedPucch->tdAlloc.numSymb = resrcInfo->SchPucchFormat.format0->numSymbols; @@ -242,7 +242,7 @@ void fillPucchFormat1(SchPucchInfo *ulSchedPucch, SchPucchResrcInfo *resrcInfo) { if(resrcInfo->SchPucchFormat.format1) { - ulSchedPucch->fdAlloc.numPrb = PUCCH_NUM_PRB_FORMAT_0_1_4; + ulSchedPucch->fdAlloc.resAlloc.type1.numPrb = PUCCH_NUM_PRB_FORMAT_0_1_4; ulSchedPucch->pucchFormat = PUCCH_FORMAT_1; ulSchedPucch->initialCyclicShift = resrcInfo->SchPucchFormat.format1->initialCyclicShift; ulSchedPucch->tdAlloc.numSymb = resrcInfo->SchPucchFormat.format1->numSymbols; @@ -274,23 +274,24 @@ uint8_t fillUlSchedPucchFormat(uint8_t pucchFormat, SchPucchInfo *ulSchedPucch,\ { case PUCCH_FORMAT_0: { - if(resrcInfo) + if(resrcInfo) fillPucchFormat0(ulSchedPucch, resrcInfo); return ret; - } + } case PUCCH_FORMAT_1: { - if(resrcInfo) - { + if(resrcInfo) + { fillPucchFormat1(ulSchedPucch, resrcInfo); - } - if(formatCfg) - { - memcpy(&ulSchedPucch->cmnFormatCfg, formatCfg, sizeof(SchPucchFormatCfg)); - } - return ret; - }/* To Add support for more Pucch Format */ - + } + if(formatCfg) + { + ulSchedPucch->addDmrs = formatCfg->addDmrs; + ulSchedPucch->pi2BPSK = formatCfg->pi2BPSK; + } + return ret; + }/* To Add support for more Pucch Format */ + default: DU_LOG("\nERROR --> SCH : Invalid PUCCH format[%d] in fillUlSchedPucchFormatCfg()", pucchFormat); ret = RFAILED; @@ -334,7 +335,7 @@ uint8_t fillUlSchedPucchDedicatedCfg(SchCellCb *cell, SchPucchCfg *pucchDedCfg,\ { ulSchedPucch->intraFreqHop = pucchDedCfg->resrc->resrcToAddModList[resrcIdx].intraFreqHop; ulSchedPucch->secondPrbHop = pucchDedCfg->resrc->resrcToAddModList[resrcIdx].secondPrbHop; - ulSchedPucch->fdAlloc.startPrb = pucchDedCfg->resrc->resrcToAddModList[resrcIdx].startPrb; + ulSchedPucch->fdAlloc.resAlloc.type1.startPrb = pucchDedCfg->resrc->resrcToAddModList[resrcIdx].startPrb; ulSchedPucch->pucchFormat = pucchDedCfg->resrc->resrcToAddModList[resrcIdx].pucchFormat; ret = fillUlSchedPucchFormat(ulSchedPucch->pucchFormat, ulSchedPucch,\ &pucchDedCfg->resrc->resrcToAddModList[resrcIdx], NULLP); @@ -357,7 +358,6 @@ uint8_t fillUlSchedPucchDedicatedCfg(SchCellCb *cell, SchPucchCfg *pucchDedCfg,\ if(pucchDedCfg->format1) { - memset(&ulSchedPucch->cmnFormatCfg, 0, sizeof(SchPucchFormatCfg)); ret = fillUlSchedPucchFormat(ulSchedPucch->pucchFormat, ulSchedPucch, NULLP, pucchDedCfg->format1); if(ret == RFAILED) return ret; @@ -375,14 +375,12 @@ uint8_t fillUlSchedPucchDedicatedCfg(SchCellCb *cell, SchPucchCfg *pucchDedCfg,\ { srPeriodicity = pucchDedCfg->schedReq->schedAddModList[schedReqIdx].periodicity; srOffset = pucchDedCfg->schedReq->schedAddModList[schedReqIdx].offset; - break; + break; } if(((numSlots * slotInfo->sfn + slotInfo->slot - srOffset) % srPeriodicity) == 0) { ulSchedPucch->srFlag = true; - ulSchedPucch->uciFlag = true; } - ulSchedPucch->harqFlag = true;//check how to enable? } return ret; } @@ -400,9 +398,9 @@ uint8_t fillUlSchedPucchDedicatedCfg(SchCellCb *cell, SchPucchCfg *pucchDedCfg,\ * @return ROK/RFAILED **/ -uint16_t fillPucchResourceInfo(SchPucchInfo *schPucchInfo, Inst inst, SlotTimingInfo slotInfo) +uint16_t fillPucchResourceInfo(uint8_t ueId, SchPucchInfo *schPucchInfo, Inst inst, SlotTimingInfo slotInfo) { - uint8_t ret = ROK, ueId = 0, ueIdx = 0, pucchIdx = 0; + uint8_t ret = ROK, ueIdx = 0, pucchIdx = 0; SchCellCb *cell = schCb[inst].cells[inst]; SchPucchCfgCmn *pucchCfg = NULLP; SchBwpParams *ulBwp = NULLP; @@ -411,10 +409,9 @@ uint16_t fillPucchResourceInfo(SchPucchInfo *schPucchInfo, Inst inst, SlotTiming #endif uint16_t startPrb; - GET_UE_ID(schPucchInfo->rnti, ueId); ueIdx = ueId -1; #ifdef NR_DRX - ueCb = schGetUeCb(cell, schPucchInfo->rnti); + ueCb = &(cell->ueCb[ueIdx]); if(ueCb->ueDrxInfoPres) { if(!ueCb->drxUeCb.drxUlUeActiveStatus) @@ -445,15 +442,14 @@ uint16_t fillPucchResourceInfo(SchPucchInfo *schPucchInfo, Inst inst, SlotTiming &startPrb, PUCCH_NUM_PRB_FORMAT_0_1_4); if (ret == ROK) { - schPucchInfo->fdAlloc.startPrb = ulBwp->freqAlloc.startPrb + pucchResourceSet[pucchIdx][3]; - schPucchInfo->fdAlloc.numPrb = PUCCH_NUM_PRB_FORMAT_0_1_4; + schPucchInfo->fdAlloc.resAlloc.type1.startPrb = ulBwp->freqAlloc.startPrb + pucchResourceSet[pucchIdx][3]; + schPucchInfo->fdAlloc.resAlloc.type1.numPrb = PUCCH_NUM_PRB_FORMAT_0_1_4; schPucchInfo->tdAlloc.startSymb = pucchResourceSet[pucchIdx][1]; schPucchInfo->tdAlloc.numSymb = pucchResourceSet[pucchIdx][2]; schPucchInfo->pucchFormat = pucchResourceSet[pucchIdx][0]; /* set SR and UCI flag to false */ schPucchInfo->srFlag = true; - schPucchInfo->uciFlag = true; } } return ROK; @@ -497,7 +493,7 @@ uint8_t schUlResAlloc(SchCellCb *cell, Inst schInst) schUlSlotInfo = cell->schUlSlotInfo[ulTimingInfo.slot]; if(schUlSlotInfo->schPuschInfo) { - ulSchedInfo.crnti = schUlSlotInfo->schPuschInfo->crnti; + GET_CRNTI(ulSchedInfo.crnti, schUlSlotInfo->puschUe); /* Check the ue drx status if the UE is active for uplink scheduling or not */ #ifdef NR_DRX ueCb = schGetUeCb(cell, ulSchedInfo.crnti); @@ -516,7 +512,8 @@ uint8_t schUlResAlloc(SchCellCb *cell, Inst schInst) if(schUlSlotInfo->pucchPres) { - ret = fillPucchResourceInfo(&schUlSlotInfo->schPucchInfo, schInst, ulTimingInfo); + GET_CRNTI(ulSchedInfo.crnti, schUlSlotInfo->pucchUe); + ret = fillPucchResourceInfo(schUlSlotInfo->pucchUe, &schUlSlotInfo->schPucchInfo, schInst, ulTimingInfo); if (ret == ROK) { ulSchedInfo.dataType |= SCH_DATATYPE_UCI; @@ -758,12 +755,10 @@ uint16_t schAllocPucchResource(SchCellCb *cell, SlotTimingInfo pucchTime, uint16 memset(&schUlSlotInfo->schPucchInfo, 0, sizeof(SchPucchInfo)); schUlSlotInfo->pucchPres = true; - schUlSlotInfo->schPucchInfo.rnti = crnti; if(ueCb != NULLP) { /* set HARQ flag to true */ - schUlSlotInfo->schPucchInfo.harqFlag = true; - schUlSlotInfo->schPucchInfo.numHarqBits = 1; /* 1 bit for HARQ */ + schUlSlotInfo->schPucchInfo.harqInfo.harqBitLength = 1; /* 1 bit for HARQ */ ADD_DELTA_TO_TIME(pucchTime, pucchTime, 3, cell->numSlots); /* SLOT_DELAY=3 */ cmLListAdd2Tail(&(ueCb->hqDlmap[pucchTime.slot]->hqList), &hqP->ulSlotLnk); } diff --git a/src/5gnrsch/sch_rach.c b/src/5gnrsch/sch_rach.c index 104061a7d..7694acb7d 100644 --- a/src/5gnrsch/sch_rach.c +++ b/src/5gnrsch/sch_rach.c @@ -449,11 +449,10 @@ SchPuschInfo* schAllocMsg3Pusch(Inst schInst, uint16_t crnti, uint8_t k2Index, S tbSize = schCalcTbSizeFromNPrb(numRb, mcs, NUM_PDSCH_SYMBOL); tbSize = tbSize / 8 ; /*bits to byte conversion*/ - schUlSlotInfo->schPuschInfo->crnti = crnti; schUlSlotInfo->schPuschInfo->harqProcId = msg3HqProc->procId; - schUlSlotInfo->schPuschInfo->resAllocType = SCH_ALLOC_TYPE_1; - schUlSlotInfo->schPuschInfo->fdAlloc.startPrb = startRb; - schUlSlotInfo->schPuschInfo->fdAlloc.numPrb = numRb; + schUlSlotInfo->schPuschInfo->fdAlloc.resAllocType = SCH_ALLOC_TYPE_1; + schUlSlotInfo->schPuschInfo->fdAlloc.resAlloc.type1.startPrb = startRb; + schUlSlotInfo->schPuschInfo->fdAlloc.resAlloc.type1.numPrb = numRb; schUlSlotInfo->schPuschInfo->tdAlloc.startSymb = startSymb; schUlSlotInfo->schPuschInfo->tdAlloc.numSymb = symbLen; schUlSlotInfo->schPuschInfo->tbInfo.qamOrder = QPSK_MODULATION; /* QPSK modulation */ @@ -462,25 +461,30 @@ SchPuschInfo* schAllocMsg3Pusch(Inst schInst, uint16_t crnti, uint8_t k2Index, S schUlSlotInfo->schPuschInfo->tbInfo.ndi = NEW_TRANSMISSION; /* new transmission */ schUlSlotInfo->schPuschInfo->tbInfo.rv = 0; schUlSlotInfo->schPuschInfo->tbInfo.tbSize = tbSize; +#ifdef INTEL_FAPI schUlSlotInfo->schPuschInfo->dmrsMappingType = DMRS_MAP_TYPE_A; /* Setting Type-A */ schUlSlotInfo->schPuschInfo->nrOfDmrsSymbols = NUM_DMRS_SYMBOLS; schUlSlotInfo->schPuschInfo->dmrsAddPos = DMRS_ADDITIONAL_POS; +#endif + if(!isRetx) { msg3HqProc->strtSymbl = startSymb; msg3HqProc->numSymbl = symbLen; - msg3HqProc->puschResType = schUlSlotInfo->schPuschInfo->resAllocType; - msg3HqProc->puschStartPrb = schUlSlotInfo->schPuschInfo->fdAlloc.startPrb; - msg3HqProc->puschNumPrb = schUlSlotInfo->schPuschInfo->fdAlloc.numPrb; + msg3HqProc->puschResType = schUlSlotInfo->schPuschInfo->fdAlloc.resAllocType; + msg3HqProc->puschStartPrb = schUlSlotInfo->schPuschInfo->fdAlloc.resAlloc.type1.startPrb; + msg3HqProc->puschNumPrb = schUlSlotInfo->schPuschInfo->fdAlloc.resAlloc.type1.numPrb; msg3HqProc->tbInfo.qamOrder = schUlSlotInfo->schPuschInfo->tbInfo.qamOrder; msg3HqProc->tbInfo.iMcs = schUlSlotInfo->schPuschInfo->tbInfo.mcs; msg3HqProc->tbInfo.mcsTable = schUlSlotInfo->schPuschInfo->tbInfo.mcsTable; msg3HqProc->tbInfo.ndi = schUlSlotInfo->schPuschInfo->tbInfo.ndi; msg3HqProc->tbInfo.rv = schUlSlotInfo->schPuschInfo->tbInfo.rv; msg3HqProc->tbInfo.tbSzReq = schUlSlotInfo->schPuschInfo->tbInfo.tbSize; +#ifdef INTEL_FAPI msg3HqProc->dmrsMappingType = schUlSlotInfo->schPuschInfo->dmrsMappingType; msg3HqProc->nrOfDmrsSymbols = schUlSlotInfo->schPuschInfo->nrOfDmrsSymbols; msg3HqProc->dmrsAddPos = schUlSlotInfo->schPuschInfo->dmrsAddPos; +#endif } return schUlSlotInfo->schPuschInfo; } @@ -704,8 +708,8 @@ bool schProcessRaReq(Inst schInst, SchCellCb *cell, SlotTimingInfo currTime, uin dciSlotAlloc->rarInfo.ulGrant.bwpSize = cell->cellCfg.schInitialUlBwp.bwp.freqAlloc.numPrb; /* Spec 38.213, section 8.2, 0 : MSG3 PUSCH will be transmitted without frequency hopping */ dciSlotAlloc->rarInfo.ulGrant.freqHopFlag = 0; - dciSlotAlloc->rarInfo.ulGrant.msg3FreqAlloc.startPrb = msg3PuschInfo->fdAlloc.startPrb; - dciSlotAlloc->rarInfo.ulGrant.msg3FreqAlloc.numPrb = msg3PuschInfo->fdAlloc.numPrb; + dciSlotAlloc->rarInfo.ulGrant.msg3FreqAlloc.startPrb = msg3PuschInfo->fdAlloc.resAlloc.type1.startPrb; + dciSlotAlloc->rarInfo.ulGrant.msg3FreqAlloc.numPrb = msg3PuschInfo->fdAlloc.resAlloc.type1.numPrb; dciSlotAlloc->rarInfo.ulGrant.k2Index = k2Index; dciSlotAlloc->rarInfo.ulGrant.mcs = msg3PuschInfo->tbInfo.mcs; dciSlotAlloc->rarInfo.ulGrant.tpc = 3; /* TODO : Check appropriate value to be filled */ diff --git a/src/5gnrsch/sch_ue_mgr.c b/src/5gnrsch/sch_ue_mgr.c index 1254674d8..0d84ba58a 100644 --- a/src/5gnrsch/sch_ue_mgr.c +++ b/src/5gnrsch/sch_ue_mgr.c @@ -207,16 +207,13 @@ uint8_t updateDedLcInfo(Inst inst, Snssai *snssai, uint16_t *rsvdDedicatedPRB, b { for(sliceCfgIdx = 0; sliceCfgIdxsnssai), sizeof(Snssai)) == 0) + if(memcmp(snssai, &(sliceCfg.listOfSlices[sliceCfgIdx]->snssai), sizeof(Snssai)) == 0) { - if(sliceCfg.listOfConfirguration[sliceCfgIdx]->rrmPolicyRatioInfo) - { - /*Updating latest RrmPolicy*/ - *rsvdDedicatedPRB = \ - (uint16_t)(((sliceCfg.listOfConfirguration[sliceCfgIdx]->rrmPolicyRatioInfo->policyDedicatedRatio)*(MAX_NUM_RB))/100); - *isDedicated = TRUE; - DU_LOG("\nINFO --> SCH : Updated RRM policy, reservedPOOL:%d",*rsvdDedicatedPRB); - } + /*Updating latest RrmPolicy*/ + *rsvdDedicatedPRB = \ + (uint16_t)(((sliceCfg.listOfSlices[sliceCfgIdx]->rrmPolicyRatioInfo.dedicatedRatio)*(MAX_NUM_RB))/100); + *isDedicated = TRUE; + DU_LOG("\nINFO --> SCH : Updated RRM policy, reservedPOOL:%d",*rsvdDedicatedPRB); } } /*case: This LcCtxt is either a Default LC or this LC is part of someother RRM_MemberList*/ @@ -881,11 +878,10 @@ uint8_t schFillPuschAlloc(SchUeCb *ueCb, SlotTimingInfo puschTime, uint32_t tbSi if (isRetx == FALSE) { - puschInfo.crnti = ueCb->crnti; - puschInfo.harqProcId = SCH_HARQ_PROC_ID; - puschInfo.resAllocType = SCH_ALLOC_TYPE_1; - puschInfo.fdAlloc.startPrb = startPrb; - puschInfo.fdAlloc.numPrb = numRb; + puschInfo.harqProcId = SCH_HARQ_PROC_ID; + puschInfo.fdAlloc.resAllocType = SCH_ALLOC_TYPE_1; + puschInfo.fdAlloc.resAlloc.type1.startPrb = startPrb; + puschInfo.fdAlloc.resAlloc.type1.numPrb = numRb; puschInfo.tdAlloc.startSymb = startSymb; puschInfo.tdAlloc.numSymb = symbLen; puschInfo.tbInfo.qamOrder = ueCb->ueCfg.ulModInfo.modOrder; @@ -894,12 +890,14 @@ uint8_t schFillPuschAlloc(SchUeCb *ueCb, SlotTimingInfo puschTime, uint32_t tbSi puschInfo.tbInfo.ndi = 1; /* new transmission */ puschInfo.tbInfo.rv = 0; puschInfo.tbInfo.tbSize = tbSize; +#ifdef INTEL_FAPI puschInfo.dmrsMappingType = DMRS_MAP_TYPE_A; /* Setting Type-A */ puschInfo.nrOfDmrsSymbols = NUM_DMRS_SYMBOLS; puschInfo.dmrsAddPos = DMRS_ADDITIONAL_POS; - hqP->puschResType = puschInfo.resAllocType; - hqP->puschStartPrb = puschInfo.fdAlloc.startPrb; - hqP->puschNumPrb = puschInfo.fdAlloc.numPrb; +#endif + hqP->puschResType = puschInfo.fdAlloc.resAllocType; + hqP->puschStartPrb = puschInfo.fdAlloc.resAlloc.type1.startPrb; + hqP->puschNumPrb = puschInfo.fdAlloc.resAlloc.type1.numPrb; hqP->strtSymbl = puschInfo.tdAlloc.startSymb; hqP->numSymbl = puschInfo.tdAlloc.numSymb; hqP->tbInfo.qamOrder = puschInfo.tbInfo.qamOrder; @@ -909,17 +907,18 @@ uint8_t schFillPuschAlloc(SchUeCb *ueCb, SlotTimingInfo puschTime, uint32_t tbSi hqP->tbInfo.rv = puschInfo.tbInfo.rv; hqP->tbInfo.rvIdx = 0; hqP->tbInfo.tbSzReq = puschInfo.tbInfo.tbSize; +#ifdef INTEL_FAPI hqP->dmrsMappingType = puschInfo.dmrsMappingType; hqP->nrOfDmrsSymbols = puschInfo.nrOfDmrsSymbols; hqP->dmrsAddPos = puschInfo.dmrsAddPos; +#endif } else { - puschInfo.crnti = ueCb->crnti; - puschInfo.harqProcId = hqP->procId; - puschInfo.resAllocType = hqP->puschResType; - puschInfo.fdAlloc.startPrb = hqP->puschStartPrb; - puschInfo.fdAlloc.numPrb = hqP->puschNumPrb; + puschInfo.harqProcId = hqP->procId; + puschInfo.fdAlloc.resAllocType = hqP->puschResType; + puschInfo.fdAlloc.resAlloc.type1.startPrb = hqP->puschStartPrb; + puschInfo.fdAlloc.resAlloc.type1.numPrb = hqP->puschNumPrb; puschInfo.tdAlloc.startSymb = hqP->strtSymbl; puschInfo.tdAlloc.numSymb = hqP->numSymbl; puschInfo.tbInfo.qamOrder = hqP->tbInfo.qamOrder; @@ -929,10 +928,12 @@ uint8_t schFillPuschAlloc(SchUeCb *ueCb, SlotTimingInfo puschTime, uint32_t tbSi hqP->tbInfo.rvIdx = (hqP->tbInfo.rvIdx +1) & 0x3; puschInfo.tbInfo.rv = schCmnDlRvTbl[hqP->tbInfo.rvIdx]; puschInfo.tbInfo.tbSize = hqP->tbInfo.tbSzReq; +#ifdef INTEL_FAPI puschInfo.dmrsMappingType = hqP->dmrsMappingType; /* Setting Type-A */ puschInfo.nrOfDmrsSymbols = hqP->nrOfDmrsSymbols; puschInfo.dmrsAddPos = hqP->dmrsAddPos; - } +#endif + } schUlSlotInfo = cellCb->schUlSlotInfo[puschTime.slot]; SCH_ALLOC(schUlSlotInfo->schPuschInfo, sizeof(SchPuschInfo)); if(!schUlSlotInfo->schPuschInfo) @@ -1029,11 +1030,10 @@ uint8_t schFillUlDciForMsg3Retx(SchRaCb *raCb, SchPuschInfo *puschInfo, DciInfo dciInfo->dciInfo.pdschCfg = NULL; /* No DL data being sent */ msg3HqProc->tbInfo.txCntr++; - puschInfo->crnti = raCb->tcrnti; - puschInfo->harqProcId = msg3HqProc->procId; - puschInfo->resAllocType = msg3HqProc->puschResType; - puschInfo->fdAlloc.startPrb = msg3HqProc->puschStartPrb; - puschInfo->fdAlloc.numPrb = msg3HqProc->puschNumPrb; + puschInfo->harqProcId = msg3HqProc->procId; + puschInfo->fdAlloc.resAllocType = msg3HqProc->puschResType; + puschInfo->fdAlloc.resAlloc.type1.startPrb = msg3HqProc->puschStartPrb; + puschInfo->fdAlloc.resAlloc.type1.numPrb = msg3HqProc->puschNumPrb; puschInfo->tdAlloc.startSymb = msg3HqProc->strtSymbl; puschInfo->tdAlloc.numSymb = msg3HqProc->numSymbl; puschInfo->tbInfo.qamOrder = msg3HqProc->tbInfo.qamOrder; @@ -1042,10 +1042,11 @@ uint8_t schFillUlDciForMsg3Retx(SchRaCb *raCb, SchPuschInfo *puschInfo, DciInfo puschInfo->tbInfo.ndi = msg3HqProc->tbInfo.ndi; /* retransmission */ puschInfo->tbInfo.rv = msg3HqProc->tbInfo.rvIdx; puschInfo->tbInfo.tbSize = msg3HqProc->tbInfo.tbSzReq; +#ifdef INTEL_FAPI puschInfo->dmrsMappingType = msg3HqProc->dmrsMappingType; /* Setting Type-A */ puschInfo->nrOfDmrsSymbols = msg3HqProc->nrOfDmrsSymbols; puschInfo->dmrsAddPos = msg3HqProc->dmrsAddPos; - +#endif return ROK; } @@ -1105,9 +1106,9 @@ uint8_t schFillUlDci(SchUeCb *ueCb, SchPuschInfo *puschInfo, DciInfo *dciInfo, b dciInfo->formatType = FORMAT0_0; /* fill UL grant */ - dciInfo->format.format0_0.resourceAllocType = puschInfo->resAllocType; - dciInfo->format.format0_0.freqAlloc.startPrb = puschInfo->fdAlloc.startPrb; - dciInfo->format.format0_0.freqAlloc.numPrb = puschInfo->fdAlloc.numPrb; + dciInfo->format.format0_0.resourceAllocType = puschInfo->fdAlloc.resAllocType; + dciInfo->format.format0_0.freqAlloc.startPrb = puschInfo->fdAlloc.resAlloc.type1.startPrb; + dciInfo->format.format0_0.freqAlloc.numPrb = puschInfo->fdAlloc.resAlloc.type1.numPrb; dciInfo->format.format0_0.timeAlloc.startSymb = puschInfo->tdAlloc.startSymb; dciInfo->format.format0_0.timeAlloc.numSymb = puschInfo->tdAlloc.numSymb; dciInfo->format.format0_0.rowIndex = 0; /* row Index */ diff --git a/src/cm/du_app_mac_inf.h b/src/cm/du_app_mac_inf.h index 24bbacbc0..d9d8bca1f 100644 --- a/src/cm/du_app_mac_inf.h +++ b/src/cm/du_app_mac_inf.h @@ -1466,26 +1466,34 @@ typedef struct macSliceRsp typedef struct rrmPolicyRatio { - uint8_t policyMaxRatio; - uint8_t policyMinRatio; - uint8_t policyDedicatedRatio; + uint8_t maxRatio; + uint8_t minRatio; + uint8_t dedicatedRatio; }RrmPolicyRatio; -typedef struct macSliceRrmPolicy +typedef struct rrmPolicyMemberList { + Plmn plmn; Snssai snssai; - RrmPolicyRatio *rrmPolicyRatio; +}RrmPolicyMemberList; + +typedef struct macSliceRrmPolicy +{ + ResourceType resourceType; + uint8_t numOfRrmPolicyMem; + RrmPolicyMemberList **rRMPolicyMemberList; + RrmPolicyRatio policyRatio; }MacSliceRrmPolicy; typedef struct macSliceCfgReq { - uint8_t numOfConfiguredSlice; - MacSliceRrmPolicy **listOfSliceCfg; + uint8_t numOfRrmPolicy; + MacSliceRrmPolicy **listOfRrmPolicy; }MacSliceCfgReq; typedef struct macSliceCfgRsp { - uint8_t numSliceCfgRsp; + uint8_t numSliceCfgRsp; MacSliceRsp **listOfSliceCfgRsp; }MacSliceCfgRsp; diff --git a/src/cm/mac_sch_interface.h b/src/cm/mac_sch_interface.h index 70776d7d9..ef8b485b5 100644 --- a/src/cm/mac_sch_interface.h +++ b/src/cm/mac_sch_interface.h @@ -442,12 +442,16 @@ typedef struct timeDomainAlloc uint16_t numSymb; }TimeDomainAlloc; -typedef struct freqDomainAlloc +typedef struct resAllocType0 +{ + uint8_t rbBitmap[36]; +}ResAllocType0; + +typedef struct resAllocType1 { uint16_t startPrb; uint16_t numPrb; -}FreqDomainAlloc; - +}ResAllocType1; typedef struct { @@ -467,7 +471,7 @@ typedef struct bwpCfg { uint8_t subcarrierSpacing; uint8_t cyclicPrefix; - FreqDomainAlloc freqAlloc; + ResAllocType1 freqAlloc; }BwpCfg; typedef struct prg @@ -513,7 +517,7 @@ typedef struct pdschFreqAlloc { uint8_t resourceAllocType; /* since we are using type-1, rbBitmap excluded */ - FreqDomainAlloc freqAlloc; + ResAllocType1 freqAlloc; uint8_t vrbPrbMapping; } PdschFreqAlloc; @@ -640,7 +644,7 @@ typedef struct schRachCfg typedef struct schBwpParams { - FreqDomainAlloc freqAlloc; + ResAllocType1 freqAlloc; uint8_t scs; uint8_t cyclicPrefix; }SchBwpParams; @@ -845,7 +849,7 @@ typedef struct ssbInfo { uint8_t ssbIdx; /* SSB Index */ TimeDomainAlloc tdAlloc; /* Time domain allocation */ - FreqDomainAlloc fdAlloc; /* Freq domain allocation */ + ResAllocType1 fdAlloc; /* Freq domain allocation */ }SsbInfo; typedef struct sib1AllocInfo @@ -861,7 +865,7 @@ typedef struct prachSchInfo uint8_t prachFormat; /* PRACH Format */ uint8_t numRa; /* Freq domain ocassion */ uint8_t prachStartSymb; /* Freq domain ocassion */ -}PrachSchInfo; +}SchPrachInfo; /* Interface structure signifying DL broadcast allocation for SSB, SIB1 */ typedef struct dlBrdcstAlloc @@ -885,7 +889,7 @@ typedef struct msg3UlGrant { uint8_t freqHopFlag; uint16_t bwpSize; - FreqDomainAlloc msg3FreqAlloc; + ResAllocType1 msg3FreqAlloc; uint8_t k2Index; uint8_t mcs; uint8_t tpc; @@ -967,7 +971,7 @@ typedef struct format0_0 { uint8_t resourceAllocType; /* since we are using type-1, hence rbBitmap excluded */ - FreqDomainAlloc freqAlloc; + ResAllocType1 freqAlloc; TimeDomainAlloc timeAlloc; uint16_t rowIndex; uint8_t mcs; @@ -1052,27 +1056,59 @@ typedef struct dlPageAlloc typedef struct tbInfo { - uint8_t qamOrder; /* Modulation Order */ - uint8_t mcs; /* MCS */ + uint8_t mcs; /* MCS */ + uint8_t ndi; /* NDI */ + uint8_t rv; /* Redundancy Version */ + uint16_t tbSize; /* TB Size */ + uint8_t qamOrder; /* Modulation Order */ SchMcsTable mcsTable; /* MCS Table */ - uint8_t ndi; /* NDI */ - uint8_t rv; /* Redundancy Version */ - uint16_t tbSize; /* TB Size */ }TbInfo; +typedef struct freqDomainAlloc +{ + uint8_t resAllocType; /* Resource allocation type */ + union + { + ResAllocType0 type0; + ResAllocType1 type1; + }resAlloc; +}FreqDomainAlloc; + typedef struct schPuschInfo { - uint16_t crnti; uint8_t harqProcId; /* HARQ Process ID */ - uint8_t resAllocType; /* Resource allocation type */ FreqDomainAlloc fdAlloc; /* Freq domain allocation */ TimeDomainAlloc tdAlloc; /* Time domain allocation */ TbInfo tbInfo; /* TB info */ +#ifdef INTEL_FAPI uint8_t dmrsMappingType; uint8_t nrOfDmrsSymbols; uint8_t dmrsAddPos; +#endif }SchPuschInfo; +typedef struct harqInfo +{ + uint16_t harqAckBitLength; + uint8_t betaOffsetHarqAck; +}HarqInfo; + +typedef struct csiInfo +{ + uint16_t csiBits; + uint8_t betaOffsetCsi; +}CsiInfo; + +typedef struct harqAckInfo +{ + uint16_t harqBitLength; +}HarqFdbkInfo; + +typedef struct csiPartInfo +{ + uint16_t csiBits; +}csiFdbkInfo; + typedef struct schPucchFormatCfg { uint8_t interSlotFreqHop; @@ -1085,33 +1121,43 @@ typedef struct schPucchFormatCfg typedef struct schPucchInfo { - uint16_t rnti; - uint8_t pucchFormat; - FreqDomainAlloc fdAlloc; /* Freq domain allocation */ - TimeDomainAlloc tdAlloc; /* Time domain allocation */ + FreqDomainAlloc fdAlloc; + TimeDomainAlloc tdAlloc; uint8_t srFlag; - uint8_t harqFlag; - uint8_t numHarqBits; - uint8_t uciFlag; - uint8_t numUciBits; + HarqFdbkInfo harqInfo; + csiFdbkInfo csiInfo; + BeamformingInfo beamPucchInfo; + uint8_t pucchFormat; uint8_t intraFreqHop; uint16_t secondPrbHop; uint8_t initialCyclicShift; uint8_t occLen; uint8_t occIdx; uint8_t timeDomOCC; - SchPucchFormatCfg cmnFormatCfg; + uint8_t addDmrs; + bool pi2BPSK; }SchPucchInfo; +typedef struct schPuschUci +{ + uint8_t harqProcId; /* HARQ Process ID */ + FreqDomainAlloc fdAlloc; /* Freq domain allocation */ + TimeDomainAlloc tdAlloc; /* Time domain allocation */ + TbInfo tbInfo; /* TB information */ + HarqInfo harqInfo; /* Harq Information */ + CsiInfo csiInfo; /* Csi information*/ +}SchPuschUci; + typedef struct ulSchedInfo { - uint16_t cellId; /* Cell Id */ - uint16_t crnti; /* CRNI */ + uint16_t cellId; /* Cell Id */ + uint16_t crnti; /* CRNI */ SlotTimingInfo slotIndInfo; /* Slot Info: sfn, slot number */ - uint8_t dataType; /* Type of info being scheduled */ - PrachSchInfo prachSchInfo; /* Prach scheduling info */ - SchPuschInfo schPuschInfo; /* Pusch scheduling info */ - SchPucchInfo schPucchInfo; /* Pusch scheduling info */ + uint8_t dataType; /* Type of info being scheduled */ + SchPrachInfo prachSchInfo; /* Prach scheduling info */ + SchPuschInfo schPuschInfo; /* Pusch scheduling info */ + SchPuschUci schPuschUci; /* Pusch Uci */ + SchPucchInfo schPucchInfo; /* Pucch and Uci scheduling info */ }UlSchedInfo; typedef struct rachIndInfo @@ -1825,21 +1871,21 @@ typedef struct dlHarqInd typedef struct schRrmPolicyRatio { - uint8_t policyMaxRatio; - uint8_t policyMinRatio; - uint8_t policyDedicatedRatio; + uint8_t maxRatio; + uint8_t minRatio; + uint8_t dedicatedRatio; }SchRrmPolicyRatio; typedef struct schRrmPolicyOfSlice { Snssai snssai; - SchRrmPolicyRatio *rrmPolicyRatioInfo; + SchRrmPolicyRatio rrmPolicyRatioInfo; }SchRrmPolicyOfSlice; typedef struct schSliceCfgReq { uint8_t numOfConfiguredSlice; - SchRrmPolicyOfSlice **listOfConfirguration; + SchRrmPolicyOfSlice **listOfSlices; }SchSliceCfgReq; typedef struct sliceRsp diff --git a/src/du_app/du_cell_mgr.c b/src/du_app/du_cell_mgr.c index ea2af406b..ee1c4f699 100644 --- a/src/du_app/du_cell_mgr.c +++ b/src/du_app/du_cell_mgr.c @@ -360,8 +360,8 @@ uint8_t duHandleCellUpInd(Pst *pst, OduCellId *cellId) cellCb->cellStatus = ACTIVATED; gCellStatus = CELL_UP; - if(duCfgParam.tempSliceCfg.rrmPolicy) - BuildAndSendSliceConfigReq(duCfgParam.tempSliceCfg.rrmPolicy, duCfgParam.tempSliceCfg.totalRrmPolicy, duCfgParam.tempSliceCfg.totalSliceCount); + if(duCfgParam.tempSliceCfg.numOfRrmPolicy) + BuildAndSendSliceConfigReq(); #ifdef O1_ENABLE DU_LOG("\nINFO --> DU APP : Raise cell UP alarm for cell id=%d", cellId->cellId); raiseCellAlrm(CELL_UP_ALARM_ID, cellId->cellId); diff --git a/src/du_app/du_cell_mgr.h b/src/du_app/du_cell_mgr.h index 4e8b2242f..837b7114c 100644 --- a/src/du_app/du_cell_mgr.h +++ b/src/du_app/du_cell_mgr.h @@ -24,8 +24,8 @@ uint8_t duBuildAndSendMacCellCfg(uint16_t cellId); uint8_t duProcCellsToBeActivated(uint8_t *plmnStr, uint16_t nci, uint16_t nRPci); void duProcF1SetupRsp(); uint8_t duGetCellCb(uint16_t cellId, DuCellCb **cellCb); -uint8_t BuildAndSendSliceConfigReq(RrmPolicy *rrmPolicy[], uint8_t totalRrrmPolicy, uint8_t totalSliceCfgReq); -uint8_t BuildAndSendSliceRecfgReq(RrmPolicy *rrmPolicy[], uint8_t totalRrmPolicy, uint8_t totalSliceRecfg); +uint8_t BuildAndSendSliceConfigReq(); +uint8_t BuildAndSendSliceRecfgReq(); uint8_t processPagingMsg(uint16_t cellId, DuPagingMsg *rcvdF1apPagingParam); uint8_t BuildAndSendDlPcchIndToMac(uint16_t cellId, uint16_t pf, uint8_t i_s, CmLListCp *pageUeLL); #endif diff --git a/src/du_app/du_cfg.c b/src/du_app/du_cfg.c index d5b87759f..b5c3173ae 100644 --- a/src/du_app/du_cfg.c +++ b/src/du_app/du_cfg.c @@ -445,7 +445,7 @@ uint8_t fillDuPort(uint16_t *duPort) duPort[E2_INTERFACE] = g_cfg.RIC_Port; #else duPort[F1_INTERFACE] = F1_SCTP_PORT; /* DU Port idx 0 38472 */ - duPort[E2_INTERFACE] = E2_SCTP_PORT; /* RIC Port idx 1 38482 */ + duPort[E2_INTERFACE] = E2_SCTP_PORT; /* RIC Port idx 1 36421 */ #endif return ROK; } @@ -1046,65 +1046,71 @@ uint8_t readCfg() * RFAILED - failure * * ****************************************************************/ -uint8_t cpyRrmPolicyInDuCfgParams(RrmPolicyList rrmPolicy[], uint8_t policyNum, CopyOfRecvdSliceCfg *tempSliceCfg) +uint8_t cpyRrmPolicyInDuCfgParams(RrmPolicyList rrmPolicy[], uint8_t policyNum, MacSliceCfgReq *tempSliceCfg) { - uint8_t policyIdx = 0, memberListIdx = 0, count = 0; - + uint8_t policyIdx = 0, memberListIdx = 0; if(policyNum) { - tempSliceCfg->totalRrmPolicy = policyNum; - DU_ALLOC(tempSliceCfg->rrmPolicy, tempSliceCfg->totalRrmPolicy * sizeof(RrmPolicy*)); - if(tempSliceCfg->rrmPolicy == NULLP) + tempSliceCfg->numOfRrmPolicy = policyNum; + DU_ALLOC_SHRABL_BUF(tempSliceCfg->listOfRrmPolicy, tempSliceCfg->numOfRrmPolicy * sizeof(MacSliceRrmPolicy*)); + if(!tempSliceCfg->listOfRrmPolicy) { DU_LOG("\nERROR --> DU APP : Memory allocation failed in cpyRrmPolicyInDuCfgParams"); return RFAILED; } - for(policyIdx = 0; policyIdxtotalRrmPolicy; policyIdx++) + for(policyIdx = 0; policyIdxnumOfRrmPolicy; policyIdx++) { - DU_ALLOC(tempSliceCfg->rrmPolicy[policyIdx], sizeof(RrmPolicy)); - if(tempSliceCfg->rrmPolicy[policyIdx] == NULLP) + DU_ALLOC_SHRABL_BUF(tempSliceCfg->listOfRrmPolicy[policyIdx], sizeof(MacSliceRrmPolicy)); + if(!tempSliceCfg->listOfRrmPolicy[policyIdx]) { DU_LOG("\nERROR --> DU APP : Memory allocation failed in cpyRrmPolicyInDuCfgParams"); return RFAILED; } - - if(rrmPolicy[policyIdx].rRMMemberNum) + + tempSliceCfg->listOfRrmPolicy[policyIdx]->resourceType = rrmPolicy[policyIdx].resourceType; + + tempSliceCfg->listOfRrmPolicy[policyIdx]->numOfRrmPolicyMem = rrmPolicy[policyIdx].rRMMemberNum; + + if(tempSliceCfg->listOfRrmPolicy[policyIdx]->numOfRrmPolicyMem) { - tempSliceCfg->rrmPolicy[policyIdx]->numMemberList = rrmPolicy[policyIdx].rRMMemberNum; - DU_ALLOC(tempSliceCfg->rrmPolicy[policyIdx]->memberList, tempSliceCfg->rrmPolicy[policyIdx]->numMemberList * sizeof(PolicyMemberList*)) - if(tempSliceCfg->rrmPolicy[policyIdx]->memberList == NULLP) + DU_ALLOC_SHRABL_BUF(tempSliceCfg->listOfRrmPolicy[policyIdx]->rRMPolicyMemberList,\ + tempSliceCfg->listOfRrmPolicy[policyIdx]->numOfRrmPolicyMem * sizeof(RrmPolicyMemberList*)); + + if(!tempSliceCfg->listOfRrmPolicy[policyIdx]->rRMPolicyMemberList) { DU_LOG("\nERROR --> DU APP : Memory allocation failed in cpyRrmPolicyInDuCfgParams"); return RFAILED; } - for(memberListIdx = 0; memberListIdxrrmPolicy[policyIdx]->numMemberList; memberListIdx++) + + for(memberListIdx = 0; memberListIdxlistOfRrmPolicy[policyIdx]->numOfRrmPolicyMem; memberListIdx++) { - DU_ALLOC(tempSliceCfg->rrmPolicy[policyIdx]->memberList[memberListIdx], sizeof(PolicyMemberList)) - if(tempSliceCfg->rrmPolicy[policyIdx]->memberList[memberListIdx] == NULLP) + DU_ALLOC_SHRABL_BUF(tempSliceCfg->listOfRrmPolicy[policyIdx]->rRMPolicyMemberList[memberListIdx], sizeof(RrmPolicyMemberList)); + if(!tempSliceCfg->listOfRrmPolicy[policyIdx]->rRMPolicyMemberList[memberListIdx]) { DU_LOG("\nERROR --> DU APP : Memory allocation failed in cpyRrmPolicyInDuCfgParams"); return RFAILED; } - memcpy(&tempSliceCfg->rrmPolicy[policyIdx]->memberList[memberListIdx]->snssai.sd, &rrmPolicy[policyIdx].rRMPolicyMemberList[memberListIdx].sd, 3 * sizeof(uint8_t)); - memcpy(&tempSliceCfg->rrmPolicy[policyIdx]->memberList[memberListIdx]->snssai.sst, &rrmPolicy[policyIdx].rRMPolicyMemberList[memberListIdx].sst, sizeof(uint8_t)); - memcpy(&tempSliceCfg->rrmPolicy[policyIdx]->memberList[memberListIdx]->plmn.mcc, &rrmPolicy[policyIdx].rRMPolicyMemberList[memberListIdx].mcc, 3 * sizeof(uint8_t)); - memcpy(&tempSliceCfg->rrmPolicy[policyIdx]->memberList[memberListIdx]->plmn.mnc, &rrmPolicy[policyIdx].rRMPolicyMemberList[memberListIdx].mnc, 3 * sizeof(uint8_t)); - count++; + memcpy(&tempSliceCfg->listOfRrmPolicy[policyIdx]->rRMPolicyMemberList[memberListIdx]->snssai.sd,\ + &rrmPolicy[policyIdx].rRMPolicyMemberList[memberListIdx].sd, 3 * sizeof(uint8_t)); + memcpy(&tempSliceCfg->listOfRrmPolicy[policyIdx]->rRMPolicyMemberList[memberListIdx]->snssai.sst,\ + &rrmPolicy[policyIdx].rRMPolicyMemberList[memberListIdx].sst, sizeof(uint8_t)); + memcpy(&tempSliceCfg->listOfRrmPolicy[policyIdx]->rRMPolicyMemberList[memberListIdx]->plmn.mcc,\ + &rrmPolicy[policyIdx].rRMPolicyMemberList[memberListIdx].mcc, 3 * sizeof(uint8_t)); + memcpy(&tempSliceCfg->listOfRrmPolicy[policyIdx]->rRMPolicyMemberList[memberListIdx]->plmn.mnc,\ + &rrmPolicy[policyIdx].rRMPolicyMemberList[memberListIdx].mnc, 3 * sizeof(uint8_t)); } + tempSliceCfg->listOfRrmPolicy[policyIdx]->policyRatio.maxRatio = rrmPolicy[policyIdx].rRMPolicyMaxRatio; + tempSliceCfg->listOfRrmPolicy[policyIdx]->policyRatio.minRatio = rrmPolicy[policyIdx].rRMPolicyMinRatio; + tempSliceCfg->listOfRrmPolicy[policyIdx]->policyRatio.dedicatedRatio = rrmPolicy[policyIdx].rRMPolicyDedicatedRatio; } - - tempSliceCfg->rrmPolicy[policyIdx]->rsrcType = rrmPolicy[policyIdx].resourceType; - tempSliceCfg->rrmPolicy[policyIdx]->policyMaxRatio = rrmPolicy[policyIdx].rRMPolicyMaxRatio; - tempSliceCfg->rrmPolicy[policyIdx]->policyMinRatio = rrmPolicy[policyIdx].rRMPolicyMinRatio; - tempSliceCfg->rrmPolicy[policyIdx]->policyDedicatedRatio = rrmPolicy[policyIdx].rRMPolicyDedicatedRatio; - } - tempSliceCfg->totalSliceCount = count; } + return ROK; } + /******************************************************************* * * @brief Reads config and posts message to du_app on completion diff --git a/src/du_app/du_cfg.h b/src/du_app/du_cfg.h index 6f55b4fc9..832ef1df5 100644 --- a/src/du_app/du_cfg.h +++ b/src/du_app/du_cfg.h @@ -1245,29 +1245,6 @@ typedef struct sib1Params SrvCellCfgCommSib srvCellCfgCommSib; }Sib1Params; -typedef struct policyMemberList -{ - Plmn plmn; - Snssai snssai; -}PolicyMemberList; - -typedef struct rrmPolicy -{ - ResourceType rsrcType; - uint8_t numMemberList; - PolicyMemberList **memberList; - uint8_t policyMaxRatio; - uint8_t policyMinRatio; - uint8_t policyDedicatedRatio; -}RrmPolicy; - -typedef struct copyOfRecvdSliceCfg -{ - RrmPolicy **rrmPolicy; - uint8_t totalRrmPolicy; - uint8_t totalSliceCount; -}CopyOfRecvdSliceCfg; - typedef struct duCfgParams { SctpParams sctpParams; /* SCTP Params */ @@ -1281,7 +1258,7 @@ typedef struct duCfgParams MacCellCfg macCellCfg; /* MAC cell configuration */ MibParams mibParams; /* MIB Params */ Sib1Params sib1Params; /* SIB1 Params */ - CopyOfRecvdSliceCfg tempSliceCfg; + MacSliceCfgReq tempSliceCfg; }DuCfgParams; typedef struct f1SetupMsg @@ -1333,7 +1310,7 @@ uint8_t readClCfg(); uint8_t readCfg(); uint8_t duReadCfg(); uint16_t calcSliv(uint8_t startSymbol, uint8_t lengthSymbol); -uint8_t cpyRrmPolicyInDuCfgParams(RrmPolicyList rrmPolicy[], uint8_t policyNum, CopyOfRecvdSliceCfg *tempSliceCfg); +uint8_t cpyRrmPolicyInDuCfgParams(RrmPolicyList rrmPolicy[], uint8_t policyNum, MacSliceCfgReq *tempSliceCfg); #endif /* __DU_CONFIG_H__ */ diff --git a/src/du_app/du_f1ap_msg_hdl.c b/src/du_app/du_f1ap_msg_hdl.c index 292b5c7b0..957229d84 100644 --- a/src/du_app/du_f1ap_msg_hdl.c +++ b/src/du_app/du_f1ap_msg_hdl.c @@ -15636,35 +15636,35 @@ uint8_t procF1DlRrcMsgTrans(F1AP_PDU_t *f1apMsg) { if(f1DlRrcMsg->protocolIEs.list.array[idx]->value.choice.RRCContainer.size > 0) { - dlMsg.rrcMsgSize = f1DlRrcMsg->protocolIEs.list.array[idx]->value.choice.RRCContainer.size; - DU_ALLOC_SHRABL_BUF(dlMsg.rrcMsgPdu, dlMsg.rrcMsgSize); - if(dlMsg.rrcMsgPdu) - { - memcpy(dlMsg.rrcMsgPdu, f1DlRrcMsg->protocolIEs.list.array[idx]->value.choice.RRCContainer.buf,\ - dlMsg.rrcMsgSize); - } - else - { - DU_LOG("\nERROR --> DU APP : Memory alloc Failed at RRC Container at procF1DlRrcMsgTrans()"); - return RFAILED; - } - } - else - { - DU_LOG("\nERROR --> DU_APP : RRC Container Size is invalid:%ld",\ - f1DlRrcMsg->protocolIEs.list.array[idx]->value.choice.RRCContainer.size); - return RFAILED; - } - break; - } - case ProtocolIE_ID_id_RRCDeliveryStatusRequest: - { - dlMsg.deliveryStatRpt = true; - break; - } - default: - DU_LOG("\nERROR --> DU_APP : Invalid IE received in DL RRC Msg Transfer:%ld", - f1DlRrcMsg->protocolIEs.list.array[idx]->id); + dlMsg.rrcMsgSize = f1DlRrcMsg->protocolIEs.list.array[idx]->value.choice.RRCContainer.size; + DU_ALLOC_SHRABL_BUF(dlMsg.rrcMsgPdu, dlMsg.rrcMsgSize); + if(dlMsg.rrcMsgPdu) + { + memcpy(dlMsg.rrcMsgPdu, f1DlRrcMsg->protocolIEs.list.array[idx]->value.choice.RRCContainer.buf,\ + dlMsg.rrcMsgSize); + } + else + { + DU_LOG("\nERROR --> DU APP : Memory alloc Failed at RRC Container at procF1DlRrcMsgTrans()"); + return RFAILED; + } + } + else + { + DU_LOG("\nERROR --> DU_APP : RRC Container Size is invalid:%ld",\ + f1DlRrcMsg->protocolIEs.list.array[idx]->value.choice.RRCContainer.size); + return RFAILED; + } + break; + } + case ProtocolIE_ID_id_RRCDeliveryStatusRequest: + { + dlMsg.deliveryStatRpt = true; + break; + } + default: + DU_LOG("\nERROR --> DU_APP : Invalid IE received in DL RRC Msg Transfer:%ld", + f1DlRrcMsg->protocolIEs.list.array[idx]->id); } } diff --git a/src/du_app/du_mgr_main.c b/src/du_app/du_mgr_main.c index 40efc773e..fd2902c9c 100644 --- a/src/du_app/du_mgr_main.c +++ b/src/du_app/du_mgr_main.c @@ -162,13 +162,11 @@ uint8_t setRrmPolicy(RrmPolicyList rrmPolicy[], uint8_t policyNum) { if(duCb.sliceState == SLICE_INFO_NOT_AVAILABLE) { - BuildAndSendSliceConfigReq(duCfgParam.tempSliceCfg.rrmPolicy, duCfgParam.tempSliceCfg.totalRrmPolicy,\ - duCfgParam.tempSliceCfg.totalSliceCount); + BuildAndSendSliceConfigReq(); } else { - BuildAndSendSliceRecfgReq(duCfgParam.tempSliceCfg.rrmPolicy, duCfgParam.tempSliceCfg.totalRrmPolicy,\ - duCfgParam.tempSliceCfg.totalSliceCount); + BuildAndSendSliceRecfgReq(); } } } diff --git a/src/du_app/du_msg_hdl.c b/src/du_app/du_msg_hdl.c index 9f402faee..ca148c86e 100644 --- a/src/du_app/du_msg_hdl.c +++ b/src/du_app/du_msg_hdl.c @@ -1861,46 +1861,6 @@ uint8_t DuProcRlcUlUserDataTrans(Pst *pst, RlcUlUserDatInfo *ulUserData) return ROK; } -/******************************************************************* - * - * @brief Free tempSLiceCfg stored in duCfgParams - * - * @details - * - * Function : duFreeTempSliceCfg - * - * Functionality: Free tempSLiceCfg stored in duCfgParams - * - * @params[in] Post structure, - * - * @return Void - * - * ****************************************************************/ - -void duFreeTempSliceCfg() -{ - uint8_t policyIdx = 0, memberListTdx =0; - CopyOfRecvdSliceCfg *tempSliceCfg = &duCfgParam.tempSliceCfg; - - if(tempSliceCfg->totalRrmPolicy) - { - for(policyIdx = 0; policyIdxtotalRrmPolicy; policyIdx++) - { - if(tempSliceCfg->rrmPolicy[policyIdx]->numMemberList) - { - for(memberListTdx = 0; memberListTdxrrmPolicy[policyIdx]->numMemberList; memberListTdx++) - { - DU_FREE(tempSliceCfg->rrmPolicy[policyIdx]->memberList[memberListTdx], sizeof(PolicyMemberList)); - } - DU_FREE(tempSliceCfg->rrmPolicy[policyIdx]->memberList, (tempSliceCfg->rrmPolicy[policyIdx]->numMemberList) * sizeof(PolicyMemberList*)); - } - DU_FREE(tempSliceCfg->rrmPolicy[policyIdx], sizeof(RrmPolicy)); - } - DU_FREE(tempSliceCfg->rrmPolicy, tempSliceCfg->totalRrmPolicy* sizeof(RrmPolicy*)); - } - memset(tempSliceCfg, 0, sizeof(CopyOfRecvdSliceCfg)); -} - /******************************************************************* * * @brief free the slice cfg rsp @@ -1970,73 +1930,9 @@ uint8_t DuProcMacSliceCfgRsp(Pst *pst, MacSliceCfgRsp *cfgRsp) } duFreeSliceCfgRsp(pst, cfgRsp); } - duFreeTempSliceCfg(); return ROK; } -/******************************************************************* - * - * @brief Fill the slice configration and rrm policy ratio - * information received form O1 - * - * @details - * - * Function : fillSliceCfgReCfgInfo - * - * Functionality: Fill the slice configration and recfg info - * - * @params[in] Post structure - * - * @return ROK - success - * RFAILED - failure - * - * ****************************************************************/ - -uint8_t fillSliceCfgReCfgInfo(MacSliceRecfgReq *sliceRecfgReq, RrmPolicy *rrmPolicy[], uint8_t totalRrmPolicy, uint8_t totalSliceCount) -{ - uint8_t sliceIdx = 0, cfgIdx = 0, memberListIdx = 0; - - if(totalRrmPolicy) - { - DU_ALLOC_SHRABL_BUF(sliceRecfgReq->listOfSliceCfg, totalSliceCount*sizeof(MacSliceRrmPolicy*)); - if(sliceRecfgReq->listOfSliceCfg == NULLP) - { - DU_LOG("\nERROR --> DU_APP : Memory allocation failed in fillSliceCfgReCfgInfo"); - return RFAILED; - } - - for(sliceIdx = 0; sliceIdxnumMemberList; memberListIdx++) - { - DU_ALLOC_SHRABL_BUF(sliceRecfgReq->listOfSliceCfg[cfgIdx], sizeof(MacSliceRrmPolicy)); - if(sliceRecfgReq->listOfSliceCfg[cfgIdx] == NULLP) - { - DU_LOG("\nERROR --> DU_APP : Memory allocation failed in fillSliceCfgReCfgInfo"); - return RFAILED; - } - - - memcpy(&sliceRecfgReq->listOfSliceCfg[cfgIdx]->snssai, &rrmPolicy[sliceIdx]->memberList[memberListIdx]->snssai, sizeof(Snssai)); - - DU_ALLOC_SHRABL_BUF(sliceRecfgReq->listOfSliceCfg[cfgIdx]->rrmPolicyRatio, sizeof(RrmPolicyRatio)); - if(sliceRecfgReq->listOfSliceCfg[cfgIdx]->rrmPolicyRatio == NULLP) - { - DU_LOG("\nERROR --> DU_APP : Memory allocation failed in fillSliceCfgReCfgInfo"); - return RFAILED; - } - - sliceRecfgReq->listOfSliceCfg[cfgIdx]->rrmPolicyRatio->policyMaxRatio = rrmPolicy[sliceIdx]->policyMaxRatio; - sliceRecfgReq->listOfSliceCfg[cfgIdx]->rrmPolicyRatio->policyMinRatio = rrmPolicy[sliceIdx]->policyMinRatio; - sliceRecfgReq->listOfSliceCfg[cfgIdx]->rrmPolicyRatio->policyDedicatedRatio = rrmPolicy[sliceIdx]->policyDedicatedRatio; - sliceRecfgReq->numOfConfiguredSlice++; - cfgIdx++; - } - } - } - return ROK; -} - /******************************************************************* * * @brief Fill the slice configration and rrm policy related @@ -2055,7 +1951,7 @@ uint8_t fillSliceCfgReCfgInfo(MacSliceRecfgReq *sliceRecfgReq, RrmPolicy *rrmPol * RFAILED - failure * * ****************************************************************/ -uint8_t BuildAndSendSliceConfigReq(RrmPolicy *rrmPolicy[], uint8_t totalRrmPolicy, uint8_t totalSliceCnt) +uint8_t BuildAndSendSliceConfigReq() { Pst pst; MacSliceCfgReq *sliceCfgReq; @@ -2068,11 +1964,7 @@ uint8_t BuildAndSendSliceConfigReq(RrmPolicy *rrmPolicy[], uint8_t totalRrmPolic } else { - if(fillSliceCfgReCfgInfo(sliceCfgReq, rrmPolicy, totalRrmPolicy, totalSliceCnt) != ROK) - { - DU_LOG("\nERROR --> DU_APP : Failed to fill slice Configuration info in MacSliceCfgReq"); - return RFAILED; - } + memcpy(sliceCfgReq, &duCfgParam.tempSliceCfg, sizeof(MacSliceCfgReq)); FILL_PST_DUAPP_TO_MAC(pst, EVENT_MAC_SLICE_CFG_REQ); DU_LOG("\nDEBUG --> DU_APP : Sending Slice Cfg Request to MAC "); @@ -2085,7 +1977,6 @@ uint8_t BuildAndSendSliceConfigReq(RrmPolicy *rrmPolicy[], uint8_t totalRrmPolic return ROK; } - /******************************************************************* * * @brief Fill the slice configration and rrm policy related @@ -2103,7 +1994,7 @@ uint8_t BuildAndSendSliceConfigReq(RrmPolicy *rrmPolicy[], uint8_t totalRrmPolic * RFAILED - failure * * ****************************************************************/ -uint8_t BuildAndSendSliceRecfgReq(RrmPolicy *rrmPolicy[], uint8_t totalRrmPolicy, uint8_t totalSliceCount) +uint8_t BuildAndSendSliceRecfgReq() { Pst pst; MacSliceRecfgReq *sliceRecfgReq = NULLP; @@ -2118,11 +2009,8 @@ uint8_t BuildAndSendSliceRecfgReq(RrmPolicy *rrmPolicy[], uint8_t totalRrmPolicy } else { - if(fillSliceCfgReCfgInfo(sliceRecfgReq, rrmPolicy, totalRrmPolicy, totalSliceCount) != ROK) - { - DU_LOG("\nERROR --> DU_APP: Failed to fill slice cfg request info"); - return RFAILED; - } + memcpy(sliceRecfgReq, &duCfgParam.tempSliceCfg, sizeof(MacSliceRecfgReq)); + FILL_PST_DUAPP_TO_MAC(pst, EVENT_MAC_SLICE_RECFG_REQ); DU_LOG("\nDEBUG --> DU_APP: Sending Slice ReCfg Request to MAC "); @@ -2173,7 +2061,6 @@ uint8_t DuProcMacSliceRecfgRsp(Pst *pst, MacSliceRecfgRsp *reCfgRsp) } duFreeSliceCfgRsp(pst, reCfgRsp); } - duFreeTempSliceCfg(); return ROK; }