X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=src%2Fdu_app%2Fdu_msg_hdl.c;h=ed91ea40d8d15a5d4fc849aef4d97842c9109ecc;hb=refs%2Fchanges%2F67%2F3167%2F4;hp=053fcf1b92a78f0db5ba6631e3008e4ffa509e38;hpb=be7e4e372cc1d6f12f7af9c6b6d09a7ecedca58c;p=o-du%2Fl2.git diff --git a/src/du_app/du_msg_hdl.c b/src/du_app/du_msg_hdl.c index 053fcf1b9..ed91ea40d 100644 --- a/src/du_app/du_msg_hdl.c +++ b/src/du_app/du_msg_hdl.c @@ -18,6 +18,7 @@ /* This file contains message handling functionality for DU cell management */ +#include "du_mgr.h" #include "du_sctp.h" #include "du_f1ap_msg_hdl.h" #include "lsctp.h" @@ -290,7 +291,7 @@ S16 duProcCfgComplete() S16 ret = ROK; static U16 cellId = 0; U16 idx; - for(idx=0; idx< DEFAULT_CELLS; idx++) //TODO: the length of this loop must be determined + for(idx=0; idx< DEFAULT_CELLS; idx++) { DuCellCb *cell; DU_ALLOC(cell, sizeof(DuCellCb)) @@ -301,25 +302,34 @@ S16 duProcCfgComplete() } else { - U16 nci; - + U32 nci; + U8 idx; + + memset(cell, 0, sizeof(DuCellCb)); cell->cellId = cellId++; - memcpy((void*)&cell->cellInfo, (void*)&duCfgParam.cellCfg[idx],\ - sizeof(CellCfgParams)); - cell->cellStatus = OOS; - nci = cell->cellInfo.nrEcgi.cellId; - ret = cmHashListInsert(&(duCb.cellLst), (PTR)(cell), - (U8 *)&(nci), (U16) sizeof(nci)); - - if(ret != ROK) - { - DU_LOG("\nDU_APP : HashListInsert into cellLst failed for [%d]", nci); - break; - } - else + 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(idx=0; idxcellInfo.plmn[idx].mcc[0] = PLMN_MCC0; + cell->cellInfo.plmn[idx].mcc[1] = PLMN_MCC1; + cell->cellInfo.plmn[idx].mcc[2] = PLMN_MCC2; + cell->cellInfo.plmn[idx].mnc[0] = PLMN_MNC0; + cell->cellInfo.plmn[idx].mnc[1] = PLMN_MNC1; + cell->cellInfo.plmn[idx].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; } } if(ret != RFAILED) @@ -911,39 +921,26 @@ S16 duBindUnbindRlcToMacSap(U8 inst, U8 action) S16 duSctpNtfyHdl(Buffer *mBuf, CmInetSctpNotification *ntfy) { - switch(ntfy->header.nType) + if(f1Params.assocId == ntfy->u.assocChange.assocId) { - case CM_INET_SCTP_ASSOC_CHANGE: - switch(ntfy->u.assocChange.state) - { - case CM_INET_SCTP_COMM_UP: - { - DU_LOG("\nDU_APP : SCTP communication UP"); - //Setup F1-C - if(ntfy->u.assocChange.assocId == f1Params.assocId) - { - /* Build and send F1 Setup response */ - if(BuildAndSendF1SetupReq() != ROK) - { - RETVALUE(RFAILED); - } - } - //Setup E2 - if(ntfy->u.assocChange.assocId == ricParams.assocId) - { - /* Build and send F1 Setup response */ - if(BuildAndSendE2SetupReq() != ROK) - { - RETVALUE(RFAILED); - } - } - - break; - } - } - break; + if(BuildAndSendF1SetupReq() != ROK) + { + return RFAILED; + } } - RETVALUE(ROK); + else if(ricParams.assocId == ntfy->u.assocChange.assocId) + { + if(BuildAndSendE2SetupReq() != ROK) + { + return RFAILED; + } + } + else + { + DU_LOG("\nDU_APP : Invalid assocId %d received", ntfy->u.assocChange.assocId); + return RFAILED; + } + return ROK; } /******************************************************************* @@ -1432,7 +1429,7 @@ S16 duLayerConfigComplete() DU_LOG("\nDU_APP : Failed configuring Sctp Params"); ret = RFAILED; } - if((ret = duSctpAssocReq(F1_INTERFACE)) != ROK) + if((ret = duSctpAssocReq(F1_INTERFACE)) != ROK) { DU_LOG("\nDU_APP : Failed to send AssocReq F1"); ret = RFAILED; @@ -1578,22 +1575,29 @@ S16 duHandleMacCellCfgCfm(MacCellCfgCfm *macCellCfgCfm) { S16 ret = ROK; - if(macCellCfgCfm->transId == duCb.duMacCellCfg->transId) - { - /* free the memory allocated during sending macCellCfg request */ - DU_FREE(duCb.duMacCellCfg,sizeof(MacCellCfg)); - duCb.duMacCellCfg = NULLP; - - /* Build and send GNB-DU config update */ - ret = BuildAndSendDUConfigUpdate(); - } - else - { - /* transaction ID missmatch */ - DU_LOG("\n transaction ID mismatch in macCellCfg"); - ret = RFAILED; - } - + if(macCellCfgCfm->rsp == ROK) + { + if(macCellCfgCfm->transId == duCb.duMacCellCfg->transId) + { + /* free the memory allocated during sending macCellCfg request */ + DU_FREE(duCb.duMacCellCfg,sizeof(MacCellCfg)); + duCb.duMacCellCfg = NULLP; + + /* Build and send GNB-DU config update */ + ret = BuildAndSendDUConfigUpdate(); + } + else + { + /* transaction ID missmatch */ + DU_LOG("\n transaction ID mismatch in macCellCfg"); + ret = RFAILED; + } + } + else + { + DU_LOG("\nMac cell cfg failed"); + ret = RFAILED; + } return ret; }