X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=src%2Fcm%2Fmac_sch_interface.h;h=f6eae33360e2d06e6d9b2b5ddbd7853fd77638ae;hb=a6fdf00681f781fbccf7aa4bf95582f20e3039bb;hp=0d1ab67a9754750065bbd3c6777d7b4dac6dcf61;hpb=2bd852089c3226f721d83b30f816b90f803237f6;p=o-du%2Fl2.git diff --git a/src/cm/mac_sch_interface.h b/src/cm/mac_sch_interface.h index 0d1ab67a9..f6eae3336 100644 --- a/src/cm/mac_sch_interface.h +++ b/src/cm/mac_sch_interface.h @@ -47,6 +47,7 @@ #define EVENT_PAGING_IND_TO_SCH 28 #define EVENT_DL_PAGING_ALLOC 29 #define EVENT_DL_REL_HQ_PROC 30 +#define EVENT_DL_HARQ_IND_TO_SCH 31 /*macros*/ #define MAX_SSB_IDX 1 /* forcing it as 1 for now. Right value is 64 */ #define SCH_SSB_MASK_SIZE 1 @@ -105,9 +106,9 @@ #define DEFAULT_K2_VALUE_FOR_SCS60 2 #define DEFAULT_K2_VALUE_FOR_SCS120 3 -#define ADD_DELTA_TO_TIME(crntTime, toFill, incr) \ +#define ADD_DELTA_TO_TIME(crntTime, toFill, incr, numOfSlot) \ { \ - if ((crntTime.slot + incr) > (MAX_SLOTS - 1)) \ + if ((crntTime.slot + incr) > (numOfSlot - 1)) \ { \ toFill.sfn = (crntTime.sfn + 1); \ } \ @@ -115,7 +116,7 @@ { \ toFill.sfn = crntTime.sfn; \ } \ - toFill.slot = (crntTime.slot + incr) % MAX_SLOTS; \ + toFill.slot = (crntTime.slot + incr) % numOfSlot; \ if (toFill.sfn >= MAX_SFN) \ { \ toFill.sfn%=MAX_SFN; \ @@ -836,7 +837,8 @@ typedef struct schCellCfg typedef struct schCellCfgCfm { uint16_t cellId; /* Cell Id */ - SchMacRsp rsp; + SchMacRsp rsp; + SchFailureCause cause; }SchCellCfgCfm; typedef struct ssbInfo @@ -1200,6 +1202,7 @@ typedef struct schMacCellGrpCfg SchTagCfg tagCfg; SchPhrCfg phrCfg; /* To be used only if phrCfgSetupPres is true */ #ifdef NR_DRX + bool drxCfgPresent; SchDrxCfg drxCfg; /* Drx configuration */ #endif }SchMacCellGrpCfg; @@ -1523,19 +1526,39 @@ typedef struct schUlBwpInfo uint8_t bwpId; }SchUlBwpInfo; +/* Serving cell configuration */ +typedef struct schServCellRecfgInfo +{ + SchInitalDlBwp initDlBwp; + uint8_t numDlBwpToAddOrMod; + SchDlBwpInfo dlBwpToAddOrModList[MAX_NUM_BWP]; + uint8_t numDlBwpToRel; + SchDlBwpInfo dlBwpToRelList[MAX_NUM_BWP]; + uint8_t firstActvDlBwpId; + uint8_t defaultDlBwpId; + uint8_t *bwpInactivityTmr; + SchPdschServCellCfg pdschServCellCfg; + SchInitialUlBwp initUlBwp; + uint8_t numUlBwpToAddOrMod; + SchUlBwpInfo ulBwpToAddOrModList[MAX_NUM_BWP]; + uint8_t numUlBwpToRel; + SchUlBwpInfo ulBwpToRelList[MAX_NUM_BWP]; + uint8_t firstActvUlBwpId; +}SchServCellRecfgInfo; + /* Serving cell configuration */ typedef struct schServCellCfgInfo { SchInitalDlBwp initDlBwp; uint8_t numDlBwpToAdd; - SchDlBwpInfo DlBwpToAddList[MAX_NUM_BWP]; + SchDlBwpInfo dlBwpToAddList[MAX_NUM_BWP]; uint8_t firstActvDlBwpId; uint8_t defaultDlBwpId; uint8_t *bwpInactivityTmr; SchPdschServCellCfg pdschServCellCfg; SchInitialUlBwp initUlBwp; uint8_t numUlBwpToAdd; - SchUlBwpInfo UlBwpToAddList[MAX_NUM_BWP]; + SchUlBwpInfo ulBwpToAddList[MAX_NUM_BWP]; uint8_t firstActvUlBwpId; }SchServCellCfgInfo; @@ -1596,6 +1619,13 @@ typedef struct schSpCellCfg SchServCellCfgInfo servCellCfg; }SchSpCellCfg; +/* Special cell Reconfiguration */ +typedef struct schSpCellRecfg +{ + uint8_t servCellIdx; + SchServCellRecfgInfo servCellRecfg; +}SchSpCellRecfg; + /* Uplink logical channel configuration */ typedef struct SchUlLcCfg { @@ -1615,10 +1645,9 @@ typedef struct schDlLcCfg /* Logical Channel configuration */ typedef struct schLcCfg { - ConfigType configType; uint8_t lcId; - SchDrbQosInfo *drbQos; Snssai *snssai; + SchDrbQosInfo *drbQos; SchDlLcCfg dlLcCfg; SchUlLcCfg ulLcCfg; }SchLcCfg; @@ -1637,10 +1666,11 @@ typedef struct schModulationInfo }SchModulationInfo; /* UE configuration */ -typedef struct schUeCfg +typedef struct schUeCfgReq { uint16_t cellId; uint8_t ueId; + uint8_t beamIdx; uint16_t crnti; bool macCellGrpCfgPres; SchMacCellGrpCfg macCellGrpCfg; @@ -1651,26 +1681,58 @@ typedef struct schUeCfg SchAmbrCfg *ambrCfg; SchModulationInfo dlModInfo; SchModulationInfo ulModInfo; - uint8_t numLcs; + uint8_t numLcsToAdd; SchLcCfg schLcCfg[MAX_NUM_LC]; +}SchUeCfgReq; + +/* UE Re-configuration */ +typedef struct schUeRecfgReq +{ + uint16_t cellId; + uint8_t ueId; + uint8_t beamIdx; + uint16_t crnti; + bool macCellGrpRecfgPres; + SchMacCellGrpCfg macCellGrpRecfg; + bool phyCellGrpRecfgPres; + SchPhyCellGrpCfg phyCellGrpRecfg; + bool spCellRecfgPres; + SchSpCellRecfg spCellRecfg; + SchAmbrCfg *ambrRecfg; + SchModulationInfo dlModInfo; + SchModulationInfo ulModInfo; + uint8_t numLcsToAdd; + SchLcCfg schLcCfgAdd[MAX_NUM_LC]; + uint8_t numLcsToDel; + uint8_t lcIdToDel[MAX_NUM_LC]; + uint8_t numLcsToMod; + SchLcCfg schLcCfgMod[MAX_NUM_LC]; SchDataTransmission dataTransmissionInfo; -}SchUeCfg; +#ifdef NR_DRX + bool drxConfigIndicatorRelease; +#endif +}SchUeRecfgReq; typedef struct schUeCfgRsp { uint16_t cellId; + uint8_t beamIdx; uint16_t ueId; uint16_t crnti; SchMacRsp rsp; SchFailureCause cause; }SchUeCfgRsp; +/*As per WG8, UE ReCFG and UECFG have same structure definition*/ +typedef struct schUeCfgRsp SchUeRecfgRsp; + typedef struct schRachRsrcReq { - uint16_t cellId; - uint16_t crnti; - uint8_t numSsb; - uint8_t ssbIdx[MAX_NUM_SSB]; + SlotTimingInfo slotInd; + uint16_t cellId; + uint16_t crnti; + uint8_t numSsb; + uint8_t ssbIdx[MAX_NUM_SSB]; }SchRachRsrcReq; typedef struct schCfraSsbResource @@ -1695,6 +1757,7 @@ typedef struct schRachRsrcRsp typedef struct schRachRsrcRel { + SlotTimingInfo slotInd; uint16_t cellId; uint16_t crnti; SchCfraResource cfraResource; @@ -1714,16 +1777,17 @@ typedef struct schUeDeleteRsp ErrorCause cause; }SchUeDeleteRsp; -typedef struct schCellDelete +typedef struct schCellDeleteReq { uint16_t cellId; -}SchCellDelete; +}SchCellDeleteReq; typedef struct schCellDeleteRsp { - uint16_t cellId; - SchMacRsp rsp; + uint16_t cellId; + SchMacRsp rsp; + SchFailureCause cause; }SchCellDeleteRsp; typedef struct dataVolInfo @@ -1750,14 +1814,14 @@ typedef struct srUciIndInfo uint8_t srPayload[MAX_SR_BITS_IN_BYTES]; }SrUciIndInfo; -typedef struct harqUciIndInfo +typedef struct dlHarqInd { uint16_t cellId; uint16_t crnti; SlotTimingInfo slotInd; uint8_t numHarq; uint8_t harqPayload[MAX_HARQ_BITS_IN_BYTES]; -}HarqUciIndInfo; +}DlHarqInd; typedef struct schRrmPolicyRatio { @@ -1785,12 +1849,16 @@ typedef struct sliceRsp RspCause cause; }SliceRsp; -typedef struct schSliceRsp +typedef struct schSliceCfgRsp { uint8_t numSliceCfgRsp; SliceRsp **listOfSliceCfgRsp; }SchSliceCfgRsp; +/*As per ORAN-WG8, Slice Cfg and Recfg are same structures*/ +typedef struct schSliceCfgReq SchSliceRecfgReq; +typedef struct schSliceCfgRsp SchSliceRecfgRsp; + typedef struct schPageInd { uint16_t cellId; @@ -1853,7 +1921,7 @@ typedef uint8_t (*MacSchDlRlcBoInfoFunc) ARGS(( typedef uint8_t (*MacSchAddUeConfigReqFunc) ARGS(( Pst *pst, /* Post structure */ - SchUeCfg *ueCfgToSch)); /* Scheduler UE Cfg */ + SchUeCfgReq *ueCfgToSch)); /* Scheduler UE Cfg */ typedef uint8_t (*SchUeCfgRspFunc) ARGS(( Pst *pst, /* Post structure */ @@ -1868,9 +1936,9 @@ typedef uint8_t (*MacSchBsrFunc) ARGS(( UlBufferStatusRptInd *bsrInd )); -typedef uint8_t (*MacSchHarqUciIndFunc) ARGS(( +typedef uint8_t (*MacSchDlHarqIndFunc) ARGS(( Pst *pst, /* Post structure */ - HarqUciIndInfo *uciInd)); /* UCI IND Info */ + DlHarqInd *dlHarqInd)); /* Dl HARQ IND Info */ typedef uint8_t (*MacSchSrUciIndFunc) ARGS(( Pst *pst, /* Post structure */ @@ -1878,11 +1946,11 @@ typedef uint8_t (*MacSchSrUciIndFunc) ARGS(( typedef uint8_t (*MacSchModUeConfigReqFunc) ARGS(( Pst *pst, /* Post structure */ - SchUeCfg *ueCfgToSch)); /* Scheduler UE Cfg */ + SchUeRecfgReq *ueRecfgToSch)); /* Scheduler UE Recfg */ -typedef uint8_t (*SchUeReCfgRspFunc) ARGS(( +typedef uint8_t (*SchUeRecfgRspFunc) ARGS(( Pst *pst, /* Post structure */ - SchUeCfgRsp *cfgRsp)); /* Scheduler UE Cfg response */ + SchUeRecfgRsp *recfgRsp)); /* Scheduler UE Cfg response */ typedef uint8_t (*MacSchRachRsrcReqFunc) ARGS(( Pst *pst, /* Post structure */ @@ -1906,7 +1974,7 @@ typedef uint8_t (*SchUeDeleteRspFunc) ARGS(( typedef uint8_t (*MacSchCellDeleteReqFunc) ARGS(( Pst *pst, /* Post structure */ - SchCellDelete *schCellDelete)); /*Scheduler UE Del*/ + SchCellDeleteReq *schCellDelete)); /*Scheduler UE Del*/ typedef uint8_t (*SchCellDeleteRspFunc) ARGS(( Pst *pst, /* Post structure */ @@ -1921,13 +1989,13 @@ typedef uint8_t (*SchSliceCfgRspFunc) ARGS(( SchSliceCfgRsp *schSliceCfgRsp /* Cell Cfg Cfm */ )); -typedef uint8_t (*MacSchSliceReCfgReqFunc) ARGS(( +typedef uint8_t (*MacSchSliceRecfgReqFunc) ARGS(( Pst *pst, /* Post structure */ - SchSliceCfgReq *schSliceReCfgReq)); /* Scheduler Slice ReCfg Req */ + SchSliceRecfgReq *schSliceRecfgReq)); /* Scheduler Slice Recfg Req */ -typedef uint8_t (*SchSliceReCfgRspFunc) ARGS(( +typedef uint8_t (*SchSliceRecfgRspFunc) ARGS(( Pst *pst, /* Post Structure */ - SchSliceCfgRsp *schSliceReCfgRsp /* Cell ReCfg Cfm */ + SchSliceRecfgRsp *schSliceRecfgRsp /* Cell Recfg Cfm */ )); typedef uint8_t (*MacSchPagingIndFunc) ARGS(( @@ -1956,23 +2024,25 @@ 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 packMacSchAddUeConfigReq(Pst *pst, SchUeCfg *ueCfgToSch); -uint8_t MacSchAddUeConfigReq(Pst *pst, SchUeCfg *ueCfgToSch); +uint8_t packMacSchAddUeConfigReq(Pst *pst, SchUeCfgReq *ueCfgToSch); +uint8_t MacSchAddUeConfigReq(Pst *pst, SchUeCfgReq *ueCfgToSch); uint8_t packSchUeCfgRsp(Pst *pst, SchUeCfgRsp *cfgRsp); uint8_t MacProcSchUeCfgRsp(Pst *pst, SchUeCfgRsp *cfgRsp); +uint8_t packSchUeRecfgRsp(Pst *pst, SchUeRecfgRsp *cfgRsp); +uint8_t MacProcSchUeRecfgRsp(Pst *pst, SchUeRecfgRsp *reCfgRsp); uint8_t MacSchSlotInd ARGS((Pst * pst, SlotTimingInfo * slotInd)); uint8_t packMacSchSlotInd(Pst * pst, SlotTimingInfo * slotInd); 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 packMacSchDlHarqInd(Pst *pst, DlHarqInd *dlHarqInd); +uint8_t MacSchDlHarqInd(Pst *pst, DlHarqInd *dlHarqInd); 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); +uint8_t packMacSchModUeConfigReq(Pst *pst, SchUeRecfgReq *ueRecfgToSch); +uint8_t MacSchModUeConfigReq(Pst *pst, SchUeRecfgReq *ueRecfgToSch); +uint8_t packSchUeReconfigRsp(Pst *pst, SchUeRecfgRsp *recfgRsp); +uint8_t MacProcSchUeReconfigRsp(Pst *pst, SchUeRecfgRsp *recfgRsp); uint8_t packMacSchRachRsrcReq(Pst *pst, SchRachRsrcReq *schRachRsrcReq); uint8_t MacSchRachRsrcReq(Pst *pst, SchRachRsrcReq *schRachRsrcReq); uint8_t packSchRachRsrcRsp(Pst *pst, SchRachRsrcRsp *schRachRsrcRsp); @@ -1983,18 +2053,18 @@ uint8_t packMacSchUeDeleteReq(Pst *pst, SchUeDelete *schUeDel); uint8_t MacSchUeDeleteReq(Pst *pst, SchUeDelete *ueDelete); uint8_t packSchUeDeleteRsp(Pst *pst, SchUeDeleteRsp *delRsp); uint8_t MacProcSchUeDeleteRsp(Pst *pst, SchUeDeleteRsp *schUeDelRsp); -uint8_t packMacSchCellDeleteReq(Pst *pst, SchCellDelete *schCellDelete); -uint8_t MacSchCellDeleteReq(Pst *pst, SchCellDelete *schCellDelete); +uint8_t packMacSchCellDeleteReq(Pst *pst, SchCellDeleteReq *schCellDelete); +uint8_t MacSchCellDeleteReq(Pst *pst, SchCellDeleteReq *schCellDelete); uint8_t packSchCellDeleteRsp(Pst *pst, SchCellDeleteRsp *schCellDeleteRsp); uint8_t MacProcSchCellDeleteRsp(Pst *pst, SchCellDeleteRsp *schCellDeleteRsp); uint8_t packMacSchSliceCfgReq(Pst *pst, SchSliceCfgReq *cfgReq); uint8_t MacSchSliceCfgReq(Pst *pst, SchSliceCfgReq *schSliceCfgReq); uint8_t packSchSliceCfgRsp(Pst *pst, SchSliceCfgRsp *cfgRsp); uint8_t MacProcSchSliceCfgRsp(Pst *pst, SchSliceCfgRsp *cfgRsp); -uint8_t packMacSchSliceReCfgReq(Pst *pst, SchSliceCfgReq *cfgReq); -uint8_t MacSchSliceReCfgReq(Pst *pst, SchSliceCfgReq *schSliceCfgReq); -uint8_t packSchSliceReCfgRsp(Pst *pst, SchSliceCfgRsp *cfgRsp); -uint8_t MacProcSchSliceReCfgRsp(Pst *pst, SchSliceCfgRsp *sliceReCfgrsp); +uint8_t packMacSchSliceRecfgReq(Pst *pst, SchSliceRecfgReq *recfgReq); +uint8_t MacSchSliceRecfgReq(Pst *pst, SchSliceRecfgReq *schSliceRecfgReq); +uint8_t packSchSliceRecfgRsp(Pst *pst, SchSliceRecfgRsp *schSliceRecfgRsp); +uint8_t MacProcSchSliceRecfgRsp(Pst *pst, SchSliceRecfgRsp *sliceRecfgrsp); uint8_t packMacSchPagingInd(Pst *pst, SchPageInd *pageInd); uint8_t MacSchPagingInd(Pst *pst, SchPageInd *pageInd); uint8_t packSchMacDlPageAlloc(Pst *pst, DlPageAlloc *dlPageAlloc);