X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=src%2Fdu_app%2Fdu_f1ap_msg_hdl.c;h=d72a92dea50f5d53fb1a067468be15ffbc2ad675;hb=62605166db94fd7d52f32de84dea8c7006e0f4c5;hp=8c776c4454679393ea8f2188be977a9f44dc6c0a;hpb=3c9a60ea3d2abf5e22f741f268bdfc37a09743ef;p=o-du%2Fl2.git diff --git a/src/du_app/du_f1ap_msg_hdl.c b/src/du_app/du_f1ap_msg_hdl.c index 8c776c445..d72a92dea 100644 --- a/src/du_app/du_f1ap_msg_hdl.c +++ b/src/du_app/du_f1ap_msg_hdl.c @@ -1407,160 +1407,126 @@ void FreeRrcVer(RRC_Version_t *rrcVer) void FreeServedCellList( GNB_DU_Served_Cells_List_t *duServedCell) { uint8_t plmnCnt=1; - uint8_t servId=0; - uint8_t sliceId=0; - uint8_t ieId=0; - uint8_t extensionCnt=1; - uint8_t plmnidx=0; - GNB_DU_Served_Cells_Item_t *srvCellItem= &duServedCell->list.array[0]->value.choice.GNB_DU_Served_Cells_Item; + uint8_t sliceId=0; + uint8_t extensionCnt=1; + uint8_t plmnIdx=0; + GNB_DU_Served_Cells_Item_t *srvCellItem; + ServedPLMNs_Item_t *servedPlmnItem; + SliceSupportItem_t *sliceSupportItem; + if(duServedCell->list.array!=NULLP) { if(duServedCell->list.array[0]!=NULLP) { - if(srvCellItem->served_Cell_Information.nRCGI.pLMN_Identity.buf!=NULLP) - { - if(srvCellItem->served_Cell_Information.nRCGI.nRCellIdentity.buf !=NULLP) - { - if(srvCellItem->served_Cell_Information.fiveGS_TAC!=NULLP) - { - if(srvCellItem->served_Cell_Information.fiveGS_TAC->buf!=NULLP) - { - if(srvCellItem->served_Cell_Information.servedPLMNs.list.array!=NULLP) - { - if(srvCellItem->served_Cell_Information.servedPLMNs.list.array[0]!=NULLP) - { - if(srvCellItem->served_Cell_Information.servedPLMNs.list.array[servId]->pLMN_Identity.buf!=NULLP) - { - if(srvCellItem->served_Cell_Information.servedPLMNs.list.array[servId]->iE_Extensions!=NULLP) - { - if(srvCellItem->served_Cell_Information.servedPLMNs.list.array[servId]->iE_Extensions->list.array!=NULLP) - { - if(srvCellItem->served_Cell_Information.servedPLMNs.list.array[servId]->iE_Extensions->list.array[0]!=NULLP) - { - if(srvCellItem->served_Cell_Information.servedPLMNs.list.array[servId]->iE_Extensions->list.array[0]->\ - extensionValue.choice.SliceSupportList.list.array!=NULLP) - { - if(srvCellItem->served_Cell_Information.servedPLMNs.list.array[servId]->iE_Extensions->list.array[0]->\ - extensionValue.choice.SliceSupportList.list.array[sliceId]!= NULLP) - { - if(srvCellItem->served_Cell_Information.servedPLMNs.list.array[servId]->iE_Extensions->list.array[0]->\ - extensionValue.choice.SliceSupportList.list.array[sliceId]->sNSSAI.sST.buf!=NULLP) - { - if(srvCellItem->served_Cell_Information.servedPLMNs.list.array[servId]->iE_Extensions->list.array[0]->\ - extensionValue.choice.SliceSupportList.list.array[sliceId]->sNSSAI.sD!=NULLP) - { - if(srvCellItem->served_Cell_Information.servedPLMNs.list.array[servId]->iE_Extensions->\ - list.array[0]->extensionValue.choice.SliceSupportList.list.array[sliceId]->sNSSAI.sD->buf!=NULLP) - { - if(srvCellItem->served_Cell_Information.nR_Mode_Info.choice.fDD!=NULLP) - { - if(srvCellItem->served_Cell_Information.nR_Mode_Info.choice.fDD->uL_NRFreqInfo.\ - freqBandListNr.list.array!=NULLP) - { - if(srvCellItem->served_Cell_Information.nR_Mode_Info.choice.fDD->uL_NRFreqInfo.\ - freqBandListNr.list.array[0]!=NULLP) - { - if(srvCellItem->served_Cell_Information.nR_Mode_Info.choice.fDD->dL_NRFreqInfo.\ - freqBandListNr.list.array) - { - if(srvCellItem->served_Cell_Information.nR_Mode_Info.choice.fDD->dL_NRFreqInfo.\ - freqBandListNr.list.array[0]!=NULLP) - { - if(srvCellItem->served_Cell_Information.measurementTimingConfiguration.buf!=NULLP) - { - if(!srvCellItem->gNB_DU_System_Information) - { - if(srvCellItem->gNB_DU_System_Information->mIB_message.buf!=NULLP) - { - if(srvCellItem->gNB_DU_System_Information->sIB1_message.buf!=NULLP) - { - DU_FREE(srvCellItem->gNB_DU_System_Information->sIB1_message.buf,\ - srvCellItem->gNB_DU_System_Information->sIB1_message.size); - DU_FREE(duCfgParam.srvdCellLst[0].duSysInfo.sib1Msg,\ - srvCellItem->gNB_DU_System_Information->sIB1_message.size); - } - DU_FREE(srvCellItem->gNB_DU_System_Information->mIB_message.buf,\ - srvCellItem->gNB_DU_System_Information->mIB_message.size); - DU_FREE(duCfgParam.srvdCellLst[0].duSysInfo.mibMsg,\ - strlen((char*)duCfgParam.srvdCellLst[0].duSysInfo.mibMsg)); - } - DU_FREE(srvCellItem->gNB_DU_System_Information,sizeof(GNB_DU_System_Information_t)); - } - DU_FREE(srvCellItem->served_Cell_Information.measurementTimingConfiguration.buf,\ - srvCellItem->served_Cell_Information.measurementTimingConfiguration.size); - } - DU_FREE(srvCellItem->served_Cell_Information.nR_Mode_Info.choice.fDD->dL_NRFreqInfo.\ - freqBandListNr.list.array[0],sizeof(FreqBandNrItem_t)); - } - DU_FREE(srvCellItem->served_Cell_Information.nR_Mode_Info.choice.fDD->dL_NRFreqInfo.\ - freqBandListNr.list.array,sizeof(FreqBandNrItem_t *)); - } - DU_FREE(srvCellItem->served_Cell_Information.nR_Mode_Info.choice.fDD->uL_NRFreqInfo.freqBandListNr.\ - list.array[0],sizeof(FreqBandNrItem_t)); - } - DU_FREE(srvCellItem->served_Cell_Information.nR_Mode_Info.choice.fDD->uL_NRFreqInfo.freqBandListNr.\ - list.array,sizeof(FreqBandNrItem_t*)); - } - DU_FREE(srvCellItem->served_Cell_Information.nR_Mode_Info.choice.fDD,sizeof(FDD_Info_t)); - } - DU_FREE(srvCellItem->served_Cell_Information.servedPLMNs.list.array[servId]->\ - iE_Extensions->list.array[ieId]->extensionValue.choice.SliceSupportList.list.array[sliceId]->\ - sNSSAI.sD->buf,srvCellItem->served_Cell_Information.servedPLMNs.list.array[servId]->iE_Extensions-> - list.array[ieId]->extensionValue.choice.SliceSupportList.list.array[sliceId]->sNSSAI.sD->size); - } - DU_FREE(srvCellItem->served_Cell_Information.servedPLMNs.list.array[servId]->\ - iE_Extensions->list.array[ieId]->extensionValue.choice.SliceSupportList.\ - list.array[sliceId]->sNSSAI.sD,sizeof(OCTET_STRING_t)); - } - DU_FREE(srvCellItem->served_Cell_Information.servedPLMNs.list.array[servId]->\ - iE_Extensions->list.array[ieId]->extensionValue.choice.SliceSupportList.list.array[sliceId]->\ - sNSSAI.sST.buf,sizeof(uint8_t)); - } - DU_FREE(srvCellItem->served_Cell_Information.servedPLMNs.list.array[servId]->iE_Extensions->list.array[0]->\ - extensionValue.choice.SliceSupportList.list.array[sliceId],sizeof(SliceSupportItem_t)); - } - DU_FREE(srvCellItem->served_Cell_Information.servedPLMNs.list.array[servId]->iE_Extensions->list.array[0]->\ - extensionValue.choice.SliceSupportList.list.array,sizeof(SliceSupportItem_t*)); - } - DU_FREE(srvCellItem->served_Cell_Information.servedPLMNs.list.\ - array[servId]->iE_Extensions->list.array[plmnidx],sizeof(ServedPLMNs_ItemExtIEs_t)); - } - DU_FREE(srvCellItem->served_Cell_Information.servedPLMNs.list.\ - array[servId]->iE_Extensions->list.array,\ - extensionCnt*sizeof(ServedPLMNs_ItemExtIEs_t*)); - } - DU_FREE(srvCellItem->served_Cell_Information.servedPLMNs.list.\ - array[servId]->iE_Extensions,sizeof(ProtocolExtensionContainer_4624P3_t)); - } - DU_FREE(srvCellItem->served_Cell_Information.servedPLMNs.list.\ - array[servId]->pLMN_Identity.buf,srvCellItem->served_Cell_Information.\ - servedPLMNs.list.array[servId]->pLMN_Identity.size - * sizeof(uint8_t)); - } - DU_FREE(srvCellItem->served_Cell_Information.servedPLMNs.list.array[plmnidx],\ - sizeof(ServedPLMNs_Item_t *)); - } - DU_FREE(srvCellItem->served_Cell_Information.servedPLMNs.list.array,\ - sizeof(ServedPLMNs_Item_t *)); - } - DU_FREE(srvCellItem->served_Cell_Information.fiveGS_TAC->buf,\ - sizeof(srvCellItem->served_Cell_Information.fiveGS_TAC->size)); - } - DU_FREE(srvCellItem->served_Cell_Information.fiveGS_TAC,sizeof(FiveGS_TAC_t)); - } - DU_FREE(srvCellItem->served_Cell_Information.nRCGI.nRCellIdentity.buf,\ - srvCellItem->served_Cell_Information.nRCGI.nRCellIdentity.size * - sizeof(uint8_t)); - } - DU_FREE(srvCellItem->served_Cell_Information.nRCGI.pLMN_Identity.buf,\ - srvCellItem->served_Cell_Information.nRCGI.pLMN_Identity.size * - sizeof(uint8_t)); - } - DU_FREE(duServedCell->list.array[plmnidx],sizeof(GNB_DU_Served_Cells_ItemIEs_t)); + srvCellItem= &duServedCell->list.array[0]->value.choice.GNB_DU_Served_Cells_Item; + + DU_FREE(srvCellItem->served_Cell_Information.nRCGI.pLMN_Identity.buf,\ + srvCellItem->served_Cell_Information.nRCGI.pLMN_Identity.size * sizeof(uint8_t)); + DU_FREE(srvCellItem->served_Cell_Information.nRCGI.nRCellIdentity.buf,\ + srvCellItem->served_Cell_Information.nRCGI.nRCellIdentity.size * sizeof(uint8_t)); + + if(srvCellItem->served_Cell_Information.fiveGS_TAC!=NULLP) + { + DU_FREE(srvCellItem->served_Cell_Information.fiveGS_TAC->buf,\ + sizeof(srvCellItem->served_Cell_Information.fiveGS_TAC->size)); + DU_FREE(srvCellItem->served_Cell_Information.fiveGS_TAC,sizeof(FiveGS_TAC_t)); + } + + if(srvCellItem->served_Cell_Information.servedPLMNs.list.array!=NULLP) + { + if(srvCellItem->served_Cell_Information.servedPLMNs.list.array[plmnIdx] != NULLP) + { + servedPlmnItem = srvCellItem->served_Cell_Information.servedPLMNs.list.array[plmnIdx]; + DU_FREE(servedPlmnItem->pLMN_Identity.buf, servedPlmnItem->pLMN_Identity.size * sizeof(uint8_t)); + + if(servedPlmnItem->iE_Extensions != NULLP) + { + if(servedPlmnItem->iE_Extensions->list.array != NULLP) + { + if(servedPlmnItem->iE_Extensions->list.array[0] != NULLP) + { + if(servedPlmnItem->iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.list.\ + array != NULLP) + { + if(servedPlmnItem->iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.list.\ + array[sliceId] != NULLP) + { + sliceSupportItem = servedPlmnItem->iE_Extensions->list.array[0]->extensionValue.choice.\ + SliceSupportList.list.array[sliceId]; + + DU_FREE(sliceSupportItem->sNSSAI.sST.buf, sizeof(uint8_t)); + + if(sliceSupportItem->sNSSAI.sD != NULLP) + { + DU_FREE(sliceSupportItem->sNSSAI.sD->buf, sliceSupportItem->sNSSAI.sD->size); + DU_FREE(sliceSupportItem->sNSSAI.sD, sizeof(OCTET_STRING_t)); + } + + DU_FREE(servedPlmnItem->iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ + list.array[sliceId], sizeof(SliceSupportItem_t)); + } + DU_FREE(servedPlmnItem->iE_Extensions->list.array[0]->extensionValue.choice.SliceSupportList.\ + list.array, sizeof(SliceSupportItem_t*)); + } + DU_FREE(servedPlmnItem->iE_Extensions->list.array[0], sizeof(ServedPLMNs_ItemExtIEs_t)); + } + DU_FREE(servedPlmnItem->iE_Extensions->list.array, extensionCnt*sizeof(ServedPLMNs_ItemExtIEs_t*)); + } + DU_FREE(servedPlmnItem->iE_Extensions, sizeof(ProtocolExtensionContainer_4624P3_t)); + } + DU_FREE(srvCellItem->served_Cell_Information.servedPLMNs.list.array[plmnIdx], sizeof(ServedPLMNs_Item_t)); + } + DU_FREE(srvCellItem->served_Cell_Information.servedPLMNs.list.array, sizeof(ServedPLMNs_Item_t *)); + } + + if(srvCellItem->served_Cell_Information.nR_Mode_Info.choice.fDD != NULLP) + { + if(srvCellItem->served_Cell_Information.nR_Mode_Info.choice.fDD->uL_NRFreqInfo.\ + freqBandListNr.list.array != NULLP) + { + DU_FREE(srvCellItem->served_Cell_Information.nR_Mode_Info.choice.fDD->uL_NRFreqInfo.freqBandListNr.\ + list.array[0],sizeof(FreqBandNrItem_t)); + DU_FREE(srvCellItem->served_Cell_Information.nR_Mode_Info.choice.fDD->uL_NRFreqInfo.freqBandListNr.\ + list.array,sizeof(FreqBandNrItem_t*)); + } + + if(srvCellItem->served_Cell_Information.nR_Mode_Info.choice.fDD->dL_NRFreqInfo.\ + freqBandListNr.list.array) + { + DU_FREE(srvCellItem->served_Cell_Information.nR_Mode_Info.choice.fDD->dL_NRFreqInfo.\ + freqBandListNr.list.array[0],sizeof(FreqBandNrItem_t)); + DU_FREE(srvCellItem->served_Cell_Information.nR_Mode_Info.choice.fDD->dL_NRFreqInfo.\ + freqBandListNr.list.array,sizeof(FreqBandNrItem_t *)); + } + DU_FREE(srvCellItem->served_Cell_Information.nR_Mode_Info.choice.fDD, sizeof(FDD_Info_t)); + } + + DU_FREE(srvCellItem->served_Cell_Information.measurementTimingConfiguration.buf,\ + srvCellItem->served_Cell_Information.measurementTimingConfiguration.size); + + if(srvCellItem->gNB_DU_System_Information != NULLP) + { + if(srvCellItem->gNB_DU_System_Information->mIB_message.buf != NULLP) + { + DU_FREE(srvCellItem->gNB_DU_System_Information->mIB_message.buf,\ + srvCellItem->gNB_DU_System_Information->mIB_message.size); + } + + if(srvCellItem->gNB_DU_System_Information->sIB1_message.buf != NULLP) + { + DU_FREE(srvCellItem->gNB_DU_System_Information->sIB1_message.buf,\ + srvCellItem->gNB_DU_System_Information->sIB1_message.size); + } + + DU_FREE(srvCellItem->gNB_DU_System_Information, sizeof(GNB_DU_System_Information_t)); + } + + DU_FREE(duServedCell->list.array[0], sizeof(GNB_DU_Served_Cells_ItemIEs_t)); } - DU_FREE(duServedCell->list.array,plmnCnt*sizeof(GNB_DU_Served_Cells_ItemIEs_t*)); + DU_FREE(duServedCell->list.array, plmnCnt * sizeof(GNB_DU_Served_Cells_ItemIEs_t*)); } } + /******************************************************************* * * @brief deallocating the memory of function BuildAndSendF1SetupReq() @@ -1616,7 +1582,6 @@ void FreeF1SetupReq(F1AP_PDU_t *f1apMsg) break; } } - break; } for(ieIdx2=0; ieIdx2< ieIdx; ieIdx2++) { @@ -1832,183 +1797,92 @@ uint8_t BuildAndSendF1SetupReq() void freeCellsToModifyItem(Served_Cells_To_Modify_Item_t *modifyItem) { uint8_t arrIdx=0,i=0; - if(modifyItem->oldNRCGI.pLMN_Identity.buf != NULLP) + ServedPLMNs_Item_t *servedPlmnItem = NULLP; + SliceSupportItem_t *sliceSupportItem = NULLP; + + DU_FREE(modifyItem->oldNRCGI.pLMN_Identity.buf, modifyItem->oldNRCGI.pLMN_Identity.size); + DU_FREE(modifyItem->oldNRCGI.nRCellIdentity.buf, modifyItem->oldNRCGI.nRCellIdentity.size); + + DU_FREE(modifyItem->served_Cell_Information.nRCGI.pLMN_Identity.buf,\ + modifyItem->served_Cell_Information.nRCGI.pLMN_Identity.size); + DU_FREE(modifyItem->served_Cell_Information.nRCGI.nRCellIdentity.buf,\ + modifyItem->served_Cell_Information.nRCGI.nRCellIdentity.size); + + if(modifyItem->served_Cell_Information.servedPLMNs.list.array != NULLP) { - if(modifyItem->oldNRCGI.nRCellIdentity.buf != NULLP) + if(modifyItem->served_Cell_Information.servedPLMNs.list.array[arrIdx] != NULLP) { - if(modifyItem->served_Cell_Information.nRCGI.pLMN_Identity.buf != NULLP) + servedPlmnItem = modifyItem->served_Cell_Information.servedPLMNs.list.array[arrIdx]; + + DU_FREE(servedPlmnItem->pLMN_Identity.buf,servedPlmnItem->pLMN_Identity.size); + + if(servedPlmnItem->iE_Extensions != NULLP) { - if(modifyItem->served_Cell_Information.nRCGI.nRCellIdentity.buf - != NULLP) + if(servedPlmnItem->iE_Extensions->list.array != NULLP) { - if(modifyItem->served_Cell_Information.servedPLMNs.list.array\ - != NULLP) + if(servedPlmnItem->iE_Extensions->list.array[arrIdx] != NULLP) { - if(!modifyItem->served_Cell_Information.servedPLMNs.list.array[arrIdx]) + if(servedPlmnItem->iE_Extensions->list.array[arrIdx]->extensionValue.choice.SliceSupportList.list.array != NULLP) { - if(modifyItem->served_Cell_Information.servedPLMNs.list.\ - array[arrIdx]->pLMN_Identity.buf != NULLP) + if(servedPlmnItem->iE_Extensions->list.array[arrIdx]->extensionValue.choice.SliceSupportList.list.array[arrIdx] != NULLP) { - if(modifyItem->served_Cell_Information.servedPLMNs.list.\ - array[arrIdx]->iE_Extensions!= NULLP) - { - if(modifyItem->served_Cell_Information.servedPLMNs.list.\ - array[arrIdx]->iE_Extensions->list.array != NULLP) - { - if(modifyItem->served_Cell_Information.servedPLMNs.list.\ - array[arrIdx]->iE_Extensions->list.array[arrIdx]) - { - if(modifyItem->served_Cell_Information.servedPLMNs.list.array[arrIdx]->\ - iE_Extensions->list.array[arrIdx]->extensionValue.choice.SliceSupportList.\ - list.array !=NULLP) - { - if(modifyItem->served_Cell_Information.servedPLMNs.list.array[arrIdx]->\ - iE_Extensions->list.array[arrIdx]->extensionValue.choice.SliceSupportList.\ - list.array[arrIdx]!=NULLP) - { - if(modifyItem->served_Cell_Information.servedPLMNs.list.array[arrIdx]->\ - iE_Extensions->list.array[arrIdx]->extensionValue.choice.SliceSupportList.\ - list.array[arrIdx]->sNSSAI.sST.buf!=NULLP) - { - if(modifyItem->served_Cell_Information.servedPLMNs.list.array[arrIdx]->\ - iE_Extensions->list.array[arrIdx]->extensionValue.choice.\ - SliceSupportList.\ - list.array[arrIdx]->sNSSAI.sD != NULLP) - { - if(modifyItem->served_Cell_Information.servedPLMNs.list.array[arrIdx]->\ - iE_Extensions->list.array[arrIdx]->extensionValue.\ - choice.SliceSupportList.\ - list.array[arrIdx]->sNSSAI.sD->buf!=NULLP) - { - if(modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD - !=NULLP) - { - if(modifyItem->served_Cell_Information.nR_Mode_Info.choice.\ - fDD->uL_NRFreqInfo.freqBandListNr.list.array!=NULLP) - { - if(modifyItem->served_Cell_Information.nR_Mode_Info.choice.\ - fDD->uL_NRFreqInfo.freqBandListNr.list.array[arrIdx]!=NULLP) - { - if(modifyItem->served_Cell_Information.nR_Mode_Info.choice.\ - fDD->dL_NRFreqInfo.freqBandListNr.list.array !=NULLP) - { - if(modifyItem->served_Cell_Information.nR_Mode_Info.\ - choice.fDD->dL_NRFreqInfo.freqBandListNr.list.\ - array[arrIdx]!= NULLP) - { - if(modifyItem->served_Cell_Information.\ - measurementTimingConfiguration.buf !=NULLP) - { - DU_FREE(modifyItem->served_Cell_Information.\ - measurementTimingConfiguration.\ - buf,modifyItem->served_Cell_Information.\ - measurementTimingConfiguration.size); - } - DU_FREE(modifyItem->served_Cell_Information.\ - nR_Mode_Info.choice.fDD->dL_NRFreqInfo.\ - freqBandListNr.\ - list.array[arrIdx],sizeof(FreqBandNrItem_t)); - } - DU_FREE(modifyItem->served_Cell_Information.nR_Mode_Info\ - .choice.fDD->dL_NRFreqInfo.freqBandListNr.list.array,\ - modifyItem->served_Cell_Information.nR_Mode_Info.\ - choice.fDD->dL_NRFreqInfo.freqBandListNr.list.size); - } - DU_FREE(modifyItem->served_Cell_Information.nR_Mode_Info.\ - choice.fDD->uL_NRFreqInfo.freqBandListNr.list.\ - array[arrIdx],sizeof(FreqBandNrItem_t)); - } - DU_FREE(modifyItem->served_Cell_Information.nR_Mode_Info.\ - choice.\ - fDD->uL_NRFreqInfo.freqBandListNr.list.\ - array,modifyItem->served_Cell_Information.nR_Mode_Info.\ - choice.fDD->uL_NRFreqInfo.freqBandListNr.list.size); - } - DU_FREE(modifyItem->served_Cell_Information.nR_Mode_Info.choice.\ - fDD,sizeof(FDD_Info_t)); - } - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.\ - array[arrIdx]->iE_Extensions->list.array[arrIdx]->extensionValue.\ - choice.SliceSupportList.\ - list.array[arrIdx]->sNSSAI.sD->buf,modifyItem->\ - served_Cell_Information.\ - servedPLMNs.list.array[arrIdx]->iE_Extensions->list.\ - array[arrIdx]->\ - extensionValue.choice.SliceSupportList.list.array[arrIdx]->\ - sNSSAI.sD->size); + sliceSupportItem = modifyItem->served_Cell_Information.servedPLMNs.list.array[arrIdx]->iE_Extensions->\ + list.array[arrIdx]->extensionValue.choice.SliceSupportList.list.array[arrIdx]; - } - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.\ - array[arrIdx]->\ - iE_Extensions->list.array[arrIdx]->extensionValue.choice.\ - SliceSupportList.\ - list.array[arrIdx]->sNSSAI.sD,sizeof(OCTET_STRING_t)); - } - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.array[arrIdx]->\ - iE_Extensions->list.array[arrIdx]->extensionValue.choice.\ - SliceSupportList.\ - list.array[arrIdx]->sNSSAI.sST.buf,modifyItem->served_Cell_Information.\ - servedPLMNs.\ - list.array[arrIdx]->iE_Extensions->list.array[arrIdx]->\ - extensionValue.choice.\ - SliceSupportList.list.array[arrIdx]->sNSSAI.sST.size); - } - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.array[arrIdx]->\ - iE_Extensions->list.array[arrIdx]->extensionValue.choice.SliceSupportList.\ - list.array[arrIdx],sizeof(SliceSupportItem_t)); - } - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.array[arrIdx]->\ - iE_Extensions->list.array[arrIdx]->extensionValue.choice.SliceSupportList.\ - list.array,\ - modifyItem->served_Cell_Information.servedPLMNs.list.array[arrIdx]->\ - iE_Extensions->list.array[arrIdx]->extensionValue.choice.\ - SliceSupportList.list.size); - } - } - for(i=0;iserved_Cell_Information.servedPLMNs.list.\ - array[arrIdx]->iE_Extensions->list.count;i++) - { - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.\ - array[arrIdx]->iE_Extensions->list.array[i],\ - sizeof(ServedPLMNs_ItemExtIEs_t )); - } - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.\ - array[arrIdx]->iE_Extensions->list.array,modifyItem->served_Cell_Information.\ - servedPLMNs.list.array[arrIdx]->iE_Extensions->list.size); - } - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.\ - array[arrIdx]->iE_Extensions,sizeof(ProtocolExtensionContainer_4624P3_t)); + DU_FREE(sliceSupportItem->sNSSAI.sST.buf, sliceSupportItem->sNSSAI.sST.size); + if(sliceSupportItem->sNSSAI.sD != NULLP) + { + DU_FREE(sliceSupportItem->sNSSAI.sD->buf, sliceSupportItem->sNSSAI.sD->size); + DU_FREE(sliceSupportItem->sNSSAI.sD,sizeof(OCTET_STRING_t)); } - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.\ - array[arrIdx]->pLMN_Identity.buf, - modifyItem->served_Cell_Information.servedPLMNs.list.array[arrIdx]->pLMN_Identity.size); + DU_FREE(servedPlmnItem->iE_Extensions->list.array[arrIdx]->extensionValue.choice.SliceSupportList.\ + list.array[arrIdx], sizeof(SliceSupportItem_t)); } + DU_FREE(servedPlmnItem->iE_Extensions->list.array[arrIdx]->extensionValue.choice.SliceSupportList.list.array, + servedPlmnItem->iE_Extensions->list.array[arrIdx]->extensionValue.choice.SliceSupportList.list.size); } - for(i=0;iserved_Cell_Information.servedPLMNs.list.count;i++) - { - if(modifyItem->served_Cell_Information.servedPLMNs.list.array[i] - != NULLP) - { - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.array[i],\ - sizeof(ServedPLMNs_Item_t)); - } - } - DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.array,\ - modifyItem->served_Cell_Information.servedPLMNs.list.size); } - DU_FREE(modifyItem->served_Cell_Information.nRCGI.nRCellIdentity.buf,\ - modifyItem->served_Cell_Information.nRCGI.nRCellIdentity.size); + for(i=0; i < servedPlmnItem->iE_Extensions->list.count ; i++) + { + DU_FREE(servedPlmnItem->iE_Extensions->list.array[i], sizeof(ServedPLMNs_ItemExtIEs_t )); + } + DU_FREE(servedPlmnItem->iE_Extensions->list.array, servedPlmnItem->iE_Extensions->list.size); } - DU_FREE(modifyItem->served_Cell_Information.nRCGI.pLMN_Identity.buf,\ - modifyItem->served_Cell_Information.nRCGI.pLMN_Identity.size); + DU_FREE(servedPlmnItem->iE_Extensions,sizeof(ProtocolExtensionContainer_4624P3_t)); } - DU_FREE(modifyItem->oldNRCGI.nRCellIdentity.buf,\ - modifyItem->oldNRCGI.nRCellIdentity.size); } - DU_FREE(modifyItem->oldNRCGI.pLMN_Identity.buf,\ - modifyItem->oldNRCGI.pLMN_Identity.size); + for(i=0;iserved_Cell_Information.servedPLMNs.list.count;i++) + { + DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.array[i], sizeof(ServedPLMNs_Item_t)); + } + DU_FREE(modifyItem->served_Cell_Information.servedPLMNs.list.array,\ + modifyItem->served_Cell_Information.servedPLMNs.list.size); + } + + if(modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD != NULLP) + { + if(modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD->uL_NRFreqInfo.freqBandListNr.list.array != NULLP) + { + DU_FREE(modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD->uL_NRFreqInfo.freqBandListNr.list.\ + array[arrIdx], sizeof(FreqBandNrItem_t)); + DU_FREE(modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD->uL_NRFreqInfo.freqBandListNr.list.array, \ + modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD->uL_NRFreqInfo.freqBandListNr.list.size); + } + + if(modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD->dL_NRFreqInfo.freqBandListNr.list.array != NULLP) + { + DU_FREE(modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD->dL_NRFreqInfo.freqBandListNr.list.\ + array[arrIdx], sizeof(FreqBandNrItem_t)); + DU_FREE(modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD->dL_NRFreqInfo.freqBandListNr.list.array,\ + modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD->dL_NRFreqInfo.freqBandListNr.list.size); + } + DU_FREE(modifyItem->served_Cell_Information.nR_Mode_Info.choice.fDD,sizeof(FDD_Info_t)); } + + DU_FREE(modifyItem->served_Cell_Information.measurementTimingConfiguration.buf,\ + modifyItem->served_Cell_Information.measurementTimingConfiguration.size); } + /******************************************************************* * * @brief Deallocating memory of BuildAndSendDUConfigUpdate @@ -2094,7 +1968,7 @@ void FreeDUConfigUpdate(F1AP_PDU_t *f1apDuCfg) break; } - case GNBDUConfigurationUpdateIEs__value_PR_GNB_DU_ID: + case ProtocolIE_ID_id_gNB_DU_ID: { DU_FREE(duCfgUpdate->protocolIEs.list.array[ieIdx]->value.choice.GNB_DU_ID.buf,\ duCfgUpdate->protocolIEs.list.array[ieIdx]->value.choice.GNB_DU_ID.size); @@ -3878,7 +3752,7 @@ uint8_t BuildTCIStatesToAddModList(struct PDSCH_Config__tci_StatesToAddModList * return RFAILED; } - elementCnt = 1; + elementCnt = 2; timeDomAllocList->choice.setup->list.count = elementCnt; timeDomAllocList->choice.setup->list.size = \ elementCnt * sizeof(struct PDSCH_TimeDomainResourceAllocation *); @@ -3906,12 +3780,29 @@ uint8_t BuildTCIStatesToAddModList(struct PDSCH_Config__tci_StatesToAddModList * idx = 0; timeDomAlloc = timeDomAllocList->choice.setup->list.array[idx]; - - timeDomAlloc->k0 = NULLP; + DU_ALLOC(timeDomAlloc->k0, sizeof(long)); + if(!timeDomAlloc->k0) + { + DU_LOG("\nERROR --> F1AP : Memory allocation failed in BuildPdschTimeDomAllocList"); + return RFAILED; + } + *(timeDomAlloc->k0) = 0; timeDomAlloc->mappingType = PDSCH_MAPPING_TYPE_A; timeDomAlloc->startSymbolAndLength = \ calcSliv(PDSCH_START_SYMBOL, PDSCH_LENGTH_SYMBOL); + idx++; + timeDomAlloc = timeDomAllocList->choice.setup->list.array[idx]; + DU_ALLOC(timeDomAlloc->k0, sizeof(long)); + if(!timeDomAlloc->k0) + { + DU_LOG("\nERROR --> F1AP : Memory allocation failed in BuildPdschTimeDomAllocList"); + return RFAILED; + } + *(timeDomAlloc->k0) = 1; + timeDomAlloc->mappingType = PDSCH_MAPPING_TYPE_A; + timeDomAlloc->startSymbolAndLength = calcSliv(PDSCH_START_SYMBOL, PDSCH_LENGTH_SYMBOL); + return ROK; } @@ -4219,7 +4110,7 @@ uint8_t BuildInitialDlBWP(BWP_DownlinkDedicated_t *dlBwp) return RFAILED; } - elementCnt = 1; + elementCnt = 2; timeDomAllocList->choice.setup->list.count = elementCnt; timeDomAllocList->choice.setup->list.size = \ elementCnt * sizeof(PUSCH_TimeDomainResourceAllocation_t *); @@ -4252,9 +4143,22 @@ uint8_t BuildInitialDlBWP(BWP_DownlinkDedicated_t *dlBwp) DU_LOG("\nERROR --> F1AP : Memory allocation failed in BuildPuschTimeDomAllocList"); return RFAILED; } - *(timeDomAlloc->k2) = PUSCH_K2; + *(timeDomAlloc->k2) = PUSCH_K2_CFG1; + timeDomAlloc->mappingType = PUSCH_MAPPING_TYPE_A; + timeDomAlloc->startSymbolAndLength = calcSliv(PUSCH_START_SYMBOL, PUSCH_LENGTH_SYMBOL); + + idx++; + timeDomAlloc = timeDomAllocList->choice.setup->list.array[idx]; + DU_ALLOC(timeDomAlloc->k2, sizeof(long)); + if(!timeDomAlloc->k2) + { + DU_LOG("\nERROR --> F1AP : Memory allocation failed in BuildPuschTimeDomAllocList"); + return RFAILED; + } + *(timeDomAlloc->k2) = PUSCH_K2_CFG2; timeDomAlloc->mappingType = PUSCH_MAPPING_TYPE_A; timeDomAlloc->startSymbolAndLength = calcSliv(PUSCH_START_SYMBOL, PUSCH_LENGTH_SYMBOL); + return ROK; } @@ -4342,6 +4246,60 @@ uint8_t BuildBWPUlDedPuschCfg(PUSCH_Config_t *puschCfg) return ROK; } +/******************************************************************* + * + * @brief Builds BWP UL dedicated PUCCH Config + * + * @details + * + * Function : BuildBWPUlDedPucchCfg + * + * Functionality: + * Builds BWP UL dedicated PUCCH Config + * + * @params[in] : PUCCH_Config_t *pucchCfg + * + * @return ROK - success + * RFAILED - failure + * + * ****************************************************************/ +uint8_t BuildBWPUlDedPucchCfg(PUCCH_Config_t *pucchCfg) +{ + uint8_t arrIdx, elementCnt; + + DU_ALLOC(pucchCfg->dl_DataToUL_ACK, sizeof(struct PUCCH_Config__dl_DataToUL_ACK)); + if(pucchCfg->dl_DataToUL_ACK == NULLP) + { + DU_LOG("\nERROR --> F1AP : Memory allocation failed in BuildBWPUlDedPucchCfg"); + return RFAILED; + } + + elementCnt = 2; + pucchCfg->dl_DataToUL_ACK->list.count = elementCnt; + pucchCfg->dl_DataToUL_ACK->list.size = elementCnt * sizeof(long *); + DU_ALLOC(pucchCfg->dl_DataToUL_ACK->list.array, pucchCfg->dl_DataToUL_ACK->list.size); + if(pucchCfg->dl_DataToUL_ACK->list.array == NULLP) + { + DU_LOG("\nERROR --> F1AP : Memory allocation failed in BuildBWPUlDedPucchCfg"); + return RFAILED; + } + + for(arrIdx = 0; arrIdx < pucchCfg->dl_DataToUL_ACK->list.count; arrIdx++) + { + DU_ALLOC(pucchCfg->dl_DataToUL_ACK->list.array[arrIdx], sizeof(long)); + if(pucchCfg->dl_DataToUL_ACK->list.array[arrIdx] == NULLP) + { + DU_LOG("\nERROR --> F1AP : Memory allocation failed in BuildBWPUlDedPucchCfg"); + return RFAILED; + } + } + + arrIdx = 0; + *(pucchCfg->dl_DataToUL_ACK->list.array[arrIdx++]) = 1; + *(pucchCfg->dl_DataToUL_ACK->list.array[arrIdx]) = 2; + return ROK; +} + /******************************************************************* * * @brief Fills SRS resource to add/modify list @@ -4676,6 +4634,26 @@ uint8_t BuildPuschSrvCellCfg(struct UplinkConfig__pusch_ServingCellConfig *pusch uint8_t BuildInitialUlBWP(BWP_UplinkDedicated_t *ulBwp) { ulBwp->pucch_Config = NULLP; + DU_ALLOC(ulBwp->pucch_Config, sizeof(struct BWP_UplinkDedicated__pucch_Config)); + if(!ulBwp->pucch_Config) + { + DU_LOG("\nERROR --> F1AP : Memory allocation failed in BuildInitialUlBWP"); + return RFAILED; + } + + ulBwp->pucch_Config->present = BWP_UplinkDedicated__pucch_Config_PR_setup; + ulBwp->pucch_Config->choice.setup = NULLP; + DU_ALLOC(ulBwp->pucch_Config->choice.setup, sizeof(PUCCH_Config_t)); + if(!ulBwp->pucch_Config->choice.setup) + { + DU_LOG("\nERROR --> F1AP : Memory allocation failed in BuildInitialUlBWP"); + return RFAILED; + } + + if(BuildBWPUlDedPucchCfg(ulBwp->pucch_Config->choice.setup) != ROK) + { + return RFAILED; + } /* Fill BWP UL dedicated PUSCH config */ ulBwp->pusch_Config = NULLP; @@ -5223,7 +5201,7 @@ void FreeSearchSpcToAddModList(struct PDCCH_Config__searchSpacesToAddModList *se * * @return void * - 4221 * ****************************************************************/ + * ****************************************************************/ void FreePdschTimeDomAllocList( struct PDSCH_Config__pdsch_TimeDomainAllocationList *timeDomAllocList) { uint8_t idx1=0; @@ -5232,16 +5210,17 @@ void FreePdschTimeDomAllocList( struct PDSCH_Config__pdsch_TimeDomainAllocationL { if(timeDomAllocList->choice.setup->list.array) { - for(idx1 = 0; idx1 choice.setup->list.count ; idx1++) - { - DU_FREE(timeDomAllocList->choice.setup->list.array[idx1], - sizeof(struct PDSCH_TimeDomainResourceAllocation)); - } - DU_FREE(timeDomAllocList->choice.setup->list.array, \ - timeDomAllocList->choice.setup->list.size); + for(idx1 = 0; idx1 choice.setup->list.count ; idx1++) + { + DU_FREE(timeDomAllocList->choice.setup->list.array[idx1]->k0, sizeof(long)); + DU_FREE(timeDomAllocList->choice.setup->list.array[idx1], + sizeof(struct PDSCH_TimeDomainResourceAllocation)); + } + DU_FREE(timeDomAllocList->choice.setup->list.array, \ + timeDomAllocList->choice.setup->list.size); } DU_FREE(timeDomAllocList->choice.setup,\ - sizeof(struct PDSCH_TimeDomainResourceAllocationList)); + sizeof(struct PDSCH_TimeDomainResourceAllocationList)); } } /******************************************************************* @@ -5307,122 +5286,145 @@ void FreePuschTimeDomAllocList(PUSCH_Config_t *puschCfg) * ****************************************************************/ void FreeInitialUlBWP(BWP_UplinkDedicated_t *ulBwp) { - uint8_t rSetIdx, rsrcIdx; + uint8_t rSetIdx, rsrcIdx, k1Idx; SRS_Config_t *srsCfg = NULLP; PUSCH_Config_t *puschCfg = NULLP; + PUCCH_Config_t *pucchCfg = NULLP; struct PUSCH_Config__dmrs_UplinkForPUSCH_MappingTypeA *dmrsUlCfg = NULLP; struct SRS_Config__srs_ResourceSetToAddModList *rsrcSetList = NULLP; struct SRS_ResourceSet__srs_ResourceIdList *rsrcIdList = NULLP; struct SRS_Config__srs_ResourceToAddModList *resourceList = NULLP; + if(ulBwp->pucch_Config) + { + if(ulBwp->pucch_Config->choice.setup) + { + pucchCfg = ulBwp->pucch_Config->choice.setup; + if(pucchCfg->dl_DataToUL_ACK) + { + if(pucchCfg->dl_DataToUL_ACK->list.array) + { + for(k1Idx = 0; k1Idx < pucchCfg->dl_DataToUL_ACK->list.count; k1Idx++) + { + DU_FREE(pucchCfg->dl_DataToUL_ACK->list.array[k1Idx], sizeof(long)); + } + DU_FREE(pucchCfg->dl_DataToUL_ACK->list.array, pucchCfg->dl_DataToUL_ACK->list.size); + } + DU_FREE(pucchCfg->dl_DataToUL_ACK, sizeof(struct PUCCH_Config__dl_DataToUL_ACK)); + } + DU_FREE(ulBwp->pucch_Config->choice.setup, sizeof(PUCCH_Config_t)); + } + DU_FREE(ulBwp->pucch_Config, sizeof(struct BWP_UplinkDedicated__pucch_Config)); + } + if(ulBwp->pusch_Config) { if(ulBwp->pusch_Config->choice.setup) { - puschCfg=ulBwp->pusch_Config->choice.setup; - if(puschCfg->dataScramblingIdentityPUSCH) - { - if(puschCfg->dmrs_UplinkForPUSCH_MappingTypeA) - { - FreePuschTimeDomAllocList(puschCfg); - dmrsUlCfg=puschCfg->dmrs_UplinkForPUSCH_MappingTypeA; - if(dmrsUlCfg->choice.setup) - { - if(dmrsUlCfg->choice.setup->dmrs_AdditionalPosition) - { - if(dmrsUlCfg->choice.setup->transformPrecodingDisabled) - { - DU_FREE(dmrsUlCfg->choice.setup->transformPrecodingDisabled->scramblingID0,\ - sizeof(long)); - DU_FREE(dmrsUlCfg->choice.setup->transformPrecodingDisabled, - sizeof(struct DMRS_UplinkConfig__transformPrecodingDisabled)); - } - DU_FREE(dmrsUlCfg->choice.setup->dmrs_AdditionalPosition, - sizeof(long)); - } - DU_FREE(dmrsUlCfg->choice.setup,sizeof(DMRS_UplinkConfig_t)); - } - DU_FREE(puschCfg->dmrs_UplinkForPUSCH_MappingTypeA, \ - sizeof(struct PUSCH_Config__dmrs_UplinkForPUSCH_MappingTypeA)); - } - DU_FREE(puschCfg->dataScramblingIdentityPUSCH, sizeof(long)); - } - DU_FREE(ulBwp->pusch_Config->choice.setup, sizeof(PUSCH_Config_t)); + puschCfg=ulBwp->pusch_Config->choice.setup; + if(puschCfg->dataScramblingIdentityPUSCH) + { + if(puschCfg->dmrs_UplinkForPUSCH_MappingTypeA) + { + FreePuschTimeDomAllocList(puschCfg); + dmrsUlCfg=puschCfg->dmrs_UplinkForPUSCH_MappingTypeA; + if(dmrsUlCfg->choice.setup) + { + if(dmrsUlCfg->choice.setup->dmrs_AdditionalPosition) + { + if(dmrsUlCfg->choice.setup->transformPrecodingDisabled) + { + DU_FREE(dmrsUlCfg->choice.setup->transformPrecodingDisabled->scramblingID0,\ + sizeof(long)); + DU_FREE(dmrsUlCfg->choice.setup->transformPrecodingDisabled, + sizeof(struct DMRS_UplinkConfig__transformPrecodingDisabled)); + } + DU_FREE(dmrsUlCfg->choice.setup->dmrs_AdditionalPosition, + sizeof(long)); + } + DU_FREE(dmrsUlCfg->choice.setup,sizeof(DMRS_UplinkConfig_t)); + } + DU_FREE(puschCfg->dmrs_UplinkForPUSCH_MappingTypeA, \ + sizeof(struct PUSCH_Config__dmrs_UplinkForPUSCH_MappingTypeA)); + } + DU_FREE(puschCfg->dataScramblingIdentityPUSCH, sizeof(long)); + } + DU_FREE(ulBwp->pusch_Config->choice.setup, sizeof(PUSCH_Config_t)); } DU_FREE(ulBwp->pusch_Config, sizeof(struct BWP_UplinkDedicated__pusch_Config)); /* Free SRS-Config */ if(ulBwp->srs_Config) { - if(ulBwp->srs_Config->choice.setup) - { - srsCfg = ulBwp->srs_Config->choice.setup; + if(ulBwp->srs_Config->choice.setup) + { + srsCfg = ulBwp->srs_Config->choice.setup; - /* Free Resource Set to add/mod list */ - if(srsCfg->srs_ResourceSetToAddModList) - { - rsrcSetList = srsCfg->srs_ResourceSetToAddModList; - if(rsrcSetList->list.array) - { - rSetIdx = 0; + /* Free Resource Set to add/mod list */ + if(srsCfg->srs_ResourceSetToAddModList) + { + rsrcSetList = srsCfg->srs_ResourceSetToAddModList; + if(rsrcSetList->list.array) + { + rSetIdx = 0; - /* Free SRS resource Id list in this SRS resource set */ - if(rsrcSetList->list.array[rSetIdx]->srs_ResourceIdList) - { - rsrcIdList = rsrcSetList->list.array[rSetIdx]->srs_ResourceIdList; + /* Free SRS resource Id list in this SRS resource set */ + if(rsrcSetList->list.array[rSetIdx]->srs_ResourceIdList) + { + rsrcIdList = rsrcSetList->list.array[rSetIdx]->srs_ResourceIdList; - if(rsrcIdList->list.array) - { - for(rsrcIdx = 0; rsrcIdx < rsrcIdList->list.count; rsrcIdx++) - { - DU_FREE(rsrcIdList->list.array[rsrcIdx], sizeof(SRS_ResourceId_t)); - } - DU_FREE(rsrcIdList->list.array, rsrcIdList->list.size); - } - DU_FREE(rsrcSetList->list.array[rSetIdx]->srs_ResourceIdList,\ - sizeof(struct SRS_ResourceSet__srs_ResourceIdList)); - } + if(rsrcIdList->list.array) + { + for(rsrcIdx = 0; rsrcIdx < rsrcIdList->list.count; rsrcIdx++) + { + DU_FREE(rsrcIdList->list.array[rsrcIdx], sizeof(SRS_ResourceId_t)); + } + DU_FREE(rsrcIdList->list.array, rsrcIdList->list.size); + } + DU_FREE(rsrcSetList->list.array[rSetIdx]->srs_ResourceIdList,\ + sizeof(struct SRS_ResourceSet__srs_ResourceIdList)); + } - /* Free resource type info for this SRS resource set */ - DU_FREE(rsrcSetList->list.array[rSetIdx]->resourceType.choice.aperiodic, \ - sizeof(struct SRS_ResourceSet__resourceType__aperiodic)); + /* Free resource type info for this SRS resource set */ + DU_FREE(rsrcSetList->list.array[rSetIdx]->resourceType.choice.aperiodic, \ + sizeof(struct SRS_ResourceSet__resourceType__aperiodic)); - /* Free memory for each resource set */ - for(rSetIdx = 0; rSetIdx < rsrcSetList->list.count; rSetIdx++) - { - DU_FREE(rsrcSetList->list.array[rSetIdx], sizeof(SRS_ResourceSet_t)); - } - DU_FREE(rsrcSetList->list.array, rsrcSetList->list.size); - } - DU_FREE(srsCfg->srs_ResourceSetToAddModList, \ - sizeof(struct SRS_Config__srs_ResourceSetToAddModList)); - } + /* Free memory for each resource set */ + for(rSetIdx = 0; rSetIdx < rsrcSetList->list.count; rSetIdx++) + { + DU_FREE(rsrcSetList->list.array[rSetIdx], sizeof(SRS_ResourceSet_t)); + } + DU_FREE(rsrcSetList->list.array, rsrcSetList->list.size); + } + DU_FREE(srsCfg->srs_ResourceSetToAddModList, \ + sizeof(struct SRS_Config__srs_ResourceSetToAddModList)); + } - /* Free resource to add/modd list */ - if(srsCfg->srs_ResourceToAddModList) - { - resourceList = srsCfg->srs_ResourceToAddModList; - if(resourceList->list.array) - { - rsrcIdx = 0; - DU_FREE(resourceList->list.array[rsrcIdx]->transmissionComb.choice.n2,\ - sizeof(struct SRS_Resource__transmissionComb__n2)); - DU_FREE(resourceList->list.array[rsrcIdx]->resourceType.choice.aperiodic,\ - sizeof(struct SRS_Resource__resourceType__aperiodic)); + /* Free resource to add/modd list */ + if(srsCfg->srs_ResourceToAddModList) + { + resourceList = srsCfg->srs_ResourceToAddModList; + if(resourceList->list.array) + { + rsrcIdx = 0; + DU_FREE(resourceList->list.array[rsrcIdx]->transmissionComb.choice.n2,\ + sizeof(struct SRS_Resource__transmissionComb__n2)); + DU_FREE(resourceList->list.array[rsrcIdx]->resourceType.choice.aperiodic,\ + sizeof(struct SRS_Resource__resourceType__aperiodic)); - for(rsrcIdx = 0; rsrcIdx < resourceList->list.count; rsrcIdx++) - { - DU_FREE(resourceList->list.array[rsrcIdx], sizeof(SRS_Resource_t)); - } - DU_FREE(resourceList->list.array, resourceList->list.size); - } - DU_FREE(srsCfg->srs_ResourceToAddModList, \ - sizeof(struct SRS_Config__srs_ResourceToAddModList)); - } + for(rsrcIdx = 0; rsrcIdx < resourceList->list.count; rsrcIdx++) + { + DU_FREE(resourceList->list.array[rsrcIdx], sizeof(SRS_Resource_t)); + } + DU_FREE(resourceList->list.array, resourceList->list.size); + } + DU_FREE(srsCfg->srs_ResourceToAddModList, \ + sizeof(struct SRS_Config__srs_ResourceToAddModList)); + } - DU_FREE(ulBwp->srs_Config->choice.setup, sizeof(SRS_Config_t)); - } - DU_FREE(ulBwp->srs_Config, sizeof(struct BWP_UplinkDedicated__srs_Config)); + DU_FREE(ulBwp->srs_Config->choice.setup, sizeof(SRS_Config_t)); + } + DU_FREE(ulBwp->srs_Config, sizeof(struct BWP_UplinkDedicated__srs_Config)); } } } @@ -5634,37 +5636,37 @@ uint8_t FreeMemDuToCuRrcCont(CellGroupConfigRrc_t *cellGrpCfg) { if(rlcBearerList->list.array) { - for(idx=0; idxlist.count; idx++) - { - if(rlcBearerList->list.array[idx]) - { - rlcConfig = rlcBearerList->list.array[idx]->rlc_Config; - macLcConfig = rlcBearerList->list.array[idx]->mac_LogicalChannelConfig; - if(rlcConfig) - { - if(rlcConfig->choice.am) - { - DU_FREE(rlcConfig->choice.am->ul_AM_RLC.sn_FieldLength, sizeof(SN_FieldLengthAM_t)); - DU_FREE(rlcConfig->choice.am->dl_AM_RLC.sn_FieldLength, sizeof(SN_FieldLengthAM_t)); - DU_FREE(rlcConfig->choice.am, sizeof(struct RLC_Config__am)); - } - DU_FREE(rlcConfig, sizeof(struct RLC_Config)); - } - DU_FREE(rlcBearerList->list.array[idx]->servedRadioBearer, sizeof(struct RLC_BearerConfig__servedRadioBearer)); - if(macLcConfig) - { - if(macLcConfig->ul_SpecificParameters) - { - DU_FREE(macLcConfig->ul_SpecificParameters->schedulingRequestID, sizeof(SchedulingRequestId_t)); - DU_FREE(macLcConfig->ul_SpecificParameters->logicalChannelGroup, sizeof(long)); - DU_FREE(macLcConfig->ul_SpecificParameters, sizeof(struct LogicalChannelConfig__ul_SpecificParameters)); - } - DU_FREE(rlcBearerList->list.array[idx]->mac_LogicalChannelConfig, sizeof(struct LogicalChannelConfig)); - } - DU_FREE(rlcBearerList->list.array[idx], sizeof(struct RLC_BearerConfig)); - } - } - DU_FREE(rlcBearerList->list.array, rlcBearerList->list.size); + for(idx=0; idxlist.count; idx++) + { + if(rlcBearerList->list.array[idx]) + { + rlcConfig = rlcBearerList->list.array[idx]->rlc_Config; + macLcConfig = rlcBearerList->list.array[idx]->mac_LogicalChannelConfig; + if(rlcConfig) + { + if(rlcConfig->choice.am) + { + DU_FREE(rlcConfig->choice.am->ul_AM_RLC.sn_FieldLength, sizeof(SN_FieldLengthAM_t)); + DU_FREE(rlcConfig->choice.am->dl_AM_RLC.sn_FieldLength, sizeof(SN_FieldLengthAM_t)); + DU_FREE(rlcConfig->choice.am, sizeof(struct RLC_Config__am)); + } + DU_FREE(rlcConfig, sizeof(struct RLC_Config)); + } + DU_FREE(rlcBearerList->list.array[idx]->servedRadioBearer, sizeof(struct RLC_BearerConfig__servedRadioBearer)); + if(macLcConfig) + { + if(macLcConfig->ul_SpecificParameters) + { + DU_FREE(macLcConfig->ul_SpecificParameters->schedulingRequestID, sizeof(SchedulingRequestId_t)); + DU_FREE(macLcConfig->ul_SpecificParameters->logicalChannelGroup, sizeof(long)); + DU_FREE(macLcConfig->ul_SpecificParameters, sizeof(struct LogicalChannelConfig__ul_SpecificParameters)); + } + DU_FREE(rlcBearerList->list.array[idx]->mac_LogicalChannelConfig, sizeof(struct LogicalChannelConfig)); + } + DU_FREE(rlcBearerList->list.array[idx], sizeof(struct RLC_BearerConfig)); + } + } + DU_FREE(rlcBearerList->list.array, rlcBearerList->list.size); } DU_FREE(cellGrpCfg->rlc_BearerToAddModList, sizeof(struct CellGroupConfigRrc__rlc_BearerToAddModList)); } @@ -5675,53 +5677,53 @@ uint8_t FreeMemDuToCuRrcCont(CellGroupConfigRrc_t *cellGrpCfg) schedulingRequestConfig = macCellGrpCfg->schedulingRequestConfig; if(schedulingRequestConfig) { - schReqList = schedulingRequestConfig->schedulingRequestToAddModList; - if(schReqList) - { - if(schReqList->list.array) - { - for(idx=0;idxlist.count; idx++) - { - if(schReqList->list.array[idx]) - { - DU_FREE(schReqList->list.array[idx]->sr_ProhibitTimer, sizeof(long)); - DU_FREE(schReqList->list.array[idx], sizeof(struct SchedulingRequestToAddMod)); - } - } - DU_FREE(schReqList->list.array, schReqList->list.size); - } - DU_FREE(schedulingRequestConfig->schedulingRequestToAddModList,\ - sizeof(struct SchedulingRequestConfig__schedulingRequestToAddModList)); } - DU_FREE(macCellGrpCfg->schedulingRequestConfig, sizeof(struct SchedulingRequestConfig)); + schReqList = schedulingRequestConfig->schedulingRequestToAddModList; + if(schReqList) + { + if(schReqList->list.array) + { + for(idx=0;idxlist.count; idx++) + { + if(schReqList->list.array[idx]) + { + DU_FREE(schReqList->list.array[idx]->sr_ProhibitTimer, sizeof(long)); + DU_FREE(schReqList->list.array[idx], sizeof(struct SchedulingRequestToAddMod)); + } + } + DU_FREE(schReqList->list.array, schReqList->list.size); + } + DU_FREE(schedulingRequestConfig->schedulingRequestToAddModList,\ + sizeof(struct SchedulingRequestConfig__schedulingRequestToAddModList)); } + DU_FREE(macCellGrpCfg->schedulingRequestConfig, sizeof(struct SchedulingRequestConfig)); } if(macCellGrpCfg->bsr_Config) { - DU_FREE(macCellGrpCfg->bsr_Config, sizeof(struct BSR_Config)); + DU_FREE(macCellGrpCfg->bsr_Config, sizeof(struct BSR_Config)); } tagConfig = macCellGrpCfg->tag_Config; if(tagConfig) { - tagList = tagConfig->tag_ToAddModList; - if(tagList) - { - if(tagList->list.array) - { - for(idx=0; idxlist.count; idx++) - { - DU_FREE(tagList->list.array[idx], sizeof(struct TAG)); - } - DU_FREE(tagList->list.array, tagList->list.size); - } - DU_FREE(tagConfig->tag_ToAddModList, sizeof(struct TAG_Config__tag_ToAddModList)); - } - DU_FREE(tagConfig, sizeof(struct TAG_Config)); + tagList = tagConfig->tag_ToAddModList; + if(tagList) + { + if(tagList->list.array) + { + for(idx=0; idxlist.count; idx++) + { + DU_FREE(tagList->list.array[idx], sizeof(struct TAG)); + } + DU_FREE(tagList->list.array, tagList->list.size); + } + DU_FREE(tagConfig->tag_ToAddModList, sizeof(struct TAG_Config__tag_ToAddModList)); + } + DU_FREE(tagConfig, sizeof(struct TAG_Config)); } phrConfig = macCellGrpCfg->phr_Config; if(phrConfig) { - DU_FREE(phrConfig->choice.setup, sizeof(struct PHR_Config)); - DU_FREE(phrConfig, sizeof(struct MAC_CellGroupConfig__phr_Config)); + DU_FREE(phrConfig->choice.setup, sizeof(struct PHR_Config)); + DU_FREE(phrConfig, sizeof(struct MAC_CellGroupConfig__phr_Config)); } DU_FREE(macCellGrpCfg, sizeof(MAC_CellGroupConfig_t)); @@ -5739,59 +5741,59 @@ uint8_t FreeMemDuToCuRrcCont(CellGroupConfigRrc_t *cellGrpCfg) { if(spCellCfg->servCellIndex) { - if(spCellCfg->rlmInSyncOutOfSyncThreshold) - { - if(spCellCfg->spCellConfigDedicated) - { - srvCellCfg = spCellCfg->spCellConfigDedicated; - if(srvCellCfg->tdd_UL_DL_ConfigurationDedicated) - { - if(srvCellCfg->initialDownlinkBWP) - { - dlBwp = srvCellCfg->initialDownlinkBWP; - if(srvCellCfg->firstActiveDownlinkBWP_Id) - { - if(srvCellCfg->defaultDownlinkBWP_Id) - { - if(srvCellCfg->uplinkConfig) - { - if(srvCellCfg->pdsch_ServingCellConfig) - { - pdschCfg= srvCellCfg->pdsch_ServingCellConfig; - if(pdschCfg->choice.setup) - { - DU_FREE(pdschCfg->choice.setup->nrofHARQ_ProcessesForPDSCH,sizeof(long)); - DU_FREE(pdschCfg->choice.setup, sizeof( struct PDSCH_ServingCellConfig)); - } - DU_FREE(srvCellCfg->pdsch_ServingCellConfig, sizeof(struct - ServingCellConfig__pdsch_ServingCellConfig)); - } - FreeinitialUplinkBWP(srvCellCfg->uplinkConfig); - DU_FREE(srvCellCfg->uplinkConfig, sizeof(UplinkConfig_t)); - } - DU_FREE(srvCellCfg->defaultDownlinkBWP_Id, sizeof(long)); - } - DU_FREE(srvCellCfg->firstActiveDownlinkBWP_Id, sizeof(long)); - } - if(dlBwp->pdcch_Config) - { - if(dlBwp->pdsch_Config) - { - FreeBWPDlDedPdschCfg(dlBwp); - DU_FREE(dlBwp->pdsch_Config, sizeof(struct BWP_DownlinkDedicated__pdsch_Config)); - } - FreeBWPDlDedPdcchCfg(dlBwp); - DU_FREE(dlBwp->pdcch_Config, sizeof(struct BWP_DownlinkDedicated__pdcch_Config)); - } - DU_FREE(srvCellCfg->initialDownlinkBWP, sizeof(BWP_DownlinkDedicated_t)); - } - DU_FREE(srvCellCfg->tdd_UL_DL_ConfigurationDedicated, sizeof(TDD_UL_DL_ConfigDedicated_t)); - } - DU_FREE(spCellCfg->spCellConfigDedicated, sizeof(ServingCellConfig_t)); - } - DU_FREE(spCellCfg->rlmInSyncOutOfSyncThreshold, sizeof(long)); - } - DU_FREE(spCellCfg->servCellIndex, sizeof(long)); + if(spCellCfg->rlmInSyncOutOfSyncThreshold) + { + if(spCellCfg->spCellConfigDedicated) + { + srvCellCfg = spCellCfg->spCellConfigDedicated; + if(srvCellCfg->tdd_UL_DL_ConfigurationDedicated) + { + if(srvCellCfg->initialDownlinkBWP) + { + dlBwp = srvCellCfg->initialDownlinkBWP; + if(srvCellCfg->firstActiveDownlinkBWP_Id) + { + if(srvCellCfg->defaultDownlinkBWP_Id) + { + if(srvCellCfg->uplinkConfig) + { + if(srvCellCfg->pdsch_ServingCellConfig) + { + pdschCfg= srvCellCfg->pdsch_ServingCellConfig; + if(pdschCfg->choice.setup) + { + DU_FREE(pdschCfg->choice.setup->nrofHARQ_ProcessesForPDSCH,sizeof(long)); + DU_FREE(pdschCfg->choice.setup, sizeof( struct PDSCH_ServingCellConfig)); + } + DU_FREE(srvCellCfg->pdsch_ServingCellConfig, sizeof(struct + ServingCellConfig__pdsch_ServingCellConfig)); + } + FreeinitialUplinkBWP(srvCellCfg->uplinkConfig); + DU_FREE(srvCellCfg->uplinkConfig, sizeof(UplinkConfig_t)); + } + DU_FREE(srvCellCfg->defaultDownlinkBWP_Id, sizeof(long)); + } + DU_FREE(srvCellCfg->firstActiveDownlinkBWP_Id, sizeof(long)); + } + if(dlBwp->pdcch_Config) + { + if(dlBwp->pdsch_Config) + { + FreeBWPDlDedPdschCfg(dlBwp); + DU_FREE(dlBwp->pdsch_Config, sizeof(struct BWP_DownlinkDedicated__pdsch_Config)); + } + FreeBWPDlDedPdcchCfg(dlBwp); + DU_FREE(dlBwp->pdcch_Config, sizeof(struct BWP_DownlinkDedicated__pdcch_Config)); + } + DU_FREE(srvCellCfg->initialDownlinkBWP, sizeof(BWP_DownlinkDedicated_t)); + } + DU_FREE(srvCellCfg->tdd_UL_DL_ConfigurationDedicated, sizeof(TDD_UL_DL_ConfigDedicated_t)); + } + DU_FREE(spCellCfg->spCellConfigDedicated, sizeof(ServingCellConfig_t)); + } + DU_FREE(spCellCfg->rlmInSyncOutOfSyncThreshold, sizeof(long)); + } + DU_FREE(spCellCfg->servCellIndex, sizeof(long)); } DU_FREE(spCellCfg,sizeof(SpCellConfig_t)); } @@ -6247,48 +6249,44 @@ void freeRlcLcCfg(RlcBearerCfg *lcCfg) switch(lcCfg->rlcMode) { case RLC_AM : - { - if(lcCfg->u.amCfg) - { - DU_FREE_SHRABL_BUF(DU_APP_MEM_REGION, DU_POOL, lcCfg->u.amCfg, sizeof(AmBearerCfg)); - lcCfg->u.amCfg = NULLP; - } - break; - } + { + if(lcCfg->u.amCfg) + { + DU_FREE_SHRABL_BUF(DU_APP_MEM_REGION, DU_POOL, lcCfg->u.amCfg, sizeof(AmBearerCfg)); + } + break; + } case RLC_UM_BI_DIRECTIONAL : - { - if(lcCfg->u.umBiDirCfg) - { - DU_FREE_SHRABL_BUF(DU_APP_MEM_REGION, DU_POOL, lcCfg->u.umBiDirCfg, sizeof(UmBiDirBearerCfg)); - lcCfg->u.umBiDirCfg = NULLP; + { + if(lcCfg->u.umBiDirCfg) + { + DU_FREE_SHRABL_BUF(DU_APP_MEM_REGION, DU_POOL, lcCfg->u.umBiDirCfg, sizeof(UmBiDirBearerCfg)); + } + break; } - break; - } case RLC_UM_UNI_DIRECTIONAL_UL : - { - if(lcCfg->u.umUniDirUlCfg) - { - DU_FREE_SHRABL_BUF(DU_APP_MEM_REGION, DU_POOL, lcCfg->u.umUniDirUlCfg, sizeof(UmUniDirUlBearerCfg)); - lcCfg->u.umUniDirUlCfg = NULLP; - } - break; + { + if(lcCfg->u.umUniDirUlCfg) + { + DU_FREE_SHRABL_BUF(DU_APP_MEM_REGION, DU_POOL, lcCfg->u.umUniDirUlCfg, sizeof(UmUniDirUlBearerCfg)); + } + break; - } + } case RLC_UM_UNI_DIRECTIONAL_DL : - { - if(lcCfg->u.umUniDirDlCfg) - { - DU_FREE_SHRABL_BUF(DU_APP_MEM_REGION, DU_POOL, lcCfg->u.umUniDirDlCfg, sizeof(UmUniDirDlBearerCfg)); - lcCfg->u.umUniDirDlCfg = NULLP; + { + if(lcCfg->u.umUniDirDlCfg) + { + DU_FREE_SHRABL_BUF(DU_APP_MEM_REGION, DU_POOL, lcCfg->u.umUniDirDlCfg, sizeof(UmUniDirDlBearerCfg)); + } + break; } - break; - } default: DU_LOG("\nERROR --> DU_APP: Invalid Rlc Mode %d at freeRlcLcCfg()", lcCfg->rlcMode); - break; + break; } - memset(lcCfg, 0, sizeof(LcCfg)); } + /******************************************************************* * * @brief Function to free MacLcCfg @@ -6310,15 +6308,12 @@ void freeMacLcCfg(LcCfg *lcCfg) if(lcCfg->drbQos) { DU_FREE_SHRABL_BUF(DU_APP_MEM_REGION, DU_POOL, lcCfg->drbQos, sizeof(DrbQosInfo)); - lcCfg->drbQos = NULLP; } /* Deleting SNSSAI */ if(lcCfg->snssai) { DU_FREE_SHRABL_BUF(DU_APP_MEM_REGION, DU_POOL, lcCfg->snssai, sizeof(Snssai)); - lcCfg->snssai = NULLP; } - memset(lcCfg, 0, sizeof(LcCfg)); } /******************************************************************* * @@ -7045,7 +7040,6 @@ void freeDuUeCfg(DuUeCfg *ueCfg) } if(ueCfg->ambrCfg) { - memset(ueCfg->ambrCfg, 0, sizeof(AmbrCfg)); DU_FREE_SHRABL_BUF(DU_APP_MEM_REGION, DU_POOL, ueCfg->ambrCfg, sizeof(AmbrCfg)); } for(lcIdx = 0; lcIdx < ueCfg->numRlcLcs; lcIdx++) @@ -7059,7 +7053,6 @@ void freeDuUeCfg(DuUeCfg *ueCfg) for(lcIdx = 0; lcIdx < ueCfg->numDrb; lcIdx++) { DU_FREE(ueCfg->upTnlInfo[lcIdx].tnlCfg1, sizeof(GtpTnlCfg)); - memset(&ueCfg->upTnlInfo[lcIdx], 0, sizeof(UpTnlCfg)); } } @@ -7085,10 +7078,10 @@ void freeF1UeDb(F1UeContextSetupDb *f1UeDb) { if(f1UeDb->dlRrcMsg->rrcMsgPdu) { - DU_FREE_SHRABL_BUF(DU_APP_MEM_REGION, DU_POOL,\ - f1UeDb->dlRrcMsg->rrcMsgPdu, f1UeDb->dlRrcMsg->rrcMsgSize); + //DU_FREE_SHRABL_BUF(DU_APP_MEM_REGION, DU_POOL,\ + f1UeDb->dlRrcMsg->rrcMsgPdu, f1UeDb->dlRrcMsg->rrcMsgSize); } - memset(f1UeDb->dlRrcMsg, 0, sizeof(F1DlRrcMsg)); + DU_FREE_SHRABL_BUF(DU_APP_MEM_REGION, DU_POOL, f1UeDb->dlRrcMsg, sizeof(F1DlRrcMsg)); } freeDuUeCfg(&f1UeDb->duUeCfg); memset(f1UeDb, 0, sizeof(F1UeContextSetupDb)); @@ -7829,11 +7822,27 @@ void freeMacPdschServCellInfo(PdschServCellCfg *pdsch) * ****************************************************************/ void freeMacServingCellInfo(ServCellCfgInfo *srvCellCfg) { + uint8_t timeDomRsrcIdx; + + if(srvCellCfg->initDlBwp.pdschPresent) + { + for(timeDomRsrcIdx = 0; timeDomRsrcIdx < srvCellCfg->initDlBwp.pdschCfg.numTimeDomRsrcAlloc; timeDomRsrcIdx++) + { + DU_FREE_SHRABL_BUF(DU_APP_MEM_REGION, DU_POOL, \ + srvCellCfg->initDlBwp.pdschCfg.timeDomRsrcAllociList[timeDomRsrcIdx].k0, sizeof(uint8_t)); + } + } + freeMacPdschServCellInfo(&srvCellCfg->pdschServCellCfg); if(srvCellCfg->bwpInactivityTmr) { DU_FREE_SHRABL_BUF(DU_APP_MEM_REGION, DU_POOL, srvCellCfg->bwpInactivityTmr, sizeof(uint8_t)); } + + if(srvCellCfg->initUlBwp.pucchPresent) + { + DU_FREE_SHRABL_BUF(DU_APP_MEM_REGION, DU_POOL, srvCellCfg->initUlBwp.pucchCfg.dlDataToUlAck, sizeof(PucchDlDataToUlAck)); + } } /******************************************************************* @@ -8130,13 +8139,13 @@ void extractPdschCfg(PDSCH_Config_t *cuPdschCfg, PdschConfig *macPdschCfg) if(cuPdschCfg->dmrs_DownlinkForPDSCH_MappingTypeA) { if(cuPdschCfg->dmrs_DownlinkForPDSCH_MappingTypeA->present == \ - PDSCH_Config__dmrs_DownlinkForPDSCH_MappingTypeA_PR_setup) + PDSCH_Config__dmrs_DownlinkForPDSCH_MappingTypeA_PR_setup) { if(cuPdschCfg->dmrs_DownlinkForPDSCH_MappingTypeA->choice.setup) - { + { macPdschCfg->dmrsDlCfgForPdschMapTypeA.addPos = \ - *(cuPdschCfg->dmrs_DownlinkForPDSCH_MappingTypeA->choice.setup->dmrs_AdditionalPosition); - } + *(cuPdschCfg->dmrs_DownlinkForPDSCH_MappingTypeA->choice.setup->dmrs_AdditionalPosition); + } } } macPdschCfg->resourceAllocType = cuPdschCfg->resourceAllocation; @@ -8144,19 +8153,34 @@ void extractPdschCfg(PDSCH_Config_t *cuPdschCfg, PdschConfig *macPdschCfg) { timeDomAlloc = cuPdschCfg->pdsch_TimeDomainAllocationList; if(timeDomAlloc->present ==\ - PDSCH_Config__pdsch_TimeDomainAllocationList_PR_setup) + PDSCH_Config__pdsch_TimeDomainAllocationList_PR_setup) { if(timeDomAlloc->choice.setup) - { - macPdschCfg->numTimeDomRsrcAlloc = timeDomAlloc->choice.setup->list.count; + { + macPdschCfg->numTimeDomRsrcAlloc = timeDomAlloc->choice.setup->list.count; for(timeDomIdx = 0; timeDomIdx < timeDomAlloc->choice.setup->list.count; timeDomIdx++) { - macPdschCfg->timeDomRsrcAllociList[timeDomIdx].mappingType = \ - timeDomAlloc->choice.setup->list.array[timeDomIdx]->mappingType; - macPdschCfg->timeDomRsrcAllociList[timeDomIdx].startSymbolAndLength = \ - timeDomAlloc->choice.setup->list.array[timeDomIdx]->startSymbolAndLength; - } - } + macPdschCfg->timeDomRsrcAllociList[timeDomIdx].k0 = NULLP; + if(timeDomAlloc->choice.setup->list.array[timeDomIdx]->k0) + { + if(macPdschCfg->timeDomRsrcAllociList[timeDomIdx].k0 == NULL) + { + DU_ALLOC_SHRABL_BUF(macPdschCfg->timeDomRsrcAllociList[timeDomIdx].k0, sizeof(uint8_t)); + if(!macPdschCfg->timeDomRsrcAllociList[timeDomIdx].k0) + { + DU_LOG("\nERROR --> DU APP : Memory allocation failed for k0 at extractPdschCfg()"); + return RFAILED; + } + } + *(macPdschCfg->timeDomRsrcAllociList[timeDomIdx].k0) = \ + *(timeDomAlloc->choice.setup->list.array[timeDomIdx]->k0); + } + macPdschCfg->timeDomRsrcAllociList[timeDomIdx].mappingType = \ + timeDomAlloc->choice.setup->list.array[timeDomIdx]->mappingType; + macPdschCfg->timeDomRsrcAllociList[timeDomIdx].startSymbolAndLength = \ + timeDomAlloc->choice.setup->list.array[timeDomIdx]->startSymbolAndLength; + } + } } } macPdschCfg->rbgSize = cuPdschCfg->rbg_Size; @@ -8168,10 +8192,10 @@ void extractPdschCfg(PDSCH_Config_t *cuPdschCfg, PdschConfig *macPdschCfg) if(cuPdschCfg->prb_BundlingType.choice.staticBundling) { if(cuPdschCfg->prb_BundlingType.choice.staticBundling->bundleSize) - { + { macPdschCfg->bundlingInfo.StaticBundling.size = \ - *(cuPdschCfg->prb_BundlingType.choice.staticBundling->bundleSize); - } + *(cuPdschCfg->prb_BundlingType.choice.staticBundling->bundleSize); + } } } else if(cuPdschCfg->prb_BundlingType.present == PDSCH_Config__prb_BundlingType_PR_dynamicBundling) @@ -9543,7 +9567,7 @@ void freeAperDecodeDRBSetup(DRBs_ToBeSetup_List_t *drbSet) * @return void * * ****************************************************************/ -uint8_t procUeReCfgCellInfo(MacUeCfg *macUeCfg, void *cellInfo) +uint8_t procUeReCfgCellInfo(MacUeCfg *macUeCfgToSend, void *cellInfo) { uint8_t ret = ROK; CellGroupConfigRrc_t *cellGrp = NULLP; @@ -9551,13 +9575,13 @@ uint8_t procUeReCfgCellInfo(MacUeCfg *macUeCfg, void *cellInfo) if(cellInfo) { cellGrp = (CellGroupConfigRrc_t *)cellInfo; - ret = extractUeReCfgCellInfo(cellGrp, macUeCfg); + ret = extractUeReCfgCellInfo(cellGrp, macUeCfgToSend); if(ret == RFAILED) DU_LOG("\nERROR --> F1AP : Failed at procUeReCfgCellInfo()"); } if(ret == RFAILED) { - freeUeReCfgCellGrpInfo(macUeCfg); + freeUeReCfgCellGrpInfo(macUeCfgToSend); } return ret; } @@ -10233,6 +10257,7 @@ uint8_t procF1UeContextSetupReq(F1AP_PDU_t *f1apMsg) DU_LOG("\nERROR --> F1AP: Memory Alloc Failed at procF1UeContextSetupReq()"); ret = RFAILED; } + break; } else ueCbFound = false; @@ -10394,9 +10419,18 @@ void freeDlTnlInfo(DLUPTNLInformation_ToBeSetup_List_t *tnlInfo) { uint8_t arrIdx = 0; - for(arrIdx=0; arrIdx < tnlInfo->list.count; arrIdx++) + if(tnlInfo) { - DU_FREE(tnlInfo->list.array[arrIdx]->dLUPTNLInformation.choice.gTPTunnel, sizeof(GTPTunnel_t)); + for(arrIdx=0; arrIdx < tnlInfo->list.count; arrIdx++) + { + DU_FREE(tnlInfo->list.array[arrIdx]->dLUPTNLInformation.choice.gTPTunnel->transportLayerAddress.buf,\ + tnlInfo->list.array[arrIdx]->dLUPTNLInformation.choice.gTPTunnel->transportLayerAddress.size); + DU_FREE(tnlInfo->list.array[arrIdx]->dLUPTNLInformation.choice.gTPTunnel->gTP_TEID.buf,\ + tnlInfo->list.array[arrIdx]->dLUPTNLInformation.choice.gTPTunnel->gTP_TEID.size); + DU_FREE(tnlInfo->list.array[arrIdx]->dLUPTNLInformation.choice.gTPTunnel, sizeof(GTPTunnel_t)); + DU_FREE(tnlInfo->list.array[arrIdx], sizeof(DLUPTNLInformation_ToBeSetup_Item_t)); + } + DU_FREE(tnlInfo->list.array, tnlInfo->list.size); } } @@ -10423,7 +10457,9 @@ void freeDrbSetupList(DRBs_Setup_List_t *drbSetupList) { drbItemIe = ((DRBs_Setup_ItemIEs_t *)drbSetupList->list.array[arrIdx]); freeDlTnlInfo(&drbItemIe->value.choice.DRBs_Setup_Item.dLUPTNLInformation_ToBeSetup_List); + DU_FREE(drbSetupList->list.array[arrIdx], sizeof(DRBs_Setup_Item_t)); } + DU_FREE(drbSetupList->list.array, drbSetupList->list.size); } /******************************************************************* @@ -12053,7 +12089,7 @@ 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(dlMsg.rrcMsgPdu, dlMsg.rrcMsgSize); + DU_ALLOC_SHRABL_BUF(dlMsg.rrcMsgPdu, dlMsg.rrcMsgSize); if(dlMsg.rrcMsgPdu) { memcpy(dlMsg.rrcMsgPdu, f1DlRrcMsg->protocolIEs.list.array[idx]->value.choice.RRCContainer.buf,\ @@ -12169,7 +12205,9 @@ void FreeDrbSetupModList(DRBs_SetupMod_List_t *drbSetupList) { drbItemIe = ((DRBs_SetupMod_ItemIEs_t *)drbSetupList->list.array[arrIdx]); freeDlTnlInfo(&drbItemIe->value.choice.DRBs_SetupMod_Item.dLUPTNLInformation_ToBeSetup_List); + DU_FREE(drbSetupList->list.array[arrIdx], sizeof(DRBs_SetupMod_ItemIEs_t)); } + DU_FREE(drbSetupList->list.array, drbSetupList->list.size); } /******************************************************************* * @brief Free the memory allocated for UE Context Mod Response @@ -12689,12 +12727,13 @@ uint8_t procF1UeContextModificationReq(F1AP_PDU_t *f1apMsg) } } } + break; } - else - { - DU_LOG("\nERROR --> DU APP : wrong values of gnbCuUeF1apId and gnbDuUeF1apId "); - ret = RFAILED; - } + } + if(ueIdx >= duCb.actvCellLst[cellIdx]->numActvUes) + { + DU_LOG("\nERROR --> DU APP : wrong values of gnbCuUeF1apId and gnbDuUeF1apId "); + ret = RFAILED; } } break;