[Epic-ID: ODUHIGH-464][Task-ID: ODUHIGH-480] WG8 Alignment |Third phase | Cfg/Recfg...
[o-du/l2.git] / src / cm / du_app_rlc_inf.h
index 837afc3..62ea905 100644 (file)
 #define EVENT_DL_RRC_MSG_RSP_TO_DU 217
 #define EVENT_DL_USER_DATA_TRANS_TO_RLC 218
 #define EVENT_UL_USER_DATA_TRANS_TO_DU 219
-
+#define EVENT_RLC_UE_DELETE_REQ 220
+#define EVENT_RLC_UE_DELETE_RSP 221
+#define EVENT_RLC_SLICE_PM_TO_DU 222
 
 #define RB_ID_SRB 0
 #define RB_ID_DRB 1
 
-#define RB_TYPE_SRB 0        /* Signalling Radio Bearer */
-#define RB_TYPE_DRB 1        /* Data Radio Bearer */
-
 /* RLC Direction Config */
 #define RLC_CFG_DIR_UL        1     /*!< Uplink direction */
 #define RLC_CFG_DIR_DL        2     /*!< Downlink direction */
 #define LCH_DTCH      4      /*!< DTCH Logical Channel */
 #define LCH_DCCH      5      /*!< DCCH Logical Channel */
 
+typedef enum
+{
+   RB_TYPE_SRB,      /* Signalling Radio Bearer */
+   RB_TYPE_DRB       /* Data Radio Bearer */
+}RlcRbType;  
+
 typedef enum
 {
    TRANSMISSION_IN_PROGRESS,
@@ -87,6 +92,13 @@ typedef enum
    RLC_CFG_REAS_INVALID_RGUSAP     /*!< Invalid RGU SAP ID */
 }FailureReason;
 
+typedef enum
+{
+   SUCCESSFUL            ,  /*!< No Failure */
+   INVALID_CELLID      ,  /*!< CellId not present */
+   INVALID_UEID        ,  /*!< UEId not present */
+}UeDeleteResult;
+
 typedef enum
 {
    RLC_AM,                    //Acknowledged Mode
@@ -109,8 +121,8 @@ typedef enum
 
 typedef enum
 {
-   RLC_DU_APP_RSP_NOK,
-   RLC_DU_APP_RSP_OK
+   RLC_DU_APP_RSP_OK = 1,
+   RLC_DU_APP_RSP_NOK
 }RlcRsp;
 
 typedef struct ulAmCfg
@@ -128,7 +140,7 @@ typedef struct dlAmCfg
    int16_t      pollPdu;             /* Used to trigger a poll for every pollPdu.*/
    int32_t      pollByte;            /* Poll_Byte in bytes. */
    uint8_t      maxRetxTh;           /* Max_Retx_Threshold */
+
 }DlAmCfg;
 
 typedef struct dlUmCfg
@@ -169,11 +181,11 @@ typedef struct umUniDirDlBearerCfg
 /* Spec Ref: 38.331, 6.3.2 RLC-BearerConfig */
 typedef struct rlcBearerCfg
 {
-   ConfigType   configType;
    uint8_t      rbId;
-   uint8_t      rbType;
+   RlcRbType    rbType;
    uint8_t      lcId;
    uint8_t      lcType;
+   Snssai       *snssai; 
    RlcMode      rlcMode;
    union
    {
@@ -182,30 +194,55 @@ typedef struct rlcBearerCfg
       UmUniDirUlBearerCfg *umUniDirUlCfg;
       UmUniDirDlBearerCfg *umUniDirDlCfg;
    }u;
+   bool isLcAddModRspSent;
 }RlcBearerCfg;
 
+typedef struct rlcUeRecfg
+{
+   uint16_t       cellId;
+   uint8_t        ueId;
+   uint8_t        numLcsToAdd;
+   RlcBearerCfg   rlcLcCfgAdd[MAX_NUM_LC];
+   uint8_t        numLcsToMod;
+   RlcBearerCfg   rlcLcCfgMod[MAX_NUM_LC];
+   uint8_t        numLcsToRel;
+   RlcBearerCfg   rlcLcCfgRel[MAX_NUM_LC];
+}RlcUeRecfg;
+
 typedef struct rlcUeCfg
 {
-   uint16_t     cellId;
-   uint8_t      ueIdx;
-   uint8_t      numLcs;
-   RlcBearerCfg rlcLcCfg[MAX_NUM_LC];
-   UeCfgState rlcUeCfgState; /* InActive / Completed */
+   uint16_t       cellId;
+   uint8_t        ueId;
+   uint8_t        numLcsToAdd;
+   RlcBearerCfg   rlcLcCfgAdd[MAX_NUM_LC];
 }RlcUeCfg;
 
 typedef struct rlcUeCfgRsp
 {
    uint16_t       cellId;
-   uint16_t       ueIdx;
+   uint16_t       ueId;
    RlcRsp         result;
    FailureReason  reason;
 }RlcUeCfgRsp;
 
