diff --git a/doc/ORAN_FHI7.2_Tutorial.md b/doc/ORAN_FHI7.2_Tutorial.md index 0a4036423b..a7bfe56a0b 100644 --- a/doc/ORAN_FHI7.2_Tutorial.md +++ b/doc/ORAN_FHI7.2_Tutorial.md @@ -783,6 +783,12 @@ Edit the sample OAI gNB configuration file and check following parameters: * `ru_addr`: RU C- and U-plane MAC-addresses (format `UU:VV:WW:XX:YY:ZZ`, hexadecimal numbers) * `mtu`: Maximum Transmission Unit for the RU, specified by RU vendor + * `dpdk_mem_size`: the huge page size that should be pre-allocated by DPDK + _for NUMA node 0_; by default, this is 8192 MiB (corresponding to 8 huge + pages à 1024 MiB each, see above). In the current implementation, you + cannot preallocate memory on NUMA nodes other than 0; in this case, set + this to 0 (no pre-allocation) and so that DPDK will allocate it on-demand + on the right NUMA node. * `fh_config`: parameters that need to match RU parameters * timing parameters (starting with `T`) depend on the RU: `Tadv_cp_dl` is a single number, the rest pairs of numbers `(x, y)` specifying minimum and diff --git a/radio/fhi_72/oran-config.c b/radio/fhi_72/oran-config.c index ddee538dfd..2973fdc2b0 100644 --- a/radio/fhi_72/oran-config.c +++ b/radio/fhi_72/oran-config.c @@ -498,7 +498,7 @@ static bool set_fh_io_cfg(struct xran_io_cfg *io_cfg, const paramdef_t *fhip, in //io_cfg->bbdev_dev = NULL; io_cfg->bbdev_mode = XRAN_BBDEV_NOT_USED; // none io_cfg->dpdkIoVaMode = 0; /* IOVA mode */ - io_cfg->dpdkMemorySize = 0; /* DPDK memory size */ + io_cfg->dpdkMemorySize = *gpd(fhip, nump, ORAN_CONFIG_DPDK_MEM_SIZE)->uptr; io_cfg->core = *gpd(fhip, nump, ORAN_CONFIG_IO_CORE)->iptr; io_cfg->system_core = *gpd(fhip, nump, ORAN_CONFIG_SYSTEM_CORE)->iptr; io_cfg->pkt_proc_core = get_u64_mask(gpd(fhip, nump, ORAN_CONFIG_WORKER_CORES)); diff --git a/radio/fhi_72/oran-params.h b/radio/fhi_72/oran-params.h index c7e17ea42a..ff8058f9ca 100644 --- a/radio/fhi_72/oran-params.h +++ b/radio/fhi_72/oran-params.h @@ -37,6 +37,7 @@ #define ORAN_CONFIG_FILE_PREFIX "file_prefix" #define ORAN_CONFIG_NETHPERPORT "eth_lines" #define ORAN_CONFIG_NETHSPEED "eth_speed" +#define ORAN_CONFIG_DPDK_MEM_SIZE "dpdk_mem_size" // clang-format off // TODO: PCI addr check @@ -52,6 +53,7 @@ {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}, \ {ORAN_CONFIG_NETHSPEED, "ethernet speed link\n", 0, .uptr=NULL, .defuintval=10, TYPE_UINT, 0}, \ + {ORAN_CONFIG_DPDK_MEM_SIZE, "DPDK huge page pre-allocation in MiB\n", 0, .uptr=NULL, .defuintval=8192, TYPE_UINT, 0}, \ } // clang-format on