X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=src%2Fdu_app%2Fdu_mgr.h;h=0cd9f86ad2ac0ff7870f346260fd3ba732aa72f4;hb=aa4c92c065ee9a7f469abeee26e1dd8e00ce11d5;hp=a02ec5c0b0898646e1e322789afa4be2e2b481bd;hpb=0a26c487f1b6bbb5217e47b15fa8273b2e749283;p=o-du%2Fl2.git diff --git a/src/du_app/du_mgr.h b/src/du_app/du_mgr.h index a02ec5c0b..0cd9f86ad 100644 --- a/src/du_app/du_mgr.h +++ b/src/du_app/du_mgr.h @@ -55,7 +55,7 @@ #define MAC_CONFIGURED (MAC_GEN_CFG | MAC_SAP_CFG) #define DU_SET_ZERO(_buf, _size) \ - memset((uint8_t *)(_buf), 0, _size); + memset((_buf), 0, _size); typedef enum { @@ -68,35 +68,107 @@ typedef enum typedef enum { UE_INACTIVE, - UE_ACTIVE + UE_ACTIVE, + UE_DELETION_IN_PROGRESS }UeState; +typedef enum +{ + UE_CTXT_UNKNOWN, + UE_CTXT_SETUP, + UE_CTXT_MOD, + UE_CTXT_RELEASE +}UeCtxtActionType; + +/** F1AP Msg IE **/ +typedef struct f1setupRsp +{ + uint32_t transId; /* Uniquely identify transaction */ + char cuName[CU_DU_NAME_LEN_MAX]; /* CU Name */ + F1RrcVersion rrcVersion; /* RRC version */ +}F1SetupRsp; + +typedef struct f1DlRrcMsg +{ + uint32_t gnbDuUeF1apId; + uint32_t gnbCuUeF1apId; + uint8_t srbId; + bool execDup; + bool deliveryStatRpt; + uint16_t rrcMsgSize; + uint8_t *rrcMsgPdu; +}F1DlRrcMsg; + +typedef struct gtpTnlCfg +{ + uint32_t ulTnlAddress; /* remote Address */ + uint32_t dlTnlAddress; /* local Address */ + uint32_t teId; +}GtpTnlCfg; + +typedef struct upTnlCfg +{ + ConfigType configType; + uint8_t cellId; + uint8_t ueIdx; + uint8_t drbId; + GtpTnlCfg *tnlCfg1; /* Tunnel 1 */ + GtpTnlCfg *tnlCfg2; /* Tunnel 2 */ +}UpTnlCfg; + +typedef struct duUeCfg +{ + void *cellGrpCfg; + void *ueNrCapability; + uint8_t numRlcLcs; /* Rlc Ue Cfg */ + RlcBearerCfg rlcLcCfg[MAX_NUM_LC]; + uint8_t numMacLcs; /* Mac Ue Cfg */ + LcCfg macLcCfg[MAX_NUM_LC]; + AmbrCfg *ambrCfg; + uint8_t numDrb; + UpTnlCfg upTnlInfo[MAX_NUM_DRB]; /* User plane TNL Info*/ +}DuUeCfg; + +typedef struct f1UeContextSetup +{ + UeCtxtActionType actionType; + uint8_t cellIdx; + DuUeCfg duUeCfg; + bool dlRrcMsgPres; + F1DlRrcMsg *dlRrcMsg; +}F1UeContextSetupDb; + 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 */ + 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; + F1UeContextSetupDb *f1UeDb; + uint16_t crnti; + uint32_t gnbDuUeF1apId; /* GNB DU UE F1AP ID */ + uint32_t gnbCuUeF1apId; /* GNB CU UE F1AP ID */ + uint32_t drbBitMap; /* Drb Bit Map */ + UeState ueState; /* UE Active/ Ue Inactive state */ + MacUeCfg macUeCfg; /* Mac Ue Cfg */ + RlcUeCfg rlcUeCfg; /* Rlc Ue Cfg */ }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 */ + uint16_t cellId; /* Internal cell Id */ + CellCfgParams cellInfo; /* Cell info */ + /* pointer to store the address of macCellCfg params used to send du-app to MAC */ + MacCellCfg *duMacCellCfg; + CellStatus cellStatus; /* Cell status */ + uint32_t gnbDuUeF1apIdGenerator; /* Generating Du Ue F1ap Id */ + uint32_t numActvUes; /* Total Active UEs */ + DuUeCb ueCb[MAX_NUM_UE]; /* UE CONTEXT */ }DuCellCb; typedef struct duLSapCb @@ -107,8 +179,8 @@ typedef struct duLSapCb State sapState; Mem mem; CmTimer timer; - uint8_t bndRetryCnt; - uint8_t maxBndRetry; + uint8_t bndRetryCnt; + uint8_t maxBndRetry; TmrCfg bndTmr; }DuLSapCb; @@ -119,23 +191,30 @@ typedef struct ueCcchCtxt uint16_t cellId; /* Cell Id */ }UeCcchCtxt; +/* This structure is added to store the information about the F1AP pdu and + * transId so that It can be used in future */ +typedef struct reservedF1apPduInfo +{ + uint8_t transId; /* trans Id */ + void *f1apMsg; /* msg structure */ +}ReservedF1apPduInfo; /* DU APP DB */ typedef struct duCb { - 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*/ + Mem mem; /* Memory configs */ + TskInit init; /* DU Init */ + bool f1Status; /* Status of F1 connection */ + bool e2Status; /* Status of E2 connection */ + uint8_t numCfgCells; /* number of configured cells */ + DuCellCb* cfgCellLst[MAX_NUM_CELL]; /* List of cells at DU APP of type DuCellCb */ + uint8_t numActvCells; /* Number of active cells */ + DuCellCb* actvCellLst[MAX_NUM_CELL]; /* List of cells activated/to be activated of type DuCellCb */ + uint32_t numUe; /* current number of UEs */ + UeCcchCtxt ueCcchCtxt[MAX_NUM_UE]; /* mapping of gnbDuUeF1apId to CRNTI required for CCCH processing*/ + uint8_t numDrb; /* current number of DRbs*/ + UpTnlCfg* upTnlCfg[MAX_NUM_DRB]; /* tunnel info for every Drb */ + CmLListCp reservedF1apPduList; /*storing F1AP pdu infomation and transId */ }DuCb; @@ -187,13 +266,11 @@ 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 duSendEgtpTnlMgmtReq(uint8_t action, uint32_t teIdMod, GtpTnlCfg *tnlInfo); uint8_t duSendEgtpDatInd(Buffer *mBuf); uint8_t duHdlSchCfgComplete(Pst *pst, RgMngmt *cfm); -uint8_t duBuildAndSendMacCellStartReq(); -uint8_t duBuildAndSendMacCellStopReq(); +uint8_t duBuildAndSendMacCellStart(); +uint8_t duBuildAndSendMacCellStop(uint16_t cellId); #endif /**********************************************************************