From 3a095ac57edd930818cbca109d783b9eb0a99748 Mon Sep 17 00:00:00 2001 From: Teodora Date: Wed, 11 Dec 2024 14:14:34 +0100 Subject: [PATCH] M-plane support - explanation on needed parameters MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - RU IP address - to connect to RUs via netconf - DU MAC address - for setting up the CU-planes on RU; not used in xran - VLAN tag (*) - for setting up the CU-planes on RU; not used in xran - DU keypair - for authentication when connecting to RU(s) The parameters that RU-controller shall retreive from RU list of capabilities: - MTU - compression - RU MAC address - PRACH offset (**) (*) VLAN tag is not used in xran but an option is given in fh_config struct. In my opinion, it is not a very suitable place, as it is needed for VFs. Therefore, I moved it in the initialization part for M-plane purposes. (**) PRACH offset shall be >= max(Ntx,Nrx), as per O-RAN CUS specification: "The O-DU may decide to use same eAxC ID value to address endpoints on different O-RUs, but eAxC ID values assigned to one O-RU must be unique within the O-RU’s endpoints of same direction." => however, LITEON supports flexible assignment of PRACH eAxC IDs, so we made a workaround in the xran library to support PRACH eAxC IDs same as PUSCH eAxC IDs. --- radio/fhi_72/oran-config.c | 4 ++-- radio/fhi_72/oran-params.h | 26 +++++++++++++++++--------- 2 files changed, 19 insertions(+), 11 deletions(-) diff --git a/radio/fhi_72/oran-config.c b/radio/fhi_72/oran-config.c index 2f2032c30a..ba8fb2fcea 100644 --- a/radio/fhi_72/oran-config.c +++ b/radio/fhi_72/oran-config.c @@ -839,8 +839,8 @@ static bool set_fh_config(int ru_idx, int num_rus, enum xran_category xran_cat, #endif fh_config->puschMaskEnable = 0; // enable PUSCH mask; only used if id = O_RU fh_config->puschMaskSlot = 0; // specific which slot PUSCH channel masked; only used if id = O_RU - fh_config->cp_vlan_tag = *gpd(fhp, nfh, ORAN_FH_CONFIG_CP_VLAN_TAG)->uptr; // C-plane VLAN tag; not used in xran; needed for M-plane - fh_config->up_vlan_tag = *gpd(fhp, nfh, ORAN_FH_CONFIG_UP_VLAN_TAG)->uptr; // U-plane VLAN tag; not used in xran; needed for M-plane + fh_config->cp_vlan_tag = 0; // C-plane VLAN tag; not used in xran; needed for M-plane + fh_config->up_vlan_tag = 0; // U-plane VLAN tag; not used in xran; needed for M-plane fh_config->debugStop = 0; // enable auto stop; only used if id = O_RU fh_config->debugStopCount = 0; // enable auto stop after number of Tx packets; not used in xran fh_config->DynamicSectionEna = 0; // enable dynamic C-Plane section allocation diff --git a/radio/fhi_72/oran-params.h b/radio/fhi_72/oran-params.h index 20c3d71634..42aabd99bb 100644 --- a/radio/fhi_72/oran-params.h +++ b/radio/fhi_72/oran-params.h @@ -31,8 +31,12 @@ #define ORAN_CONFIG_SYSTEM_CORE "system_core" #define ORAN_CONFIG_IO_CORE "io_core" #define ORAN_CONFIG_WORKER_CORES "worker_cores" -#define ORAN_CONFIG_RU_ADDR "ru_addr" -#define ORAN_CONFIG_MTU "mtu" +#define ORAN_CONFIG_DU_KEYPAIR "du_key_pair" // only needed for M-plane +#define ORAN_CONFIG_DU_ADDR "du_addr" // only needed for M-plane +#define ORAN_CONFIG_VLAN_TAG "vlan_tag" // only needed for M-plane +#define ORAN_CONFIG_RU_ADDR "ru_addr" // not needed if M-plane used +#define ORAN_CONFIG_RU_IP_ADDR "ru_ip_addr" // only needed for M-plane +#define ORAN_CONFIG_MTU "mtu" // not needed if M-plane used #define ORAN_CONFIG_FILE_PREFIX "file_prefix" #define ORAN_CONFIG_NETHPERPORT "eth_lines" #define ORAN_CONFIG_NETHSPEED "eth_speed" @@ -48,7 +52,11 @@ {ORAN_CONFIG_SYSTEM_CORE, "DPDK control threads core\n", PARAMFLAG_MANDATORY, .iptr=NULL, .defintval=0, TYPE_INT, 0}, \ {ORAN_CONFIG_IO_CORE, "DPDK Core used for IO\n", PARAMFLAG_MANDATORY, .iptr=NULL, .defintval=4, TYPE_INT, 0}, \ {ORAN_CONFIG_WORKER_CORES, "CPU Cores to use for workers\n", PARAMFLAG_MANDATORY, .uptr=NULL, .defintarrayval=NULL,TYPE_UINTARRAY, 0}, \ + {ORAN_CONFIG_DU_KEYPAIR, "DU keypair for RU authentication\n", PARAMFLAG_MANDATORY, .strlistptr=NULL, .defstrlistval=NULL, TYPE_STRINGLIST, 0}, \ + {ORAN_CONFIG_DU_ADDR, "Ether addr of DU\n", PARAMFLAG_MANDATORY, .strlistptr=NULL, .defstrlistval=NULL, TYPE_STRINGLIST, 0}, \ + {ORAN_CONFIG_VLAN_TAG, "VLAN tag\n", PARAMFLAG_MANDATORY, .iptr=NULL, .defintarrayval=0, TYPE_INTARRAY, 0}, \ {ORAN_CONFIG_RU_ADDR, "Ether addr of RU\n", PARAMFLAG_MANDATORY, .strlistptr=NULL, .defstrlistval=NULL, TYPE_STRINGLIST, 0}, \ + {ORAN_CONFIG_RU_IP_ADDR, "IP addr of RU\n", PARAMFLAG_MANDATORY, .strlistptr=NULL, .defstrlistval=NULL, TYPE_STRINGLIST, 0}, \ {ORAN_CONFIG_MTU, "MTU of Eth interface\n", 0, .uptr=NULL, .defuintval=1500, TYPE_UINT, 0}, \ {ORAN_CONFIG_FILE_PREFIX, "DPDK file-prefix\n", 0, .strptr=NULL, .defstrval="wls_0", TYPE_STRING, 0}, \ {ORAN_CONFIG_NETHPERPORT, "number of links per port\n", 0, .uptr=NULL, .defuintval=1, TYPE_UINT, 0}, \ @@ -70,6 +78,10 @@ { .s5 = { NULL } }, \ { .s5 = { NULL } }, \ { .s5 = { NULL } }, \ + { .s5 = { NULL } }, \ + { .s5 = { NULL } }, \ + { .s5 = { NULL } }, \ + { .s5 = { NULL } }, \ { .s3a = { config_checkstr_assign_integer, \ {"PA", "VA"}, {0, 1}, 2} }, \ { .s5 = { NULL } }, \ @@ -84,8 +96,6 @@ #define ORAN_FH_CONFIG_T1A_CP_UL "T1a_cp_ul" #define ORAN_FH_CONFIG_T1A_UP "T1a_up" #define ORAN_FH_CONFIG_TA4 "Ta4" -#define ORAN_FH_CONFIG_CP_VLAN_TAG "cp_vlan_tag" -#define ORAN_FH_CONFIG_UP_VLAN_TAG "up_vlan_tag" #define ORAN_FH_HLP_CPLT " parameter of RU in list form (Min&Max, length 2!)\n" @@ -95,15 +105,13 @@ {ORAN_FH_CONFIG_T1A_CP_UL, "T1a_cp_ul" ORAN_FH_HLP_CPLT, PARAMFLAG_MANDATORY, .uptr=NULL, .defintarrayval=0, TYPE_UINTARRAY, 0}, \ {ORAN_FH_CONFIG_T1A_UP, "T1a_up" ORAN_FH_HLP_CPLT, PARAMFLAG_MANDATORY, .uptr=NULL, .defintarrayval=0, TYPE_UINTARRAY, 0}, \ {ORAN_FH_CONFIG_TA4, "Ta4" ORAN_FH_HLP_CPLT, PARAMFLAG_MANDATORY, .uptr=NULL, .defintarrayval=0, TYPE_UINTARRAY, 0}, \ - {ORAN_FH_CONFIG_CP_VLAN_TAG, "not used by xran", 0, .uptr=NULL, .defuintval=0, TYPE_UINT, 0}, \ - {ORAN_FH_CONFIG_UP_VLAN_TAG, "not used by xran", 0, .uptr=NULL, .defuintval=0, TYPE_UINT, 0}, \ } // clang-format on #define CONFIG_STRING_ORAN_RU "ru_config" -#define ORAN_RU_CONFIG_IQWIDTH "iq_width" -#define ORAN_RU_CONFIG_IQWIDTH_PRACH "iq_width_prach" +#define ORAN_RU_CONFIG_IQWIDTH "iq_width" // not needed if M-plane used +#define ORAN_RU_CONFIG_IQWIDTH_PRACH "iq_width_prach" // not needed if M-plane used // clang-format off #define ORAN_RU_DESC {\ @@ -114,7 +122,7 @@ #define CONFIG_STRING_ORAN_PRACH "prach_config" -#define ORAN_PRACH_CONFIG_EAXC_OFFSET "eAxC_offset" +#define ORAN_PRACH_CONFIG_EAXC_OFFSET "eAxC_offset" // not needed if M-plane used #define ORAN_PRACH_CONFIG_KBAR "kbar" // clang-format off