[JIRA ID: ODUHIGH-232]: RB config for MAC and SCH
[o-du/l2.git] / src / cm / mac_sch_interface.h
index 26fe41a..95801bb 100644 (file)
@@ -29,6 +29,9 @@
 #define EVENT_SLOT_IND_TO_SCH        10
 #define EVENT_SHORT_BSR              11
 #define EVENT_UCI_IND_TO_SCH         12
+#define EVENT_UE_RECONFIG_REQ_TO_SCH 13
+#define EVENT_UE_RECONFIG_RSP_TO_MAC 14
+
 
 /*macros*/
 #define NO_SSB 0
@@ -57,7 +60,6 @@
 #define MAX_NUMBER_OF_CRC_IND_BITS 1
 #define MAX_NUMBER_OF_UCI_IND_BITS 1
 #define MAX_SR_BITS_IN_BYTES       1
-#define MAX_NUM_LOGICAL_CHANNELS   11
 #define MAX_NUM_LOGICAL_CHANNEL_GROUPS 8
 /* can we have a common numslot numscs between mac sch */
 #define MAX_SLOTS 10
@@ -73,9 +75,6 @@
 #define MAX_NUM_UL_ALLOC 16             /* Max number of pusch time domain uplink allocation */
 
 #define SD_SIZE   3
-#define CCCH_LCID  0
-#define SRB1_LCID  1
-#define SRB2_LCID  2
 
 #define ADD_DELTA_TO_TIME(crntTime, toFill, incr)          \
 {                                                          \
@@ -234,13 +233,13 @@ typedef enum
 
 typedef enum
 {
-   INTERLEAVED_CCE_REG_MAPPING,
+   INTERLEAVED_CCE_REG_MAPPING = 1,
    NONINTERLEAVED_CCE_REG_MAPPING
 }SchREGMappingType;
 
 typedef enum
 {
-   SLOT_PERIODICITY_AND_OFFSET_SL_1,
+   SLOT_PERIODICITY_AND_OFFSET_SL_1 = 1,
    SLOT_PERIODICITY_AND_OFFSET_SL_2,
    SLOT_PERIODICITY_AND_OFFSET_SL_4,
    SLOT_PERIODICITY_AND_OFFSET_SL_5,
@@ -265,10 +264,16 @@ typedef enum
 
 typedef enum
 {
-   SEARCH_SPACE_TYPE_COMMON,
+   SEARCH_SPACE_TYPE_COMMON = 1,
    SEARCH_SPACE_TYPE_UE_SPECIFIC
 }SchSearchSpaceType;
 
+typedef enum
+{
+   SCH_QOS_NON_DYNAMIC = 1,
+   SCH_QOS_DYNAMIC
+}SchQosType;
+
 typedef enum
 {
    AGGREGATION_LEVEL_N0,
@@ -295,10 +300,24 @@ typedef enum
 
 typedef enum
 {
-   STATIC_BUNDLING_TYPE,
+   STATIC_BUNDLING_TYPE = 1,
    DYNAMIC_BUNDLING_TYPE
 }SchBundlingType;
 
+typedef enum
+{
+   SCH_SET1_SIZE_N4,
+   SCH_SET1_SIZE_WIDEBAND,
+   SCH_SET1_SIZE_N2_WIDEBAND,
+   SCH_SET1_SIZE_N4_WIDEBAND
+}SchBundlingSizeSet1;
+
+typedef enum
+{
+   SCH_SET2_SIZE_N4,
+   SCH_SET2_SIZE_WIDEBAND
+}SchBundlingSizeSet2;
+
 typedef enum
 {
    DUPLEX_MODE_FDD,
@@ -485,7 +504,7 @@ typedef struct dlDCI
 typedef struct pdcchCfg
 {
    /* coreset-0 configuration */
-   CoresetCfg coreset0Cfg;
+   CoresetCfg coresetCfg;
 
    uint16_t numDlDci;
    DlDCI    dci; /* as of now its only one DCI, later it will be numDlCi */
@@ -673,7 +692,7 @@ typedef struct rarAlloc
    PdschCfg rarPdschCfg;
 }RarAlloc;
 
-typedef struct msg4Info
+typedef struct dlMsgInfo
 {
    uint16_t crnti;
    uint8_t  ndi;
@@ -683,24 +702,33 @@ typedef struct msg4Info
    uint8_t  pucchResInd;
    uint8_t  harqFeedbackInd;
    uint8_t  dciFormatId;
-   uint8_t  *msg4Pdu;
-   uint16_t  msg4PduLen;
-}Msg4Info;
+   bool     isMsg4Pdu;
+   uint16_t  dlMsgPduLen;
+   uint8_t  *dlMsgPdu;
+}DlMsgInfo;
 
-typedef struct msg4Alloc
+typedef struct lcSchInfo
 {
-   Msg4Info msg4Info;
-   BwpCfg bwp;
-   PdcchCfg msg4PdcchCfg;
-   PdschCfg msg4PdschCfg;
-}Msg4Alloc;
+   uint8_t   lcId;
+   uint16_t  schBytes; /* Number of scheduled bytes */
+}LcSchInfo;
+
+typedef struct dlMsgAlloc
+{
+   uint16_t   crnti;
+   uint8_t    numLc;
+   LcSchInfo  lcSchInfo[MAX_NUM_LC]; /* Scheduled LC info */
+   BwpCfg     bwp;
+   PdcchCfg   dlMsgPdcchCfg;
+   PdschCfg   dlMsgPdschCfg;
+   DlMsgInfo  dlMsgInfo;
+}DlMsgAlloc;
 
 typedef struct schSlotValue
 {
    SlotIndInfo currentTime;
    SlotIndInfo broadcastTime;
    SlotIndInfo rarTime;
-   SlotIndInfo msg4Time;
    SlotIndInfo dlMsgTime;
    SlotIndInfo ulDciTime;
 }SchSlotValue;
@@ -772,11 +800,14 @@ typedef struct dlSchedInfo
    RarAlloc *rarAlloc;
 
    /* Allocation from MSG4 */
-   Msg4Alloc *msg4Alloc;
+   //Msg4Alloc *msg4Alloc;
 
    /* UL grant in response to BSR */
    DciInfo    *ulGrant;
 
+   /* Allocation from dedicated DL msg */
+   DlMsgAlloc *dlMsgAlloc;
+
 }DlSchedInfo;
 
 typedef struct tbInfo
@@ -789,6 +820,7 @@ typedef struct tbInfo
 
 typedef struct schPuschInfo
 {
+   uint16_t         crnti;
    uint8_t          harqProcId;   /* HARQ Process ID */
    uint8_t          resAllocType; /* Resource allocation type */
    FreqDomainAlloc  fdAlloc;      /* Freq domain allocation */
@@ -855,9 +887,9 @@ typedef struct dlRlcBOInfo
 {
    uint16_t    cellId;
    uint16_t    crnti;
-   uint16_t    numLc;
-   BOInfo      boInfo[MAX_NUM_LOGICAL_CHANNELS];
-}DlRlcBOInfo;
+   uint8_t     lcId;
+   uint32_t    dataVolume;
+}DlRlcBoInfo;
 
 /* Info of Scheduling Request to Add/Modify */
 typedef struct schSchedReqInfo
@@ -967,6 +999,20 @@ typedef struct schPdschTimeDomRsrcAlloc
    uint8_t    symbolLength;
 }SchPdschTimeDomRsrcAlloc;
 
