[Epic-ID: ODUHIGH-488][Task-ID: ODUHIGH-490] WG8 Alignment [Slice configuration]
[o-du/l2.git] / src / cm / du_app_mac_inf.h
index cbb8935..d9d8bca 100644 (file)
@@ -1179,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;
 
@@ -1197,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 */
@@ -1260,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;
@@ -1285,26 +1311,49 @@ 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 */
+   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;
+   bool            drxConfigIndicatorRelease;
 #endif
-}MacUeCfg;
+}MacUeRecfg;
 
 typedef struct nrcgi
 {
@@ -1341,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;
@@ -1393,10 +1446,10 @@ typedef struct ueDeleteRsp
    UeDeleteStatus result;
 }MacUeDeleteRsp;
 
-typedef struct macCellDelete
+typedef struct macCellDeleteReq
 {
    uint16_t cellId;
-}MacCellDelete;
+}MacCellDeleteReq;
 
 typedef struct macCellDeleteRsp
 {
@@ -1413,37 +1466,58 @@ typedef struct macSliceRsp
 
 typedef struct rrmPolicyRatio
 {
-   uint8_t policyMaxRatio;
-   uint8_t policyMinRatio;
-   uint8_t policyDedicatedRatio;
+   uint8_t maxRatio;
+   uint8_t minRatio;
+   uint8_t dedicatedRatio;
 }RrmPolicyRatio;
 
-typedef struct macSliceRrmPolicy
+typedef struct rrmPolicyMemberList
 {
+   Plmn    plmn;
    Snssai  snssai;
-   RrmPolicyRatio *rrmPolicyRatio;
+}RrmPolicyMemberList;
+
+typedef struct macSliceRrmPolicy
+{
+   ResourceType        resourceType;
+   uint8_t             numOfRrmPolicyMem;
+   RrmPolicyMemberList **rRMPolicyMemberList;
+   RrmPolicyRatio      policyRatio;
 }MacSliceRrmPolicy;
 
 typedef struct macSliceCfgReq
 {
-   uint8_t  numOfConfiguredSlice;
-   MacSliceRrmPolicy **listOfSliceCfg;
+   uint8_t           numOfRrmPolicy;
+   MacSliceRrmPolicy **listOfRrmPolicy;
 }MacSliceCfgReq;
 
 typedef struct macSliceCfgRsp
 {
-   uint8_t  numSliceCfgRsp;
+   uint8_t      numSliceCfgRsp;
    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((
@@ -1463,12 +1537,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((
@@ -1510,7 +1584,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((
@@ -1540,7 +1619,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((
@@ -1560,29 +1639,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);
@@ -1605,9 +1684,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);
@@ -1623,8 +1705,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);
@@ -1635,17 +1717,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);