X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=src%2Fdu_app%2Fdu_mgr.h;h=4d876f3722cc9551fb9a9cf827763200468ea310;hb=4d45b914f9e94203603d3b9fdbcb1aad361301dd;hp=8e5c68ca77fc23bdc6ace201b73d9dd76ea712ae;hpb=d349ae65e1495488772f87e5cfa1ae71d9eab075;p=o-du%2Fl2.git diff --git a/src/du_app/du_mgr.h b/src/du_app/du_mgr.h index 8e5c68ca7..4d876f372 100644 --- a/src/du_app/du_mgr.h +++ b/src/du_app/du_mgr.h @@ -19,74 +19,26 @@ /* This file contains message handling functionality for DU cell management */ #ifndef __DU_MGR_H__ #define __DU_MGR_H__ - -#include "stdio.h" -#include "ctype.h" -#include "envopt.h" /* Environment options */ -#include "envdep.h" /* Environment dependent */ -#include "envind.h" /* Environment independent */ -#include "gen.h" /* General */ -#include "ssi.h" /* System services */ -#include "cm5.h" /* Common timer defines */ -#include "cm_tkns.h" /* Common tokens defines */ -#include "cm_mblk.h" /* Common memory allocation library defines */ -#include "cm_llist.h" /* Common link list defines */ -#include "cm_hash.h" /* Common hashlist defines */ -#include "cm_lte.h" -#include "cm_inet.h" -#include "lkw.h" -#include "lrg.h" - -#include "du_common.h" - -#include "gen.x" /* General */ -#include "ssi.x" /* System services */ - -#include "cm5.x" /* Common timer library */ -#include "cm_tkns.x" /* Common tokens */ -#include "cm_mblk.x" /* Common memory allocation */ -#include "cm_llist.x" /* Common link list */ -#include "cm_hash.x" /* Common hashlist */ -#include "cm_lte.x" -#include "cm_inet.x" -#include "cm_lib.x" -#include "lkw.x" -#include "lrg.x" - #define DU_PROC 0 -/* Memory related configs */ -#define DU_APP_MEM_REGION 1 -#define RLC_UL_MEM_REGION 1 -#define RLC_DL_MEM_REGION 4 -#define RG_MEM_REGION 4 - -#define DU_POOL 1 -#define RLC_POOL 1 -#define RG_POOL 1 - -/* Events */ -#define EVTCFG 0 -#define EVTSCTPSTRT 1 -#define EVTSCTPDATA 2 -#define EVTSCTPNTFY 3 - -/* Selector */ -#define DU_SELECTOR_LC 0 -#define DU_SELECTOR_TC 1 -#define DU_SELECTOR_LWLC 2 /* SAP IDs */ -#define DU_RG_SUID 0 -#define DU_RG_SPID 0 +#define DU_MAC_SUID 0 +#define DU_MAC_SPID 0 /* Instance */ #define RLC_UL_INST 0 #define RLC_DL_INST 1 +/* SAP state */ +#define DU_SAP_UNBOUND 1 +#define DU_SAP_BINDING 2 +#define DU_SAP_BOUND 3 + #define DU_ZERO_VAL 0 /* Macros */ -#define DEFAULT_CELLS 1 +#define ADD 0 +#define DEL 1 #define RLC_GEN_CFG 1 #define RLC_MAC_SAP_CFG 2 @@ -103,20 +55,90 @@ #define MAC_CONFIGURED (MAC_GEN_CFG | MAC_SAP_CFG) #define DU_SET_ZERO(_buf, _size) \ - cmMemset((U8 *)(_buf), 0, _size); + memset((uint8_t *)(_buf), 0, _size); + +typedef enum +{ + CELL_OUT_OF_SERVICE, + ACTIVATION_IN_PROGRESS, + ACTIVATED, + DELETION_IN_PROGRESS +}CellStatus; + +typedef enum +{ + UE_INACTIVE, + UE_ACTIVE +}UeState; + +typedef struct cellCfgParams +{ + NrEcgi nrEcgi; /* ECGI */ + uint16_t nrPci; /* PCI */ + uint16_t fiveGsTac; /* 5gSTac */ + Plmn plmn[MAX_PLMN]; /* List of serving PLMN IDs */ + uint32_t maxUe; /* max UE per slot */ +}CellCfgParams; + +typedef struct duUeCb +{ + uint32_t gnbDuUeF1apId; /* GNB DU UE F1AP ID */ + uint32_t gnbCuUeF1apId; /* GNB CU UE F1AP ID */ + UeState ueState; + MacUeCfg macUeCfg; + RlcUeCfg rlcUeCfg; +}DuUeCb; + +typedef struct duCellCb +{ + uint16_t cellId; /* Internal cell Id */ + CellCfgParams cellInfo; /* Cell info */ + bool firstSlotIndRcvd; + CellStatus cellStatus; /* Cell status */ + uint32_t numActvUes; /* Total Active UEs */ + DuUeCb ueCb[MAX_NUM_UE]; /* UE CONTEXT */ +}DuCellCb; + +typedef struct duLSapCb +{ + Pst pst; + SuId suId; + SpId spId; + State sapState; + Mem mem; + CmTimer timer; + uint8_t bndRetryCnt; + uint8_t maxBndRetry; + TmrCfg bndTmr; +}DuLSapCb; + +typedef struct ueCcchCtxt +{ + uint32_t gnbDuUeF1apId; /* GNB DU UE F1AP ID */ + uint16_t crnti; /* CRNTI */ + uint16_t cellId; /* Cell Id */ +}UeCcchCtxt; /* DU APP DB */ typedef struct duCb { - Mem mem; - TskInit init; - Bool sctpStatus; - Bool f1Status; - Bool duStatus; - + Mem mem; /* Memory configs */ + TskInit init; /* DU Init */ + //DuLSapCb **macSap; /* MAC SAP */ + bool f1Status; /* Status of F1 connection */ + bool e2Status; /* Status of E2 connection */ + uint8_t numCfgCells; + DuCellCb* cfgCellLst[MAX_NUM_CELL]; /* List of cells at DU APP of type DuCellCb */ + uint8_t numActvCells; + DuCellCb* actvCellLst[MAX_NUM_CELL]; /* List of cells activated/to be activated of type DuCellCb */ + /* pointer to store the address of macCellCfg params used to send du-app to MAC */ + MacCellCfg *duMacCellCfg; /* pointer to store params while sending DU-APP to MAC */ + uint32_t numUe; /* current number of UEs */ + UeCcchCtxt ueCcchCtxt[MAX_NUM_UE]; /* mapping of gnbDuUeF1apId to CRNTI required for CCCH processing*/ }DuCb; + typedef struct duLSapCfg { SuId suId; @@ -130,36 +152,50 @@ typedef struct duLSapCfg Route dstRoute; Selector dstSel; Mem mem; - U8 maxBndRetry; + uint8_t maxBndRetry; TmrCfg bndTmr; TmrCfg connTmr; }DuLSapCfg; /* global variables */ DuCb duCb; -DuCfgParams duCfgParam; +//DuCfgParams duCfgParam; /* DU Cell Functions */ -S16 duActvInit(Ent entity, Inst inst, Region region, Reason reason); -S16 duActvTsk(Pst *pst, Buffer *mBuf); -S16 duSendRlcUlCfg(); -S16 duSendRlcDlCfg(); -S16 duBuildRlcCfg(Inst inst); -S16 duBuildRlcLsapCfg(Ent ent, Inst inst, U8 lsapInst); -S16 duBuildRlcUsapCfg(U8 elemId, Ent ent, Inst inst); -S16 duHdlRlcCfgComplete(Pst *pst, KwMngmt *cfm); -S16 duHdlRlcCntrlCfgComplete(Pst *pst, KwMngmt *cfm); -S16 duProcRlcUlCfgComplete(Pst *pst, KwMngmt *cfm); -S16 duProcRlcDlCfgComplete(Pst *pst, KwMngmt *cfm); -S16 duSendMacCfg(); -S16 duBuildMacGenCfg(); -S16 duBuildMacUsapCfg(SpId sapId); -S16 duHdlMacCfgComplete(Pst *pst, RgMngmt *cfm); -S16 duBindUnbindRlcToMacSap(U8 inst, U8 action); -S16 duSctpStartReq(); -S16 duSctpNtfyHdl(Buffer *mBuf, CmInetSctpNotification *ntfy); +uint8_t duActvInit(Ent entity, Inst inst, Region region, Reason reason); +uint8_t duActvTsk(Pst *pst, Buffer *mBuf); +uint8_t duSendRlcUlCfg(); +uint8_t duSendRlcDlCfg(); +uint8_t duBuildRlcCfg(Inst inst); +uint8_t duBuildRlcLsapCfg(Ent ent, Inst inst, uint8_t lsapInst); +uint8_t duBuildRlcUsapCfg(uint8_t elemId, Ent ent, Inst inst); +uint8_t DuHdlRlcCfgComplete(Pst *pst, KwMngmt *cfm); +uint8_t duHdlRlcCntrlCfgComplete(Pst *pst, KwMngmt *cfm); +uint8_t duProcRlcUlCfgComplete(Pst *pst, KwMngmt *cfm); +uint8_t duProcRlcDlCfgComplete(Pst *pst, KwMngmt *cfm); +uint8_t duSendMacCfg(); +uint8_t duBuildMacGenCfg(); +uint8_t duBuildMacUsapCfg(SpId sapId); +uint8_t duHdlMacCfgComplete(Pst *pst, RgMngmt *cfm); +uint8_t duBindUnbindRlcToMacSap(uint8_t inst, uint8_t action); +uint8_t duProcCfgComplete(); +uint8_t duSendSchCfg(); +uint8_t duSctpStartReq(); +uint8_t duSctpNtfyHdl(Buffer *mBuf, CmInetSctpNotification *ntfy); + +uint8_t duBuildEgtpCfgReq(); +uint8_t duHdlEgtpCfgComplete(CmStatus cfm); +uint8_t duSendEgtpSrvOpenReq(); +uint8_t duHdlEgtpSrvOpenComplete(CmStatus cfm); +uint8_t duSendEgtpTnlMgmtReq(uint8_t action, uint32_t lclTeid, uint32_t remTeid); +uint8_t duHdlEgtpTnlMgmtCfm(EgtpTnlEvt tnlEvtCfm); +uint8_t duSendEgtpTestData(); +uint8_t duSendEgtpDatInd(Buffer *mBuf); +uint8_t duHdlSchCfgComplete(Pst *pst, RgMngmt *cfm); +uint8_t duBuildAndSendMacCellStartReq(); +uint8_t duBuildAndSendMacCellStopReq(); #endif /********************************************************************** - End of file -**********************************************************************/ + End of file + **********************************************************************/