X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=src%2Fdu_app%2Fdu_msg_hdl.c;h=9f402faee51972d0013a2ae9469a4c084d6f6b47;hb=ca0353e5cb5699aecb6840efe9572934a1150e2b;hp=c1826e1e40422b447f09d4517730c153c1cca1b0;hpb=8f9c36b26af6c88c2c7a9c0375e58e1723246090;p=o-du%2Fl2.git diff --git a/src/du_app/du_msg_hdl.c b/src/du_app/du_msg_hdl.c index c1826e1e4..9f402faee 100644 --- a/src/du_app/du_msg_hdl.c +++ b/src/du_app/du_msg_hdl.c @@ -93,10 +93,10 @@ DuMacSliceCfgReq packMacSliceCfgReqOpts[] = }; -DuMacSliceRecfgReq packMacSliceReCfgReqOpts[] = +DuMacSliceRecfgReq packMacSliceRecfgReqOpts[] = { packDuMacSliceRecfgReq, /* Loose coupling */ - MacProcSliceReCfgReq, /* TIght coupling */ + MacProcSliceRecfgReq, /* TIght coupling */ packDuMacSliceRecfgReq /* Light weight-loose coupling */ }; /************************************************************************** @@ -344,7 +344,6 @@ uint8_t duBuildRlcUsapCfg(uint8_t elemId, Ent ent, Inst inst) uint8_t duProcCfgComplete() { uint8_t ret = ROK; - uint16_t cellId = 0; uint16_t idx; for(idx=0; idx< DEFAULT_CELLS; idx++) { @@ -1533,13 +1532,13 @@ uint8_t duHandleMacCellCfgCfm(Pst *pst, MacCellCfgCfm *macCellCfgCfm) uint8_t duBuildAndSendMacCellStart() { Pst pst; - OduCellId *cellId = NULL; + CellStartInfo *cellStart = NULL; DU_LOG("\nINFO --> DU APP : Building and Sending cell start request to MAC"); /* Send Cell Start Request to MAC */ - DU_ALLOC_SHRABL_BUF(cellId, sizeof(OduCellId)); - if(!cellId) + DU_ALLOC_SHRABL_BUF(cellStart, sizeof(CellStartInfo)); + if(!cellStart) { DU_LOG("\nERROR --> DU APP : Memory alloc failed while building cell start request"); return RFAILED; @@ -1549,12 +1548,12 @@ uint8_t duBuildAndSendMacCellStart() { if(duCb.actvCellLst[id]) { - cellId->cellId = duCb.actvCellLst[id]->cellId; + cellStart->cellId = duCb.actvCellLst[id]->cellId; /* Fill Pst */ FILL_PST_DUAPP_TO_MAC(pst, EVENT_MAC_CELL_START); - return (*packMacCellStartOpts[pst.selector])(&pst, cellId); + return (*packMacCellStartOpts[pst.selector])(&pst, cellStart); } } return ROK; @@ -1580,27 +1579,27 @@ uint8_t duBuildAndSendMacCellStop(uint16_t cellId) { Pst pst; uint16_t cellIdx=0; - OduCellId *oduCellId = NULL; - + CellStopInfo *cellStop = NULL; + DU_LOG("\nINFO --> DU APP : Building and Sending cell stop request to MAC"); GET_CELL_IDX(cellId, cellIdx); if(duCb.actvCellLst[cellIdx] != NULLP) { /* Send Cell Stop Request to MAC */ - DU_ALLOC_SHRABL_BUF(oduCellId, sizeof(OduCellId)); - if(!oduCellId) + DU_ALLOC_SHRABL_BUF(cellStop, sizeof(CellStopInfo)); + if(!cellStop) { - DU_LOG("\nERROR --> DU APP : duBuildAndSendMacCellStop(): Memory allocation failed "); + DU_LOG("\nERROR --> DU APP : Memory alloc failed while building cell stop request"); return RFAILED; } - memset(oduCellId, 0, sizeof(OduCellId)); - oduCellId->cellId = duCb.actvCellLst[cellIdx]->cellId; + memset(cellStop, 0, sizeof(CellStopInfo)); + cellStop->cellId = duCb.actvCellLst[cellIdx]->cellId; /* Fill Pst */ FILL_PST_DUAPP_TO_MAC(pst, EVENT_MAC_CELL_STOP); - return (*packMacCellStopOpts[pst.selector])(&pst, oduCellId); + return (*packMacCellStopOpts[pst.selector])(&pst, cellStop); } else { @@ -1708,22 +1707,63 @@ uint8_t duHandleUlCcchInd(Pst *pst, UlCcchIndInfo *ulCcchIndInfo) * ****************************************************************/ uint8_t DuProcRlcUlRrcMsgTrans(Pst *pst, RlcUlRrcMsgInfo *ulRrcMsgInfo) { + uint8_t ret = ROK; DuCellCb *cellCb = NULLP; - DuUeCb ueCb ={0}; + DuUeCb *ueCb = NULLP; - if(duGetCellCb(ulRrcMsgInfo->cellId, &cellCb) != ROK) - return RFAILED; - if(ulRrcMsgInfo->ueId > 0) + duGetCellCb(ulRrcMsgInfo->cellId, &cellCb); + if(cellCb) { - ueCb = cellCb->ueCb[ulRrcMsgInfo->ueId -1]; + if(ulRrcMsgInfo->ueId > 0) + { + if(cellCb->ueCb[ulRrcMsgInfo->ueId -1].gnbDuUeF1apId == ulRrcMsgInfo->ueId) + ueCb = &cellCb->ueCb[ulRrcMsgInfo->ueId -1]; + if(ueCb) + { + /* If UL message is received for a UE in handover, it signifies that UE is now + * attached to GNB. Hence marking this UE as active and requesting MAC to + * release the dedicated RACH resources */ + if(ueCb->ueState == UE_HANDIN_IN_PROGRESS) + { + ueCb->ueState = UE_ACTIVE; + cellCb->numActvUes++; + + /* Release RACH resources */ + memset(&ueCb->cfraResource, 0, sizeof(MacCfraResource)); + if(duBuildAndSendRachRsrcRelToMac(ulRrcMsgInfo->cellId, ueCb) != ROK) + { + DU_LOG("\nERROR --> DU_APP : DuProcRlcUlRrcMsgTrans() : Failed to send RACH resource release to MAC"); + } + } - BuildAndSendULRRCMessageTransfer(ueCb, ulRrcMsgInfo->lcId, ulRrcMsgInfo->msgLen, ulRrcMsgInfo->rrcMsg); + if(BuildAndSendULRRCMessageTransfer(ueCb, ulRrcMsgInfo->lcId, ulRrcMsgInfo->msgLen, ulRrcMsgInfo->rrcMsg) != ROK) + { + DU_LOG("\nERROR --> DU_APP : DuProcRlcUlRrcMsgTrans() : Failed to build and send UL RRC Message Transfer"); + ret = RFAILED; + } + } + else + { + DU_LOG("\nERROR --> DU_APP : DuProcRlcUlRrcMsgTrans() : UE ID [%d] not found", ulRrcMsgInfo->ueId); + ret = RFAILED; + } + } + else + { + DU_LOG("\nERROR --> DU_APP : DuProcRlcUlRrcMsgTrans() : Invalid UE ID [%d]", ulRrcMsgInfo->ueId); + ret = RFAILED; + } + } + else + { + DU_LOG("\nERROR --> DU_APP : DuProcRlcUlRrcMsgTrans() : Cell ID [%d] not found", ulRrcMsgInfo->cellId); + ret = RFAILED; + } 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; + return ret; } /******************************************************************* @@ -1926,7 +1966,7 @@ uint8_t DuProcMacSliceCfgRsp(Pst *pst, MacSliceCfgRsp *cfgRsp) duCb.sliceState = SLICE_CONFIGURED; } } - DU_LOG("\nINFO --> DU_APP : Slice Configuration is done sucessfully "); + DU_LOG("\nINFO --> DU_APP : Slice Configuration is done successfully "); } duFreeSliceCfgRsp(pst, cfgRsp); } @@ -1952,14 +1992,14 @@ uint8_t DuProcMacSliceCfgRsp(Pst *pst, MacSliceCfgRsp *cfgRsp) * * ****************************************************************/ -uint8_t fillSliceCfgReCfgInfo(MacSliceCfgReq *sliceCfgReq, RrmPolicy *rrmPolicy[], uint8_t totalRrmPolicy, uint8_t totalSliceCount) +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(sliceCfgReq->listOfSliceCfg, totalSliceCount*sizeof(MacSliceRrmPolicy*)); - if(sliceCfgReq->listOfSliceCfg == NULLP) + 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; @@ -1969,27 +2009,27 @@ uint8_t fillSliceCfgReCfgInfo(MacSliceCfgReq *sliceCfgReq, RrmPolicy *rrmPolicy[ { for(memberListIdx = 0; memberListIdxnumMemberList; memberListIdx++) { - DU_ALLOC_SHRABL_BUF(sliceCfgReq->listOfSliceCfg[cfgIdx], sizeof(MacSliceRrmPolicy)); - if(sliceCfgReq->listOfSliceCfg[cfgIdx] == NULLP) + 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(&sliceCfgReq->listOfSliceCfg[cfgIdx]->snssai, &rrmPolicy[sliceIdx]->memberList[memberListIdx]->snssai, sizeof(Snssai)); + memcpy(&sliceRecfgReq->listOfSliceCfg[cfgIdx]->snssai, &rrmPolicy[sliceIdx]->memberList[memberListIdx]->snssai, sizeof(Snssai)); - DU_ALLOC_SHRABL_BUF(sliceCfgReq->listOfSliceCfg[cfgIdx]->rrmPolicyRatio, sizeof(RrmPolicyRatio)); - if(sliceCfgReq->listOfSliceCfg[cfgIdx]->rrmPolicyRatio == NULLP) + 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; } - sliceCfgReq->listOfSliceCfg[cfgIdx]->rrmPolicyRatio->policyMaxRatio = rrmPolicy[sliceIdx]->policyMaxRatio; - sliceCfgReq->listOfSliceCfg[cfgIdx]->rrmPolicyRatio->policyMinRatio = rrmPolicy[sliceIdx]->policyMinRatio; - sliceCfgReq->listOfSliceCfg[cfgIdx]->rrmPolicyRatio->policyDedicatedRatio = rrmPolicy[sliceIdx]->policyDedicatedRatio; - sliceCfgReq->numOfConfiguredSlice++; + 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++; } } @@ -2053,7 +2093,7 @@ uint8_t BuildAndSendSliceConfigReq(RrmPolicy *rrmPolicy[], uint8_t totalRrmPolic * * @details * - * Function : BuildAndSendSliceReCfgReq + * Function : BuildAndSendSliceRecfgReq * * Functionality: Fill the slice configration and rrm policy related * @@ -2063,22 +2103,22 @@ uint8_t BuildAndSendSliceConfigReq(RrmPolicy *rrmPolicy[], uint8_t totalRrmPolic * RFAILED - failure * * ****************************************************************/ -uint8_t BuildAndSendSliceReCfgReq(RrmPolicy *rrmPolicy[], uint8_t totalRrmPolicy, uint8_t totalSliceCount) +uint8_t BuildAndSendSliceRecfgReq(RrmPolicy *rrmPolicy[], uint8_t totalRrmPolicy, uint8_t totalSliceCount) { Pst pst; - MacSliceCfgReq *sliceReCfgReq = NULLP; + MacSliceRecfgReq *sliceRecfgReq = NULLP; DU_LOG("\nINFO --> DU_APP : Slice ReConfiguration Request received"); - DU_ALLOC_SHRABL_BUF(sliceReCfgReq, sizeof(MacSliceCfgReq)); - if(sliceReCfgReq == NULLP) + DU_ALLOC_SHRABL_BUF(sliceRecfgReq, sizeof(MacSliceRecfgReq)); + if(sliceRecfgReq == NULLP) { - DU_LOG("\nERROR --> DU_APP : Memory allocation failed to BuildAndSendSliceReCfgReq"); + DU_LOG("\nERROR --> DU_APP : Memory allocation failed to BuildAndSendSliceRecfgReq"); return RFAILED; } else { - if(fillSliceCfgReCfgInfo(sliceReCfgReq, rrmPolicy, totalRrmPolicy, totalSliceCount) != ROK) + if(fillSliceCfgReCfgInfo(sliceRecfgReq, rrmPolicy, totalRrmPolicy, totalSliceCount) != ROK) { DU_LOG("\nERROR --> DU_APP: Failed to fill slice cfg request info"); return RFAILED; @@ -2086,10 +2126,10 @@ uint8_t BuildAndSendSliceReCfgReq(RrmPolicy *rrmPolicy[], uint8_t totalRrmPolicy FILL_PST_DUAPP_TO_MAC(pst, EVENT_MAC_SLICE_RECFG_REQ); DU_LOG("\nDEBUG --> DU_APP: Sending Slice ReCfg Request to MAC "); - if( (*packMacSliceReCfgReqOpts[pst.selector])(&pst, sliceReCfgReq) == RFAILED) + if( (*packMacSliceRecfgReqOpts[pst.selector])(&pst, sliceRecfgReq) == RFAILED) { DU_LOG("\nERROR --> DU_APP: Failed to send Slice ReCfg Req to MAC"); - DU_FREE_SHRABL_BUF(DU_APP_MEM_REGION, DU_POOL, sliceReCfgReq, sizeof(MacSliceCfgReq)); + DU_FREE_SHRABL_BUF(DU_APP_MEM_REGION, DU_POOL, sliceRecfgReq, sizeof(MacSliceRecfgReq)); } } return ROK; @@ -2100,17 +2140,17 @@ uint8_t BuildAndSendSliceReCfgReq(RrmPolicy *rrmPolicy[], uint8_t totalRrmPolicy * * @details * - * Function : DuProcMacSliceReCfgRsp + * Function : DuProcMacSliceRecfgRsp * * Functionality: process the slice ReCfg rsp received from MAC * - * @params[in] Post structure, MacSliceCfgRsp *ReCfgRsp + * @params[in] Post structure, MacSliceRecfgRsp *ReCfgRsp * * @return ROK - success * RFAILED - failure * **********************************************************************/ -uint8_t DuProcMacSliceReCfgRsp(Pst *pst, MacSliceCfgRsp *reCfgRsp) +uint8_t DuProcMacSliceRecfgRsp(Pst *pst, MacSliceRecfgRsp *reCfgRsp) { uint8_t cfgIdx = 0; @@ -2168,8 +2208,9 @@ uint8_t DuProcRlcSliceMetrics(Pst *pst, SlicePmList *sliceStats) for(sliceRecord = 0; sliceRecord < sliceStats->numSlice; sliceRecord++) { - DU_LOG("\nINFO --> DU_APP: SliceIndx:%d, DlTput %.5lf, UlTput:%.5lf", sliceStats->sliceRecord[sliceRecord].networkSliceIdentifier,\ - sliceStats->sliceRecord[sliceRecord].ThpDl, sliceStats->sliceRecord[sliceRecord].ThpUl); + DU_LOG("\nINFO --> DU_APP: SliceId[SST-SD]:%d-%d, DlTput %.5lf, UlTput:%.5lf", sliceStats->sliceRecord[sliceRecord].networkSliceIdentifier.sst,\ + sliceStats->sliceRecord[sliceRecord].networkSliceIdentifier.sd,sliceStats->sliceRecord[sliceRecord].ThpDl,\ + sliceStats->sliceRecord[sliceRecord].ThpUl); } #ifdef O1_ENABLE if(sliceStats)