+
+typedef struct schPdschBundling
+{
+   struct schStaticBundling
+   {
+     SchBundlingSizeSet2 size;
+   }SchStaticBundling;
+   struct schDynamicBundling
+   {
+     SchBundlingSizeSet1 sizeSet1;
+     SchBundlingSizeSet2 sizeSet2;
+   }SchDynamicBundling;
+}SchPdschBundling;
+
 /* DMRS downlink configuration */
 typedef struct schDmrsDlCfg
 {
@@ -983,6 +1029,7 @@ typedef struct schPdschConfig
    SchRBGSize                 rbgSize;
    SchCodeWordsSchedByDci     numCodeWordsSchByDci;                    /* Number of code words scheduled by DCI */
    SchBundlingType            bundlingType;
+   SchPdschBundling           bundlingInfo;
 }SchPdschConfig;
 
 /* Initial Downlink BWP */
@@ -1046,6 +1093,7 @@ typedef struct schPuschTimeDomRsrcAlloc
 /* PUSCH Configuration */
 typedef struct schPuschCfg
 {
+   uint8_t                    dataScramblingId;
    SchDmrsUlCfg               dmrsUlCfgForPuschMapTypeA;
    SchResourceAllocType       resourceAllocType;
    uint8_t                    numTimeDomRsrcAlloc;
@@ -1122,7 +1170,7 @@ typedef struct schGrbQosFlowInfo
 /* DRB QoS */
 typedef struct schDrbQos
 {
-   uint8_t  fiveQiType;   /* Dynamic or non-dynamic */ 
+   SchQosType  fiveQiType;   /* Dynamic or non-dynamic */ 
    union
    {
       SchNonDynFiveQi   nonDyn5Qi;
@@ -1166,11 +1214,12 @@ typedef struct schDlLcCfg
 /* Logical Channel configuration */
 typedef struct schLcCfg
 {
+   ConfigType     configType;
    uint8_t        lcId;
    SchDrbQosInfo  *drbQos;
    SchSnssai      *snssai;
    SchDlLcCfg     dlLcCfg;
-   SchUlLcCfg     *ulLcCfg;
+   SchUlLcCfg     ulLcCfg;
 }SchLcCfg;
 
 /* Aggregate max bit rate */
@@ -1189,8 +1238,8 @@ typedef struct schUeCfg
    SchPhyCellGrpCfg   phyCellGrpCfg;
    SchSpCellCfg       spCellCfg;
    SchAggrMaxBitRate  *aggrMaxBitRate;
-   uint8_t            numLc;
-   SchLcCfg           lcCfgList[MAX_NUM_LOGICAL_CHANNELS];
+   uint8_t            numLcs;
+   SchLcCfg           schLcCfg[MAX_NUM_LC];
 }SchUeCfg;
 
 typedef struct schUeCfgRsp
@@ -1258,7 +1307,7 @@ typedef uint8_t (*MacSchCrcIndFunc) ARGS((
 
 typedef uint8_t (*MacSchDlRlcBoInfoFunc) ARGS((
         Pst         *pst,         /* Post structure */
-        DlRlcBOInfo *dlBoInfo));   /* DL BO Info */
+        DlRlcBoInfo *dlBoInfo));   /* DL BO Info */
 
 typedef uint8_t (*MacSchUeCreateReqFunc) ARGS((
         Pst         *pst,           /* Post structure */
@@ -1281,6 +1330,13 @@ typedef uint8_t (*MacSchSrUciIndFunc) ARGS((
         Pst         *pst,         /* Post structure */
         SrUciIndInfo  *uciInd));    /* UCI IND Info */
 
+typedef uint8_t (*MacSchUeReconfigReqFunc) ARGS((
+        Pst         *pst,           /* Post structure */
+        SchUeCfg    *ueCfgToSch));   /* Scheduler UE Cfg */
+
+typedef uint8_t (*SchUeReCfgRspFunc) ARGS((
+        Pst         *pst,           /* Post structure */
+        SchUeCfgRsp *cfgRsp));       /* Scheduler UE Cfg response */
 
 /* function declarations */
 uint8_t packMacSchSlotInd(Pst *pst, SlotIndInfo *slotInd);
@@ -1299,8 +1355,8 @@ uint8_t packMacSchRachInd(Pst *pst, RachIndInfo *rachInd);
 uint8_t MacSchRachInd(Pst *pst, RachIndInfo *rachInd);
 uint8_t packMacSchCrcInd(Pst *pst, CrcIndInfo *crcInd);
 uint8_t MacSchCrcInd(Pst *pst, CrcIndInfo *crcInd);
-uint8_t packMacSchDlRlcBoInfo(Pst *pst, DlRlcBOInfo *dlBoInfo);
-uint8_t MacSchDlRlcBoInfo(Pst *pst, DlRlcBOInfo *dlBoInfo);
+uint8_t packMacSchDlRlcBoInfo(Pst *pst, DlRlcBoInfo *dlBoInfo);
+uint8_t MacSchDlRlcBoInfo(Pst *pst, DlRlcBoInfo *dlBoInfo);
 uint8_t packMacSchUeCreateReq(Pst *pst, SchUeCfg *ueCfgToSch);
 uint8_t MacSchUeCreateReq(Pst *pst, SchUeCfg *ueCfgToSch);
 uint8_t packSchUeCfgRsp(Pst *pst, SchUeCfgRsp *cfgRsp);
@@ -1312,6 +1368,10 @@ uint8_t packMacSchBsr(Pst *pst, UlBufferStatusRptInd *bsrInd);
 uint8_t MacSchBsr(Pst *pst, UlBufferStatusRptInd *bsrInd);
 uint8_t packMacSchSrUciInd(Pst *pst, SrUciIndInfo *uciInd);
 uint8_t MacSchSrUciInd(Pst *pst, SrUciIndInfo *uciInd);
+uint8_t packMacSchUeReconfigReq(Pst *pst, SchUeCfg *ueCfgToSch);
+uint8_t MacSchUeReconfigReq(Pst *pst, SchUeCfg *ueCfgToSch);
+uint8_t packSchUeReconfigRsp(Pst *pst, SchUeCfgRsp *cfgRsp);
+uint8_t MacProcSchUeReconfigRsp(Pst *pst, SchUeCfgRsp *cfgRsp);
 
 /**********************************************************************
   End of file