X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;ds=sidebyside;f=src%2Fdu_app%2Fdu_msg_hdl.c;h=38c7ea4d300c01abfb5030fffa502163e124f4b7;hb=6b44407d464a5a4e060999255233a7cfe78bb0fa;hp=054a2a9c6fd10647639c6916f33a416675eff73f;hpb=392607b7a8cbf1b7415b15517275dd1ef4e897a9;p=o-du%2Fl2.git diff --git a/src/du_app/du_msg_hdl.c b/src/du_app/du_msg_hdl.c index 054a2a9c6..38c7ea4d3 100644 --- a/src/du_app/du_msg_hdl.c +++ b/src/du_app/du_msg_hdl.c @@ -21,16 +21,23 @@ #include "lrg.h" #include "legtp.h" #include "lkw.h" +#include "kwu.h" #include "lrg.x" #include "lkw.x" +#include "kwu.x" +#include "du_app_mac_inf.h" +#include "du_app_rlc_inf.h" #include "du_cfg.h" +#include "du_app_rlc_inf.h" #include "du_mgr.h" #include "du_sctp.h" +#include "F1AP-PDU.h" #include "du_f1ap_msg_hdl.h" #include "du_ue_mgr.h" #include "lsctp.h" #include "legtp.h" #include "lphy_stub.h" +#include "du_utils.h" U8 rlcDlCfg = 0; U8 numRlcDlSaps = 0; @@ -40,7 +47,7 @@ U8 macCfg = 0; U8 macCfgInst = 0; extern DuCfgParams duCfgParam; -extern S16 cmPkLkwCfgReq(Pst *pst, KwMngmt *cfg); +extern S16 packRlcConfigReq(Pst *pst, KwMngmt *cfg); extern S16 cmPkLkwCntrlReq(Pst *pst, KwMngmt *cfg); extern S16 cmPkLrgCfgReq(Pst *pst, RgMngmt *cfg); extern S16 BuildAndSendE2SetupReq(); @@ -52,21 +59,21 @@ extern S16 cmPkLrgSchCfgReq(Pst * pst,RgMngmt * cfg); packMacCellCfgReq packMacCellCfgOpts[] = { packMacCellCfg, /* packing for loosely coupled */ - MacHdlCellCfgReq, /* packing for tightly coupled */ + MacProcCellCfgReq, /* packing for tightly coupled */ packMacCellCfg, /* packing for light weight loosly coupled */ }; DuMacCellStartReq packMacCellStartReqOpts[] = { packMacCellStartReq, /* Loose coupling */ - MacHdlCellStartReq, /* TIght coupling */ + MacProcCellStartReq, /* TIght coupling */ packMacCellStartReq /* Light weight-loose coupling */ }; DuMacCellStopReq packMacCellStopReqOpts[] = { packMacCellStopReq, /* Loose coupling */ - MacHdlCellStopReq, /* TIght coupling */ + MacProcCellStopReq, /* TIght coupling */ packMacCellStopReq /* Light weight-loose coupling */ }; @@ -120,7 +127,7 @@ S16 duBuildRlcCfg(Inst inst) genCfg->lmPst.pool = RLC_POOL; genCfg->lmPst.selector = ODU_SELECTOR_LC; - /* Fill Header */ + /* Fill Header */ kwMngmt.hdr.msgType = TCFG; kwMngmt.hdr.msgLen = 0; kwMngmt.hdr.entId.ent = ENTKW; @@ -148,7 +155,7 @@ S16 duBuildRlcCfg(Inst inst) DU_LOG("\nDU_APP : RLC Gen Cfg Req sent for inst %d", inst); /* Send the request to RLC */ - cmPkLkwCfgReq(&pst, &kwMngmt); + packRlcConfigReq(&pst, &kwMngmt); return ROK; } @@ -219,14 +226,14 @@ S16 duBuildRlcLsapCfg(Ent ent, Inst inst, U8 lsapInst) lSap->procId = DU_PROC; lSap->ent = ENTKW; lSap->inst = (inst == RLC_UL_INST) ? - RLC_DL_INST : RLC_UL_INST; + RLC_DL_INST : RLC_UL_INST; lSap->sapId = 0; lSap->selector = ODU_SELECTOR_LC; kwMngmt.hdr.elmId.elmnt = STUDXSAP; DU_LOG("\nDU_APP : RLC DL/UL Lower Sap Cfg Req sent for inst %d", inst); } - cmPkLkwCfgReq(&pst, &kwMngmt); + packRlcConfigReq(&pst, &kwMngmt); return ROK; } @@ -291,7 +298,7 @@ S16 duBuildRlcUsapCfg(U8 elemId, Ent ent, Inst inst) pst.region = duCb.init.region; DU_LOG("\nDU_APP : RLC Kwu Upper Sap Cfg Req sent for inst %d", inst); - cmPkLkwCfgReq(&pst, &kwMngmt); + packRlcConfigReq(&pst, &kwMngmt); return ROK; } @@ -321,43 +328,43 @@ S16 duProcCfgComplete() { DuCellCb *cell = NULLP; DU_ALLOC(cell, sizeof(DuCellCb)) - if(cell == NULLP) - { - DU_LOG("\nDU_APP : Memory Allocation failed in duProcCfgComplete"); - ret = RFAILED; - } - else - { - U32 nci; - U8 idx1; - memset(cell, 0, sizeof(DuCellCb)); - cell->cellId = ++cellId; - cell->cellInfo.nrEcgi.plmn.mcc[0] = PLMN_MCC0; - cell->cellInfo.nrEcgi.plmn.mcc[1] = PLMN_MCC1; - cell->cellInfo.nrEcgi.plmn.mcc[2] = PLMN_MCC2; - cell->cellInfo.nrEcgi.plmn.mnc[0] = PLMN_MNC0; - cell->cellInfo.nrEcgi.plmn.mnc[1] = PLMN_MNC1; - cell->cellInfo.nrEcgi.plmn.mnc[2] = PLMN_MNC2; - cell->cellInfo.nrEcgi.cellId = NR_CELL_ID; - cell->cellInfo.nrPci = NR_PCI; - cell->cellInfo.fiveGsTac = DU_TAC; - for(idx1=0; idx1cellInfo.plmn[idx1].mcc[0] = PLMN_MCC0; - cell->cellInfo.plmn[idx1].mcc[1] = PLMN_MCC1; - cell->cellInfo.plmn[idx1].mcc[2] = PLMN_MCC2; - cell->cellInfo.plmn[idx1].mnc[0] = PLMN_MNC0; - cell->cellInfo.plmn[idx1].mnc[1] = PLMN_MNC1; - cell->cellInfo.plmn[idx1].mnc[2] = PLMN_MNC2; + if(cell == NULLP) + { + DU_LOG("\nDU_APP : Memory Allocation failed in duProcCfgComplete"); + ret = RFAILED; + } + else + { + U32 nci; + U8 idx1; + memset(cell, 0, sizeof(DuCellCb)); + cell->cellId = ++cellId; + cell->cellInfo.nrEcgi.plmn.mcc[0] = PLMN_MCC0; + cell->cellInfo.nrEcgi.plmn.mcc[1] = PLMN_MCC1; + cell->cellInfo.nrEcgi.plmn.mcc[2] = PLMN_MCC2; + cell->cellInfo.nrEcgi.plmn.mnc[0] = PLMN_MNC0; + cell->cellInfo.nrEcgi.plmn.mnc[1] = PLMN_MNC1; + cell->cellInfo.nrEcgi.plmn.mnc[2] = PLMN_MNC2; + cell->cellInfo.nrEcgi.cellId = NR_CELL_ID; + cell->cellInfo.nrPci = NR_PCI; + cell->cellInfo.fiveGsTac = DU_TAC; + for(idx1=0; idx1cellInfo.plmn[idx1].mcc[0] = PLMN_MCC0; + cell->cellInfo.plmn[idx1].mcc[1] = PLMN_MCC1; + cell->cellInfo.plmn[idx1].mcc[2] = PLMN_MCC2; + cell->cellInfo.plmn[idx1].mnc[0] = PLMN_MNC0; + cell->cellInfo.plmn[idx1].mnc[1] = PLMN_MNC1; + cell->cellInfo.plmn[idx1].mnc[2] = PLMN_MNC2; + } + cell->cellInfo.maxUe = duCfgParam.maxUe; + cell->cellStatus = CELL_OUT_OF_SERVICE; + nci = (U16)cell->cellInfo.nrEcgi.cellId; + + duCb.cfgCellLst[nci-1] = cell; + duCb.numCfgCells++; } - cell->cellInfo.maxUe = duCfgParam.maxUe; - cell->cellStatus = CELL_OUT_OF_SERVICE; - nci = (U16)cell->cellInfo.nrEcgi.cellId; - - duCb.cfgCellLst[nci-1] = cell; - duCb.numCfgCells++; } - } if(ret != RFAILED) { //Start layer configs @@ -390,7 +397,7 @@ S16 duSendRlcUlCfg() duBuildRlcLsapCfg(ENTRG, (Inst)RLC_UL_INST, cellIdx); } duBuildRlcLsapCfg(ENTKW, (Inst)RLC_UL_INST, 0); - + return ROK; } @@ -419,7 +426,7 @@ S16 duSendRlcDlCfg() { duBuildRlcLsapCfg(ENTRG, (Inst)RLC_DL_INST, cellIdx); } - + return ROK; } /************************************************************************** @@ -427,7 +434,7 @@ S16 duSendRlcDlCfg() * * @details * - * Function : duHdlRlcCfgComplete + * Function : DuHdlRlcCfgComplete * * Functionality: * Handles Gen Config Confirm from RLC @@ -438,7 +445,7 @@ S16 duSendRlcDlCfg() * RFAILED - failure * ***************************************************************************/ -S16 duHdlRlcCfgComplete(Pst *pst, KwMngmt *cfm) +S16 DuHdlRlcCfgComplete(Pst *pst, KwMngmt *cfm) { S16 ret = ROK; if (pst->srcInst == RLC_UL_INST) @@ -476,37 +483,37 @@ S16 duHdlRlcCntrlCfgComplete(Pst *pst, KwMngmt *cntrl) { switch (cntrl->hdr.elmId.elmnt) { - case STRGUSAP: - { - if (pst->srcInst == RLC_DL_INST) - { - DU_LOG("\nDU_APP : BIND OF RLC DL TO MAC (RGU) SAP SUCCESSFUL"); - macCfgInst++; - if(macCfgInst < DEFAULT_CELLS) - { - macCfgInst = 0; - duBindUnbindRlcToMacSap((Inst) RLC_DL_INST, ABND); - } - else - { - duBindUnbindRlcToMacSap((Inst) RLC_UL_INST, ABND); - } - } - else - { - DU_LOG("\nDU_APP : BIND OF RLC UL TO MAC (RGU) SAP SUCCESSFUL"); - macCfgInst++; - if(macCfgInst < DEFAULT_CELLS) - { - duBindUnbindRlcToMacSap((Inst) RLC_UL_INST, ABND); - } - else - { - duSendSchCfg(); - } - break; - } - } + case STRGUSAP: + { + if (pst->srcInst == RLC_DL_INST) + { + DU_LOG("\nDU_APP : BIND OF RLC DL TO MAC (RGU) SAP SUCCESSFUL"); + macCfgInst++; + if(macCfgInst < DEFAULT_CELLS) + { + macCfgInst = 0; + duBindUnbindRlcToMacSap((Inst) RLC_DL_INST, ABND); + } + else + { + duBindUnbindRlcToMacSap((Inst) RLC_UL_INST, ABND); + } + } + else + { + DU_LOG("\nDU_APP : BIND OF RLC UL TO MAC (RGU) SAP SUCCESSFUL"); + macCfgInst++; + if(macCfgInst < DEFAULT_CELLS) + { + duBindUnbindRlcToMacSap((Inst) RLC_UL_INST, ABND); + } + else + { + duSendSchCfg(); + } + break; + } + } } } @@ -537,37 +544,37 @@ S16 duProcRlcUlCfgComplete(Pst *pst, KwMngmt *cfm) { switch(cfm->hdr.elmId.elmnt) { - case STGEN: - { - rlcUlCfg |= RLC_GEN_CFG; - break; - } - case STRGUSAP: - { - numRlcMacSaps++; - if(numRlcMacSaps == DEFAULT_CELLS) - { - rlcUlCfg |= RLC_MAC_SAP_CFG; - numRlcMacSaps = 0; - } - break; - } - case STUDXSAP: - { - rlcUlCfg |= RLC_UDX_SAP_CFG; - break; - - } - default: - break; + case STGEN: + { + rlcUlCfg |= RLC_GEN_CFG; + break; + } + case STRGUSAP: + { + numRlcMacSaps++; + if(numRlcMacSaps == DEFAULT_CELLS) + { + rlcUlCfg |= RLC_MAC_SAP_CFG; + numRlcMacSaps = 0; + } + break; + } + case STUDXSAP: + { + rlcUlCfg |= RLC_UDX_SAP_CFG; + break; + + } + default: + break; } DU_LOG("\nDU_APP : RLC UL Cfg Cfm received for the element %d ",cfm->hdr.elmId.elmnt); if(rlcUlCfg == DU_RLC_UL_CONFIGURED) { - rlcUlCfg = 0; - numRlcMacSaps = 0; - //Start configuration of RLC DL - duSendRlcDlCfg(); + rlcUlCfg = 0; + numRlcMacSaps = 0; + //Start configuration of RLC DL + duSendRlcDlCfg(); } } @@ -602,37 +609,37 @@ S16 duProcRlcDlCfgComplete(Pst *pst, KwMngmt *cfm) { switch(cfm->hdr.elmId.elmnt) { - case STGEN: - { - rlcDlCfg |= RLC_GEN_CFG; - break; - } - case STRGUSAP: - { - numRlcMacSaps++; - if(numRlcMacSaps == DEFAULT_CELLS) - { - rlcDlCfg |= RLC_MAC_SAP_CFG; - numRlcMacSaps = 0; - } - break; - } - case STUDXSAP: - { - rlcDlCfg |= RLC_UDX_SAP_CFG; - break; - - } - default: - break; + case STGEN: + { + rlcDlCfg |= RLC_GEN_CFG; + break; + } + case STRGUSAP: + { + numRlcMacSaps++; + if(numRlcMacSaps == DEFAULT_CELLS) + { + rlcDlCfg |= RLC_MAC_SAP_CFG; + numRlcMacSaps = 0; + } + break; + } + case STUDXSAP: + { + rlcDlCfg |= RLC_UDX_SAP_CFG; + break; + + } + default: + break; } DU_LOG("\nDU_APP : RLC DL Cfg Cfm received for the element %d ",cfm->hdr.elmId.elmnt); if(rlcDlCfg == DU_RLC_DL_CONFIGURED) { - rlcDlCfg = 0; - //Start configuration of MAC - duSendMacCfg(); + rlcDlCfg = 0; + //Start configuration of MAC + duSendMacCfg(); } } @@ -692,10 +699,10 @@ S16 duBuildMacGenCfg() DU_SET_ZERO(&rgMngmt, sizeof(RgMngmt)); genCfg = &(rgMngmt.t.cfg.s.genCfg); - + /*----------- Fill General Configuration Parameters ---------*/ genCfg->mem.region = MAC_MEM_REGION; - genCfg->mem.pool = RG_POOL; + genCfg->mem.pool = MAC_POOL; genCfg->tmrRes = 10; genCfg->numRguSaps = 2; @@ -708,10 +715,10 @@ S16 duBuildMacGenCfg() genCfg->lmPst.prior = PRIOR0; genCfg->lmPst.route = RTESPEC; genCfg->lmPst.region = MAC_MEM_REGION; - genCfg->lmPst.pool = RG_POOL; + genCfg->lmPst.pool = MAC_POOL; genCfg->lmPst.selector = ODU_SELECTOR_LC; - /* Fill Header */ + /* Fill Header */ rgMngmt.hdr.msgType = TCFG; rgMngmt.hdr.msgLen = 0; rgMngmt.hdr.entId.ent = ENTRG; @@ -724,7 +731,7 @@ S16 duBuildMacGenCfg() rgMngmt.hdr.response.prior = PRIOR0; rgMngmt.hdr.response.route = RTESPEC; rgMngmt.hdr.response.mem.region = MAC_MEM_REGION; - rgMngmt.hdr.response.mem.pool = RG_POOL; + rgMngmt.hdr.response.mem.pool = MAC_POOL; rgMngmt.hdr.response.selector = ODU_SELECTOR_LC; /* Fill Pst */ @@ -771,7 +778,7 @@ S16 duBuildMacUsapCfg(SpId sapId) uSap = &(rgMngmt.t.cfg.s.rguSap); uSap->mem.region = MAC_MEM_REGION; - uSap->mem.pool = RG_POOL; + uSap->mem.pool = MAC_POOL; uSap->suId = 0; uSap->spId = sapId; uSap->procId = DU_PROC; @@ -787,8 +794,8 @@ S16 duBuildMacUsapCfg(SpId sapId) rgMngmt.hdr.entId.inst = (Inst)0; rgMngmt.hdr.elmId.elmnt = STRGUSAP; rgMngmt.hdr.response.mem.region = MAC_MEM_REGION; - rgMngmt.hdr.response.mem.pool = RG_POOL; - + rgMngmt.hdr.response.mem.pool = MAC_POOL; + /* fill pst */ pst.selector = ODU_SELECTOR_LC; pst.srcEnt = ENTDUAPP; @@ -830,27 +837,27 @@ S16 duHdlMacCfgComplete(Pst *pst, RgMngmt *cfm) { switch (cfm->hdr.elmId.elmnt) { - case STGEN: - { - macCfg |= MAC_GEN_CFG; - break; - } - case STRGUSAP: - { - macCfg |= MAC_SAP_CFG; - numRlcMacSaps++; - break; - } - default: - break; + case STGEN: + { + macCfg |= MAC_GEN_CFG; + break; + } + case STRGUSAP: + { + macCfg |= MAC_SAP_CFG; + numRlcMacSaps++; + break; + } + default: + break; } DU_LOG("\nDU_APP : MAC Cfg Cfm received for the element %d ",cfm->hdr.elmId.elmnt); if(macCfg == MAC_CONFIGURED && numRlcMacSaps == MAX_MAC_SAP) { - macCfg = 0; - DU_LOG("\nDU_APP : Completed sending Configs"); - macCfgInst = 0; - duBindUnbindRlcToMacSap(RLC_DL_INST, ABND); + macCfg = 0; + DU_LOG("\nDU_APP : Completed sending Configs"); + macCfgInst = 0; + duBindUnbindRlcToMacSap(RLC_DL_INST, ABND); } } @@ -886,7 +893,7 @@ S16 duBindUnbindRlcToMacSap(U8 inst, U8 action) TRC2(smBindKwToRguSap) - DU_SET_ZERO(&kwMngmt, sizeof(KwMngmt)); + DU_SET_ZERO(&kwMngmt, sizeof(KwMngmt)); DU_SET_ZERO(&pst, sizeof(Pst)); if (action == ABND) @@ -951,21 +958,21 @@ S16 duSctpNtfyHdl(Buffer *mBuf, CmInetSctpNotification *ntfy) { if(BuildAndSendF1SetupReq() != ROK) { - return RFAILED; + return RFAILED; } } else if(ricParams.assocId == ntfy->u.assocChange.assocId) { if(BuildAndSendE2SetupReq() != ROK) { - return RFAILED; + return RFAILED; } } else - { + { DU_LOG("\nDU_APP : Invalid assocId %d received", ntfy->u.assocChange.assocId); - return RFAILED; - } + return RFAILED; + } return ROK; } @@ -997,7 +1004,7 @@ S16 duFillEgtpPst(Pst *pst, Event event) pst->event = event; pst->selector = ODU_SELECTOR_LC; pst->pool= DU_POOL; - + RETVALUE(ROK); } @@ -1021,18 +1028,18 @@ S16 duFillEgtpPst(Pst *pst, Event event) S16 duBuildEgtpCfgReq() { - Pst pst; - EgtpConfig egtpCfg; - - DU_LOG("\nDU_APP : Sending EGTP config request"); - - cmMemset((U8 *)&egtpCfg, 0, sizeof(EgtpConfig)); - cmMemcpy((U8 *)&egtpCfg, (U8 *)&duCfgParam.egtpParams, (PTR)sizeof(EgtpConfig)); - - duFillEgtpPst(&pst, EVTCFGREQ); - packEgtpCfgReq(&pst, egtpCfg); - - RETVALUE(ROK); + Pst pst; + EgtpConfig egtpCfg; + + DU_LOG("\nDU_APP : Sending EGTP config request"); + + cmMemset((U8 *)&egtpCfg, 0, sizeof(EgtpConfig)); + cmMemcpy((U8 *)&egtpCfg, (U8 *)&duCfgParam.egtpParams, (PTR)sizeof(EgtpConfig)); + + duFillEgtpPst(&pst, EVTCFGREQ); + packEgtpCfgReq(&pst, egtpCfg); + + RETVALUE(ROK); } /******************************************************************* @@ -1087,7 +1094,7 @@ S16 duHdlEgtpCfgComplete(CmStatus cfm) * RFAILED - failure * * ****************************************************************/ - + S16 duSendEgtpSrvOpenReq() { Pst pst; @@ -1119,22 +1126,22 @@ S16 duSendEgtpSrvOpenReq() S16 duHdlEgtpSrvOpenComplete(CmStatus cfm) { - S16 ret = ROK; - - if(cfm.status == LCM_PRIM_OK) - { - DU_LOG("\nDU_APP : EGTP server opened successfully"); + S16 ret = ROK; + + if(cfm.status == LCM_PRIM_OK) + { + DU_LOG("\nDU_APP : EGTP server opened successfully"); #ifdef EGTP_TEST - duSendEgtpTnlMgmtReq(EGTP_TNL_MGMT_ADD, EGTP_LCL_TEID, EGTP_REM_TEID); + duSendEgtpTnlMgmtReq(EGTP_TNL_MGMT_ADD, EGTP_LCL_TEID, EGTP_REM_TEID); #endif - } - else - { - DU_LOG("\nDU_APP : EGTP server opening failed"); - ret = RFAILED; - } - - RETVALUE(ret); + } + else + { + DU_LOG("\nDU_APP : EGTP server opening failed"); + ret = RFAILED; + } + + RETVALUE(ret); } /******************************************************************* @@ -1164,12 +1171,12 @@ S16 duSendEgtpTnlMgmtReq(U8 action, U32 lclTeid, U32 remTeid) tnlEvt.action = action; tnlEvt.lclTeid = lclTeid; tnlEvt.remTeid = remTeid; - + DU_LOG("\nDU_APP : Sending EGTP tunnel management request"); - + duFillEgtpPst(&pst, EVTTNLMGMTREQ); packEgtpTnlMgmtReq(&pst, tnlEvt); - + RETVALUE(ROK); } @@ -1224,7 +1231,7 @@ S16 duSendEgtpDatInd(Buffer *mBuf) egtpMsg.msgHdr.extHdr.pdcpNmb.pres = FALSE; egtpMsg.msgHdr.teId = 1; egtpMsg.msg = mBuf; - + egtpHdlDatInd(egtpMsg); return ROK; @@ -1259,9 +1266,9 @@ S16 duSendEgtpTestData() { if(SAddPstMsgMult((Data *)data, datSize, mBuf) != ROK) { - DU_LOG("\nDU_APP : SAddPstMsgMult failed"); - SPutMsg(mBuf); - RETVALUE(RFAILED); + DU_LOG("\nDU_APP : SAddPstMsgMult failed"); + SPutMsg(mBuf); + RETVALUE(RFAILED); } } else @@ -1288,7 +1295,7 @@ S16 duSendEgtpTestData() S16 ret, cnt, idx; Data revPkArray[CM_IPV4_HDRLEN]; Data pkArray[CM_IPV4_HDRLEN]; - + /* initialize locals */ cnt = 0; cmMemset(revPkArray, 0, CM_IPV4_HDRLEN); @@ -1338,9 +1345,9 @@ S16 duSendEgtpTestData() /* this function automatically reverses revPkArray */ ret = SAddPreMsgMult(revPkArray, (MsgLen)cnt, mBuf); - + duSendEgtpDatInd(mBuf); - + RETVALUE(ROK); } #endif /* EGTP_TEST */ @@ -1376,7 +1383,7 @@ S16 duSendSchCfg() cfg->instId = DEFAULT_CELLS + 1; /* Filling of Gen config */ cfg->genCfg.mem.region = MAC_MEM_REGION; - cfg->genCfg.mem.pool = RG_POOL; + cfg->genCfg.mem.pool = MAC_POOL; cfg->genCfg.tmrRes = 10; #ifdef LTE_ADV @@ -1393,7 +1400,7 @@ S16 duSendSchCfg() cfg->genCfg.lmPst.prior = PRIOR0; cfg->genCfg.lmPst.route = RTESPEC; cfg->genCfg.lmPst.region = MAC_MEM_REGION; - cfg->genCfg.lmPst.pool = RG_POOL; + cfg->genCfg.lmPst.pool = MAC_POOL; cfg->genCfg.lmPst.selector = ODU_SELECTOR_LC; /* Fill Header */ @@ -1402,7 +1409,7 @@ S16 duSendSchCfg() rgMngmt.hdr.entId.inst = DU_INST; rgMngmt.hdr.elmId.elmnt = STSCHINST; rgMngmt.hdr.response.mem.region = MAC_MEM_REGION; - rgMngmt.hdr.response.mem.pool = RG_POOL; + rgMngmt.hdr.response.mem.pool = MAC_POOL; /* Fill Pst */ pst.selector = ODU_SELECTOR_LC; @@ -1488,13 +1495,13 @@ S16 duHdlSchCfgComplete(Pst *pst, RgMngmt *cfm) { switch (cfm->hdr.elmId.elmnt) { - case STSCHINST: - { - DU_LOG("\nDU_APP : Received SCH CFG CFM at DU APP"); - break; - } - default: - break; + case STSCHINST: + { + DU_LOG("\nDU_APP : Received SCH CFG CFM at DU APP"); + break; + } + default: + break; } } duLayerConfigComplete(); @@ -1524,9 +1531,9 @@ S16 duSendEgtpSlotInd() duFillEgtpPst(&pst, EVTSLOTIND); packEgtpSlotInd(&pst); - + RETVALUE(ROK); - + } /************************************************************************** @@ -1563,16 +1570,7 @@ S16 duBuildAndSendMacCellCfg() memcpy(duMacCellCfg,&duCfgParam.macCellCfg,sizeof(MacCellCfg)); /* Fill Pst */ - pst.selector = ODU_SELECTOR_LWLC; - pst.srcEnt = ENTDUAPP; - pst.dstEnt = ENTRG; - pst.dstInst = 0; - pst.srcInst = 0; - pst.dstProcId = DU_PROC; - pst.srcProcId = DU_PROC; - pst.region = DU_APP_MEM_REGION; - pst.pool = DU_POOL; - pst.event = EVENT_MAC_CELL_CONFIG_REQ; + FILL_PST_DUAPP_TO_MAC(pst, EVENT_MAC_CELL_CONFIG_REQ); /* Send MAC cell config to MAC */ return (*packMacCellCfgOpts[pst.selector])(&pst, duMacCellCfg); @@ -1593,10 +1591,10 @@ S16 duBuildAndSendMacCellCfg() * RFAILED - failure * ***************************************************************************/ -int duHandleMacCellCfgCfm(Pst *pst, MacCellCfgCfm *macCellCfgCfm) +uint8_t duHandleMacCellCfgCfm(Pst *pst, MacCellCfgCfm *macCellCfgCfm) { uint8_t actvCellIdx = 0; - S16 ret = ROK; + uint8_t ret = ROK; if(macCellCfgCfm->rsp == ROK) { @@ -1640,12 +1638,12 @@ int duHandleMacCellCfgCfm(Pst *pst, MacCellCfgCfm *macCellCfgCfm) * RFAILED - failure * * ****************************************************************/ -uint16_t duHandleSlotInd(Pst *pst, SlotInfo *slotInfo) +uint8_t duHandleSlotInd(Pst *pst, SlotIndInfo *slotInfo) { - + DU_LOG("\nDU APP : Slot Indication received"); - if(slotInfo->cellId <=0 || slotInfo->cellId > DU_MAX_CELLS) + if(slotInfo->cellId <=0 || slotInfo->cellId > MAX_NUM_CELL) { DU_LOG("\nDU APP : Invalid Cell Id %d", slotInfo->cellId); } @@ -1653,13 +1651,13 @@ uint16_t duHandleSlotInd(Pst *pst, SlotInfo *slotInfo) { duCb.actvCellLst[slotInfo->cellId-1]->firstSlotIndRcvd = true; if((duCb.actvCellLst[slotInfo->cellId-1] != NULL) && \ - (duCb.actvCellLst[slotInfo->cellId-1]->cellStatus == \ - ACTIVATION_IN_PROGRESS)) + (duCb.actvCellLst[slotInfo->cellId-1]->cellStatus == \ + ACTIVATION_IN_PROGRESS)) { - DU_LOG("\nDU APP : 5G-NR Cell %d is UP", slotInfo->cellId); - duCb.actvCellLst[slotInfo->cellId-1]->cellStatus = ACTIVATED; + DU_LOG("\nDU APP : 5G-NR Cell %d is UP", slotInfo->cellId); + duCb.actvCellLst[slotInfo->cellId-1]->cellStatus = ACTIVATED; } - + } /* TODO : Slot Indication to be moved out of EGTP_TEST when @@ -1669,7 +1667,7 @@ uint16_t duHandleSlotInd(Pst *pst, SlotInfo *slotInfo) #endif if((pst->selector == ODU_SELECTOR_LWLC) || (pst->selector == ODU_SELECTOR_TC)) - DU_FREE_SHRABL_BUF(MAC_MEM_REGION, pst->pool, slotInfo, sizeof(SlotInfo)); + DU_FREE_SHRABL_BUF(MAC_MEM_REGION, pst->pool, slotInfo, sizeof(SlotIndInfo)); return ROK; } @@ -1690,7 +1688,7 @@ uint16_t duHandleSlotInd(Pst *pst, SlotInfo *slotInfo) * RFAILED - failure * * ****************************************************************/ -uint16_t duBuildAndSendMacCellStartReq() +uint8_t duBuildAndSendMacCellStartReq() { Pst pst; MacCellStartInfo *cellStartInfo = NULL; @@ -1705,26 +1703,17 @@ uint16_t duBuildAndSendMacCellStartReq() return RFAILED; } - for(uint8_t id = 0; id < DU_MAX_CELLS; id++) + for(uint8_t id = 0; id < MAX_NUM_CELL; id++) { if(duCb.actvCellLst[id]) { - duCb.actvCellLst[id]->firstSlotIndRcvd = FALSE; - cellStartInfo->cellId = duCb.actvCellLst[id]->cellInfo.nrEcgi.cellId; - - /* Fill Pst */ - pst.selector = ODU_SELECTOR_LWLC; - pst.srcEnt = ENTDUAPP; - pst.dstEnt = ENTRG; - pst.dstInst = 0; - pst.srcInst = 0; - pst.dstProcId = DU_PROC; - pst.srcProcId = DU_PROC; - pst.region = DU_APP_MEM_REGION; - pst.pool = DU_POOL; - pst.event = EVENT_MAC_CELL_START_REQ; - - return (*packMacCellStartReqOpts[pst.selector])(&pst, cellStartInfo); + duCb.actvCellLst[id]->firstSlotIndRcvd = FALSE; + cellStartInfo->cellId = duCb.actvCellLst[id]->cellInfo.nrEcgi.cellId; + + /* Fill Pst */ + FILL_PST_DUAPP_TO_MAC(pst, EVENT_MAC_CELL_START_REQ); + + return (*packMacCellStartReqOpts[pst.selector])(&pst, cellStartInfo); } } return ROK; @@ -1746,11 +1735,11 @@ uint16_t duBuildAndSendMacCellStartReq() * RFAILED - failure * * ****************************************************************/ -uint16_t duBuildAndSendMacCellStopReq() +uint8_t duBuildAndSendMacCellStopReq() { Pst pst; MacCellStopInfo *cellStopInfo = NULL; - + DU_LOG("\nDU APP : Building and Sending cell stop request to MAC"); /* Send Cell Stop Request to MAC */ @@ -1761,19 +1750,10 @@ uint16_t duBuildAndSendMacCellStopReq() return RFAILED; } cellStopInfo->cellId = duCb.actvCellLst[0]->cellId; - + /* Fill Pst */ - pst.selector = ODU_SELECTOR_LWLC; - pst.srcEnt = ENTDUAPP; - pst.dstEnt = ENTRG; - pst.dstInst = 0; - pst.srcInst = 0; - pst.dstProcId = DU_PROC; - pst.srcProcId = DU_PROC; - pst.region = DU_APP_MEM_REGION; - pst.pool = DU_POOL; - pst.event = EVENT_MAC_CELL_STOP_REQ; - + FILL_PST_DUAPP_TO_MAC(pst, EVENT_MAC_CELL_STOP_REQ); + return (*packMacCellStopReqOpts[pst.selector])(&pst, cellStopInfo); } @@ -1793,25 +1773,25 @@ uint16_t duBuildAndSendMacCellStopReq() * RFAILED - failure * * ****************************************************************/ -uint16_t duHandleStopInd(Pst *pst, MacCellStopInfo *cellStopId) +uint8_t duHandleStopInd(Pst *pst, MacCellStopInfo *cellStopId) { - if(cellStopId->cellId <=0 || cellStopId->cellId > DU_MAX_CELLS) + if(cellStopId->cellId <=0 || cellStopId->cellId > MAX_NUM_CELL) { DU_LOG("\nDU APP : Invalid Cell Id %d", cellStopId->cellId); } - if(duCb.actvCellLst[cellStopId->cellId-1] != NULL) - { + if(duCb.actvCellLst[cellStopId->cellId-1] != NULL) + { if(duCb.actvCellLst[cellStopId->cellId-1]->firstSlotIndRcvd) { - duCb.actvCellLst[cellStopId->cellId-1]->firstSlotIndRcvd = false; - if((duCb.actvCellLst[cellStopId->cellId-1]->cellStatus == \ - ACTIVATED)) - { - DU_LOG("\nDU APP : 5G-NR Cell %d is DOWN", cellStopId->cellId); - duCb.actvCellLst[cellStopId->cellId-1]->cellStatus = DELETION_IN_PROGRESS; - } + duCb.actvCellLst[cellStopId->cellId-1]->firstSlotIndRcvd = false; + if((duCb.actvCellLst[cellStopId->cellId-1]->cellStatus == \ + ACTIVATED)) + { + DU_LOG("\nDU APP : 5G-NR Cell %d is DOWN", cellStopId->cellId); + duCb.actvCellLst[cellStopId->cellId-1]->cellStatus = DELETION_IN_PROGRESS; + } } - } + } if((pst->selector == ODU_SELECTOR_LWLC) || (pst->selector == ODU_SELECTOR_TC)) DU_FREE_SHRABL_BUF(MAC_MEM_REGION, pst->pool, cellStopId, sizeof(MacCellStopInfo)); @@ -1835,14 +1815,42 @@ uint16_t duHandleStopInd(Pst *pst, MacCellStopInfo *cellStopId) * RFAILED - failure * * ****************************************************************/ -uint16_t duHandleUlCcchInd(Pst *pst, UlCcchIndInfo *ulCcchIndInfo) +uint8_t duHandleUlCcchInd(Pst *pst, UlCcchIndInfo *ulCcchIndInfo) { - + DU_LOG("\nDU APP : UL CCCH Indication received"); return (duProcUlCcchInd(ulCcchIndInfo)); } +/******************************************************************* + * + * @brief Process UL RRC Message from RLC + * + * @details + * + * Function : DuProcRlcUlRrcMsgTrans + * + * Functionality: Process UL RRC Message from RLC + * + * @params[in] Post structure + * UL RRC Message Info + * @return ROK - success + * RFAILED - failure + * + * ****************************************************************/ +uint8_t DuProcRlcUlRrcMsgTrans(Pst *pst, RlcUlRrcMsgInfo *ulRrcMsgInfo) +{ + DuUeCb ueCb; + + ueCb = duCb.actvCellLst[ulRrcMsgInfo->cellId -1]->ueCb[ulRrcMsgInfo->ueIdx -1]; + BuildAndSendULRRCMessageTransfer(ueCb, ulRrcMsgInfo->lcId, ulRrcMsgInfo->msgLen, \ + ulRrcMsgInfo->rrcMsg); + + DU_FREE_SHRABL_BUF(pst->region, pst->pool, ulRrcMsgInfo->rrcMsg, ulRrcMsgInfo->msgLen); + DU_FREE_SHRABL_BUF(pst->region, pst->pool, ulRrcMsgInfo, sizeof(RlcUlRrcMsgInfo)); + return ROK; +} /********************************************************************** End of file