+typedef struct rlcUeDelete
+{
+   uint16_t      cellId;
+   uint8_t       ueId;
+}RlcUeDelete;
+
+typedef struct rlcUeDeleteRsp
+{
+   uint16_t       cellId;
+   uint8_t        ueId;
+   UeDeleteResult result;
+}RlcUeDeleteRsp;
+
 /* UL RRC Message from RLC to DU APP */
 typedef struct ulRrcMsgInfo
 {
    uint16_t   cellId;       /* Cell Id */
-   uint16_t   ueIdx;        /* UE Index */
+   uint16_t   ueId;         /* UE Id */
    uint8_t    lcId;         /* Logical channel Id */
    uint16_t   msgLen;       /* RRC message length (in bytes) */
    uint8_t    *rrcMsg;      /* RRC Message (UL-DCCH Message) */
@@ -215,7 +252,7 @@ typedef struct ulRrcMsgInfo
 typedef struct ulUserDatInfo
 {
    uint16_t   cellId;       /* Cell Id */
-   uint16_t   ueIdx;        /* UE Index */
+   uint16_t   ueId;         /* UE Id */
    uint8_t    rbId;
    uint16_t   msgLen;       /* User data length (in bytes) */
    uint8_t    *userData;    /* User data (UL-DTCH Message) */
@@ -225,11 +262,8 @@ typedef struct ulUserDatInfo
 typedef struct dlRrcMsgInfo
 {
    uint16_t   cellId;         /* Cell Id */
-   uint16_t   ueIdx;          /* UE index */
-   uint8_t    rbType;         /* Radio Bearer Type */
-   uint8_t    rbId;           /* Radio Bearer Id */
-   uint8_t    lcType;         /* Logical channel type */
-   uint8_t    lcId;           /* Logical channel Id */
+   uint16_t   ueId;           /* UE Id */
+   uint8_t    lcId;           /* Logical channel Id {1...3} */
    bool       execDup;        /* Execution duplication enabled */
    bool       deliveryStaRpt;  /* Reporting of delivery status by RLC to DU-APP enabled */
    uint16_t   msgLen;         /* RRC Message length */
@@ -251,10 +285,30 @@ typedef struct rrcDeliveryStatus
    uint16_t  triggeringMessage;
 }RrcDeliveryStatus;
 
+typedef struct
+{
+  uint32_t sd:24;
+  uint8_t sst;
+}SliceIdentifier;
+
+/*Pm Metric for NW Slicing from RLC to DUAPP*/
+typedef struct slicePm
+{
+  SliceIdentifier networkSliceIdentifier;
+  double ThpDl;
+  double ThpUl;
+}SlicePm;
+
+typedef struct slicePmList
+{
+   uint8_t numSlice;
+   SlicePm *sliceRecord;
+}SlicePmList;
+
 typedef struct rrcDeliveryReportInfo
 {
    uint16_t  cellId;
-   uint16_t  ueIdx;
+   uint16_t  ueId;
    uint8_t   srbId;
    RrcDeliveryStatus  rrcDeliveryStatus;
 }RrcDeliveryReport;
@@ -263,8 +317,8 @@ typedef struct rrcDeliveryReportInfo
 typedef struct dlDataMsgInfo
 {
    uint16_t   cellId;         /* Cell Id */
-   uint16_t   ueIdx;          /* UE index */
-   uint8_t    rbId;           /* Radio Bearer Id */
+   uint16_t   ueId;           /* UE Id */
+   uint8_t    rbId;           /* Radio Bearer Id {4 .. MAC\7fX_NUM_DRB} */
    uint16_t   msgLen;         /* Message length */
    Buffer     *dlMsg;         /* DL Data */
 }RlcDlUserDataInfo;
@@ -280,6 +334,11 @@ typedef uint8_t (*RlcDuUeCfgRsp) ARGS((
    Pst          *pst,
    RlcUeCfgRsp  *ueCfgRsp));
 
+/* UE Delete Response from RLC to DU APP*/
+typedef uint8_t (*RlcDuUeDeleteRsp) ARGS((
+   Pst          *pst,
+   RlcUeDeleteRsp  *ueDelRsp));
+
 /* UL RRC Message from RLC to DU APP */
 typedef uint8_t (*RlcUlRrcMsgToDuFunc) ARGS((
    Pst           *pst,
@@ -295,9 +354,15 @@ typedef uint8_t (*RlcRrcDeliveryReportToDuFunc) ARGS((
    Pst           *pst,
    RrcDeliveryReport *rrcDeliveryReport));
 
+/* UE Reconfig Request from DU APP to RLC */
 typedef uint8_t (*DuRlcUeReconfigReq) ARGS((
    Pst           *pst,
-   RlcUeCfg      *ueCfg ));
+   RlcUeRecfg      *ueRecfg ));
+
+/* UE Delete Request from DU APP to RLC */
+typedef uint8_t (*DuRlcUeDeleteReq) ARGS((
+   Pst           *pst,
+   RlcUeDelete   *ueDelete));
 
 /* DL RRC Message from RLC to DU APP */
 typedef uint8_t (*RlcDlRrcMsgRspToDuFunc) ARGS((
@@ -314,6 +379,11 @@ typedef uint8_t (*DuRlcDlUserDataToRlcFunc) ARGS((
    Pst           *pst,
    RlcDlUserDataInfo *dlDataMsg));
 
+/* Slice Metrics from RLC to DU APP */
+typedef uint8_t (*RlcSlicePmToDuFunc) ARGS((
+   Pst           *pst,
+   SlicePmList *sliceStats));
+
 /* Pack/Unpack function declarations */
 uint8_t packDuRlcUeCreateReq(Pst *pst, RlcUeCfg *ueCfg);
 uint8_t unpackRlcUeCreateReq(DuRlcUeCreateReq func, Pst *pst, Buffer *mBuf);
@@ -325,7 +395,7 @@ uint8_t packDlRrcMsgToRlc(Pst *pst, RlcDlRrcMsgInfo *dlRrcMsgInfo);
 uint8_t unpackDlRrcMsgToRlc(DuDlRrcMsgToRlcFunc func, Pst *pst, Buffer *mBuf);
 uint8_t packRrcDeliveryReportToDu(Pst *pst, RrcDeliveryReport *rrcDeliveryReport);
 uint8_t unpackRrcDeliveryReportToDu(RlcRrcDeliveryReportToDuFunc func,Pst *pst, Buffer *mBuf);
-uint8_t packDuRlcUeReconfigReq(Pst *pst, RlcUeCfg *ueCfg);
+uint8_t packDuRlcUeReconfigReq(Pst *pst, RlcUeRecfg *ueCfg);
 uint8_t unpackRlcUeReconfigReq(DuRlcUeReconfigReq func, Pst *pst, Buffer *mBuf);
 uint8_t packRlcDlRrcMsgRspToDu(Pst *pst, RlcDlRrcMsgRsp *dlRrcMsgRsp);
 uint8_t unpackRlcDlRrcMsgRspToDu(RlcDlRrcMsgRspToDuFunc func, Pst *pst, Buffer *mBuf);
@@ -333,6 +403,12 @@ uint8_t packRlcUlUserDataToDu(Pst *pst, RlcUlUserDatInfo *ulUserData);
 uint8_t unpackRlcUlUserDataToDu(RlcUlUserDataToDuFunc func, Pst *pst, Buffer *mBuf);
 uint8_t packRlcDlUserDataToRlc(Pst *pst, RlcDlUserDataInfo *dlDataMsg);
 uint8_t unpackRlcDlUserDataToRlc(DuRlcDlUserDataToRlcFunc func, Pst *pst, Buffer *mBuf);
+uint8_t packDuRlcUeDeleteReq(Pst *pst, RlcUeDelete *ueDelete);
+uint8_t unpackRlcUeDeleteReq(DuRlcUeDeleteReq func, Pst *pst, Buffer *mBuf);
+uint8_t packRlcDuUeDeleteRsp(Pst *pst, RlcUeDeleteRsp *ueDeleteRsp);
+uint8_t unpackRlcUeDeleteRsp(RlcDuUeDeleteRsp func, Pst *pst, Buffer *mBuf);
+uint8_t packRlcDuSlicePm(Pst *pst, SlicePmList *sliceStats);
+uint8_t unpackRlcSlicePm(RlcSlicePmToDuFunc func, Pst *pst, Buffer *mBuf);
 
 /* Event Handler function declarations */
 uint8_t RlcProcUeCreateReq(Pst *pst, RlcUeCfg *ueCfg);
@@ -340,11 +416,13 @@ uint8_t DuProcRlcUeCfgRsp(Pst *pst, RlcUeCfgRsp *cfgRsp);
 uint8_t DuProcRlcUlRrcMsgTrans(Pst *pst, RlcUlRrcMsgInfo *ulRrcMsgInfo);
 uint8_t RlcProcDlRrcMsgTransfer(Pst *pst, RlcDlRrcMsgInfo *dlRrcMsgInfo);
 uint8_t DuProcRlcRrcDeliveryReport(Pst *pst, RrcDeliveryReport *rrcDeliveryReport);
-uint8_t RlcProcUeReconfigReq(Pst *pst, RlcUeCfg *ueCfg);
+uint8_t RlcProcUeReconfigReq(Pst *pst, RlcUeRecfg *ueCfg);
 uint8_t DuProcRlcDlRrcMsgRsp(Pst *pst, RlcDlRrcMsgRsp *dlRrcMsg);
 uint8_t DuProcRlcUlUserDataTrans(Pst *pst, RlcUlUserDatInfo *ulUserData);
 uint8_t RlcProcDlUserDataTransfer(Pst *pst, RlcDlUserDataInfo *dlDataMsgInfo);
-
+uint8_t RlcProcUeDeleteReq(Pst *pst, RlcUeDelete *ueDelete);
+uint8_t DuProcRlcUeDeleteRsp(Pst *pst, RlcUeDeleteRsp *delRsp);
+uint8_t DuProcRlcSliceMetrics(Pst *pst, SlicePmList *sliceStats);
 #endif /* RLC_INF_H */
 
 /**********************************************************************