X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=src%2Fdu_app%2Fdu_mgr.h;h=c2604087ef6b504167ce5b16d2c530c66202e719;hb=0ba7b600f85b2975e1d60e5b8ad1523349b5f396;hp=c294cb8b92ab846f32e8a4953f810a15e9753594;hpb=16c5580481ed94b84e92d0a22874cf476debf17e;p=o-du%2Fl2.git diff --git a/src/du_app/du_mgr.h b/src/du_app/du_mgr.h index c294cb8b9..c2604087e 100644 --- a/src/du_app/du_mgr.h +++ b/src/du_app/du_mgr.h @@ -57,6 +57,9 @@ #define DU_SET_ZERO(_buf, _size) \ memset((_buf), 0, _size); +/*Refer Spec 38.331 Annexure A: maxNrofPageRec : 32 [Maximum number of page records]*/ +#define MAX_PAGING_UE_RECORDS 32 + typedef enum { SLICE_INFO_NOT_AVAILABLE, @@ -126,6 +129,17 @@ typedef struct upTnlCfg GtpTnlCfg *tnlCfg2; /* Tunnel 2 */ }UpTnlCfg; +#ifdef NR_DRX +/* This structures is taken from the DRX Cycle section of + * specification 33.473. */ +typedef struct drxCycle +{ + uint16_t drxLongCycleLength; + bool shortDrxCyclePres; + ShortDrx shortDrxCycle; +}DrxCycle; +#endif + typedef struct duUeCfg { void *cellGrpCfg; @@ -139,6 +153,11 @@ typedef struct duUeCfg UpTnlCfg upTnlInfo[MAX_NUM_DRB]; /* User plane TNL Info*/ uint8_t numDrbSetupMod; /*No. of DRB Added during Modification*/ MacUeCfg copyOfmacUeCfg; + DataTransmissionAction dataTransmissionAction; +#ifdef NR_DRX + bool drxCyclePres; + DrxCycle drxCycle; +#endif }DuUeCfg; typedef struct f1UeContextSetup @@ -167,6 +186,7 @@ typedef struct duUeCb uint32_t gnbCuUeF1apId; /* GNB CU UE F1AP ID */ uint32_t drbBitMap; /* Drb Bit Map */ UeState ueState; /* UE Active/ Ue Inactive state */ + MacCfraResource cfraResource; /* CF-RA resource assigned by MAC/SCH */ MacUeCfg macUeCfg; /* Mac Ue Cfg */ RlcUeCfg rlcUeCfg; /* Rlc Ue Cfg */ }DuUeCb; @@ -177,6 +197,42 @@ typedef struct slotInfo uint16_t slot; }SlotInfo; +typedef struct pagingMsg +{ + /*Note: Paging UEID is extracted from 5gSTMSI as per Spec 38.304, Sec 7.1. + *This is not same as DU-UE_F1AP_ID or CU_UE_F1AP_ID*/ + uint16_t pagUeId; /* UE Identifier from CU*/ + + /*TODO: When RAN Inititated Paging will be supported then I-RNTI will be + * added as a choice for UE Identity along with S-TMSI*/ + uint64_t sTmsi; /* UE Paging Identity: S-TMSI */ + bool pagingDrxPres; /* flag to indicate paging drx present or not */ + uint16_t pagingDrx; /* UE specific paging drx */ + uint8_t pagPriority; /* Paging priority */ + uint16_t pagingFrame; /* paging frame */ + uint16_t pagingFrameOffset; /* paging offset */ + uint8_t i_s; /* Index points to PO from the sub-frame pattern */ + uint16_t T; /* T is DRX cycle of the UE */ +}DuPagingMsg; + +typedef struct duPagUeRecord +{ + uint16_t pagUeId; /*UEID calculated from 5gsTMSI as per Spec 38.304*/ + uint64_t sTmsi; /* UE Paging Identity: S-TMSI */ +}DuPagUeRecord; + +typedef struct duPagInfo +{ + uint8_t i_s; /*Index of PO*/ + CmLListCp pagUeList; /*List of UEs to be paged in this Paging Frame/Paging Occ*/ +}DuPagUeList; + +typedef struct duPagInfoMap +{ + uint16_t pf; /* Paging Frame*/ + CmLListCp pagInfoList; /* Master List of Paging Identified by PF and i_s*/ +}DuPagInfoList; + typedef struct duCellCb { uint16_t cellId; /* Internal cell Id */ @@ -185,10 +241,10 @@ typedef struct duCellCb MacCellCfg *duMacCellCfg; CellStatus cellStatus; /* Cell status */ uint32_t numActvUes; /* Total Active UEs */ - DuUeCb ueCb[MAX_NUM_UE]; /* UE context created after RRC setup */ - uint32_t numHoUes; /* Number of UE handover in progress */ - DuUeCb hoUeCb[MAX_NUM_UE]; /* UE context created before RACH for UE being handover to this DU */ + DuUeCb ueCb[MAX_NUM_UE]; /* Stores UE context */ SlotInfo currSlotInfo; + DuPagingMsg tmpPagingInfoOfUe; /* UE paging information */ + CmHashListCp pagingInfoMap; /*Paging Map between PF and PagingInfoList*/ }DuCellCb; typedef struct duLSapCb @@ -294,6 +350,7 @@ uint8_t duSendEgtpDatInd(Buffer *mBuf); uint8_t duHdlSchCfgComplete(Pst *pst, RgMngmt *cfm); uint8_t duBuildAndSendMacCellStart(); uint8_t duBuildAndSendMacCellStop(uint16_t cellId); + #endif /**********************************************************************