Changes to make number of slots and BW generic
[o-du/l2.git] / src / cm / mac_sch_interface.h
index 26fe41a..76145f9 100644 (file)
 #define EVENT_RACH_IND_TO_SCH        5
 #define EVENT_CRC_IND_TO_SCH         6
 #define EVENT_DL_RLC_BO_INFO_TO_SCH  7
-#define EVENT_UE_CREATE_REQ_TO_SCH   8
-#define EVENT_UE_CREATE_RSP_TO_MAC   9
+#define EVENT_ADD_UE_CONFIG_REQ_TO_SCH   8
+#define EVENT_UE_CONFIG_RSP_TO_MAC   9
 #define EVENT_SLOT_IND_TO_SCH        10
 #define EVENT_SHORT_BSR              11
 #define EVENT_UCI_IND_TO_SCH         12
+#define EVENT_MODIFY_UE_CONFIG_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,
@@ -337,6 +356,13 @@ typedef enum
    FORMAT1_1
 }FormatType;
 
+typedef enum
+{
+   SCH_MCS_TABLE_QAM_64,
+   SCH_MCS_TABLE_QAM_256,
+   SCH_MCS_TABLE_QAM_64_LOW_SE
+}SchMcsTable;
+
 /*structures*/
 typedef struct timeDomainAlloc
 {
@@ -485,7 +511,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 */
@@ -596,16 +622,16 @@ typedef struct schBwpUlCfg
 
 typedef struct schCellCfg
 {
-   uint16_t    cellId;           /* Cell Id */
-   uint16_t    phyCellId;        /* Physical cell id */
-   uint8_t     bandwidth;        /* Supported B/W */
+   uint16_t       cellId;           /* Cell Id */
+   uint16_t       phyCellId;        /* Physical cell id */
+   uint8_t        bandwidth;        /* Supported B/W */
+   uint8_t        numerology;       /* Supported numerology */
    SchDuplexMode  dupMode;          /* Duplex type: TDD/FDD */
-   SchSsbCfg   ssbSchCfg;        /* SSB config */
-   SchSib1Cfg  sib1SchCfg;       /* SIB1 config */
-   SchRachCfg  schRachCfg;       /* PRACH config */
-   SchBwpDlCfg schInitialDlBwp;  /* Initial DL BWP */
-   SchBwpUlCfg schInitialUlBwp;  /* Initial UL BWP */
-   uint8_t     puschMu;          /* PUSCH MU */
+   SchSsbCfg      ssbSchCfg;        /* SSB config */
+   SchSib1Cfg     sib1SchCfg;       /* SIB1 config */
+   SchRachCfg     schRachCfg;       /* PRACH config */
+   SchBwpDlCfg    schInitialDlBwp;  /* Initial DL BWP */
+   SchBwpUlCfg    schInitialUlBwp;  /* Initial UL BWP */
 }SchCellCfg;
 
 typedef struct schCellCfgCfm
@@ -673,7 +699,7 @@ typedef struct rarAlloc
    PdschCfg rarPdschCfg;
 }RarAlloc;
 
