X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=src%2Fdu_app%2Fdu_msg_hdl.c;h=dfd0e7dc9056b9e9cb75b5892e19d77ec3900de7;hb=43f9a063a851c5318a609e9966cdc0b30f0abaf5;hp=ecf5a3e1374516857a1f7c06be01ca33805e94e1;hpb=8660dd47a5ef27b62300fabf6b027852f1d5d026;p=o-du%2Fl2.git diff --git a/src/du_app/du_msg_hdl.c b/src/du_app/du_msg_hdl.c index ecf5a3e13..dfd0e7dc9 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 & (!duCb.f1Status)) - { - /* Build and send F1 Setup response */ - if(BuildAndSendF1SetupReq() != ROK) - { - RETVALUE(RFAILED); - } - } - //Setup E2 - if(ntfy->u.assocChange.assocId == ricParams.assocId & (!duCb.e2Status)) - { - /* 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; } /******************************************************************* @@ -1175,7 +1172,9 @@ S16 duHdlEgtpTnlMgmtCfm(EgtpTnlEvt tnlEvtCfm) DU_LOG("\nDU_APP : Tunnel management confirm OK"); #ifdef EGTP_TEST - duSendEgtpDatInd(); + duSendUeCreateReqToRlc(); + + duSendEgtpTestData(); /* For testing purpose. TTI thread should actually be in L1 */ duStartTtiThread(); @@ -1190,38 +1189,52 @@ S16 duHdlEgtpTnlMgmtCfm(EgtpTnlEvt tnlEvtCfm) RETVALUE(ret); } +S16 duSendEgtpDatInd(Buffer *mBuf) +{ + EgtpMsg egtpMsg; + + /* Fill EGTP header */ + egtpMsg.msgHdr.msgType = EGTPU_MSG_GPDU; + egtpMsg.msgHdr.nPdu.pres = FALSE; + egtpMsg.msgHdr.seqNum.pres = FALSE; + egtpMsg.msgHdr.extHdr.udpPort.pres = FALSE; + egtpMsg.msgHdr.extHdr.pdcpNmb.pres = FALSE; + egtpMsg.msgHdr.teId = 1; + egtpMsg.msg = mBuf; + + egtpHdlDatInd(egtpMsg); + + return ROK; + +} + #ifdef EGTP_TEST /******************************************************************* * - * @brief Simulate RLC to EGTP data indication + * @brief Simulate UL Data for intial test * * @details * - * Function : duSendEgtpDatInd + * Function : duSendEgtpTestData * * Functionality: - * Simulate RLC to EGTP data indication + * Simulate UL data for initial test * * @params[in] * @return ROK - success * RFAILED - failure * * ****************************************************************/ -S16 duSendEgtpDatInd() +S16 duSendEgtpTestData() { char data[30] = "This is EGTP data from DU"; int datSize = 30; Buffer *mBuf; - EgtpMsg egtpMsg; if(SGetMsg(DU_APP_MEM_REGION, DU_POOL, &mBuf) == ROK) { - if(SAddPstMsgMult((Data *)data, datSize, mBuf) == ROK) - { - SPrntMsg(mBuf, 0,0); - } - else + if(SAddPstMsgMult((Data *)data, datSize, mBuf) != ROK) { DU_LOG("\nDU_APP : SAddPstMsgMult failed"); SPutMsg(mBuf); @@ -1302,19 +1315,8 @@ S16 duSendEgtpDatInd() /* this function automatically reverses revPkArray */ ret = SAddPreMsgMult(revPkArray, (MsgLen)cnt, mBuf); - - - egtpMsg.msgHdr.msgType = EGTPU_MSG_GPDU; - egtpMsg.msgHdr.nPdu.pres = FALSE; - egtpMsg.msgHdr.seqNum.pres = FALSE; - egtpMsg.msgHdr.extHdr.udpPort.pres = FALSE; - egtpMsg.msgHdr.extHdr.pdcpNmb.pres = FALSE; - egtpMsg.msgHdr.teId = 1; - egtpMsg.msg = mBuf; - - SPrntMsg(mBuf, 0, 0); - - egtpHdlDatInd(egtpMsg); + + duSendEgtpDatInd(mBuf); RETVALUE(ROK); } @@ -1398,32 +1400,6 @@ S16 duSendSchCfg() return ROK; } -/******************************************************************* - * - * @brief Checks the status of the received information - * - * @details - * - * Function : duCheckReqStatus - * - * Functionality: - * Checks the status of the received information - * - * @params[in] Confirm status - * @return ROK - success - * RFAILED - failure - * - ******************************************************************/ -S16 duCheckReqStatus(CmStatus *cfm) -{ - S16 ret = ROK; - if(cfm->status != LCM_PRIM_OK) - { - DU_LOG("\nDU_APP : Failed to process the request successfully"); - ret = RFAILED; - } - RETVALUE(ret); -} /************************************************************************** * @brief Function to configure SCTP params and @@ -1445,24 +1421,20 @@ S16 duCheckReqStatus(CmStatus *cfm) S16 duLayerConfigComplete() { S16 ret = ROK; - CmStatus cfm; DU_LOG("\nDU_APP : Configuring all Layer is complete"); - duSctpCfgReq(duCfgParam.sctpParams, &cfm); - if((ret = duCheckReqStatus(&cfm)) != ROK) + if((ret = duSctpCfgReq(duCfgParam.sctpParams)) != ROK) { DU_LOG("\nDU_APP : Failed configuring Sctp Params"); ret = RFAILED; } - duSctpAssocReq(duCfgParam.sctpParams.itfType.f1Itf, &cfm); - if((ret = duCheckReqStatus(&cfm)) != ROK) + if((ret = duSctpAssocReq(F1_INTERFACE)) != ROK) { DU_LOG("\nDU_APP : Failed to send AssocReq F1"); ret = RFAILED; } - duSctpAssocReq(duCfgParam.sctpParams.itfType.e2Itf, &cfm); - if((ret = duCheckReqStatus(&cfm)) != ROK) + if((ret = duSctpAssocReq(E2_INTERFACE)) != ROK) { DU_LOG("\nDU_APP : Failed to send AssocReq E2"); ret = RFAILED; @@ -1608,6 +1580,8 @@ S16 duHandleMacCellCfgCfm(MacCellCfgCfm *macCellCfgCfm) /* free the memory allocated during sending macCellCfg request */ DU_FREE(duCb.duMacCellCfg,sizeof(MacCellCfg)); duCb.duMacCellCfg = NULLP; + DU_LOG("\nDU-APP : MAC CELL config confirm recieved\n"); + /* Build and send GNB-DU config update */ ret = BuildAndSendDUConfigUpdate();