X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=src%2Fcm%2Fdu_app_mac_inf.h;h=cccce8ee741ae009fda015adac3e923f04d209bd;hb=refs%2Fchanges%2F49%2F5049%2F11;hp=6d30e3e0e84686f5be9e7c0e985606cf522440c3;hpb=7c6820e987fadb1102e5891408ad33a8ce36ba95;p=o-du%2Fl2.git diff --git a/src/cm/du_app_mac_inf.h b/src/cm/du_app_mac_inf.h index 6d30e3e0e..cccce8ee7 100644 --- a/src/cm/du_app_mac_inf.h +++ b/src/cm/du_app_mac_inf.h @@ -57,20 +57,33 @@ #define MAX_NUM_DRB 64 #define MAX_NUM_SCELL 32 +/* 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 + /* Event IDs */ #define EVENT_MAC_CELL_CONFIG_REQ 200 #define EVENT_MAC_CELL_CONFIG_CFM 201 -#define EVENT_MAC_CELL_START_REQ 202 -#define EVENT_MAC_CELL_STOP_REQ 203 -#define EVENT_MAC_SLOT_IND 204 +#define EVENT_MAC_CELL_START 202 +#define EVENT_MAC_CELL_STOP 203 +#define EVENT_MAC_CELL_UP_IND 204 #define EVENT_MAC_STOP_IND 205 #define EVENT_MAC_UL_CCCH_IND 206 #define EVENT_MAC_DL_CCCH_IND 207 -#define EVENT_MAC_UE_CONFIG_REQ 208 -#define EVENT_MAC_UE_CONFIG_RSP 209 +#define EVENT_MAC_UE_CREATE_REQ 208 +#define EVENT_MAC_UE_CREATE_RSP 209 #define EVENT_MAC_UE_RECONFIG_REQ 210 #define EVENT_MAC_UE_RECONFIG_RSP 211 +#define BSR_PERIODIC_TIMER_SF_10 10 +#define BSR_RETX_TIMER_SF_320 320 +#define BSR_SR_DELAY_TMR_2560 2560 + typedef enum { MAC_DU_APP_RSP_NOK, @@ -190,57 +203,6 @@ typedef enum TIME_ALIGNMENT_TIMER_INFINITY }TimeAlignmentTimer; -typedef enum -{ - BSR_PERIODIC_TIMER_SF_1, - BSR_PERIODIC_TIMER_SF_5, - BSR_PERIODIC_TIMER_SF_10, - BSR_PERIODIC_TIMER_SF_16, - BSR_PERIODIC_TIMER_SF_20, - BSR_PERIODIC_TIMER_SF_32, - BSR_PERIODIC_TIMER_SF_40, - BSR_PERIODIC_TIMER_SF_64, - BSR_PERIODIC_TIMER_SF_80, - BSR_PERIODIC_TIMER_SF_128, - BSR_PERIODIC_TIMER_SF_160, - BSR_PERIODIC_TIMER_SF_320, - BSR_PERIODIC_TIMER_SF_640, - BSR_PERIODIC_TIMER_SF_1280, - BSR_PERIODIC_TIMER_SF_2560, - BSR_PERIODIC_TIMER_INFINITY -}BsrPeriodicTimer; - -typedef enum -{ - BSR_RETX_TIMER_SF_10, - BSR_RETX_TIMER_SF_20, - BSR_RETX_TIMER_SF_40, - BSR_RETX_TIMER_SF_80, - BSR_RETX_TIMER_SF_160, - BSR_RETX_TIMER_SF_320, - BSR_RETX_TIMER_SF_640, - BSR_RETX_TIMER_SF_1280, - BSR_RETX_TIMER_SF_2560, - BSR_RETX_TIMER_SF_5120, - BSR_RETX_TIMER_SF_10240, - BSR_RETX_TIMER_SPARE_5, - BSR_RETX_TIMER_SPARE_4, - BSR_RETX_TIMER_SPARE_3, - BSR_RETX_TIMER_SPARE_2, - BSR_RETX_TIMER_SPARE_1 -}BsrReTxTimer; - -typedef enum -{ - BSR_SR_DELAY_TMR_20, - BSR_SR_DELAY_TMR_40, - BSR_SR_DELAY_TMR_64, - BSR_SR_DELAY_TMR_128, - BSR_SR_DELAY_TMR_512, - BSR_SR_DELAY_TMR_1024, - BSR_SR_DELAY_TMR_2560, - BSR_SR_DELAY_TMR_SPARE_1 -}BsrSrDelayTimer; typedef enum { PHR_PERIODIC_TIMER_SF_10, @@ -527,6 +489,13 @@ typedef enum UNSPECIFIED_MISC_CAUSE }MiscFailCause; +typedef enum +{ + MCS_TABLE_QAM64, + MCS_TABLE_QAM256, + MCS_TABLE_QAM64_LOW_SE +}McsTable; + typedef struct failureCause { CauseGrp type; @@ -542,7 +511,7 @@ typedef struct failureCause typedef struct carrierCfg { bool pres; - uint16_t bw; /* DL/UL bandwidth */ + uint32_t bw; /* DL/UL bandwidth */ uint32_t freq; /* Absolute frequency of DL/UL point A in KHz */ uint16_t k0[NUM_NUMEROLOGY]; /* K0 for DL/UL */ uint16_t gridSize[NUM_NUMEROLOGY]; /* DL/UL Grid size for each numerologies */ @@ -686,10 +655,10 @@ typedef struct bwpUlConfig typedef struct macCellCfg { - uint16_t cellId; /* Cell Id */ - uint8_t numTlv; /* Number of configuration TLVs */ - uint8_t carrierId; /* Carrired Index */ - uint16_t phyCellId; /* Physical cell id */ + uint16_t cellId; /* Cell Id */ + uint8_t carrierId; /* Carrired Index */ + uint16_t phyCellId; /* Physical cell id */ + uint8_t numerology; /* Supported numerology */ DuplexMode dupType; /* Duplex type: TDD/FDD */ CarrierCfg dlCarrCfg; /* DL Carrier configuration */ CarrierCfg ulCarrCfg; /* UL Carrier configuration */ @@ -706,20 +675,10 @@ typedef struct macCellCfg typedef struct macCellCfgCfm { - uint16_t cellId; + uint16_t cellId; uint8_t rsp; }MacCellCfgCfm; -typedef struct macCellStartInfo -{ - uint16_t cellId; -}MacCellStartInfo; - -typedef struct macCellStopInfo -{ - uint16_t cellId; -}MacCellStopInfo; - typedef struct ulCcchInd { uint16_t cellId; @@ -739,9 +698,9 @@ typedef struct dlCcchInd typedef struct bsrTmrCfg { - BsrPeriodicTimer periodicTimer; - BsrReTxTimer retxTimer; - BsrSrDelayTimer srDelayTimer; + uint16_t periodicTimer; + uint16_t retxTimer; + uint16_t srDelayTimer; }BsrTmrCfg; @@ -915,9 +874,171 @@ typedef struct pdschServCellCfg }PdschServCellCfg; /* PUCCH Configuration */ + +typedef struct pucchResrcSetInfo +{ + uint8_t resrcSetId; + uint8_t resrcListCount; + uint8_t resrcList[MAX_NUM_PUCCH_PER_RESRC_SET]; + uint8_t maxPayLoadSize; +}PucchResrcSetInfo; + +typedef struct pucchResrcSetCfg +{ + uint8_t resrcSetToAddModListCount; + PucchResrcSetInfo resrcSetToAddModList[MAX_NUM_PUCCH_RESRC_SET]; + uint8_t resrcSetToRelListCount; + uint8_t resrcSetToRelList[MAX_NUM_PUCCH_RESRC]; +}PucchResrcSetCfg; + +typedef struct pucchFormat0 +{ + uint8_t initialCyclicShift; + uint8_t numSymbols; + uint8_t startSymbolIdx; +}PucchFormat0; + +typedef struct pucchFormat1 +{ + uint8_t initialCyclicShift; + uint8_t numSymbols; + uint8_t startSymbolIdx; + uint8_t timeDomOCC; +}PucchFormat1; + +typedef struct pucchFormat2_3 +{ + uint8_t numPrbs; + uint8_t numSymbols; + uint8_t startSymbolIdx; +}PucchFormat2_3; + +typedef struct pucchFormat4 +{ + uint8_t numSymbols; + uint8_t occLen; + uint8_t occIdx; + uint8_t startSymbolIdx; +}PucchFormat4; + +typedef struct pucchResrcInfo +{ + uint8_t resrcId; + uint16_t startPrb; + uint8_t intraFreqHop; + uint16_t secondPrbHop; + uint8_t pucchFormat; + union + { + PucchFormat0 *format0; + PucchFormat1 *format1; + PucchFormat2_3 *format2; + PucchFormat2_3 *format3; + PucchFormat4 *format4; + }PucchFormat; +}PucchResrcInfo; + +typedef struct pucchResrcCfg +{ + uint8_t resrcToAddModListCount; + PucchResrcInfo resrcToAddModList[MAX_NUM_PUCCH_RESRC]; + uint8_t resrcToRelListCount; + uint8_t resrcToRelList[MAX_NUM_PUCCH_RESRC]; +}PucchResrcCfg; + +typedef struct pucchFormatCfg +{ + uint8_t interSlotFreqHop; + uint8_t addDmrs; + uint8_t maxCodeRate; + uint8_t numSlots; + bool pi2BPSK; + bool harqAckCSI; +}PucchFormatCfg; + +typedef struct schedReqResrcInfo +{ + uint8_t resrcId; + uint8_t requestId; + uint8_t periodicity; + uint16_t offset; + uint8_t resrc; +}SchedReqResrcInfo; + +typedef struct pucchSchedReqCfg +{ + uint8_t schedAddModListCount; + SchedReqResrcInfo schedAddModList[MAX_NUM_SR_CFG_PER_CELL_GRP]; + uint8_t schedRelListCount; + uint8_t schedRelList[MAX_NUM_SR_CFG_PER_CELL_GRP]; +}PucchSchedReqCfg; + +typedef struct spatialRelationInfo +{ + uint8_t spatialRelationId; + uint8_t servCellIdx; + uint8_t pathLossRefRSId; + uint8_t p0PucchId; + uint8_t closeLoopIdx; +}SpatialRelationInfo; + +typedef struct pucchSpatialCfg +{ + uint8_t spatialAddModListCount; + SpatialRelationInfo spatialAddModList[MAX_NUM_SPATIAL_RELATIONS]; + uint8_t spatialRelListCount; + uint8_t spatialRelList[MAX_NUM_SPATIAL_RELATIONS]; +}PucchSpatialCfg; + +typedef struct p0PucchCfg +{ + uint8_t p0PucchId; + int p0PucchVal; +}P0PucchCfg; + +typedef struct pathLossRefRSCfg +{ + uint8_t pathLossRefRSId; +}PathLossRefRSCfg; + +typedef struct pucchMultiCsiCfg +{ + uint8_t multiCsiResrcListCount; + uint8_t multiCsiResrcList[MAX_NUM_PUCCH_RESRC-1]; +}PucchMultiCsiCfg; + +typedef struct pucchDlDataToUlAck +{ + uint8_t dlDataToUlAckListCount; + uint8_t dlDataToUlAckList[MAX_NUM_DL_DATA_TO_UL_ACK]; +}PucchDlDataToUlAck; + +typedef struct pucchPowerControl +{ + int deltaF_Format0; + int deltaF_Format1; + int deltaF_Format2; + int deltaF_Format3; + int deltaF_Format4; + uint8_t p0SetCount; + P0PucchCfg p0Set[MAX_NUM_PUCCH_P0_PER_SET]; + uint8_t pathLossRefRSListCount; + PathLossRefRSCfg pathLossRefRSList[MAX_NUM_PATH_LOSS_REF_RS]; +}PucchPowerControl; + typedef struct pucchCfg { - /* TODO : Not used currently */ + PucchResrcSetCfg *resrcSet; + PucchResrcCfg *resrc; + PucchFormatCfg *format1; + PucchFormatCfg *format2; + PucchFormatCfg *format3; + PucchFormatCfg *format4; + PucchSchedReqCfg *schedReq; + PucchMultiCsiCfg *multiCsiCfg; + PucchSpatialCfg *spatialInfo; + PucchDlDataToUlAck *dlDataToUlAck; + PucchPowerControl *powerControl; }PucchCfg; /* Transform precoding disabled */ @@ -992,11 +1113,11 @@ typedef struct spCellCfg ServCellCfgInfo servCellCfg; }SpCellCfg; -typedef struct maxAggrBitRate +typedef struct ambrCfg { - uint32_t ulBits; - uint32_t dlBits; -}MaxAggrBitRate; + uint32_t ulBr; /* UL Bit rate */ + uint32_t dlBr; /* DL Bit rate */ +}AmbrCfg; /* Single Network Slice Selection assistance Info */ typedef struct snssai @@ -1079,6 +1200,13 @@ typedef struct lcCfg DlLcCfg dlLcCfg; }LcCfg; +typedef struct modulationInfo +{ + uint8_t modOrder; /* Modulation order */ + uint8_t mcsIndex; /* MCS Index */ + McsTable mcsTable; /* MCS table */ +}ModulationInfo; + typedef struct macUeCfg { uint16_t cellId; @@ -1087,10 +1215,12 @@ typedef struct macUeCfg MacCellGrpCfg macCellGrpCfg; PhyCellGrpCfg phyCellGrpCfg; SpCellCfg spCellCfg; - MaxAggrBitRate *maxAggrBitRate; + AmbrCfg *ambrCfg; + ModulationInfo dlModInfo; /* DL modulation info */ + ModulationInfo ulModInfo; /* UL modulation info */ uint8_t numLcs; LcCfg lcCfgList[MAX_NUM_LC]; - UeCfgState macUeCfgState; /* InActive / Completed */ + UeCfgState macUeCfgState; /* InActive / Completed */ }MacUeCfg; typedef struct nrcgi @@ -1131,24 +1261,24 @@ typedef struct ueCfgRsp }MacUeCfgRsp; /* Functions for slot Ind from MAC to DU APP*/ -typedef uint8_t (*DuMacSlotInd) ARGS(( +typedef uint8_t (*DuMacCellUpInd) ARGS(( Pst *pst, - SlotIndInfo *slotInfo )); + OduCellId *cellId )); /* Functions for stop Ind from MAC to DU APP*/ typedef uint8_t (*DuMacStopInd) ARGS(( - Pst *pst, - MacCellStopInfo *cellId )); + Pst *pst, + OduCellId *cellId )); /* Functions for mac cell start req */ -typedef uint8_t (*DuMacCellStartReq) ARGS(( - Pst *pst, - MacCellStartInfo *cellStartInfo )); +typedef uint8_t (*DuMacCellStart) ARGS(( + Pst *pst, + OduCellId *cellId)); /* Functions for mac cell stop request */ -typedef uint8_t (*DuMacCellStopReq) ARGS(( - Pst *pst, - MacCellStopInfo *cellStopInfo )); +typedef uint8_t (*DuMacCellStop) ARGS(( + Pst *pst, + OduCellId *cellId )); /* Function pointers for packing macCellCfg Request and Confirm */ typedef uint8_t (*packMacCellCfgReq) ARGS(( @@ -1192,24 +1322,24 @@ typedef uint8_t (*DuMacUeReconfigReq) ARGS(( Pst *pst, MacUeCfg *ueCfg )); -uint8_t packMacSlotInd(Pst *pst, SlotIndInfo *slotInfo ); -uint8_t unpackMacSlotInd(DuMacSlotInd func, Pst *pst, Buffer *mBuf); -uint8_t duHandleSlotInd(Pst *pst, SlotIndInfo *slotInfo); -uint8_t packMacCellStartReq(Pst *pst, MacCellStartInfo *cellStartInfo); -uint8_t unpackMacCellStartReq(DuMacCellStartReq func, Pst *pst, Buffer *mBuf); -uint8_t MacProcCellStartReq(Pst *pst, MacCellStartInfo *cellStartInfo); -uint8_t packMacCellStopReq(Pst *pst, MacCellStopInfo *cellStopInfo); -uint8_t unpackMacCellStopReq(DuMacCellStopReq func, Pst *pst, Buffer *mBuf); -uint8_t MacProcCellStopReq(Pst *pst, MacCellStopInfo *cellStopInfo); +uint8_t packMacCellUpInd(Pst *pst, OduCellId *cellId); +uint8_t unpackMacCellUpInd(DuMacCellUpInd func, Pst *pst, Buffer *mBuf); +uint8_t duHandleCellUpInd(Pst *pst, OduCellId *cellId); +uint8_t packMacCellStart(Pst *pst, OduCellId *cellId); +uint8_t unpackMacCellStart(DuMacCellStart func, Pst *pst, Buffer *mBuf); +uint8_t MacProcCellStart(Pst *pst, OduCellId *cellId); +uint8_t packMacCellStop(Pst *pst, OduCellId *cellId); +uint8_t unpackMacCellStop(DuMacCellStop func, Pst *pst, Buffer *mBuf); +uint8_t MacProcCellStop(Pst *pst, OduCellId *cellId); uint8_t packMacCellCfg(Pst *pst, MacCellCfg *macCellCfg); uint8_t unpackDuMacCellCfg(DuMacCellCfgReq func, Pst *pst, Buffer *mBuf); uint8_t MacProcCellCfgReq(Pst *pst, MacCellCfg *macCellCfg); uint8_t packMacCellCfgCfm(Pst *pst, MacCellCfgCfm *macCellCfgCfm); uint8_t unpackMacCellCfgCfm(DuMacCellCfgCfm func, Pst *pst, Buffer *mBuf); uint8_t duHandleMacCellCfgCfm(Pst *pst, MacCellCfgCfm *macCellCfgCfm); -uint8_t packMacStopInd(Pst *pst, MacCellStopInfo *cellId); +uint8_t packMacStopInd(Pst *pst, OduCellId *cellId); uint8_t unpackMacStopInd(DuMacStopInd func, Pst *pst, Buffer *mBuf); -uint8_t duHandleStopInd(Pst *pst, MacCellStopInfo *cellId); +uint8_t duHandleStopInd(Pst *pst, OduCellId *cellId); uint8_t packMacUlCcchInd(Pst *pst, UlCcchIndInfo *ulCcchIndInfo); uint8_t unpackMacUlCcchInd(DuMacUlCcchInd func, Pst *pst, Buffer *mBuf); uint8_t duHandleUlCcchInd(Pst *pst, UlCcchIndInfo *ulCcchIndInfo);