X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=src%2Fcm%2Fmac_sch_interface.h;h=0d1ab67a9754750065bbd3c6777d7b4dac6dcf61;hb=ba99af5e5ea60b0d8eede9f3323fc9a9991fcfe3;hp=51fece286718b7c68957e021cbaaba0595373592;hpb=2b1e3e044e619637fafa8829789d6798d8f9bdb0;p=o-du%2Fl2.git diff --git a/src/cm/mac_sch_interface.h b/src/cm/mac_sch_interface.h index 51fece286..0d1ab67a9 100644 --- a/src/cm/mac_sch_interface.h +++ b/src/cm/mac_sch_interface.h @@ -41,10 +41,12 @@ #define EVENT_SLICE_CFG_RSP_TO_MAC 22 #define EVENT_SLICE_RECFG_REQ_TO_SCH 23 #define EVENT_SLICE_RECFG_RSP_TO_MAC 24 -#define EVENT_RACH_RESOURCE_REQUEST_TO_SCH 25 +#define EVENT_RACH_RESOURCE_REQUEST_TO_SCH 25 #define EVENT_RACH_RESOURCE_RESPONSE_TO_MAC 26 -#define EVENT_PAGING_IND_TO_SCH 27 - +#define EVENT_RACH_RESOURCE_RELEASE_TO_SCH 27 +#define EVENT_PAGING_IND_TO_SCH 28 +#define EVENT_DL_PAGING_ALLOC 29 +#define EVENT_DL_REL_HQ_PROC 30 /*macros*/ #define MAX_SSB_IDX 1 /* forcing it as 1 for now. Right value is 64 */ #define SCH_SSB_MASK_SIZE 1 @@ -65,6 +67,7 @@ #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_HARQ_BITS_IN_BYTES 1 #define MAX_NUM_LOGICAL_CHANNEL_GROUPS 8 #define MAX_NUM_SR_CFG_PER_CELL_GRP 8 /* Max number of scheduling request config per cell group */ #define MAX_NUM_TAGS 4 /* Max number of timing advance groups */ @@ -631,6 +634,7 @@ typedef struct schRachCfg uint8_t raContResTmr; /* RA Contention Resoultion Timer */ uint8_t rsrpThreshSsb; /* RSRP Threshold SSB */ uint8_t raRspWindow; /* RA Response Window */ + uint8_t maxMsg3Tx; /* MAximum num of msg3 tx*/ }SchRachCfg; typedef struct schBwpParams @@ -761,6 +765,53 @@ typedef struct schPlmnInfoList Snssai **snssai; /* List of supporting snssai*/ }SchPlmnInfoList; +typedef struct schHqCfgParam +{ + uint8_t maxDlDataHqTx; + uint8_t maxMsg4HqTx; + uint8_t maxUlDataHqTx; +}SchHqCfg; + +#ifdef NR_DRX +/* The following list of structures is taken from the DRX-Config section of specification 33.331. */ + +typedef struct schDrxOnDurationTimer +{ + bool onDurationTimerValInMs; + union + { + uint8_t subMilliSeconds; + uint16_t milliSeconds; + }onDurationtimerValue; +}SchDrxOnDurationTimer; + +typedef struct schDrxLongCycleStartOffset +{ + uint16_t drxLongCycleStartOffsetChoice; + uint16_t drxLongCycleStartOffsetVal; +}SchDrxLongCycleStartOffset; + +typedef struct schShortDrx +{ + uint16_t drxShortCycle; + uint8_t drxShortCycleTimer; +}SchShortDrx; + +typedef struct schDrxCfg +{ + SchDrxOnDurationTimer drxOnDurationTimer; + uint16_t drxInactivityTimer; + uint8_t drxHarqRttTimerDl; + uint8_t drxHarqRttTimerUl; + uint16_t drxRetransmissionTimerDl; + uint16_t drxRetransmissionTimerUl; + SchDrxLongCycleStartOffset drxLongCycleStartOffset; + bool shortDrxPres; + SchShortDrx shortDrx; + uint8_t drxSlotOffset; +}SchDrxCfg; +#endif + typedef struct schCellCfg { uint16_t cellId; /* Cell Id */ @@ -776,9 +827,10 @@ typedef struct schCellCfg SchBwpDlCfg schInitialDlBwp; /* Initial DL BWP */ SchBwpUlCfg schInitialUlBwp; /* Initial UL BWP */ SchPlmnInfoList plmnInfoList; /* Consits of PlmnId and Snssai list */ + SchHqCfg schHqCfg; #ifdef NR_TDD TDDCfg tddCfg; /* TDD Cfg */ -#endif +#endif }SchCellCfg; typedef struct schCellCfgCfm @@ -882,6 +934,7 @@ typedef struct lcSchInfo typedef struct dlMsgSchedInfo { + bool isRetx; uint8_t numLc; LcSchInfo lcSchInfo[MAX_NUM_LC]; /* Scheduled LC info */ BwpCfg bwp; @@ -981,6 +1034,20 @@ typedef struct dlSchedInfo }DlSchedInfo; +typedef struct dlPageAlloc +{ + uint16_t cellId; + SlotTimingInfo dlPageTime; + uint8_t ssbIdx; + bool shortMsgInd; + uint8_t shortMsg; + BwpCfg bwp; + PdcchCfg pagePdcchCfg; + PdschCfg pagePdschCfg; + uint16_t dlPagePduLen; + uint8_t *dlPagePdu; +}DlPageAlloc; + typedef struct tbInfo { uint8_t qamOrder; /* Modulation Order */ @@ -1132,6 +1199,9 @@ typedef struct schMacCellGrpCfg SchSchedReqCfg schedReqCfg; SchTagCfg tagCfg; SchPhrCfg phrCfg; /* To be used only if phrCfgSetupPres is true */ +#ifdef NR_DRX + SchDrxCfg drxCfg; /* Drx configuration */ +#endif }SchMacCellGrpCfg; /* Physical Cell Group Configuration */ @@ -1623,6 +1693,13 @@ typedef struct schRachRsrcRsp SchCfraResource cfraResource; }SchRachRsrcRsp; +typedef struct schRachRsrcRel +{ + uint16_t cellId; + uint16_t crnti; + SchCfraResource cfraResource; +}SchRachRsrcRel; + typedef struct schUeDelete { uint16_t cellId; @@ -1673,6 +1750,15 @@ typedef struct srUciIndInfo uint8_t srPayload[MAX_SR_BITS_IN_BYTES]; }SrUciIndInfo; +typedef struct harqUciIndInfo +{ + uint16_t cellId; + uint16_t crnti; + SlotTimingInfo slotInd; + uint8_t numHarq; + uint8_t harqPayload[MAX_HARQ_BITS_IN_BYTES]; +}HarqUciIndInfo; + typedef struct schRrmPolicyRatio { uint8_t policyMaxRatio; @@ -1714,6 +1800,19 @@ typedef struct schPageInd uint8_t *pagePdu; }SchPageInd; +typedef struct schUeHqInfo +{ + uint16_t crnti; + uint8_t hqProcId; +}SchUeHqInfo; + +typedef struct schRlsHqInfo +{ + uint16_t cellId; + uint8_t numUes; + SchUeHqInfo *ueHqInfo; +}SchRlsHqInfo; + /* function pointers */ typedef uint8_t (*SchCellCfgCfmFunc) ARGS(( Pst *pst, /* Post Structure */ @@ -1730,6 +1829,11 @@ typedef uint8_t (*SchMacDlAllocFunc) ARGS(( DlSchedInfo *dlSchedInfo /* dl allocation Info */ )); +typedef uint8_t (*SchMacDlPageAllocFunc) ARGS(( + Pst *pst, /* Post Structure */ + DlPageAlloc *dlPageAlloc /* dl Page allocation Info */ + )); + typedef uint8_t (*SchMacUlSchInfoFunc) ARGS(( Pst *pst, /* Post Structure */ UlSchedInfo *ulSchedInfo /* UL Alloc Sch Info */ @@ -1764,6 +1868,10 @@ typedef uint8_t (*MacSchBsrFunc) ARGS(( UlBufferStatusRptInd *bsrInd )); +typedef uint8_t (*MacSchHarqUciIndFunc) ARGS(( + Pst *pst, /* Post structure */ + HarqUciIndInfo *uciInd)); /* UCI IND Info */ + typedef uint8_t (*MacSchSrUciIndFunc) ARGS(( Pst *pst, /* Post structure */ SrUciIndInfo *uciInd)); /* UCI IND Info */ @@ -1784,6 +1892,10 @@ typedef uint8_t (*SchRachRsrcRspFunc) ARGS(( Pst *pst, /* Post structure */ SchRachRsrcRsp *schRachRsrcRsp)); /* RACH resource request to MAC */ +typedef uint8_t (*MacSchRachRsrcRelFunc) ARGS(( + Pst *pst, /* Post structure */ + SchRachRsrcRel *schRachRsrcRel)); /* RACH resource release to SCH */ + typedef uint8_t (*MacSchUeDeleteReqFunc) ARGS(( Pst *pst, /* Post structure */ SchUeDelete *schUeDel)); /*Scheduler UE Del*/ @@ -1822,6 +1934,10 @@ typedef uint8_t (*MacSchPagingIndFunc) ARGS(( Pst *pst, /* Post structure */ SchPageInd *schPagingInd)); /* Paging Indication */ +typedef uint8_t (*SchMacDlReleaseHarqFunc) ARGS(( + Pst *pst, /* Post structure */ + SchRlsHqInfo *rlsHqInfo)); /* Release Harq proc */ + /* function declarations */ uint8_t packMacSchSlotInd(Pst *pst, SlotTimingInfo *slotInd); uint8_t packSchMacDlAlloc(Pst *pst, DlSchedInfo *dlSchedInfo); @@ -1850,6 +1966,8 @@ uint8_t unpackMacSchSlotInd(MacSchSlotIndFunc func, Pst *pst, Buffer *mBuf); uint8_t packMacSchBsr(Pst *pst, UlBufferStatusRptInd *bsrInd); uint8_t MacSchBsr(Pst *pst, UlBufferStatusRptInd *bsrInd); uint8_t packMacSchSrUciInd(Pst *pst, SrUciIndInfo *uciInd); +uint8_t packMacSchHarqUciInd(Pst *pst, HarqUciIndInfo *uciInd); +uint8_t MacSchHarqUciInd(Pst *pst, HarqUciIndInfo *uciInd); uint8_t MacSchSrUciInd(Pst *pst, SrUciIndInfo *uciInd); uint8_t packMacSchModUeConfigReq(Pst *pst, SchUeCfg *ueCfgToSch); uint8_t MacSchModUeConfigReq(Pst *pst, SchUeCfg *ueCfgToSch); @@ -1859,6 +1977,8 @@ uint8_t packMacSchRachRsrcReq(Pst *pst, SchRachRsrcReq *schRachRsrcReq); uint8_t MacSchRachRsrcReq(Pst *pst, SchRachRsrcReq *schRachRsrcReq); uint8_t packSchRachRsrcRsp(Pst *pst, SchRachRsrcRsp *schRachRsrcRsp); uint8_t MacProcSchRachRsrcRsp(Pst *pst, SchRachRsrcRsp *schRachRsrcRsp); +uint8_t packMacSchRachRsrcRel(Pst *pst, SchRachRsrcRel *schRachRsrcRel); +uint8_t MacSchRachRsrcRel(Pst *pst, SchRachRsrcRel *schRachRsrcRel); uint8_t packMacSchUeDeleteReq(Pst *pst, SchUeDelete *schUeDel); uint8_t MacSchUeDeleteReq(Pst *pst, SchUeDelete *ueDelete); uint8_t packSchUeDeleteRsp(Pst *pst, SchUeDeleteRsp *delRsp); @@ -1877,6 +1997,10 @@ uint8_t packSchSliceReCfgRsp(Pst *pst, SchSliceCfgRsp *cfgRsp); uint8_t MacProcSchSliceReCfgRsp(Pst *pst, SchSliceCfgRsp *sliceReCfgrsp); uint8_t packMacSchPagingInd(Pst *pst, SchPageInd *pageInd); uint8_t MacSchPagingInd(Pst *pst, SchPageInd *pageInd); +uint8_t packSchMacDlPageAlloc(Pst *pst, DlPageAlloc *dlPageAlloc); +uint8_t MacProcDlPageAlloc(Pst *pst, DlPageAlloc *dlPageAlloc); +uint8_t packSchMacDlReleaseHarq(Pst *pst, SchRlsHqInfo *rlsHqInfo); +uint8_t MacSchReleaseDlHarqProc(Pst *pst, SchRlsHqInfo *rlsHqInfo); /********************************************************************** End of file **********************************************************************/