-typedef struct msg4Info
+typedef struct dlMsgInfo
 {
    uint16_t crnti;
    uint8_t  ndi;
@@ -683,24 +709,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,23 +807,29 @@ 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
 {
-   uint8_t  mcs;    /* MCS */
-   uint8_t  ndi;    /* NDI */
-   uint8_t  rv;     /* Redundancy Version */
-   uint16_t tbSize; /* TB Size */
+   uint8_t  qamOrder;  /* Modulation Order */
+   uint8_t  mcs;       /* MCS */
+   SchMcsTable  mcsTable;  /* MCS Table */
+   uint8_t  ndi;       /* NDI */
+   uint8_t  rv;        /* Redundancy Version */
+   uint16_t tbSize;    /* TB Size */
 }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 +896,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 +1008,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 +1038,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 +1102,7 @@ typedef struct schPuschTimeDomRsrcAlloc
 /* PUSCH Configuration */
 typedef struct schPuschCfg
 {
+   uint8_t                    dataScramblingId;
    SchDmrsUlCfg               dmrsUlCfgForPuschMapTypeA;
    SchResourceAllocType       resourceAllocType;
    uint8_t                    numTimeDomRsrcAlloc;
@@ -1122,7 +1179,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,19 +1223,27 @@ 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 */
-typedef struct aggrMaxBitRate
+typedef struct schAmbrCfg
 {
-   uint32_t   ulBitRate;
-   uint32_t   dlBitRate;
-}SchAggrMaxBitRate;
+   uint32_t   ulBr;   /* Ul BitRate */
+   uint32_t   dlBr;   /* Dl BitRate */
+}SchAmbrCfg;
+
+typedef struct schModulationInfo
+{
+   uint8_t      modOrder;
+   uint8_t      mcsIndex;
+   SchMcsTable  mcsTable;
+}SchModulationInfo;
 
 /* UE configuration */
 typedef struct schUeCfg
@@ -1188,9 +1253,11 @@ typedef struct schUeCfg
    SchMacCellGrpCfg   macCellGrpCfg;
    SchPhyCellGrpCfg   phyCellGrpCfg;
    SchSpCellCfg       spCellCfg;
-   SchAggrMaxBitRate  *aggrMaxBitRate;
-   uint8_t            numLc;
-   SchLcCfg           lcCfgList[MAX_NUM_LOGICAL_CHANNELS];
+   SchAmbrCfg         *ambrCfg;
+   SchModulationInfo  dlModInfo;
+   SchModulationInfo  ulModInfo;
+   uint8_t            numLcs;
+   SchLcCfg           schLcCfg[MAX_NUM_LC];
 }SchUeCfg;
 
 typedef struct schUeCfgRsp
@@ -1258,9 +1325,9 @@ 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((
+typedef uint8_t (*MacSchAddUeConfigReqFunc) ARGS((
         Pst         *pst,           /* Post structure */
         SchUeCfg    *ueCfgToSch));   /* Scheduler UE Cfg */
 
@@ -1281,6 +1348,13 @@ typedef uint8_t (*MacSchSrUciIndFunc) ARGS((
         Pst         *pst,         /* Post structure */
         SrUciIndInfo  *uciInd));    /* UCI IND Info */
 
+typedef uint8_t (*MacSchModUeConfigReqFunc) 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,10 +1373,10 @@ 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 packMacSchUeCreateReq(Pst *pst, SchUeCfg *ueCfgToSch);
-uint8_t MacSchUeCreateReq(Pst *pst, SchUeCfg *ueCfgToSch);
+uint8_t packMacSchDlRlcBoInfo(Pst *pst, DlRlcBoInfo *dlBoInfo);
+uint8_t MacSchDlRlcBoInfo(Pst *pst, DlRlcBoInfo *dlBoInfo);
+uint8_t packMacSchAddUeConfigReq(Pst *pst, SchUeCfg *ueCfgToSch);
+uint8_t MacSchAddUeConfigReq(Pst *pst, SchUeCfg *ueCfgToSch);
 uint8_t packSchUeCfgRsp(Pst *pst, SchUeCfgRsp *cfgRsp);
 uint8_t MacProcSchUeCfgRsp(Pst *pst, SchUeCfgRsp *cfgRsp);
 uint8_t MacSchSlotInd ARGS((Pst * pst, SlotIndInfo * slotInd));
@@ -1312,6 +1386,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 packMacSchModUeConfigReq(Pst *pst, SchUeCfg *ueCfgToSch);
+uint8_t MacSchModUeConfigReq(Pst *pst, SchUeCfg *ueCfgToSch);
+uint8_t packSchUeReconfigRsp(Pst *pst, SchUeCfgRsp *cfgRsp);
+uint8_t MacProcSchUeReconfigRsp(Pst *pst, SchUeCfgRsp *cfgRsp);
 
 /**********************************************************************
   End of file