X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=src%2Fdu_app%2Fdu_msg_hdl.c;h=2a677d1c2b57a081d86ccdb810583475896e4f28;hb=65443172dd60a6ea312bd3a15959dbf54ad7f045;hp=21782c5f78540f061c2940813e5dc8f6aadeddbc;hpb=aee73991f728cc127d1ed76d5a52571d916235a4;p=o-du%2Fl2.git diff --git a/src/du_app/du_msg_hdl.c b/src/du_app/du_msg_hdl.c index 21782c5f7..2a677d1c2 100644 --- a/src/du_app/du_msg_hdl.c +++ b/src/du_app/du_msg_hdl.c @@ -46,15 +46,15 @@ uint8_t numRlcMacSaps = 0; uint8_t macCfg = 0; uint8_t macCfgInst = 0; -extern DuCfgParams duCfgParam; -extern uint8_t packRlcConfigReq(Pst *pst, KwMngmt *cfg); -extern uint8_t cmPkLkwCntrlReq(Pst *pst, KwMngmt *cfg); -extern uint8_t cmPkLrgCfgReq(Pst *pst, RgMngmt *cfg); -extern uint8_t BuildAndSendE2SetupReq(); -extern uint8_t egtpHdlDatInd(EgtpMsg egtpMsg); -extern uint8_t BuildAndSendDUConfigUpdate(); -extern uint16_t getTransId(); -extern uint8_t cmPkLrgSchCfgReq(Pst * pst,RgMngmt * cfg); +DuCfgParams duCfgParam; +uint8_t packRlcConfigReq(Pst *pst, RlcMngmt *cfg); +uint8_t cmPkLkwCntrlReq(Pst *pst, RlcMngmt *cfg); +uint8_t cmPkLrgCfgReq(Pst *pst, RgMngmt *cfg); +uint8_t BuildAndSendE2SetupReq(); +uint8_t egtpHdlDatInd(EgtpMsg egtpMsg); +uint8_t BuildAndSendDUConfigUpdate(); +uint16_t getTransId(); +uint8_t cmPkLrgSchCfgReq(Pst * pst,RgMngmt * cfg); packMacCellCfgReq packMacCellCfgOpts[] = { @@ -94,14 +94,14 @@ DuMacCellStopReq packMacCellStopReqOpts[] = ***************************************************************************/ uint8_t duBuildRlcCfg(Inst inst) { - KwMngmt kwMngmt; - KwGenCfg *genCfg = NULLP; + RlcMngmt rlcMngmt; + RlcGenCfg *genCfg = NULLP; Pst pst; - DU_SET_ZERO(&kwMngmt, sizeof(KwMngmt)); + DU_SET_ZERO(&rlcMngmt, sizeof(RlcMngmt)); DU_SET_ZERO(&pst, sizeof(Pst)); - genCfg = &(kwMngmt.t.cfg.s.gen); + genCfg = &(rlcMngmt.t.cfg.s.gen); /*----------- Fill General Configuration Parameters ---------*/ genCfg->maxUe = duCfgParam.maxUe; @@ -118,7 +118,7 @@ uint8_t duBuildRlcCfg(Inst inst) genCfg->lmPst.srcProcId = DU_PROC; genCfg->lmPst.dstEnt = ENTDUAPP; genCfg->lmPst.dstInst = DU_INST; - genCfg->lmPst.srcEnt = ENTKW; + genCfg->lmPst.srcEnt = ENTRLC; genCfg->lmPst.srcInst = inst; genCfg->lmPst.prior = PRIOR0; genCfg->lmPst.route = RTESPEC; @@ -128,25 +128,25 @@ uint8_t duBuildRlcCfg(Inst inst) genCfg->lmPst.selector = ODU_SELECTOR_LC; /* Fill Header */ - kwMngmt.hdr.msgType = TCFG; - kwMngmt.hdr.msgLen = 0; - kwMngmt.hdr.entId.ent = ENTKW; - kwMngmt.hdr.entId.inst = (Inst)0; - kwMngmt.hdr.elmId.elmnt = STGEN; - kwMngmt.hdr.seqNmb = 0; - kwMngmt.hdr.version = 0; - kwMngmt.hdr.transId = 0; - kwMngmt.hdr.response.prior = PRIOR0; - kwMngmt.hdr.response.route = RTESPEC; - kwMngmt.hdr.response.mem.region = (inst == RLC_UL_INST) ? + rlcMngmt.hdr.msgType = TCFG; + rlcMngmt.hdr.msgLen = 0; + rlcMngmt.hdr.entId.ent = ENTRLC; + rlcMngmt.hdr.entId.inst = (Inst)0; + rlcMngmt.hdr.elmId.elmnt = STGEN; + rlcMngmt.hdr.seqNmb = 0; + rlcMngmt.hdr.version = 0; + rlcMngmt.hdr.transId = 0; + rlcMngmt.hdr.response.prior = PRIOR0; + rlcMngmt.hdr.response.route = RTESPEC; + rlcMngmt.hdr.response.mem.region = (inst == RLC_UL_INST) ? RLC_UL_MEM_REGION:RLC_DL_MEM_REGION; - kwMngmt.hdr.response.mem.pool = DU_POOL; - kwMngmt.hdr.response.selector = ODU_SELECTOR_LC; + rlcMngmt.hdr.response.mem.pool = DU_POOL; + rlcMngmt.hdr.response.selector = ODU_SELECTOR_LC; /* Fill Pst */ pst.selector = ODU_SELECTOR_LC; pst.srcEnt = ENTDUAPP; - pst.dstEnt = ENTKW; + pst.dstEnt = ENTRLC; pst.dstInst = inst; pst.dstProcId = DU_PROC; pst.srcProcId = DU_PROC; @@ -155,7 +155,7 @@ uint8_t duBuildRlcCfg(Inst inst) DU_LOG("\nDU_APP : RLC Gen Cfg Req sent for inst %d", inst); /* Send the request to RLC */ - packRlcConfigReq(&pst, &kwMngmt); + packRlcConfigReq(&pst, &rlcMngmt); return ROK; } @@ -178,30 +178,30 @@ uint8_t duBuildRlcCfg(Inst inst) uint8_t duBuildRlcLsapCfg(Ent ent, Inst inst, uint8_t lsapInst) { - KwMngmt kwMngmt; - KwSapCfg *lSap = NULLP; + RlcMngmt rlcMngmt; + RlcSapCfg *lSap = NULLP; Pst pst; - DU_SET_ZERO(&kwMngmt, sizeof(KwMngmt)); + DU_SET_ZERO(&rlcMngmt, sizeof(RlcMngmt)); DU_SET_ZERO(&pst, sizeof(Pst)); /* Fill Header */ - kwMngmt.hdr.msgType = TCFG; - kwMngmt.hdr.entId.ent = ENTKW; - kwMngmt.hdr.response.mem.region = (inst == RLC_UL_INST) ? + rlcMngmt.hdr.msgType = TCFG; + rlcMngmt.hdr.entId.ent = ENTRLC; + rlcMngmt.hdr.response.mem.region = (inst == RLC_UL_INST) ? RLC_UL_MEM_REGION:RLC_DL_MEM_REGION; - kwMngmt.hdr.response.mem.pool = RLC_POOL; + rlcMngmt.hdr.response.mem.pool = RLC_POOL; /* Fill Pst */ pst.selector = ODU_SELECTOR_LC; pst.srcEnt = ENTDUAPP; - pst.dstEnt = ENTKW; + pst.dstEnt = ENTRLC; pst.dstProcId = DU_PROC; pst.dstInst = inst; pst.srcProcId = DU_PROC; pst.region = duCb.init.region; - lSap = &(kwMngmt.t.cfg.s.sap); + lSap = &(rlcMngmt.t.cfg.s.sap); lSap->mem.region = (inst == RLC_UL_INST) ? RLC_UL_MEM_REGION:RLC_DL_MEM_REGION; @@ -210,30 +210,30 @@ uint8_t duBuildRlcLsapCfg(Ent ent, Inst inst, uint8_t lsapInst) lSap->bndTmrIntvl = 10; lSap->priority = PRIOR0; lSap->route = RTESPEC; - if (ent == ENTRG) + if (ent == ENTMAC) { lSap->procId = DU_PROC; - lSap->ent = ENTRG; + lSap->ent = ENTMAC; lSap->inst = lsapInst; lSap->sapId = lsapInst; /* SapId will be stored as suId in MAC */ lSap->selector = (inst == RLC_UL_INST) ? ODU_SELECTOR_LWLC : ODU_SELECTOR_TC; - kwMngmt.hdr.elmId.elmnt = STRGUSAP; + rlcMngmt.hdr.elmId.elmnt = STRGUSAP; DU_LOG("\nDU_APP : RLC MAC Lower Sap Cfg Req sent for inst %d", inst); } else { lSap->procId = DU_PROC; - lSap->ent = ENTKW; + lSap->ent = ENTRLC; lSap->inst = (inst == RLC_UL_INST) ? RLC_DL_INST : RLC_UL_INST; lSap->sapId = 0; lSap->selector = ODU_SELECTOR_LC; - kwMngmt.hdr.elmId.elmnt = STUDXSAP; + rlcMngmt.hdr.elmId.elmnt = STUDXSAP; DU_LOG("\nDU_APP : RLC DL/UL Lower Sap Cfg Req sent for inst %d", inst); } - packRlcConfigReq(&pst, &kwMngmt); + packRlcConfigReq(&pst, &rlcMngmt); return ROK; } @@ -254,14 +254,14 @@ uint8_t duBuildRlcLsapCfg(Ent ent, Inst inst, uint8_t lsapInst) ***************************************************************************/ uint8_t duBuildRlcUsapCfg(uint8_t elemId, Ent ent, Inst inst) { - KwMngmt kwMngmt; - KwSapCfg *uSap = NULLP; + RlcMngmt rlcMngmt; + RlcSapCfg *uSap = NULLP; Pst pst; - DU_SET_ZERO(&kwMngmt, sizeof(KwMngmt)); + DU_SET_ZERO(&rlcMngmt, sizeof(RlcMngmt)); DU_SET_ZERO(&pst, sizeof(Pst)); - uSap = &(kwMngmt.t.cfg.s.sap); + uSap = &(rlcMngmt.t.cfg.s.sap); uSap->selector = ODU_SELECTOR_LC; uSap->mem.region = (inst == RLC_UL_INST) ? @@ -270,7 +270,7 @@ uint8_t duBuildRlcUsapCfg(uint8_t elemId, Ent ent, Inst inst) uSap->mem.spare = 0; uSap->procId = DU_PROC; - uSap->ent = ENTKW; + uSap->ent = ENTRLC; uSap->sapId = 0; uSap->inst = (inst == RLC_UL_INST) ? @@ -280,25 +280,25 @@ uint8_t duBuildRlcUsapCfg(uint8_t elemId, Ent ent, Inst inst) uSap->route = RTESPEC; /* Fill Header */ - kwMngmt.hdr.msgType = TCFG; - kwMngmt.hdr.entId.ent = ENTKW; - kwMngmt.hdr.elmId.elmnt = STUDXSAP; - kwMngmt.hdr.response.mem.region = (inst == RLC_UL_INST) ? + rlcMngmt.hdr.msgType = TCFG; + rlcMngmt.hdr.entId.ent = ENTRLC; + rlcMngmt.hdr.elmId.elmnt = STUDXSAP; + rlcMngmt.hdr.response.mem.region = (inst == RLC_UL_INST) ? RLC_UL_MEM_REGION:RLC_DL_MEM_REGION; - kwMngmt.hdr.response.mem.pool = RLC_POOL; + rlcMngmt.hdr.response.mem.pool = RLC_POOL; /* Fill Pst */ pst.selector = ODU_SELECTOR_LC; pst.srcEnt = ENTDUAPP; - pst.dstEnt = ENTKW; + pst.dstEnt = ENTRLC; pst.dstProcId = DU_PROC; pst.dstInst = inst; pst.srcProcId = DU_PROC; pst.region = duCb.init.region; DU_LOG("\nDU_APP : RLC Kwu Upper Sap Cfg Req sent for inst %d", inst); - packRlcConfigReq(&pst, &kwMngmt); + packRlcConfigReq(&pst, &rlcMngmt); return ROK; } @@ -321,9 +321,9 @@ uint8_t duBuildRlcUsapCfg(uint8_t elemId, Ent ent, Inst inst) ***************************************************************************/ uint8_t duProcCfgComplete() { - uint8_t ret = ROK; + uint8_t ret = ROK; static uint16_t cellId = 0; - uint16_t idx; + uint16_t idx; for(idx=0; idx< DEFAULT_CELLS; idx++) { DuCellCb *cell = NULLP; @@ -394,9 +394,9 @@ uint8_t duSendRlcUlCfg() duBuildRlcCfg((Inst)RLC_UL_INST); for(cellIdx = 0; cellIdx < DEFAULT_CELLS; cellIdx++) { - duBuildRlcLsapCfg(ENTRG, (Inst)RLC_UL_INST, cellIdx); + duBuildRlcLsapCfg(ENTMAC, (Inst)RLC_UL_INST, cellIdx); } - duBuildRlcLsapCfg(ENTKW, (Inst)RLC_UL_INST, 0); + duBuildRlcLsapCfg(ENTRLC, (Inst)RLC_UL_INST, 0); return ROK; } @@ -421,10 +421,10 @@ uint8_t duSendRlcDlCfg() uint8_t cellIdx; duBuildRlcCfg((Inst)RLC_DL_INST); - duBuildRlcUsapCfg(STUDXSAP, ENTKW, (Inst)RLC_DL_INST); + duBuildRlcUsapCfg(STUDXSAP, ENTRLC, (Inst)RLC_DL_INST); for(cellIdx = 0; cellIdx < DEFAULT_CELLS; cellIdx++) { - duBuildRlcLsapCfg(ENTRG, (Inst)RLC_DL_INST, cellIdx); + duBuildRlcLsapCfg(ENTMAC, (Inst)RLC_DL_INST, cellIdx); } return ROK; @@ -440,12 +440,12 @@ uint8_t duSendRlcDlCfg() * Handles Gen Config Confirm from RLC * * @param[in] Pst *pst, Post structure of the primitive. - * @param[in] KwMngmt *cfm, Unpacked primitive info received from RLC + * @param[in] RlcMngmt *cfm, Unpacked primitive info received from RLC * @return ROK - success * RFAILED - failure * ***************************************************************************/ -uint8_t DuHdlRlcCfgComplete(Pst *pst, KwMngmt *cfm) +uint8_t DuHdlRlcCfgComplete(Pst *pst, RlcMngmt *cfm) { uint8_t ret = ROK; if (pst->srcInst == RLC_UL_INST) @@ -470,12 +470,12 @@ uint8_t DuHdlRlcCfgComplete(Pst *pst, KwMngmt *cfm) * Handles Control Config Confirm from RLC * * @param[in] Pst *pst, Post structure of the primitive. - * @param[in] KwMngmt *cfm, Unpacked primitive info received from RLC + * @param[in] RlcMngmt *cfm, Unpacked primitive info received from RLC * @return ROK - success * RFAILED - failure * ***************************************************************************/ -uint8_t duHdlRlcCntrlCfgComplete(Pst *pst, KwMngmt *cntrl) +uint8_t duHdlRlcCntrlCfgComplete(Pst *pst, RlcMngmt *cntrl) { uint8_t ret = ROK; @@ -530,12 +530,12 @@ uint8_t duHdlRlcCntrlCfgComplete(Pst *pst, KwMngmt *cntrl) * Handles Config Confirm from RLC UL * * @param[in] Pst *pst, Post structure of the primitive. - * @param[in] KwMngmt *cfm, Unpacked primitive info received from RLC UL + * @param[in] RlcMngmt *cfm, Unpacked primitive info received from RLC UL * @return ROK - success * RFAILED - failure * ***************************************************************************/ -uint8_t duProcRlcUlCfgComplete(Pst *pst, KwMngmt *cfm) +uint8_t duProcRlcUlCfgComplete(Pst *pst, RlcMngmt *cfm) { uint8_t ret; @@ -597,12 +597,12 @@ uint8_t duProcRlcUlCfgComplete(Pst *pst, KwMngmt *cfm) * Handles Config Confirm from RLC DL * * @param[in] Pst *pst, Post structure of the primitive. - * @param[in] KwMngmt *cfm, Unpacked primitive info received from RLC DL + * @param[in] RlcMngmt *cfm, Unpacked primitive info received from RLC DL * @return ROK - success * RFAILED - failure * ***************************************************************************/ -uint8_t duProcRlcDlCfgComplete(Pst *pst, KwMngmt *cfm) +uint8_t duProcRlcDlCfgComplete(Pst *pst, RlcMngmt *cfm) { DU_LOG("\nDU_APP : RLC DL Cfg Status %d", cfm->cfm.status); if (cfm->cfm.status == LCM_PRIM_OK) @@ -710,7 +710,7 @@ uint8_t duBuildMacGenCfg() genCfg->lmPst.srcProcId = DU_PROC; genCfg->lmPst.dstEnt = ENTDUAPP; genCfg->lmPst.dstInst = 0; - genCfg->lmPst.srcEnt = ENTRG; + genCfg->lmPst.srcEnt = ENTMAC; genCfg->lmPst.srcInst = macCfgInst; genCfg->lmPst.prior = PRIOR0; genCfg->lmPst.route = RTESPEC; @@ -721,7 +721,7 @@ uint8_t duBuildMacGenCfg() /* Fill Header */ rgMngmt.hdr.msgType = TCFG; rgMngmt.hdr.msgLen = 0; - rgMngmt.hdr.entId.ent = ENTRG; + rgMngmt.hdr.entId.ent = ENTMAC; rgMngmt.hdr.entId.inst = (Inst)0; rgMngmt.hdr.elmId.elmnt = STGEN; rgMngmt.hdr.seqNmb = 0; @@ -737,7 +737,7 @@ uint8_t duBuildMacGenCfg() /* Fill Pst */ pst.selector = ODU_SELECTOR_LC; pst.srcEnt = ENTDUAPP; - pst.dstEnt = ENTRG; + pst.dstEnt = ENTMAC; pst.dstInst = macCfgInst; pst.dstProcId = DU_PROC; pst.srcProcId = DU_PROC; @@ -782,7 +782,7 @@ uint8_t duBuildMacUsapCfg(SpId sapId) uSap->suId = 0; uSap->spId = sapId; uSap->procId = DU_PROC; - uSap->ent = ENTKW; + uSap->ent = ENTRLC; uSap->inst = sapId; uSap->prior = PRIOR0; uSap->route = RTESPEC; @@ -790,7 +790,7 @@ uint8_t duBuildMacUsapCfg(SpId sapId) /* fill header */ rgMngmt.hdr.msgType = TCFG; - rgMngmt.hdr.entId.ent = ENTRG; + rgMngmt.hdr.entId.ent = ENTMAC; rgMngmt.hdr.entId.inst = (Inst)0; rgMngmt.hdr.elmId.elmnt = STRGUSAP; rgMngmt.hdr.response.mem.region = MAC_MEM_REGION; @@ -799,7 +799,7 @@ uint8_t duBuildMacUsapCfg(SpId sapId) /* fill pst */ pst.selector = ODU_SELECTOR_LC; pst.srcEnt = ENTDUAPP; - pst.dstEnt = ENTRG; + pst.dstEnt = ENTMAC; pst.dstInst = macCfgInst; pst.dstProcId = DU_PROC; pst.srcProcId = DU_PROC; @@ -887,13 +887,12 @@ uint8_t duHdlMacCfgComplete(Pst *pst, RgMngmt *cfm) ***************************************************************************/ uint8_t duBindUnbindRlcToMacSap(uint8_t inst, uint8_t action) { - KwCntrl *cntrl = NULLP; - KwMngmt kwMngmt; + RlcCntrl *cntrl = NULLP; + RlcMngmt rlcMngmt; Pst pst; - TRC2(smBindKwToRguSap) - DU_SET_ZERO(&kwMngmt, sizeof(KwMngmt)); + DU_SET_ZERO(&rlcMngmt, sizeof(RlcMngmt)); DU_SET_ZERO(&pst, sizeof(Pst)); if (action == ABND) @@ -904,7 +903,7 @@ uint8_t duBindUnbindRlcToMacSap(uint8_t inst, uint8_t action) { DU_LOG("\nDU_APP : Cntrl Req to RLC inst %d to unbind MAC sap", inst); } - cntrl = &(kwMngmt.t.cntrl); + cntrl = &(rlcMngmt.t.cntrl); cntrl->action = action; cntrl->subAction = DU_ZERO_VAL; @@ -912,24 +911,24 @@ uint8_t duBindUnbindRlcToMacSap(uint8_t inst, uint8_t action) cntrl->s.sapCntrl.spId = inst; /* Fill header */ - kwMngmt.hdr.msgType = TCNTRL; - kwMngmt.hdr.entId.ent = ENTKW; - kwMngmt.hdr.entId.inst = inst; - kwMngmt.hdr.elmId.elmnt = 186; /* ambiguous defines in lkw.h and lrg.h so direct hardcoded*/ - kwMngmt.hdr.response.mem.region = (inst == RLC_UL_INST) ? + rlcMngmt.hdr.msgType = TCNTRL; + rlcMngmt.hdr.entId.ent = ENTRLC; + rlcMngmt.hdr.entId.inst = inst; + rlcMngmt.hdr.elmId.elmnt = 186; /* ambiguous defines in lkw.h and lrg.h so direct hardcoded*/ + rlcMngmt.hdr.response.mem.region = (inst == RLC_UL_INST) ? RLC_UL_MEM_REGION:RLC_DL_MEM_REGION; - kwMngmt.hdr.response.mem.pool = RLC_POOL; + rlcMngmt.hdr.response.mem.pool = RLC_POOL; /* Fill pst */ pst.selector = ODU_SELECTOR_LC; pst.srcEnt = ENTDUAPP; - pst.dstEnt = ENTKW; + pst.dstEnt = ENTRLC; pst.dstProcId = DU_PROC; pst.dstInst = inst; pst.srcProcId = DU_PROC; pst.region = duCb.init.region; - cmPkLkwCntrlReq(&pst, &kwMngmt); + cmPkLkwCntrlReq(&pst, &rlcMngmt); return ROK; } @@ -994,7 +993,7 @@ uint8_t duSctpNtfyHdl(Buffer *mBuf, CmInetSctpNotification *ntfy) * ****************************************************************/ uint8_t duFillEgtpPst(Pst *pst, Event event) { - memset((uint8_t *)pst, 0, sizeof(Pst)); + memset(pst, 0, sizeof(Pst)); pst->srcEnt = (Ent)ENTDUAPP; pst->srcInst = (Inst)DU_INST; pst->srcProcId = DU_PROC; @@ -1033,8 +1032,8 @@ uint8_t duBuildEgtpCfgReq() DU_LOG("\nDU_APP : Sending EGTP config request"); - memset((uint8_t *)&egtpCfg, 0, sizeof(EgtpConfig)); - memcpy((uint8_t *)&egtpCfg, (uint8_t *)&duCfgParam.egtpParams, (PTR)sizeof(EgtpConfig)); + memset(&egtpCfg, 0, sizeof(EgtpConfig)); + memcpy(&egtpCfg, &duCfgParam.egtpParams, sizeof(EgtpConfig)); duFillEgtpPst(&pst, EVTCFGREQ); packEgtpCfgReq(&pst, egtpCfg); @@ -1203,12 +1202,6 @@ uint8_t duHdlEgtpTnlMgmtCfm(EgtpTnlEvt tnlEvtCfm) if(tnlEvtCfm.cfmStatus.status == LCM_PRIM_OK) { DU_LOG("\nDU_APP : Tunnel management confirm OK"); - -#ifdef EGTP_TEST - duSendUeCreateReqToRlc(); - - duSendEgtpTestData(); -#endif } else { @@ -1262,12 +1255,12 @@ uint8_t duSendEgtpTestData() Buffer *mBuf; - if(ODU_GET_MSG(DU_APP_MEM_REGION, DU_POOL, &mBuf) == ROK) + if(ODU_GET_MSG_BUF(DU_APP_MEM_REGION, DU_POOL, &mBuf) == ROK) { if(ODU_ADD_POST_MSG_MULT((Data *)data, datSize, mBuf) != ROK) { DU_LOG("\nDU_APP : ODU_ADD_POST_MSG_MULT failed"); - ODU_PUT_MSG(mBuf); + ODU_PUT_MSG_BUF(mBuf); return RFAILED; } } @@ -1282,14 +1275,14 @@ uint8_t duSendEgtpTestData() MsgLen mLen; mLen = 0; - ODU_FIND_MSG_LEN(mBuf, &mLen); + ODU_GET_MSG_LEN(mBuf, &mLen); - memset((uint8_t *)&ipv4Hdr, 0, sizeof(CmIpv4Hdr)); + memset(&ipv4Hdr, 0, sizeof(CmIpv4Hdr)); ipv4Hdr.length = CM_IPV4_HDRLEN + mLen; ipv4Hdr.hdrVer = 0x45; ipv4Hdr.proto = 1; - ipv4Hdr.srcAddr = CM_INET_NTOH_U32(duCfgParam.egtpParams.localIp.ipV4Addr); - ipv4Hdr.destAddr = CM_INET_NTOH_U32(duCfgParam.egtpParams.destIp.ipV4Addr); + ipv4Hdr.srcAddr = CM_INET_NTOH_UINT32(duCfgParam.egtpParams.localIp.ipV4Addr); + ipv4Hdr.destAddr = CM_INET_NTOH_UINT32(duCfgParam.egtpParams.destIp.ipV4Addr); /* Packing IPv4 header into buffer */ uint8_t ret, cnt, idx; @@ -1395,7 +1388,7 @@ uint8_t duSendSchCfg() cfg->genCfg.lmPst.srcProcId = DU_PROC; cfg->genCfg.lmPst.dstEnt = ENTDUAPP; cfg->genCfg.lmPst.dstInst = DU_INST; - cfg->genCfg.lmPst.srcEnt = ENTRG; + cfg->genCfg.lmPst.srcEnt = ENTMAC; cfg->genCfg.lmPst.srcInst = DEFAULT_CELLS + 1; cfg->genCfg.lmPst.prior = PRIOR0; cfg->genCfg.lmPst.route = RTESPEC; @@ -1405,7 +1398,7 @@ uint8_t duSendSchCfg() /* Fill Header */ rgMngmt.hdr.msgType = TCFG; - rgMngmt.hdr.entId.ent = ENTRG; + rgMngmt.hdr.entId.ent = ENTMAC; rgMngmt.hdr.entId.inst = DU_INST; rgMngmt.hdr.elmId.elmnt = STSCHINST; rgMngmt.hdr.response.mem.region = MAC_MEM_REGION; @@ -1414,7 +1407,7 @@ uint8_t duSendSchCfg() /* Fill Pst */ pst.selector = ODU_SELECTOR_LC; pst.srcEnt = ENTDUAPP; - pst.dstEnt = ENTRG; + pst.dstEnt = ENTMAC; pst.dstProcId = DU_PROC; pst.srcProcId = DU_PROC; pst.srcInst = DU_INST; @@ -1546,15 +1539,14 @@ uint8_t duSendEgtpSlotInd() * Functionality: * Initiates MAC Configs towards MAC * - * @param[in] void + * @param[in]cell id * @return ROK - success * RFAILED - failure * ***************************************************************************/ -uint8_t duBuildAndSendMacCellCfg() +uint8_t duBuildAndSendMacCellCfg(uint16_t cellId) { Pst pst; - DU_SET_ZERO(&pst, sizeof(Pst)); MacCellCfg *duMacCellCfg = NULLP; DU_ALLOC_SHRABL_BUF(duMacCellCfg, sizeof(MacCellCfg)); @@ -1563,8 +1555,8 @@ uint8_t duBuildAndSendMacCellCfg() return RFAILED; } - /* store the address in the duCb so that we can free on confirm msg */ - duCb.duMacCellCfg = duMacCellCfg; + /* store the address in the duCellCb so that we can free on confirm msg */ + duCb.actvCellLst[cellId-1]->duMacCellCfg = duMacCellCfg; /* copy the mac config structure from duCfgParams */ memcpy(duMacCellCfg,&duCfgParam.macCellCfg,sizeof(MacCellCfg)); @@ -1596,29 +1588,30 @@ uint8_t duHandleMacCellCfgCfm(Pst *pst, MacCellCfgCfm *macCellCfgCfm) uint8_t actvCellIdx = 0; uint8_t ret = ROK; - if(macCellCfgCfm->rsp == ROK) + for(actvCellIdx = 0; actvCellIdx < MAX_NUM_CELL; actvCellIdx++) { - for(actvCellIdx = 0 ; actvCellIdx cellId == duCb.actvCellLst[actvCellIdx]->cellId) - { - duCb.duMacCellCfg = NULLP; - /* Build and send GNB-DU config update */ - ret = BuildAndSendDUConfigUpdate(); - - /* TODO: Trigger cell start req once cell up slot ind is received*/ - /* Build and Send Cell Start Req to MAC */ - ret = duBuildAndSendMacCellStartReq(); - - } - } - } - else - { - DU_LOG("\nMac cell cfg failed"); - ret = RFAILED; - } - return ret; + if(macCellCfgCfm->cellId == duCb.actvCellLst[actvCellIdx]->cellId) + { + duCb.actvCellLst[actvCellIdx]->duMacCellCfg = NULLP; + } + } + if(macCellCfgCfm->rsp == ROK) + { + /* Build and send GNB-DU config update */ + ret = BuildAndSendDUConfigUpdate(); + + /* Build and Send Cell Start Req to MAC */ + ret = duBuildAndSendMacCellStartReq(); + } + else + { + /* TODO : Action to be taken if cell configuration fails. + * Should CU be informed? */ + + DU_LOG("\nMac cell cfg failed"); + ret = RFAILED; + } + return ret; } /******************************************************************* @@ -1640,15 +1633,15 @@ uint8_t duHandleMacCellCfgCfm(Pst *pst, MacCellCfgCfm *macCellCfgCfm) * ****************************************************************/ uint8_t duHandleSlotInd(Pst *pst, SlotIndInfo *slotInfo) { - - DU_LOG("\nDU APP : Slot Indication received"); - if(slotInfo->cellId <=0 || slotInfo->cellId > MAX_NUM_CELL) { DU_LOG("\nDU APP : Invalid Cell Id %d", slotInfo->cellId); } if(!duCb.actvCellLst[slotInfo->cellId-1]->firstSlotIndRcvd) { +#ifdef ODU_SLOT_IND_DEBUG_LOG + DU_LOG("\nDU APP : Slot Indication received"); +#endif duCb.actvCellLst[slotInfo->cellId-1]->firstSlotIndRcvd = true; if((duCb.actvCellLst[slotInfo->cellId-1] != NULL) && \ (duCb.actvCellLst[slotInfo->cellId-1]->cellStatus == \ @@ -1852,6 +1845,35 @@ uint8_t DuProcRlcUlRrcMsgTrans(Pst *pst, RlcUlRrcMsgInfo *ulRrcMsgInfo) return ROK; } +/******************************************************************* +* +* @brief Process RRC delivery report from RLC +* +* @details +* +* Function : DuProcRlcRrcDeliveryReport +* +* Functionality: Process RRC delivery Message from RLC +* +* @params[in] Post structure +* UL RRC Message Info +* @return ROK - success +* RFAILED - failure +* +* ****************************************************************/ +uint8_t DuProcRlcRrcDeliveryReport(Pst *pst, RrcDeliveryReport *rrcDeliveryReport) +{ + DuUeCb ueCb; + uint8_t ret = RFAILED; + + ueCb = duCb.actvCellLst[rrcDeliveryReport->cellId -1]->ueCb[rrcDeliveryReport->ueIdx -1]; + ret = BuildAndSendRrcDeliveryReport(ueCb.gnbCuUeF1apId, ueCb.gnbDuUeF1apId,rrcDeliveryReport); + + DU_FREE_SHRABL_BUF(pst->region, pst->pool, rrcDeliveryReport, sizeof(RrcDeliveryReport)); + return ret; +} + + /********************************************************************** End of file **********************************************************************/