X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=src%2Fcm%2Fdu_app_mac_inf.h;h=24bbacbc0da3f75313df91bc4899000c2396e8b8;hb=4a4be152a02505f732a92caa2a5592f2ec70b9ae;hp=6221e5b885db20184deeb7c681982b3ceb6757a2;hpb=0bb62f25ad9d8f9ff8724572f96e51a898937f0c;p=o-du%2Fl2.git diff --git a/src/cm/du_app_mac_inf.h b/src/cm/du_app_mac_inf.h index 6221e5b88..24bbacbc0 100644 --- a/src/cm/du_app_mac_inf.h +++ b/src/cm/du_app_mac_inf.h @@ -105,7 +105,7 @@ typedef enum typedef enum { - SUCCESS, + DEL_SUCCESSFUL, CELLID_INVALID, UEID_INVALID }UeDeleteStatus; @@ -699,6 +699,45 @@ typedef struct plmnInfoList Snssai **snssai; /* List of supporting snssai*/ }PlmnInfoList; +#ifdef NR_DRX +/* The following list of structures is taken from the DRX-Config section of specification 33.331. */ +typedef struct drxOnDurationTimer +{ + bool onDurationTimerValInMs; + union + { + uint8_t subMilliSeconds; + uint16_t milliSeconds; + }onDurationtimerValue; +}DrxOnDurationTimer; + +typedef struct drxLongCycleStartOffset +{ + uint16_t drxLongCycleStartOffsetChoice; + uint16_t drxLongCycleStartOffsetVal; +}DrxLongCycleStartOffset; + +typedef struct shortDrx +{ + uint16_t drxShortCycle; + uint8_t drxShortCycleTimer; +}ShortDrx; + +typedef struct drxCfg +{ + DrxOnDurationTimer drxOnDurationTimer; + uint16_t drxInactivityTimer; + uint8_t drxHarqRttTimerDl; + uint8_t drxHarqRttTimerUl; + uint16_t drxRetransmissionTimerDl; + uint16_t drxRetransmissionTimerUl; + DrxLongCycleStartOffset drxLongCycleStartOffset; + bool shortDrxPres; + ShortDrx shortDrx; + uint8_t drxSlotOffset; +}DrxCfg; +#endif + typedef struct macCellCfg { uint16_t cellId; /* Cell Id */ @@ -803,6 +842,10 @@ typedef struct macCellGrpCfg BsrTmrCfg bsrTmrCfg; bool phrCfgSetupPres; /* true/false: phrCfgSetup/phrCfgRelease */ PhrCfg phrCfg; +#ifdef NR_DRX + bool drxCfgPresent; + DrxCfg drxCfg; +#endif }MacCellGrpCfg; typedef struct phyCellGrpCfg @@ -1136,14 +1179,14 @@ typedef struct servCellCfgInfo { InitialDlBwp initDlBwp; uint8_t numDlBwpToAdd; - DlBwpInfo DlBwpToAddList[MAX_NUM_BWP]; + DlBwpInfo dlBwpToAddList[MAX_NUM_BWP]; uint8_t firstActvDlBwpId; uint8_t defaultDlBwpId; uint8_t *bwpInactivityTmr; PdschServCellCfg pdschServCellCfg; InitialUlBwp initUlBwp; uint8_t numUlBwpToAdd; - UlBwpInfo UlBwpToAddList[MAX_NUM_BWP]; + UlBwpInfo ulBwpToAddList[MAX_NUM_BWP]; uint8_t firstActvUlBwpId; }ServCellCfgInfo; @@ -1154,6 +1197,33 @@ typedef struct spCellCfg ServCellCfgInfo servCellCfg; }SpCellCfg; +/* Serving cell Re-configuration */ +typedef struct servCellRecfgInfo +{ + InitialDlBwp initDlBwp; + uint8_t numDlBwpToAddOrMod; + DlBwpInfo dlBwpToAddOrModList[MAX_NUM_BWP]; + uint8_t numDlBwpToRel; + DlBwpInfo dlBwpToRelList[MAX_NUM_BWP]; + uint8_t firstActvDlBwpId; + uint8_t defaultDlBwpId; + uint8_t *bwpInactivityTmr; + PdschServCellCfg pdschServCellCfg; + InitialUlBwp initUlBwp; + uint8_t numUlBwpToAddOrMod; + UlBwpInfo ulBwpToAddOrModList[MAX_NUM_BWP]; + uint8_t numUlBwpToRel; + UlBwpInfo ulBwpToRelList[MAX_NUM_BWP]; + uint8_t firstActvUlBwpId; +}ServCellRecfgInfo; + +/* Special cell Re-configuration */ +typedef struct spCellRecfg +{ + uint8_t servCellIdx; + ServCellRecfgInfo servCellCfg; +}SpCellRecfg; + typedef struct ambrCfg { uint32_t ulBr; /* UL Bit rate */ @@ -1217,17 +1287,16 @@ typedef struct ulLcCfg BucketSizeDur bsd; // bucketSizeDuration }UlLcCfg; -typedef struct duLcCfg +typedef struct dlLcCfg { LcPriority lcp; // logical Channel Prioritization }DlLcCfg; typedef struct lcCfg { - ConfigType configType; uint8_t lcId; - DrbQosInfo *drbQos; Snssai *snssai; + DrbQosInfo *drbQos; bool ulLcCfgPres; UlLcCfg ulLcCfg; DlLcCfg dlLcCfg; @@ -1242,24 +1311,50 @@ typedef struct modulationInfo typedef struct macUeCfg { - uint16_t cellId; - uint8_t ueId; - uint16_t crnti; - bool macCellGrpCfgPres; - MacCellGrpCfg macCellGrpCfg; - bool phyCellGrpCfgPres; - PhyCellGrpCfg phyCellGrpCfg; - bool spCellCfgPres; - SpCellCfg spCellCfg; - AmbrCfg *ambrCfg; - ModulationInfo dlModInfo; /* DL modulation info */ - ModulationInfo ulModInfo; /* UL modulation info */ - uint8_t numLcs; - LcCfg lcCfgList[MAX_NUM_LC]; - UeCfgState macUeCfgState; /* InActive / Completed */ - DataTransmissionAction transmissionAction; + uint16_t cellId; + uint8_t ueId; + uint16_t crnti; + bool macCellGrpCfgPres; + MacCellGrpCfg macCellGrpCfg; + bool phyCellGrpCfgPres; + PhyCellGrpCfg phyCellGrpCfg; + bool spCellCfgPres; + SpCellCfg spCellCfg; + AmbrCfg *ambrCfg; + ModulationInfo dlModInfo; /* DL modulation info */ + ModulationInfo ulModInfo; /* UL modulation info */ + uint8_t numLcs; + LcCfg lcCfgList[MAX_NUM_LC]; }MacUeCfg; +/* UE Re-configuration */ +typedef struct macUeRecfg +{ + uint16_t cellId; + uint8_t ueId; + uint8_t beamIdx; + uint16_t crnti; + bool macCellGrpRecfgPres; + MacCellGrpCfg macCellGrpRecfg; + bool phyCellGrpRecfgPres; + PhyCellGrpCfg phyCellGrpRecfg; + bool spCellRecfgPres; + SpCellRecfg spCellRecfg; + AmbrCfg *ambrRecfg; + ModulationInfo dlModInfo; + ModulationInfo ulModInfo; + uint8_t numLcsToAdd; + LcCfg lcCfgAdd[MAX_NUM_LC]; + uint8_t numLcsToDel; + uint8_t lcIdToDel[MAX_NUM_LC]; + uint8_t numLcsToMod; + LcCfg lcCfgMod[MAX_NUM_LC]; + DataTransmissionAction transmissionAction; +#ifdef NR_DRX + bool drxConfigIndicatorRelease; +#endif +}MacUeRecfg; + typedef struct nrcgi { Plmn plmn; @@ -1295,8 +1390,12 @@ typedef struct ueCfgRsp DRBFailInfo *failedDRBlist; uint8_t numSCellFailed; /* valid values : 0 to MAX_NUM_SCELL */ SCellFailInfo *failedSCellList; + uint8_t numDRBModFailed; /* valid values : 0 to MAX_NUM_DRB */ + DRBFailInfo *failedDRBModlist; }MacUeCfgRsp; +typedef struct ueCfgRsp MacUeRecfgRsp; + typedef struct rachRsrcReq { uint16_t cellId; @@ -1347,10 +1446,10 @@ typedef struct ueDeleteRsp UeDeleteStatus result; }MacUeDeleteRsp; -typedef struct macCellDelete +typedef struct macCellDeleteReq { uint16_t cellId; -}MacCellDelete; +}MacCellDeleteReq; typedef struct macCellDeleteRsp { @@ -1390,14 +1489,27 @@ typedef struct macSliceCfgRsp MacSliceRsp **listOfSliceCfgRsp; }MacSliceCfgRsp; -typedef struct macPcchInd +/*As per ORAN-WG8, Slice Cfg and ReCfg are same structures*/ +typedef struct macSliceCfgReq MacSliceRecfgReq; +typedef struct macSliceCfgRsp MacSliceRecfgRsp; + +typedef struct dlPcchInd { uint16_t cellId; uint16_t pf; uint8_t i_s; uint16_t pduLen; uint8_t *pcchPdu; -}MacPcchInd; +}DlPcchInd; + +typedef struct cellInfo +{ + SlotTimingInfo slotInfo; + uint16_t cellId; +}CellInfo; + +typedef struct cellInfo CellStartInfo; +typedef struct cellInfo CellStopInfo; /* Functions for CellUp Ind from MAC to DU APP*/ typedef uint8_t (*DuMacCellUpInd) ARGS(( @@ -1417,12 +1529,12 @@ typedef uint8_t (*DuMacStopInd) ARGS(( /* Functions for mac cell start req */ typedef uint8_t (*DuMacCellStart) ARGS(( Pst *pst, - OduCellId *cellId)); + CellStartInfo *cellId)); /* Functions for mac cell stop request */ typedef uint8_t (*DuMacCellStop) ARGS(( Pst *pst, - OduCellId *cellId )); + CellStopInfo *cellId )); /* Function pointers for packing macCellCfg Request and Confirm */ typedef uint8_t (*packMacCellCfgReq) ARGS(( @@ -1464,7 +1576,12 @@ typedef uint8_t (*MacDuUeCfgRspFunc) ARGS(( /* UE Reconfig Request from DU APP to MAC */ typedef uint8_t (*DuMacUeReconfigReq) ARGS(( Pst *pst, - MacUeCfg *ueCfg )); + MacUeRecfg *ueCfg )); + +/* UE Reconfig Response from MAC to DU APP */ +typedef uint8_t (*MacDuUeRecfgRspFunc) ARGS(( + Pst *pst, + MacUeRecfgRsp *cfgRsp)); /* RACH Resource Request from DU APP to MAC */ typedef uint8_t (*DuMacRachRsrcReq) ARGS(( @@ -1494,7 +1611,7 @@ typedef uint8_t (*MacDuUeDeleteRspFunc) ARGS(( /* Cell Delete Request from DU APP to MAC*/ typedef uint8_t (*DuMacCellDeleteReq) ARGS(( Pst *pst, - MacCellDelete *cellDelete )); + MacCellDeleteReq *cellDelete )); /* Cell Delete Response from MAC to DU APP*/ typedef uint8_t (*MacDuCellDeleteRspFunc) ARGS(( @@ -1514,29 +1631,29 @@ typedef uint8_t (*MacDuSliceCfgRspFunc) ARGS(( /* Slice ReReCfg Request from DU APP to MAC*/ typedef uint8_t (*DuMacSliceRecfgReq) ARGS(( Pst *pst, - MacSliceCfgReq *CfgReq)); + MacSliceRecfgReq *CfgReq)); /* Slice ReReCfg Response from MAC to DU APP */ -typedef uint8_t (*MacDuSliceReCfgRspFunc) ARGS(( +typedef uint8_t (*MacDuSliceRecfgRspFunc) ARGS(( Pst *pst, - MacSliceCfgRsp *cfgRsp)); + MacSliceRecfgRsp *cfgRsp)); /* Pcch indication from DU APP to MAC*/ typedef uint8_t (*DuMacDlPcchInd) ARGS(( Pst *pst, - MacPcchInd *pcchInd)); + DlPcchInd *pcchInd)); uint64_t ueBitMapPerCell[MAX_NUM_CELL]; /* Bit Map to store used/free UE-IDX per Cell */ uint8_t packMacCellUpInd(Pst *pst, OduCellId *cellId); uint8_t unpackMacCellUpInd(DuMacCellUpInd func, Pst *pst, Buffer *mBuf); uint8_t duHandleCellUpInd(Pst *pst, OduCellId *cellId); -uint8_t packMacCellStart(Pst *pst, OduCellId *cellId); +uint8_t packMacCellStart(Pst *pst, CellStartInfo *cellStartInfo); uint8_t unpackMacCellStart(DuMacCellStart func, Pst *pst, Buffer *mBuf); -uint8_t MacProcCellStart(Pst *pst, OduCellId *cellId); -uint8_t packMacCellStop(Pst *pst, OduCellId *cellId); +uint8_t MacProcCellStart(Pst *pst, CellStartInfo *cellStartInfo); +uint8_t packMacCellStop(Pst *pst, CellStopInfo *cellStopInfo); uint8_t unpackMacCellStop(DuMacCellStop func, Pst *pst, Buffer *mBuf); -uint8_t MacProcCellStop(Pst *pst, OduCellId *cellId); +uint8_t MacProcCellStop(Pst *pst, CellStopInfo *cellStopInfo); uint8_t packMacCellCfg(Pst *pst, MacCellCfg *macCellCfg); uint8_t unpackDuMacCellCfg(DuMacCellCfgReq func, Pst *pst, Buffer *mBuf); uint8_t MacProcCellCfgReq(Pst *pst, MacCellCfg *macCellCfg); @@ -1559,9 +1676,12 @@ uint8_t sendStopIndMacToDuApp(uint16_t cellId); uint8_t packDuMacUeCfgRsp(Pst *pst, MacUeCfgRsp *cfgRsp); uint8_t unpackDuMacUeCfgRsp(MacDuUeCfgRspFunc func, Pst *pst, Buffer *mBuf); uint8_t DuProcMacUeCfgRsp(Pst *pst, MacUeCfgRsp *cfgRsp); -uint8_t packDuMacUeReconfigReq(Pst *pst, MacUeCfg *ueCfg); +uint8_t packDuMacUeReconfigReq(Pst *pst, MacUeRecfg *ueRecfg); uint8_t unpackMacUeReconfigReq(DuMacUeReconfigReq func, Pst *pst, Buffer *mBuf); -uint8_t MacProcUeReconfigReq(Pst *pst, MacUeCfg *ueCfg); +uint8_t MacProcUeReconfigReq(Pst *pst, MacUeRecfg *ueRecfg); +uint8_t packDuMacUeRecfgRsp(Pst *pst, MacUeRecfgRsp *recfgRsp); +uint8_t unpackDuMacUeRecfgRsp(MacDuUeRecfgRspFunc func, Pst *pst, Buffer *mBuf); +uint8_t DuProcMacUeRecfgRsp(Pst *pst, MacUeRecfgRsp *recfgRsp); uint8_t packDuMacRachRsrcReq(Pst *pst, MacRachRsrcReq *rachRsrcReq); uint8_t unpackMacRachRsrcReq(DuMacRachRsrcReq func, Pst *pst, Buffer *mBuf); uint8_t MacProcRachRsrcReq(Pst *pst, MacRachRsrcReq *rachRsrcReq); @@ -1577,8 +1697,8 @@ uint8_t unpackMacUeDeleteReq(DuMacUeDeleteReq func, Pst *pst, Buffer *mBuf); uint8_t packDuMacUeDeleteRsp(Pst *pst, MacUeDeleteRsp *deleteRsp); uint8_t DuProcMacUeDeleteRsp(Pst *pst, MacUeDeleteRsp *deleteRsp); uint8_t unpackDuMacUeDeleteRsp(MacDuUeDeleteRspFunc func, Pst *pst, Buffer *mBuf); -uint8_t packDuMacCellDeleteReq(Pst *pst, MacCellDelete *cellDelete); -uint8_t MacProcCellDeleteReq(Pst *pst, MacCellDelete *cellDelete); +uint8_t packDuMacCellDeleteReq(Pst *pst, MacCellDeleteReq *cellDelete); +uint8_t MacProcCellDeleteReq(Pst *pst, MacCellDeleteReq *cellDelete); uint8_t unpackMacCellDeleteReq(DuMacCellDeleteReq func, Pst *pst, Buffer *mBuf); uint8_t packDuMacCellDeleteRsp(Pst *pst, MacCellDeleteRsp *cellDeleteRsp); uint8_t DuProcMacCellDeleteRsp(Pst *pst, MacCellDeleteRsp *cellDeleteRsp); @@ -1589,17 +1709,17 @@ uint8_t unpackMacSliceCfgReq(DuMacSliceCfgReq func, Pst *pst, Buffer *mBuf); uint8_t DuProcMacSliceCfgRsp(Pst *pst, MacSliceCfgRsp *cfgRsp); uint8_t packDuMacSliceCfgRsp(Pst *pst, MacSliceCfgRsp *cfgRsp); uint8_t unpackDuMacSliceCfgRsp(MacDuSliceCfgRspFunc func, Pst *pst, Buffer *mBuf); -uint8_t packDuMacSliceRecfgReq(Pst *pst, MacSliceCfgReq *sliceReCfgReq); -uint8_t MacProcSliceReCfgReq(Pst *pst, MacSliceCfgReq *sliceReCfgReq); -uint8_t unpackMacSliceReCfgReq(DuMacSliceRecfgReq func, Pst *pst, Buffer *mBuf); -uint8_t DuProcMacSliceReCfgRsp(Pst *pst, MacSliceCfgRsp *cfgRsp); -uint8_t packDuMacSliceReCfgRsp(Pst *pst, MacSliceCfgRsp *cfgRsp); -uint8_t unpackDuMacSliceReCfgRsp(MacDuSliceReCfgRspFunc func, Pst *pst, Buffer *mBuf); +uint8_t packDuMacSliceRecfgReq(Pst *pst, MacSliceRecfgReq *sliceRecfgReq); +uint8_t MacProcSliceRecfgReq(Pst *pst, MacSliceRecfgReq *sliceRecfgReq); +uint8_t unpackMacSliceRecfgReq(DuMacSliceRecfgReq func, Pst *pst, Buffer *mBuf); +uint8_t DuProcMacSliceRecfgRsp(Pst *pst, MacSliceRecfgRsp *sliceRecfgRsp); +uint8_t packDuMacSliceRecfgRsp(Pst *pst, MacSliceRecfgRsp *sliceRecfgRsp); +uint8_t unpackDuMacSliceRecfgRsp(MacDuSliceRecfgRspFunc func, Pst *pst, Buffer *mBuf); uint8_t duHandleSlotInd(Pst *pst, SlotTimingInfo *slotIndInfo); uint8_t packMacSlotInd(Pst *pst, SlotTimingInfo *slotIndInfo); uint8_t unpackDuMacSlotInd(DuMacSlotInd func, Pst *pst, Buffer *mBuf); -uint8_t packDuMacDlPcchInd(Pst *pst, MacPcchInd *pcchInd); -uint8_t MacProcDlPcchInd(Pst *pst, MacPcchInd *pcchInd); +uint8_t packDuMacDlPcchInd(Pst *pst, DlPcchInd *pcchInd); +uint8_t MacProcDlPcchInd(Pst *pst, DlPcchInd *pcchInd); uint8_t unpackMacDlPcchInd(DuMacDlPcchInd func, Pst *pst, Buffer *mBuf); int8_t getFreeBitFromUeBitMap(uint16_t cellId); void unsetBitInUeBitMap(uint16_t cellId, uint8_t bitPos);