X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=src%2Fdu_app%2Fdu_cfg.h;h=84f9beff6cfcdb9eb18c99a0e9774dd7cbfeadcd;hb=3364273455756ae289662a274d5bcbf391ecd58e;hp=daf5e05e6ca735d3669d1d5ec2fd7c1a0916f040;hpb=0bdf00d1edf579ee8b5841e1a80d48d9bb91c7e8;p=o-du%2Fl2.git diff --git a/src/du_app/du_cfg.h b/src/du_app/du_cfg.h index daf5e05e6..84f9beff6 100644 --- a/src/du_app/du_cfg.h +++ b/src/du_app/du_cfg.h @@ -30,22 +30,34 @@ #define RIC_IP_V4_ADDR "192.168.130.80" #define DU_PORT 38472 #define CU_PORT 38472 -#define RIC_PORT 36422 /* using X2 port since E2 port not defined */ - +#define RIC_PORT 36421 #endif #define DU_EGTP_PORT 39001 #define CU_EGTP_PORT 39002 #define NR_PCI 1 #define NR_CELL_ID 1 -#define NR_NUMEROLOGY 0 #define DU_NAME "ORAN_OAM_DU" #define CELL_TYPE SMALL -#define DUPLEX_MODE DUP_MODE_FDD +//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 DU_TAC 1 @@ -57,12 +69,8 @@ #define PLMN_MNC2 0 #define PLMN_SIZE 3 -/* Spec 30.104 Table 5.4.2.3-1:Applicable NR-ARFCN per operating band in FR1 */ -#define NR_DL_ARFCN 428000 -#define NR_UL_ARFCN 390000 +/* Spec 38.104 Table 5.4.2.3-1:Applicable NR-ARFCN per operating band in FR1 */ #define SUL_ARFCN 100 -#define NR_FREQ_BAND 1 -#define NR_FREQ_BAND_IND 1 #define SUL_BAND 2 #define TIME_CFG 0 @@ -72,7 +80,6 @@ #define FREQ_SHIFT_7P5KHZ FALSE #define SSB_PBCH_PWR 0 #define BCH_PAYLOAD PHY_GEN_TIMING_PBCH_BIT -#define SUBCARRIER_SPACING 0 #define NORMAL_CYCLIC_PREFIX 0 #define OFFSET_TO_POINT_A 24 /* PRB Offset to Point A */ #define BETA_PSS BETA_PSS_0DB @@ -94,9 +101,10 @@ /* MACRO defines for PRACH Configuration */ #define PRACH_CONFIG_IDX 88 -#define PRACH_FREQ_START 0 +#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 0 +#define PRACH_SUBCARRIER_SPACING NR_SCS #define PRACH_RESTRICTED_SET_CFG 0 #define NUM_PRACH_FDM 1 #define ROOT_SEQ_IDX 0 @@ -116,7 +124,7 @@ #define RSS_MEASUREMENT_UNIT DONT_REPORT_RSSI #define RA_CONT_RES_TIMER 64 -#define RA_RSP_WINDOW 180 +#define RA_RSP_WINDOW 10 #define PRACH_RESTRICTED_SET 0 /* Unrestricted */ #define ROOT_SEQ_LEN 139 @@ -143,18 +151,21 @@ #define SIB1_VALUE_TAG 10 /* MACRO Ddefine for PDSCH Configuration */ -#define PDSCH_K0 0 -#define PDSCH_START_SYMBOL 2 -#define PDSCH_LENGTH_SYMBOL 12 +#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 */ #define PDSCH_MAX_CODEWORD_SCH_BY_DCI 0 /* Max num of codewords scheduled by DCI */ #define PDSCH_RBG_SIZE 0 /* 0: config1 */ #define PDSCH_NUM_HARQ_PROC 5 /* MACRO Define for PUSCH Configuration */ -#define PUSCH_K2 3 -#define PUSCH_START_SYMBOL 0 -#define PUSCH_LENGTH_SYMBOL 14 +#define MAX_UL_ALLOC 16 +#define PUSCH_K2_CFG1 4 +#define PUSCH_K2_CFG2 5 +#define PUSCH_START_SYMBOL 3 +#define PUSCH_LENGTH_SYMBOL 11 #define PUSCH_MSG3_DELTA_PREAMBLE 0 #define PUSCH_P0_NOMINAL_WITH_GRANT -70 @@ -164,7 +175,7 @@ /* Macro define for PUCCH Configuration */ #define PUCCH_RSRC_COMMON 0 -#define PUCCH_GROUP_HOPPING 2 /* disable */ +#define PUCCH_GROUP_HOPPING 0 /* Neither sequence hopping nor group hopping */ #define PUCCH_P0_NOMINAL -74 /* MACRO defines for TDD DL-UL Configuration */ @@ -200,21 +211,14 @@ /* Events */ #define EVTCFG 0 -#ifdef EGTP_TEST -/* Macro definitions for EGTP procedures */ -#define EGTP_LCL_TEID 1 /* EGTP local tunnel id */ -#define EGTP_REM_TEID 10 /* EGTP remote tinnel id */ -#endif - - /* 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 MAXNRCELLBANDS 2 /* Maximum number of frequency bands */ +#define MAX_NRCELL_BANDS 2 /* Maximum number of frequency bands */ #define MAX_NUM_OF_SLICE_ITEMS 1024 /* Maximum number of signalled slice support items */ -#define MAXBPLMNNRMINUS1 1 /* Maximum number of PLMN Ids broadcast in an NR cell minus 1 */ +#define MAX_BPLMN_NRCELL_MINUS_1 1 /* Maximum number of PLMN Ids broadcast in an NR cell minus 1 */ #define MAXNUMOFSIBTYPES 32 /* Maximum number of SIB types */ #define MAX_TNL_ASSOC 32 /* Max num of TNL Assoc between CU and DU */ #define MAXCELLINENB 256 /* Max num of cells served by eNB */ @@ -223,12 +227,12 @@ #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 8 +#define SSB_SC_OFFSET 0 #define DU_RANAC 1 #define CELL_IDENTITY 32 @@ -247,12 +251,18 @@ #define PHR_PWR_FACTOR_CHANGE 3 #define PHR_MODE_OTHER_CG 0 #define SN_FIELD_LEN 0 -#define T_POLL_RETRANSMIT 8 -#define POLL_PDU 0 -#define POLL_BYTE 43 -#define MAX_RETX_THRESHOLD 5 -#define T_REASSEMBLY 8 -#define T_STATUS_PROHIBHIT 7 +#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 */ +#define POLL_PDU_VAL 4 /* Value of poll pdu */ +#define POLL_BYTE 43 /* Enum for infinite poll bytes */ +#define POLL_BYTE_VAL -1 /* Value for infinite poll byte */ +#define MAX_RETX_THRESHOLD 5 /* Enum for 8 retransmissions */ +#define MAX_RETX_THRESHOLD_VAL 8 /* Value for 8 retransmissions */ +#define T_REASSEMBLY 8 /* enum for RE_ASM_40MS */ +#define T_REASSEMBLY_VAL 40 /* default re assembly timer */ +#define T_STATUS_PROHIBHIT 7 /* enum for PROH_35MS */ +#define T_STATUS_PROHIBHIT_VAL 35 /* default status prohibit timer */ #define MAC_LC_PRIORITY 1 #define PRIORTISIED_BIT_RATE 15 #define BUCKET_SIZE_DURATION 5 @@ -267,12 +277,6 @@ #define DMRS_ADDITIONAL_POS 0 /* DMRS Additional poistion */ #define RES_ALLOC_TYPE 1 /* Resource allocation type */ -#ifdef EGTP_TEST -#define UE_ID 1 -#define RB_ID 1 -#define LC_ID 1 -#endif - /* MACRO definitions for modulcation order */ #define MOD_ORDER_QPSK 2 #define MOD_ORDER_QAM16 4 @@ -281,12 +285,29 @@ #define PDSCH_MCS_INDEX 20 /* For 64QAM, valid mcs index: 17-28 in 38.214 - Table 5.1.3.1-1*/ #define PUSCH_MCS_INDEX 10 /* For 16QAM, valid mcs index: 10-16 in 38.214 - Table 5.1.3.1-1*/ +/*VALID Tunnel ID*/ +#define MIN_TEID 1 /*[Spec 29.281,Sec 5.1]: All Zero TEIDs are never assigned for setting up GTP-U Tunnel*/ +#define MAX_TEID 10 /*[Spec 29.281]: Max limit is not mentioned but as per GTP-U Header Format, TEID occupies 4 octets */ + +/* Slice Ratio */ +#define MAX_RATIO 30 +#define MIN_RATIO 20 +#define DEDICATED_RATIO 10 +#define DEDICATED_SLICE_INDEX 1 +#define NUM_OF_SUPPORTED_SLICE 2 + typedef enum { GNBDU, GNBCU }F1Entity; +typedef enum +{ + SERV_CELL_TO_MODIFY, + SERV_CELL_TO_DELETE +}ServCellAction; + typedef enum { UNSPECIFIED, @@ -471,7 +492,6 @@ typedef enum PUSCH_MAPPING_TYPE_B, }puschMappingType; - typedef struct f1RrcVersion { char rrcVer[30]; /* Latest RRC Version */ @@ -575,14 +595,14 @@ typedef struct f1SulInfo typedef struct f1FreqBand { uint16_t nrFreqBand; - uint16_t sulBand[MAXNRCELLBANDS]; + uint16_t sulBand[MAX_NRCELL_BANDS]; }F1FreqBand; typedef struct f1NrFreqInfo { uint32_t nrArfcn; F1SulInfo sulInfo; - F1FreqBand freqBand[MAXNRCELLBANDS]; + F1FreqBand freqBand[MAX_NRCELL_BANDS]; }F1NrFreqInfo; typedef struct f1NrFddInfo @@ -628,12 +648,6 @@ typedef struct f1EutraModeInfo }mode; }F1EutraModeInfo; -typedef struct f1Snsaai -{ - uint8_t sst; - uint32_t sd; -}F1Snsaai; - typedef struct epIpAddr { char transportAddr[20]; /* Transport Layer Address */ @@ -647,14 +661,15 @@ typedef struct epIpAddrPort typedef struct f1TaiSliceSuppLst { - bool pres; - F1Snsaai snssai[MAX_NUM_OF_SLICE_ITEMS]; + uint8_t numSupportedSlices; + Snssai **snssai; }F1TaiSliceSuppLst; typedef struct f1SrvdPlmn { - Plmn plmn; - F1TaiSliceSuppLst taiSliceSuppLst; + Plmn plmn; + Plmn extPlmn; /* Extended available PLMN list */ + F1TaiSliceSuppLst taiSliceSuppLst; }F1SrvdPlmn; typedef struct f1BrdcstPlmnInfo @@ -670,8 +685,7 @@ typedef struct f1CellInfo { NrEcgi nrCgi; /* Cell global Identity */ uint32_t nrPci; /* Physical Cell Identity */ - Plmn plmn[MAX_PLMN]; /* Available PLMN list */ - Plmn extPlmn[MAX_PLMN]; /* Extended available PLMN list */ + F1SrvdPlmn srvdPlmn[MAX_PLMN]; }F1CellInfo; typedef struct f1DuCellInfo @@ -683,7 +697,7 @@ typedef struct f1DuCellInfo uint8_t measTimeCfg; /* Measurement timing configuration */ F1CellDir cellDir; /* Cell Direction */ F1CellType cellType; /* Cell Type */ - F1BrdcstPlmnInfo brdcstPlmnInfo[MAXBPLMNNRMINUS1]; /* Broadcast PLMN Identity Info List */ + F1BrdcstPlmnInfo brdcstPlmnInfo[MAX_BPLMN_NRCELL_MINUS_1]; /* Broadcast PLMN Identity Info List */ }F1DuCellInfo; typedef struct f1DuSysInfo @@ -1069,12 +1083,18 @@ typedef struct pdcchCfgCommon long raSearchSpc; /* Id of search space for Random Access proc */ }PdcchCfgCommon; -typedef struct pdschCfgCommon +typedef struct pdschTimeDomainRsrcAlloc { - uint8_t present; long k0; long mapType; /* Mapping Type */ uint16_t sliv; +}PdschTimeDomainRsrcAlloc; + +typedef struct pdschCfgCommon +{ + uint8_t present; + uint8_t numTimeDomRsrcAlloc; + PdschTimeDomainRsrcAlloc timeDomAlloc[MAX_NUM_DL_ALLOC]; }PdschCfgCommon; typedef struct bcchCfg @@ -1132,12 +1152,18 @@ typedef struct rachCfgCommon long restrictedSetCfg; /* Restricted set configuration */ }RachCfgCommon; -typedef struct puschCfgCommon +typedef struct puschCfgCmnTimeDomAlloc { - uint8_t present; long k2; long mapType; uint16_t sliv; +}PuschCfgCmnTimeDomAlloc; + +typedef struct puschCfgCommon +{ + uint8_t puschCfgPresent; + uint8_t numTimeDomRsrcAlloc; + PuschCfgCmnTimeDomAlloc timeDomAllocList[MAX_UL_ALLOC]; long msg3DeltaPreamble; long p0NominalWithGrant; }PuschCfgCommon; @@ -1194,6 +1220,29 @@ typedef struct sib1Params 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 duCfgParams { SctpParams sctpParams; /* SCTP Params */ @@ -1207,14 +1256,18 @@ typedef struct duCfgParams MacCellCfg macCellCfg; /* MAC cell configuration */ MibParams mibParams; /* MIB Params */ Sib1Params sib1Params; /* SIB1 Params */ + CopyOfRecvdSliceCfg tempSliceCfg; }DuCfgParams; +DuCfgParams duCfgParam; + /*function declarations */ void FillSlotConfig(); uint8_t readClCfg(); uint8_t readCfg(); uint8_t duReadCfg(); uint16_t calcSliv(uint8_t startSymbol, uint8_t lengthSymbol); +uint8_t cpyRrmPolicyInDuCfgParams(RrmPolicy rrmPolicy[], uint8_t policyNum, uint8_t memberList, CopyOfRecvdSliceCfg *tempSliceCfg); #endif /* __DU_CONFIG_H__ */