X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;ds=sidebyside;f=src%2Fcm%2Fmac_sch_interface.h;h=285d2000d80ea799f0f51d902f03bc3c166c4bd0;hb=9665386af091888e0e62b83ce91c25c973eb33aa;hp=83e9eb5b02f66c044570f9aa9d238f0bee1ecd3b;hpb=791615463ef2fcc0d6e0697d7860e6e6a56bd9a6;p=o-du%2Fl2.git diff --git a/src/cm/mac_sch_interface.h b/src/cm/mac_sch_interface.h index 83e9eb5b0..285d2000d 100644 --- a/src/cm/mac_sch_interface.h +++ b/src/cm/mac_sch_interface.h @@ -31,6 +31,10 @@ #define EVENT_UCI_IND_TO_SCH 12 #define EVENT_MODIFY_UE_CONFIG_REQ_TO_SCH 13 #define EVENT_UE_RECONFIG_RSP_TO_MAC 14 +#define EVENT_UE_DELETE_REQ_TO_SCH 15 +#define EVENT_UE_DELETE_RSP_TO_MAC 16 +#define EVENT_CELL_DELETE_REQ_TO_SCH 17 +#define EVENT_CELL_DELETE_RSP_TO_MAC 18 /*macros*/ @@ -62,7 +66,11 @@ #define MAX_SR_BITS_IN_BYTES 1 #define MAX_NUM_LOGICAL_CHANNEL_GROUPS 8 /* can we have a common numslot numscs between mac sch */ +#ifdef NR_TDD +#define MAX_SLOTS 20 +#else #define MAX_SLOTS 10 +#endif #define MAX_SFN 1024 #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 */ @@ -74,6 +82,14 @@ #define MAX_NUM_DL_ALLOC 16 /* Max number of pdsch time domain downlink allocation */ #define MAX_NUM_UL_ALLOC 16 /* Max number of pusch time domain uplink allocation */ +/* PUCCH Configuration Macro */ +#define MAX_NUM_PUCCH_RESRC 128 +#define MAX_NUM_PUCCH_RESRC_SET 4 +#define MAX_NUM_PUCCH_PER_RESRC_SET 32 +#define MAX_NUM_SPATIAL_RELATIONS 8 +#define MAX_NUM_PUCCH_P0_PER_SET 8 +#define MAX_NUM_PATH_LOSS_REF_RS 4 +#define MAX_NUM_DL_DATA_TO_UL_ACK 15 #define SD_SIZE 3 #define ADD_DELTA_TO_TIME(crntTime, toFill, incr) \ @@ -113,6 +129,13 @@ typedef enum SR_PROHIBIT_MS128 }SchSrProhibitTimer; +typedef enum +{ + NOT_APPLICABLE, + INVALID_CELLID, + INVALID_UEIDX +}ErrorCause; + typedef enum { SR_TRANS_MAX_N4, @@ -356,6 +379,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 { @@ -429,7 +459,7 @@ typedef struct dmrsInfo typedef struct pdschFreqAlloc { uint8_t resourceAllocType; - /* since we are using type-1, hence rbBitmap excluded */ + /* since we are using type-1, rbBitmap excluded */ FreqDomainAlloc freqAlloc; uint8_t vrbPrbMapping; } PdschFreqAlloc; @@ -515,7 +545,6 @@ typedef struct { /* parameters recieved from DU-APP */ uint16_t sib1PduLen; - uint16_t sib1NewTxPeriod; uint16_t sib1RepetitionPeriod; uint8_t coresetZeroIndex; /* derived from 4 LSB of pdcchSib1 present in MIB */ uint8_t searchSpaceZeroIndex; /* derived from 4 MSB of pdcchSib1 present in MIB */ @@ -615,16 +644,21 @@ 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 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 */ + uint8_t bandwidth; /* Supported B/W */ + uint32_t dlFreq; /* DL Frequency */ + uint32_t ulFreq; /* UL Frequency */ + SchSsbCfg ssbSchCfg; /* SSB config */ + SchSib1Cfg sib1SchCfg; /* SIB1 config */ + SchRachCfg schRachCfg; /* PRACH config */ + SchBwpDlCfg schInitialDlBwp; /* Initial DL BWP */ + SchBwpUlCfg schInitialUlBwp; /* Initial UL BWP */ +#ifdef NR_TDD + TDDCfg tddCfg; /* TDD Cfg */ +#endif }SchCellCfg; typedef struct schCellCfgCfm @@ -710,7 +744,7 @@ typedef struct dlMsgInfo typedef struct lcSchInfo { uint8_t lcId; - uint16_t schBytes; /* Number of scheduled bytes */ + uint32_t schBytes; /* Number of scheduled bytes */ }LcSchInfo; typedef struct dlMsgAlloc @@ -812,10 +846,12 @@ typedef struct 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 @@ -831,6 +867,16 @@ typedef struct schPuschInfo uint8_t dmrsAddPos; }SchPuschInfo; +typedef struct schPucchFormatCfg +{ + uint8_t interSlotFreqHop; + uint8_t addDmrs; + uint8_t maxCodeRate; + uint8_t numSlots; + bool pi2BPSK; + bool harqAckCSI; +}SchPucchFormatCfg; + typedef struct schPucchInfo { uint16_t rnti; @@ -842,6 +888,13 @@ typedef struct schPucchInfo uint8_t numHarqBits; uint8_t uciFlag; uint8_t numUciBits; + uint8_t intraFreqHop; + uint16_t secondPrbHop; + uint8_t initialCyclicShift; + uint8_t occLen; + uint8_t occIdx; + uint8_t timeDomOCC; + SchPucchFormatCfg cmnFormatCfg; }SchPucchInfo; typedef struct ulSchedInfo @@ -1063,9 +1116,160 @@ typedef struct schPdschServCellCfg }SchPdschServCellCfg; /* PUCCH Configuration */ +typedef struct schPucchResrcSetInfo +{ + uint8_t resrcSetId; + uint8_t resrcListCount; + uint8_t resrcList[MAX_NUM_PUCCH_PER_RESRC_SET]; + uint8_t maxPayLoadSize; +}SchPucchResrcSetInfo; + +typedef struct schPucchResrcSetCfg +{ + uint8_t resrcSetToAddModListCount; + SchPucchResrcSetInfo resrcSetToAddModList[MAX_NUM_PUCCH_RESRC_SET]; + uint8_t resrcSetToRelListCount; + uint8_t resrcSetToRelList[MAX_NUM_PUCCH_RESRC]; +}SchPucchResrcSetCfg; + +typedef struct schPucchFormat0 +{ + uint8_t initialCyclicShift; + uint8_t numSymbols; + uint8_t startSymbolIdx; +}SchPucchFormat0; + +typedef struct schPucchFormat1 +{ + uint8_t initialCyclicShift; + uint8_t numSymbols; + uint8_t startSymbolIdx; + uint8_t timeDomOCC; +}SchPucchFormat1; + +typedef struct schPucchFormat2_3 +{ + uint8_t numPrbs; + uint8_t numSymbols; + uint8_t startSymbolIdx; +}SchPucchFormat2_3; + +typedef struct schPucchFormat4 +{ + uint8_t numSymbols; + uint8_t occLen; + uint8_t occIdx; + uint8_t startSymbolIdx; +}SchPucchFormat4; + +typedef struct schPucchResrcInfo +{ + uint8_t resrcId; + uint16_t startPrb; + uint8_t intraFreqHop; + uint16_t secondPrbHop; + uint8_t pucchFormat; + union{ + SchPucchFormat0 *format0; + SchPucchFormat1 *format1; + SchPucchFormat2_3 *format2; + SchPucchFormat2_3 *format3; + SchPucchFormat4 *format4; + }SchPucchFormat; +}SchPucchResrcInfo; + +typedef struct schPucchResrcCfg +{ + uint8_t resrcToAddModListCount; + SchPucchResrcInfo resrcToAddModList[MAX_NUM_PUCCH_RESRC]; + uint8_t resrcToRelListCount; + uint8_t resrcToRelList[MAX_NUM_PUCCH_RESRC]; +}SchPucchResrcCfg; + + +typedef struct schSchedReqResrcInfo +{ + uint8_t resrcId; + uint8_t requestId; + uint8_t periodicity; + uint16_t offset; + uint8_t resrc; +}SchSchedReqResrcInfo; + +typedef struct schPucchSchedReqCfg +{ + uint8_t schedAddModListCount; + SchSchedReqResrcInfo schedAddModList[MAX_NUM_SR_CFG_PER_CELL_GRP]; + uint8_t schedRelListCount; + uint8_t schedRelList[MAX_NUM_SR_CFG_PER_CELL_GRP]; +}SchPucchSchedReqCfg; + +typedef struct schSpatialRelationInfo +{ + uint8_t spatialRelationId; + uint8_t servCellIdx; + uint8_t pathLossRefRSId; + uint8_t p0PucchId; + uint8_t closeLoopIdx; +}SchSpatialRelationInfo; + +typedef struct schPucchSpatialCfg +{ + uint8_t spatialAddModListCount; + SchSpatialRelationInfo spatialAddModList[MAX_NUM_SPATIAL_RELATIONS]; + uint8_t spatialRelListCount; + uint8_t spatialRelList[MAX_NUM_SPATIAL_RELATIONS]; +}SchPucchSpatialCfg; + +typedef struct schP0PucchCfg +{ + uint8_t p0PucchId; + int p0PucchVal; +}SchP0PucchCfg; + +typedef struct schPathLossRefRSCfg +{ + uint8_t pathLossRefRSId; +}SchPathLossRefRSCfg; + +typedef struct schPucchMultiCsiCfg +{ + uint8_t multiCsiResrcListCount; + uint8_t multiCsiResrcList[MAX_NUM_PUCCH_RESRC-1]; +}SchPucchMultiCsiCfg; + +typedef struct schPucchDlDataToUlAck +{ + uint8_t dlDataToUlAckListCount; + uint8_t dlDataToUlAckList[MAX_NUM_DL_DATA_TO_UL_ACK]; +}SchPucchDlDataToUlAck; + +typedef struct schPucchPowerControl +{ + int deltaF_Format0; + int deltaF_Format1; + int deltaF_Format2; + int deltaF_Format3; + int deltaF_Format4; + uint8_t p0SetCount; + SchP0PucchCfg p0Set[MAX_NUM_PUCCH_P0_PER_SET]; + uint8_t pathLossRefRSListCount; + SchPathLossRefRSCfg pathLossRefRSList[MAX_NUM_PATH_LOSS_REF_RS]; +}SchPucchPowerControl; + typedef struct schPucchCfg { - /* TODO : Not used currently */ + SchPucchResrcSetCfg *resrcSet; + SchPucchResrcCfg *resrc; + SchPucchFormatCfg *format1; + SchPucchFormatCfg *format2; + SchPucchFormatCfg *format3; + SchPucchFormatCfg *format4; + SchPucchSchedReqCfg *schedReq; + SchPucchMultiCsiCfg *multiCsiCfg; + SchPucchSpatialCfg *spatialInfo; + SchPucchDlDataToUlAck *dlDataToUlAck; + SchPucchPowerControl *powerControl; }SchPucchCfg; /* Transform precoding disabled */ @@ -1226,18 +1430,29 @@ typedef struct schLcCfg typedef struct schAmbrCfg { 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 { uint16_t cellId; uint16_t crnti; + bool macCellGrpCfgPres; SchMacCellGrpCfg macCellGrpCfg; + bool phyCellGrpCfgPres; SchPhyCellGrpCfg phyCellGrpCfg; + bool spCellCfgPres; SchSpCellCfg spCellCfg; SchAmbrCfg *ambrCfg; + SchModulationInfo dlModInfo; + SchModulationInfo ulModInfo; uint8_t numLcs; SchLcCfg schLcCfg[MAX_NUM_LC]; }SchUeCfg; @@ -1251,6 +1466,32 @@ typedef struct schUeCfgRsp SchFailureCause cause; }SchUeCfgRsp; +typedef struct schUeDelete +{ + uint16_t cellId; + uint16_t crnti; +}SchUeDelete; + +typedef struct schUeDeleteRsp +{ + uint16_t cellId; + uint16_t crnti; + SchMacRsp rsp; + ErrorCause cause; +}SchUeDeleteRsp; + +typedef struct schCellDelete +{ + uint16_t cellId; +}SchCellDelete; + + +typedef struct schCellDeleteRsp +{ + uint16_t cellId; + SchMacRsp rsp; +}SchCellDeleteRsp; + typedef struct dataVolInfo { uint8_t lcgId; @@ -1338,6 +1579,22 @@ typedef uint8_t (*SchUeReCfgRspFunc) ARGS(( Pst *pst, /* Post structure */ SchUeCfgRsp *cfgRsp)); /* Scheduler UE Cfg response */ +typedef uint8_t (*MacSchUeDeleteReqFunc) ARGS(( + Pst *pst, /* Post structure */ + SchUeDelete *schUeDel)); /*Scheduler UE Del*/ + +typedef uint8_t (*SchUeDeleteRspFunc) ARGS(( + Pst *pst, /* Post structure */ + SchUeDeleteRsp *delRsp)); /* Scheduler UE delete response */ + +typedef uint8_t (*MacSchCellDeleteReqFunc) ARGS(( + Pst *pst, /* Post structure */ + SchCellDelete *schCellDelete)); /*Scheduler UE Del*/ + +typedef uint8_t (*SchCellDeleteRspFunc) ARGS(( + Pst *pst, /* Post structure */ + SchCellDeleteRsp *schCellDeleteRsp)); /* Scheduler UE delete response */ + /* function declarations */ uint8_t packMacSchSlotInd(Pst *pst, SlotIndInfo *slotInd); uint8_t packSchMacDlAlloc(Pst *pst, DlSchedInfo *dlSchedInfo); @@ -1372,6 +1629,14 @@ 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 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 packSchCellDeleteRsp(Pst *pst, SchCellDeleteRsp *schCellDeleteRsp); +uint8_t MacProcSchCellDeleteRsp(Pst *pst, SchCellDeleteRsp *schCellDeleteRsp); /********************************************************************** End of file