X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=src%2Fdu_app%2Fdu_mgr.h;h=b00e548023117af59e67cb8a7d2a1a8bed80461f;hb=ef711b0830aedde36f4a1beceed146d08e77ce58;hp=bdd843657d63df74554e2b8d15495305cdffe74b;hpb=829bbd114f1c3dc00c1da47bca0a8207c049df3f;p=o-du%2Fl2.git diff --git a/src/du_app/du_mgr.h b/src/du_app/du_mgr.h index bdd843657..b00e54802 100644 --- a/src/du_app/du_mgr.h +++ b/src/du_app/du_mgr.h @@ -36,8 +36,8 @@ #include "cm_inet.h" #include "lkw.h" #include "lrg.h" - -#include "du_common.h" +#include "legtp.h" +#include "du_app_mac_inf.h" #include "gen.x" /* General */ #include "ssi.x" /* System services */ @@ -53,29 +53,198 @@ #include "lkw.x" #include "lrg.x" +#include "du_cfg.h" + #define DU_PROC 0 +/* Memory related configs */ +#define DU_APP_MEM_REGION 0 +#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 EVTSCTPUP 1 +#define EVTSCTPSTRT 1 +#define EVTSCTPDATA 2 +#define EVTSCTPNTFY 3 +#define EVTSRVOPENREQ 4 +#define EVTSRVOPENCFM 5 +#define EVTTNLMGMTREQ 6 +#define EVTTNLMGMTCFM 7 +#define EVTTTIIND 8 +#define EVTSTARTPOLL 9 +#define EVTRICDATA 10 /* Selector */ #define DU_SELECTOR_LC 0 #define DU_SELECTOR_TC 1 #define DU_SELECTOR_LWLC 2 +/* SAP IDs */ +#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 ADD 0 +#define DEL 1 + +#define RLC_GEN_CFG 1 +#define RLC_MAC_SAP_CFG 2 +#define RLC_UDX_SAP_CFG 4 + +#define MAC_GEN_CFG 1 +#define MAC_SAP_CFG 2 +#define MAX_MAC_SAP 2 + +#define DU_RLC_UL_CONFIGURED (RLC_GEN_CFG | \ + RLC_MAC_SAP_CFG | RLC_UDX_SAP_CFG) +#define DU_RLC_DL_CONFIGURED DU_RLC_UL_CONFIGURED + +#define MAC_CONFIGURED (MAC_GEN_CFG | MAC_SAP_CFG) + +#define DU_SET_ZERO(_buf, _size) \ + cmMemset((U8 *)(_buf), 0, _size); + +/* allocate and zero out a static buffer */ +#define DU_ALLOC(_datPtr, _size) \ +{ \ + S16 _ret; \ + _ret = SGetSBuf(DU_APP_MEM_REGION, DU_POOL, \ + (Data **)&_datPtr, _size); \ + if(_ret == ROK) \ + cmMemset((U8*)_datPtr, 0, _size); \ + else \ + _datPtr = NULLP; \ +} + +/* free a static buffer */ +#define DU_FREE(_datPtr, _size) \ + if(_datPtr) \ + SPutSBuf(DU_APP_MEM_REGION, DU_POOL, \ + (Data *)_datPtr, _size); + +typedef enum +{ + CELL_OUT_OF_SERVICE, + ACTIVATION_IN_PROGRESS, + ACTIVATED, + DELETION_IN_PROGRESS +}CellStatus; + +typedef struct cellCfgParams +{ + NrEcgi nrEcgi; /* ECGI */ + U16 nrPci; /* PCI */ + U16 fiveGsTac; /* 5gSTac */ + PlmnId plmn[MAX_PLMN]; /* List of serving PLMN IDs */ + U32 maxUe; /* max UE per slot */ +}CellCfgParams; + + +typedef struct duCellCb +{ + U32 cellId; /* Internal cell Id */ + CellCfgParams cellInfo; /* Cell info */ + CellStatus cellStatus; /*Cell status */ +}DuCellCb; + +typedef struct duLSapCb +{ + Pst pst; + SuId suId; + SpId spId; + State sapState; + Mem mem; + CmTimer timer; + U8 bndRetryCnt; + U8 maxBndRetry; + TmrCfg bndTmr; +}DuLSapCb; + /* DU APP DB */ -typedef struct duDb +typedef struct duCb { - F1Status f1Status; + Mem mem; /* Memory configs */ + TskInit init; /* DU Init */ + //DuLSapCb **macSap; /* MAC SAP */ + Bool f1Status; /* Status of F1 connection */ + Bool e2Status; /* Status of E2 connection */ + DuCellCb* cfgCellLst[DU_MAX_CELLS]; /* List of cells at DU APP of type DuCellCb */ + DuCellCb* actvCellLst[DU_MAX_CELLS]; /* 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 */ +}DuCb; -}DuDb; +typedef struct duLSapCfg +{ + SuId suId; + SpId spId; + Ent srcEnt; + Inst srcInst; + ProcId dstProcId; + Ent dstEnt; + Inst dstInst; + Priority dstPrior; + Route dstRoute; + Selector dstSel; + Mem mem; + U8 maxBndRetry; + TmrCfg bndTmr; + TmrCfg connTmr; +}DuLSapCfg; + +/* global variables */ +DuCb duCb; +//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 duProcCfgComplete(); +S16 duSendSchCfg(); +S16 duSctpStartReq(); +S16 duSctpNtfyHdl(Buffer *mBuf, CmInetSctpNotification *ntfy); + +S16 duBuildEgtpCfgReq(); +S16 duHdlEgtpCfgComplete(CmStatus cfm); +S16 duSendEgtpSrvOpenReq(); +S16 duHdlEgtpSrvOpenComplete(CmStatus cfm); +S16 duSendEgtpTnlMgmtReq(U8 action, U32 lclTeid, U32 remTeid); +S16 duHdlEgtpTnlMgmtCfm(EgtpTnlEvt tnlEvtCfm); +S16 duSendEgtpTestData(); +S16 duSendEgtpDatInd(Buffer *mBuf); +S16 duHdlSchCfgComplete(Pst *pst, RgMngmt *cfm); #endif