X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=src%2Fdu_app%2Fdu_cfg.h;h=d82297a6d30ec6c808a13e2fa003009021fc2619;hb=e96cb439cd4a7a6f55e3fab7caed978e38bd62b4;hp=709deeb0d0dbfa258d6aca20fcc88a97de3a8388;hpb=00e0d895ef14b68eb6e8e50198484626c94f67b3;p=o-du%2Fl2.git diff --git a/src/du_app/du_cfg.h b/src/du_app/du_cfg.h index 709deeb0d..d82297a6d 100644 --- a/src/du_app/du_cfg.h +++ b/src/du_app/du_cfg.h @@ -24,122 +24,35 @@ #endif /* MACROS */ -#define DU_INST 0 -#define DU_ID 1 - -#ifndef O1_ENABLE +#define GNB_ID 1 /* As per 38.423,Sec 9.2.2.1, gnbId range b/w 0 to 4294967295 */ -#define DU_IP_V4_ADDR "192.168.130.81" -#define CU_IP_V4_ADDR "192.168.130.82" -#define RIC_IP_V4_ADDR "192.168.130.80" -#define DU_PORT 38472 -#define CU_PORT 38472 -#define RIC_PORT 36421 -#endif +#define DU_INST 0 -#define DU_EGTP_PORT 39001 -#define CU_EGTP_PORT 39002 #define NR_PCI 1 #define NR_CELL_ID 1 -#define DU_NAME "ORAN_OAM_DU" -#define CELL_TYPE SMALL - -//TODO: while testing for TDD, Mu1 and 100 MHz, this flag must be enabled -#ifdef NR_TDD -#define DUPLEX_MODE DUP_MODE_TDD -#define NR_NUMEROLOGY 1 -#define NR_DL_ARFCN 623400 -#define NR_UL_ARFCN 623400 -#define NR_FREQ_BAND 78 -#define NR_SCS SCS_30KHZ -#define NR_BANDWIDTH BANDWIDTH_100MHZ -#else -#define DUPLEX_MODE DUP_MODE_FDD -#define NR_NUMEROLOGY 0 -#define NR_DL_ARFCN 428000 -#define NR_UL_ARFCN 390000 -#define NR_FREQ_BAND 1 -#define NR_SCS SCS_15KHZ -#define NR_BANDWIDTH BANDWIDTH_20MHZ -#endif - #define TRANS_ID 1 -#define DU_TAC 1 -#define PLMN_MCC0 3 -#define PLMN_MCC1 1 -#define PLMN_MCC2 1 -#define PLMN_MNC0 4 -#define PLMN_MNC1 8 -#define PLMN_MNC2 0 #define PLMN_SIZE 3 -/* Spec 38.104 Table 5.4.2.3-1:Applicable NR-ARFCN per operating band in FR1 */ -#define SUL_ARFCN 100 -#define SUL_BAND 2 - -#define TIME_CFG 0 +#define MEAS_TIMING_ARFCN 630432 #define CARRIER_IDX 1 -#define NUM_TX_ANT 2 -#define NUM_RX_ANT 2 #define FREQ_SHIFT_7P5KHZ FALSE -#define SSB_PBCH_PWR 0 -#define BCH_PAYLOAD PHY_GEN_TIMING_PBCH_BIT -#define NORMAL_CYCLIC_PREFIX 0 -#define OFFSET_TO_POINT_A 24 /* PRB Offset to Point A */ -#define BETA_PSS BETA_PSS_0DB -#define SSB_PERIODICITY_5MS 5 -#define SSB_PERIODICITY_10MS 10 -#define SSB_PERIODICITY_20MS 20 -#define SSB_PERIODICITY_40MS 40 -#define SSB_PERIODICITY_80MS 80 -#define SSB_PERIODICITY_160MS 160 -#define SSB_SUBCARRIER_OFFSET 0 #define SSB_MULT_CARRIER_BAND FALSE #define MULT_CELL_CARRIER FALSE -#define FREQ_LOC_BW 28875 /* DL frequency location and bandwidth. Spec 38.508 Table 4.3.1.0B-1*/ -#define UL_P_MAX 23 -#define DMRS_TYPE_A_POS 2 #define NUM_SYMBOLS_PER_SLOT 14 /* Number of symbols within a slot */ #define CORESET0_END_PRB 48 #define CORESET1_NUM_PRB 24 /* MACRO defines for PRACH Configuration */ -#define PRACH_CONFIG_IDX 88 #define PRACH_MAX_PRB 24 /* As per (spec 38.211-Table 6.3.3.2-1), max allocated PRBs can go upto 24 */ -#define PRACH_FREQ_START (MAX_NUM_RB - PRACH_MAX_PRB) /* In order to allocate PRACH from end of the resource grid */ -#define PRACH_SEQ_LEN SHORT_SEQUENCE -#define PRACH_SUBCARRIER_SPACING NR_SCS -#define PRACH_RESTRICTED_SET_CFG 0 -#define NUM_PRACH_FDM 1 -#define ROOT_SEQ_IDX 0 -#define NUM_ROOT_SEQ 1 -#define ZERO_CORRELATION_ZONE_CFG 4 #define NUM_UNUSED_ROOT_SEQ 0 #define UNUSED_ROOT_SEQ 1 -#define SSB_PER_RACH 1 #define PRACH_MULT_CARRIER_BAND FALSE -#define PRACH_PREAMBLE_RCVD_TGT_PWR -74 -#define NUM_RA_PREAMBLE 63 -#define RSRP_THRESHOLD_SSB 31 - -#ifdef NR_TDD -#define TDD_PERIODICITY TX_PRDCTY_MS_5 -#endif #define RSS_MEASUREMENT_UNIT DONT_REPORT_RSSI #define RA_CONT_RES_TIMER 64 -#define RA_RSP_WINDOW 10 -#define PRACH_RESTRICTED_SET 0 /* Unrestricted */ -#define ROOT_SEQ_LEN 139 /* MACRCO Ddefine for PDCCH Configuration */ -#define PDCCH_SEARCH_SPACE_ID 1 /* Common search space id */ -#define PDCCH_CTRL_RSRC_SET_ID 0 /* Control resource set id */ -#define PDCCH_SEARCH_SPACE_ID_SIB1 1 /* Search space id for sib1 */ -#define PDCCH_SEARCH_SPACE_ID_PAGING 1 /* Search space id for paging */ -#define PDCCH_SEARCH_SPACE_ID_RA 1 /* Search spaced id for random access */ -#define PDCCH_SERACH_SPACE_DCI_FORMAT 0 #define PDCCH_CTRL_RSRC_SET_ONE_ID 1 #define PDCCH_CTRL_RSRC_SET_ONE_DURATION 2 /* Duration for control resource set id i */ #define PDCCH_CTRL_RSRC_SET_ONE_PRECOD_GRANULARITY 1 /* Precoded granularity */ @@ -152,13 +65,8 @@ #define PDCCH_SRCH_SPC_TWO_UE_SPEC_DCI_FORMAT 0 /* format 0-0 and 1-0 */ #define PDCCH_SYMBOL_WITHIN_SLOT 128 /* Symbol within Slot Value */ - -#define SIB1_VALUE_TAG 10 - /* MACRO Ddefine for PDSCH Configuration */ #define NUM_TIME_DOM_RSRC_ALLOC 2 -#define PDSCH_K0_CFG1 0 -#define PDSCH_K0_CFG2 1 #define PDSCH_START_SYMBOL 3 #define PDSCH_LENGTH_SYMBOL 11 #define PDSCH_RES_ALLOC_TYPE 1 /* Resource allocation type */ @@ -173,24 +81,10 @@ #define PUSCH_START_SYMBOL 3 #define PUSCH_LENGTH_SYMBOL 11 -#define PUSCH_MSG3_DELTA_PREAMBLE 0 -#define PUSCH_P0_NOMINAL_WITH_GRANT -70 #define PUSCH_TRANSFORM_PRECODER 1 /* 1: Disabled */ #define PUSCH_MAX_MIMO_LAYERS 1 #define PUSCH_PROCESS_TYPE2_ENABLED false -/* Macro define for PUCCH Configuration */ -#define PUCCH_RSRC_COMMON 0 -#define PUCCH_GROUP_HOPPING 0 /* Neither sequence hopping nor group hopping */ -#define PUCCH_P0_NOMINAL -74 - -/* MACRO defines for TDD DL-UL Configuration */ -#define NUM_DL_SLOTS 7 -#define NUM_DL_SYMBOLS 12 -#define NUM_UL_SLOTS 2 -#define NUM_UL_SYMBOLS 1 -#define GUARD_SLOT_IDX 7 - /* MACRO defines for SRC config */ #define SRS_RSRC_ID 1 #define SRS_RSET_ID 1 @@ -220,7 +114,7 @@ /* Macro definitions for F1 procedures */ #define CU_DU_NAME_LEN_MAX 30 /* Max length of CU/DU name string */ #define MAX_F1_CONNECTIONS 65536 /* Max num of F1 connections */ -#define MAX_PLMN 1 /* Max num of broadcast PLMN ids */ + #define MAXNRARFCN 3279165 /* Maximum values of NRAFCN */ #define MAX_NRCELL_BANDS 2 /* Maximum number of frequency bands */ #define MAX_NUM_OF_SLICE_ITEMS 1024 /* Maximum number of signalled slice support items */ @@ -231,16 +125,12 @@ #define MAX_NUM_OF_UE_ID 65536 /* Max num of UEs served by DU */ #define MAXNUMOFUACPLMN 12 /* Maximum number of PLMN ids*/ #define MAXNUMOFUACPERPLMN 64 /* Maximum number of signalled categories per PLMN */ -#define NR_RANAC 150 /* RANAC */ #define DEFAULT_CELLS 1 /* Max num of broadcast PLMN ids */ #define IE_EXTENSION_LIST_COUNT 1 /* Macro definitions for MIB/SIB1 */ -#define SYS_FRAME_NUM 0 #define SPARE 0 -#define SSB_SC_OFFSET 0 -#define DU_RANAC 1 -#define CELL_IDENTITY 16 +#define CELL_IDENTITY 1 /* Macro definitions for DUtoCuRrcContainer */ #define CELL_GRP_ID 0 @@ -256,7 +146,7 @@ #define PHR_PROHIBHIT_TMR 0 #define PHR_PWR_FACTOR_CHANGE 3 #define PHR_MODE_OTHER_CG 0 -#define SN_FIELD_LEN 1 +#define SN_FIELD_LEN_12BIT 0 /*As per Spec 38.331, The network configures only value size12 in SN-FieldLengthAM for SRB */ #define T_POLL_RETRANSMIT 8 /* Enum for 45ms */ #define T_POLL_RETRANSMIT_VAL 45 /* Value in ms */ #define POLL_PDU 0 /* Enum for 4 pdus */ @@ -299,7 +189,31 @@ #define MAX_RATIO 30 #define MIN_RATIO 20 #define DEDICATED_RATIO 10 -#define NUM_OF_SUPPORTED_SLICE 2 + +#ifdef NR_DRX +/* Macros for Drx configuration */ +#define DRX_ONDURATION_TIMER_VALUE_PRESENT_IN_MS true +#define DRX_ONDURATION_TIMER_VALUE_IN_SUBMS 32 +#define DRX_ONDURATION_TIMER_VALUE_IN_MS 10 +#define DRX_INACTIVITY_TIMER 2 +#define DRX_HARQ_RTT_TIMER_DL 56 +#define DRX_HARQ_RTT_TIMER_UL 56 +#define DRX_RETRANSMISSION_TIMER_DL 4 +#define DRX_RETRANSMISSION_TIMER_UL 4 +#define DRX_LONG_CYCLE_START_OFFSET_CHOICE 40 +#define DRX_LONG_CYCLE_START_OFFSET_VAL 8 +#define DRX_SHORT_CYCLE_PRESENT true +#define DRX_SHORT_CYCLE 2 +#define DRX_SHORT_CYCLE_TIMER 2 +#define DRX_SLOT_OFFSET 0 +#endif + +/* In case of initial configuration we are supporting only 2 measurement + * information RRU.PrbTotDl and RRU.PrbTotUl. + * In case of configuration modification we are supporting 3 measurement + * information RRU.PrbTotDl, RRU.PrbTotUl and UECNTX.RelReq */ +#define NUM_OF_MEASUREMENT_INFO_SUPPORTED(_configType) \ + ((_configType == CONFIG_ADD) ? 2 :3) typedef enum { @@ -664,17 +578,11 @@ typedef struct epIpAddrPort char port[2]; }EpIpAddrPort; -typedef struct f1TaiSliceSuppLst -{ - uint8_t numSupportedSlices; - Snssai **snssai; -}F1TaiSliceSuppLst; - typedef struct f1SrvdPlmn { Plmn plmn; Plmn extPlmn; /* Extended available PLMN list */ - F1TaiSliceSuppLst taiSliceSuppLst; + SupportedSliceList taiSliceSuppLst; }F1SrvdPlmn; typedef struct f1BrdcstPlmnInfo @@ -699,7 +607,7 @@ typedef struct f1DuCellInfo uint16_t tac; /* tracking area code */ uint16_t epsTac; /* Configured EPS TAC */ NrModeInfo f1Mode; /* NR mode info : FDD/TDD */ - uint8_t measTimeCfg; /* Measurement timing configuration */ + uint8_t measTimeCfgDuration; /* Measurement timing configuration */ F1CellDir cellDir; /* Cell Direction */ F1CellType cellType; /* Cell Type */ F1BrdcstPlmnInfo brdcstPlmnInfo[MAX_BPLMN_NRCELL_MINUS_1]; /* Broadcast PLMN Identity Info List */ @@ -1109,7 +1017,7 @@ typedef struct bcchCfg typedef struct pcchCfg { - uint8_t dfltPagingCycle; /* Default paging cycle */ + uint16_t dfltPagingCycle; /* Default paging cycle */ uint8_t nAndPagingFrmOffsetType; /*Number of PagingFrames in PagingCycle defined in terms of T.*/ uint8_t pageFrameOffset; /* Paging Frame offset */ uint8_t ns; /* Number of paging occassions in paging frame */ @@ -1149,8 +1057,8 @@ typedef struct rachCfgCommon long pwrRampingStep; /* Power ramping steps for PRACH */ long raRspWindow; /* RA response window */ long numRaPreamble; /* Total num of preamble used in random access */ - uint8_t ssbPerRachOccPresent; long numSsbPerRachOcc; /* Numer of SSBs per RACH Occassion */ + long numCbPreamblePerSsb; /* Number of Contention-Based preamble per SSB */ long contResTimer; /* Contention resolution timer */ long rsrpThreshSsb; uint8_t rootSeqIdxPresent; @@ -1185,6 +1093,7 @@ typedef struct pucchCfgCommon typedef struct ulCfgCommon { + long freqBandInd; /* Uplink frequency band indicator */ long pMax; /* Max UL transmission power that UE applies */ long locAndBw; /* Frequency location and bandwidth */ ScsSpecCarrier ulScsCarrier; /* SCS Specific carrier */ @@ -1206,6 +1115,7 @@ typedef struct tddUlDlCfgCommon typedef struct srvCellCfgCommSib { + long scs; DlCfgCommon dlCfg; UlCfgCommon ulCfg; uint8_t ssbPosInBurst; @@ -1223,69 +1133,88 @@ typedef struct sib1Params long cellResvdForOpUse; long connEstFailCnt; long connEstFailOffValidity; + long connEstFailOffset; SiSchedInfo siSchedInfo; SrvCellCfgCommSib srvCellCfgCommSib; }Sib1Params; -typedef struct policyMemberList -{ - Plmn plmn; - Snssai snssai; -}PolicyMemberList; - -typedef struct rrmPolicy -{ - ResourceType rsrcType; - uint8_t numMemberList; - PolicyMemberList **memberList; - uint8_t policyMaxRatio; - uint8_t policyMinRatio; - uint8_t policyDedicatedRatio; -}RrmPolicy; - -typedef struct copyOfRecvdSliceCfg -{ - RrmPolicy **rrmPolicy; - uint8_t totalRrmPolicy; - uint8_t totalSliceCount; -}CopyOfRecvdSliceCfg; +typedef struct threadInfo +{ + SSTskId duAppSTskId; + uint8_t duAppCoreId; + SSTskId egtpSTskId; + uint8_t egtpCoreId; + SSTskId sctpSTskId; + uint8_t sctpCoreId; + SSTskId rlcUlSTskId; + uint8_t rlcUlCoreId; + SSTskId rlcMacSTskId; + uint8_t rlcMacCoreId; + SSTskId schSTskId; + uint8_t schCoreId; + SSTskId lwrMacSTskId; + uint8_t lwrMacCoreId; +}ThreadInfo; typedef struct duCfgParams -{ +{ + uint32_t duId; + char *duName; + uint16_t maxNumDrb; + ThreadInfo threadInfo; SctpParams sctpParams; /* SCTP Params */ F1EgtpParams egtpParams; /* EGTP Params */ - uint32_t maxUe; - uint32_t duId; - uint8_t duName[CU_DU_NAME_LEN_MAX]; - SchedulerCfg schedCfg; F1DuSrvdCellInfo srvdCellLst[MAX_NUM_CELL]; /* Serving cell list *///TODO: this must be removed eventually - F1RrcVersion rrcVersion; /* RRC version */ MacCellCfg macCellCfg; /* MAC cell configuration */ MibParams mibParams; /* MIB Params */ Sib1Params sib1Params; /* SIB1 Params */ - CopyOfRecvdSliceCfg tempSliceCfg; + MacSliceCfgReq tempSliceCfg; }DuCfgParams; -typedef struct f1SetupMsg +#ifndef O1_ENABLE +//RRM POLICY STRUCT + +typedef struct rRMPolicyMemberList { - uint8_t f1MsgReqBufSize; - char *f1MsgReqBuf; - uint8_t f1MsgRspBufSize; - char *f1MsgRspBuf; -}F1SetupMsg; + uint8_t mcc[3]; + uint8_t mnc[3]; + uint8_t sd[3]; + uint8_t sst; +}RRMPolicyMemberList; + +typedef enum +{ + PRB, + PRB_UL, + PRB_DL, + RRC, + DRB +}RrmResourceType; + +typedef struct rrmPolicyList +{ + char id[1]; + RrmResourceType resourceType; + uint8_t rRMMemberNum; + RRMPolicyMemberList rRMPolicyMemberList[2]; + uint8_t rRMPolicyMaxRatio; + uint8_t rRMPolicyMinRatio; + uint8_t rRMPolicyDedicatedRatio; +}RrmPolicyList; +#endif DuCfgParams duCfgParam; /*function declarations */ -void FillSlotConfig(); uint8_t readClCfg(); uint8_t readCfg(); uint8_t duReadCfg(); -uint16_t calcSliv(uint8_t startSymbol, uint8_t lengthSymbol); +void printDuConfig(); -#ifdef O1_ENABLE -uint8_t cpyRrmPolicyInDuCfgParams(RrmPolicyList rrmPolicy[], uint8_t policyNum, CopyOfRecvdSliceCfg *tempSliceCfg); -#endif +uint8_t fillDuSrvdCellSysInfo(F1DuSysInfo *sysInfo); + +uint16_t calcSliv(uint8_t startSymbol, uint8_t lengthSymbol); +uint8_t cpyRrmPolicyInDuCfgParams(RrmPolicyList rrmPolicy[], uint8_t policyNum, MacSliceCfgReq *tempSliceCfg); #endif /* __DU_CONFIG_H__ */