From 7b318056f6a0eee9b13ea888ac62134dbefecb66 Mon Sep 17 00:00:00 2001 From: "lal.harshita" Date: Wed, 4 Jan 2023 15:41:42 +0530 Subject: [PATCH] [Epic-ID: ODUHIGH-488][Task-ID: ODUHIGH-490] WG8 Alignment [Slice configuration] Signed-off-by: lal.harshita Change-Id: I8c4a1f17d20c9916dfced021a44931298871c88e Signed-off-by: lal.harshita --- src/5gnrmac/mac_cfg_hdl.c | 47 ++++++++++------- src/5gnrmac/mac_msg_hdl.c | 85 +++++++++++++++--------------- src/5gnrsch/sch.c | 44 +++++++--------- src/5gnrsch/sch.h | 2 +- src/5gnrsch/sch_ue_mgr.c | 15 +++--- src/cm/du_app_mac_inf.h | 24 ++++++--- src/cm/mac_sch_interface.h | 10 ++-- src/du_app/du_cell_mgr.c | 4 +- src/du_app/du_cell_mgr.h | 4 +- src/du_app/du_cfg.c | 66 ++++++++++++----------- src/du_app/du_cfg.h | 27 +--------- src/du_app/du_f1ap_msg_hdl.c | 58 ++++++++++---------- src/du_app/du_mgr_main.c | 6 +-- src/du_app/du_msg_hdl.c | 123 ++----------------------------------------- 14 files changed, 197 insertions(+), 318 deletions(-) diff --git a/src/5gnrmac/mac_cfg_hdl.c b/src/5gnrmac/mac_cfg_hdl.c index 5c0e85e66..4868e2b4f 100644 --- a/src/5gnrmac/mac_cfg_hdl.c +++ b/src/5gnrmac/mac_cfg_hdl.c @@ -735,24 +735,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 b36927061..fb560cd04 100644 --- a/src/5gnrmac/mac_msg_hdl.c +++ b/src/5gnrmac/mac_msg_hdl.c @@ -900,46 +900,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 @@ -1028,7 +1032,6 @@ uint8_t MacProcSliceRecfgReq(Pst *pst, MacSliceRecfgReq *macSliceRecfgReq) FILL_PST_MAC_TO_SCH(schPst, EVENT_SLICE_RECFG_REQ_TO_SCH); ret = (*macSchSliceRecfgReqOpts[schPst.selector])(&schPst, schSliceRecfgReq); } - } freeMacSliceCfgReq(macSliceRecfgReq, pst); } diff --git a/src/5gnrsch/sch.c b/src/5gnrsch/sch.c index ad83a8d49..3e924d877 100644 --- a/src/5gnrsch/sch.c +++ b/src/5gnrsch/sch.c @@ -1694,7 +1694,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; @@ -1705,11 +1705,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)++; @@ -1728,7 +1728,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 @@ -1766,8 +1766,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; @@ -1777,22 +1777,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++; } @@ -1828,13 +1821,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)); } @@ -1866,7 +1858,7 @@ uint8_t MacSchSliceCfgReq(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) @@ -1915,7 +1907,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; @@ -1927,9 +1919,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; } @@ -1993,7 +1985,7 @@ uint8_t MacSchSliceRecfgReq(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 ac7810e02..2c9cd24c1 100644 --- a/src/5gnrsch/sch.h +++ b/src/5gnrsch/sch.h @@ -571,7 +571,7 @@ typedef struct schCellCb typedef struct schSliceCfg { uint8_t numOfSliceConfigured; - SchRrmPolicyOfSlice **listOfConfirguration; + SchRrmPolicyOfSlice **listOfSlices; }SchSliceCfg; /** diff --git a/src/5gnrsch/sch_ue_mgr.c b/src/5gnrsch/sch_ue_mgr.c index ec07c685b..61db4b242 100644 --- a/src/5gnrsch/sch_ue_mgr.c +++ b/src/5gnrsch/sch_ue_mgr.c @@ -236,16 +236,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*/ 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 f6eae3336..ec2c5a842 100644 --- a/src/cm/mac_sch_interface.h +++ b/src/cm/mac_sch_interface.h @@ -1825,21 +1825,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 02ab08a25..9bd71c119 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; } -- 2.16.6