X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=src%2Fcm%2Fdu_app_mac_inf.h;h=983290274c0673ba799d5c0bc2b56d3350c24e8a;hb=e698840bb6fcecc68be5b1d1fd17436bd1d5e83f;hp=beb026a2484d36e4f9823acb73b06d38359cf69e;hpb=79b8d410dc34e5624583b9ad935e65350dd3f62a;p=o-du%2Fl2.git diff --git a/src/cm/du_app_mac_inf.h b/src/cm/du_app_mac_inf.h index beb026a24..983290274 100644 --- a/src/cm/du_app_mac_inf.h +++ b/src/cm/du_app_mac_inf.h @@ -21,12 +21,9 @@ #define __MACINT_H__ #define NUM_NUMEROLOGY 5 /* Number of numerology */ -#define MAXIMUM_TDD_PERIODICITY 5 -#define MAX_SYMB_PER_SLOT 14 #define NUM_SSB 1 /* max value is 64 */ #define SSB_MASK_SIZE 1 /* SSB mask size is 32bit for sub6 */ -#define SIB1_NEW_TX_PERIOD 160 #define SIB1_REPETITION_PERIOD 20 #define CORESET_0_INDEX 0 #define CORESET_1_INDEX 1 @@ -40,7 +37,6 @@ #define SEARCHSPACE_4_INDEX 4 #define SS_MONITORING_SLOT_SL1 0 /* all slots */ #define SS_MONITORING_SYMBOL 0x2000; /* symbol-0, set 14th bit */ -#define SIB1_MCS 4 /* Macro for Ue Context */ #define MAX_NUM_SR_CFG_PER_CELL_GRP 8 /* Max number of scheduling request config per cell group */ @@ -51,12 +47,17 @@ #define MONITORING_SYMB_WITHIN_SLOT_SIZE 2 /* i.e. 2 bytes because size of monitoring symbols within slot is 14 bits */ #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 */ -#define SD_SIZE 3 /* Max size of Slice Differentiator in S-NSSAI */ - -#define MAX_NUM_SRB 8 -#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 @@ -70,6 +71,10 @@ #define EVENT_MAC_UE_CREATE_RSP 209 #define EVENT_MAC_UE_RECONFIG_REQ 210 #define EVENT_MAC_UE_RECONFIG_RSP 211 +#define EVENT_MAC_UE_DELETE_REQ 212 +#define EVENT_MAC_UE_DELETE_RSP 213 +#define EVENT_MAC_CELL_DELETE_REQ 214 +#define EVENT_MAC_CELL_DELETE_RSP 215 #define BSR_PERIODIC_TIMER_SF_10 10 #define BSR_RETX_TIMER_SF_320 320 @@ -81,6 +86,19 @@ typedef enum MAC_DU_APP_RSP_OK }MacRsp; +typedef enum +{ + SUCCESS, + CELLID_INVALID, + UEIDX_INVALID +}UeDeleteStatus; + +typedef enum +{ + SUCCESSFUL_RSP, + CELL_ID_INVALID +}CellDeleteStatus; + typedef enum { DUP_MODE_FDD, @@ -114,25 +132,6 @@ typedef enum RSSI_UNIT_DBFS }RSSIMeasUnit; -typedef enum -{ - DL_SLOT, - UL_SLOT, - GUARD_SLOT -}SlotConfig; - -typedef enum -{ - TX_PRDCTY_MS_0P5, - TX_PRDCTY_MS_0P625, - TX_PRDCTY_MS_1, - TX_PRDCTY_MS_1P25, - TX_PRDCTY_MS_2, - TX_PRDCTY_MS_2P5, - TX_PRDCTY_MS_5, - TX_PRDCTY_MS_10 -}DlUlTxPeriodicity; - typedef enum { BETA_PSS_0DB, @@ -487,6 +486,13 @@ typedef enum MCS_TABLE_QAM64_LOW_SE }McsTable; +typedef enum +{ + RSRC_PRB, + RSRC_DRB, + RSRC_RRC_CONNECTED_USERS +}ResourceType; + typedef struct failureCause { CauseGrp type; @@ -554,18 +560,10 @@ typedef struct prachCfg uint8_t raRspWindow; /* RA Response Window */ }PrachCfg; -typedef struct tddCfg -{ - bool pres; - DlUlTxPeriodicity tddPeriod; /* DL UL Transmission periodicity */ - SlotConfig slotCfg[MAXIMUM_TDD_PERIODICITY][MAX_SYMB_PER_SLOT]; -}TDDCfg; - typedef struct sib1CellCfg { uint8_t *sib1Pdu; 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 */ @@ -606,12 +604,19 @@ typedef struct pdcchConfigCommon uint8_t raSearchSpaceId; }PdcchConfigCommon; -typedef struct pdschConfigCommon +typedef struct pdschCfgCommTimeDomRsrcAlloc { uint8_t k0; uint8_t mappingType; uint8_t startSymbol; uint8_t lengthSymbol; +}PdschCfgCommTimeDomRsrcAlloc; + +typedef struct pdschConfigCommon +{ + uint8_t numTimeDomAlloc; + /* PDSCH time domain DL resource allocation list */ + PdschCfgCommTimeDomRsrcAlloc timeDomRsrcAllocList[MAX_NUM_DL_ALLOC]; }PdschConfigCommon; typedef struct pucchConfigCommon @@ -620,13 +625,22 @@ typedef struct pucchConfigCommon uint8_t pucchGroupHopping; }PucchConfigCommon; +/* PUSCH Time Domain Resource Allocation */ +typedef struct puschTimeDomRsrcAlloc +{ + uint8_t k2; + CommonMappingType mappingType; + uint8_t startSymbol; + uint8_t symbolLength; + uint8_t startSymbolAndLength; +}PuschTimeDomRsrcAlloc; + + typedef struct puschConfigCommon { /* PUSCH-TimeDomainResourceAllocation info */ - uint8_t k2; - uint8_t mappingType; - uint8_t startSymbol; - uint8_t lengthSymbol; + uint8_t numTimeDomRsrcAlloc; + PuschTimeDomRsrcAlloc timeDomRsrcAllocList[MAX_NUM_UL_ALLOC]; /* PUSCH time domain UL resource allocation list */ }PuschConfigCommon; typedef struct bwpDlConfig @@ -644,6 +658,23 @@ typedef struct bwpUlConfig PuschConfigCommon puschCommon; }BwpUlConfig; +/* Single Network Slice Selection assistance Info */ + +typedef struct policyMemberList +{ + Plmn plmn; + Snssai snssai; +}PolicyMemberList; + +typedef struct rrmPolicy +{ + ResourceType rsrcType; + PolicyMemberList memberList; + uint8_t policyMaxRatio; + uint8_t policyMinRatio; + uint8_t policyDedicatedRatio; +}RrmPolicy; + typedef struct macCellCfg { uint16_t cellId; /* Cell Id */ @@ -656,12 +687,17 @@ typedef struct macCellCfg bool freqShft; /* Indicates presence of 7.5kHz frequency shift */ SsbCfg ssbCfg; /* SSB configuration */ PrachCfg prachCfg; /* PRACH Configuration */ +#ifdef NR_TDD TDDCfg tddCfg; /* TDD periodicity and slot configuration */ +#endif RSSIMeasUnit rssiUnit; /* RSSI measurement unit */ Sib1CellCfg sib1Cfg; /* SIB1 config */ BwpDlConfig initialDlBwp; /* Initial DL BWP */ BwpUlConfig initialUlBwp; /* Initial UL BWP */ uint8_t dmrsTypeAPos; /* DMRS Type A position */ + uint8_t numSupportedSlice; /* Total slice supporting */ + Snssai **snssai; /* List of supporting snssai*/ + RrmPolicy *rrmPolicy; /* RRM policy details */ }MacCellCfg; typedef struct macCellCfgCfm @@ -795,6 +831,7 @@ typedef struct pdcchConfig /* PDSCH time domain resource allocation */ typedef struct pdschTimeDomRsrcAlloc { + uint8_t *k0; CommonMappingType mappingType; uint8_t startSymbol; uint8_t symbolLength; @@ -865,9 +902,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 */ @@ -883,16 +1082,6 @@ typedef struct dmrsUlCfg TransPrecodDisabled transPrecodDisabled; /* Transform precoding disabled */ }DmrsUlCfg; -/* PUSCH Time Domain Resource Allocation */ -typedef struct puschTimeDomRsrcAlloc -{ - uint8_t k2; - CommonMappingType mappingType; - uint8_t startSymbol; - uint8_t symbolLength; - uint8_t startSymbolAndLength; -}PuschTimeDomRsrcAlloc; - /* PUSCH Configuration */ typedef struct puschCfg { @@ -945,16 +1134,8 @@ typedef struct spCellCfg typedef struct ambrCfg { uint32_t ulBr; /* UL Bit rate */ - uint32_t dlBr; /* DL Bit rate */ }AmbrCfg; -/* Single Network Slice Selection assistance Info */ -typedef struct snssai -{ - uint8_t sst; /* Slice Type */ - uint8_t sd[SD_SIZE]; /* Slice Differentiator */ -}Snssai; - typedef struct nonDynFiveQi { uint16_t fiveQi; @@ -1041,8 +1222,11 @@ typedef struct macUeCfg uint16_t cellId; uint8_t ueIdx; uint16_t crnti; + bool macCellGrpCfgPres; MacCellGrpCfg macCellGrpCfg; + bool phyCellGrpCfgPres; PhyCellGrpCfg phyCellGrpCfg; + bool spCellCfgPres; SpCellCfg spCellCfg; AmbrCfg *ambrCfg; ModulationInfo dlModInfo; /* DL modulation info */ @@ -1089,6 +1273,31 @@ typedef struct ueCfgRsp SCellFailInfo *failedSCellList; }MacUeCfgRsp; +typedef struct ueDelete +{ + uint16_t cellId; + uint8_t ueId; + uint16_t crnti; +}MacUeDelete; + +typedef struct ueDeleteRsp +{ + uint16_t cellId; + uint8_t ueId; + UeDeleteStatus result; +}MacUeDeleteRsp; + +typedef struct macCellDelete +{ + uint16_t cellId; +}MacCellDelete; + +typedef struct macCellDeleteRsp +{ + uint16_t cellId; + CellDeleteStatus result; +}MacCellDeleteRsp; + /* Functions for slot Ind from MAC to DU APP*/ typedef uint8_t (*DuMacCellUpInd) ARGS(( Pst *pst, @@ -1151,6 +1360,26 @@ typedef uint8_t (*DuMacUeReconfigReq) ARGS(( Pst *pst, MacUeCfg *ueCfg )); +/* UE Delete Request from DU APP to MAC*/ +typedef uint8_t (*DuMacUeDeleteReq) ARGS(( + Pst *pst, + MacUeDelete *ueDel )); + +/* UE Delete Response from MAC to DU APP*/ +typedef uint8_t (*MacDuUeDeleteRspFunc) ARGS(( + Pst *pst, + MacUeDeleteRsp *deleteRsp)); + +/* Cell Delete Request from DU APP to MAC*/ +typedef uint8_t (*DuMacCellDeleteReq) ARGS(( + Pst *pst, + MacCellDelete *cellDelete )); + +/* Cell Delete Response from MAC to DU APP*/ +typedef uint8_t (*MacDuCellDeleteRspFunc) ARGS(( + Pst *pst, + MacCellDeleteRsp *cellDeleteRsp)); + uint8_t packMacCellUpInd(Pst *pst, OduCellId *cellId); uint8_t unpackMacCellUpInd(DuMacCellUpInd func, Pst *pst, Buffer *mBuf); uint8_t duHandleCellUpInd(Pst *pst, OduCellId *cellId); @@ -1185,9 +1414,22 @@ uint8_t DuProcMacUeCfgRsp(Pst *pst, MacUeCfgRsp *cfgRsp); uint8_t packDuMacUeReconfigReq(Pst *pst, MacUeCfg *ueCfg); uint8_t unpackMacUeReconfigReq(DuMacUeReconfigReq func, Pst *pst, Buffer *mBuf); uint8_t MacProcUeReconfigReq(Pst *pst, MacUeCfg *ueCfg); +uint8_t packDuMacUeDeleteReq(Pst *pst, MacUeDelete *ueDelete); +uint8_t MacProcUeDeleteReq(Pst *pst, MacUeDelete *ueDelete); +uint8_t unpackMacUeDeleteReq(DuMacUeDeleteReq func, Pst *pst, Buffer *mBuf); +uint8_t packDuMacUeDeleteRsp(Pst *pst, MacUeDeleteRsp *deleteRsp); +uint8_t DuProcMacUeDeleteRsp(Pst *pst, MacUeDeleteRsp *deleteRsp); +uint8_t unpackDuMacUeDeleteRsp(MacDuUeDeleteRspFunc func, Pst *pst, Buffer *mBuf); +uint8_t packDuMacCellDeleteReq(Pst *pst, MacCellDelete *cellDelete); +uint8_t MacProcCellDeleteReq(Pst *pst, MacCellDelete *cellDelete); +uint8_t unpackMacCellDeleteReq(DuMacCellDeleteReq func, Pst *pst, Buffer *mBuf); +uint8_t packDuMacCellDeleteRsp(Pst *pst, MacCellDeleteRsp *cellDeleteRsp); +uint8_t DuProcMacCellDeleteRsp(Pst *pst, MacCellDeleteRsp *cellDeleteRsp); +uint8_t unpackDuMacCellDeleteRsp(MacDuCellDeleteRspFunc func, Pst *pst, Buffer *mBuf); #endif + /********************************************************************** End of file **********************************************************************/