Merge remote-tracking branch 'origin/oran_fhi_f_dpdk_21_plus' into integration_2025_w28 (!3504)

Improvements to the FHI for enabling further use cases

These changes to the FHI were primarily thought to enable the integration of
the intel ACC ( !3344 ) in parallel of the FHI.
I preferred to make a separate MR because I believe this topic is orthogonal
enough to be handled separately and because I wanted to bring even further
improvements.
The improvements that it actually brings are:

- Enable compiling and running xran F release with DPDK 21+
- Enable including a BBDEV device in addition of the ethernet device for the
  FHI when performing EAL init, which is necessary for using the intel ACC
  with the FHI.
- Fix an issue in usage of pkgconfig in xran E and F release. This enables to
  reliably build xran with the version of DPDK requested to pkgconfig while
  before this fix xran was always selecting the headers installed in /usr/local.
This commit is contained in:
Jaroslava Fiedlerova
2025-07-09 17:36:18 +02:00
15 changed files with 626 additions and 111 deletions
+1 -20
View File
@@ -35,6 +35,7 @@
#include "NR_CellGroupConfig.h"
#include "NR_UE-NR-Capability.h"
#include "nr_mac.h"
#include "nr_prach_config.h"
#include "common/utils/nr/nr_common.h"
#define NB_SRS_PERIOD (18)
@@ -52,20 +53,6 @@ typedef enum {
pusch_len2 = 2
} pusch_maxLength_t;
typedef struct {
uint32_t format;
uint32_t start_symbol;
uint32_t N_t_slot;
uint32_t N_dur;
uint32_t N_RA_slot;
uint32_t N_RA_sfn;
uint32_t max_association_period;
int x;
int y;
int y2;
uint64_t s_map;
} nr_prach_info_t;
typedef struct {
uint16_t bwpStart;
uint16_t bwpSize;
@@ -161,8 +148,6 @@ void find_aggregation_candidates(uint8_t *aggregation_level,
const NR_SearchSpace_t *ss,
int maxL);
uint16_t get_nr_prach_format_from_index(uint8_t index, uint32_t pointa, uint8_t unpaired);
bool get_nr_prach_sched_from_info(nr_prach_info_t info,
int config_index,
int frame,
@@ -172,8 +157,6 @@ bool get_nr_prach_sched_from_info(nr_prach_info_t info,
uint16_t *RA_sfn_index,
uint8_t unpaired);
nr_prach_info_t get_nr_prach_occasion_info_from_index(uint8_t index, frequency_range_t freq_range, uint8_t unpaired);
uint8_t get_pusch_mcs_table(long *mcs_Table,
int is_tp,
int dci_format,
@@ -190,8 +173,6 @@ int ul_ant_bits(NR_DMRS_UplinkConfig_t *NR_DMRS_UplinkConfig, long transformPrec
uint8_t get_pdsch_mcs_table(long *mcs_Table, int dci_format, int rnti_type, int ss_type);
int get_format0(uint8_t index, uint8_t unpaired, frequency_range_t frequency_range);
uint16_t get_NCS(uint8_t index, uint16_t format, uint8_t restricted_set_config);
int compute_pucch_crc_size(int O_uci);
uint8_t get_l0_ul(uint8_t mapping_type, uint8_t dmrs_typeA_position);
@@ -0,0 +1,75 @@
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
/*! \file openair2/LAYER2/NR_MAC_COMMON/nr_prach_config.h
* \brief Tools to query the PRACH configuration tables
* \author Romain beurdouche
* \date Jul. 2025
* \version 0.1
* \company Eurecom
* \email romain.beurdouche@eurecom.fr
* \note The PRACH configuration tables are used in the MAC layer for scheduling and beyond.
* For example the PRACH duration is requested in the O-RAN 7.2 FrontHaul Interface
*/
/**
* @brief Fetch PRACH format (format only) from PRACH configuration tables
*
* @param index PRACH configuration index
* @param unpaired Duplex mode TDD or FDD
* @param freq_range Frequency range FR1 or FR2
* @return PRACH format (format only)
*/
int get_format0(uint8_t index, uint8_t unpaired, frequency_range_t frequency_range);
typedef struct {
uint32_t format;
uint32_t start_symbol;
uint32_t N_t_slot;
uint32_t N_dur;
uint32_t N_RA_slot;
uint32_t N_RA_sfn;
uint32_t max_association_period;
int x;
int y;
int y2;
uint64_t s_map;
} nr_prach_info_t;
/**
* @brief Fetch PRACH occasion info from PRACH configuration tables
*
* @param index PRACH configuration index
* @param freq_range Frequency range FR1 or FR2
* @param unpaired Duplex mode TDD or FDD
* @return PRACH occasion information
*/
nr_prach_info_t get_nr_prach_occasion_info_from_index(uint8_t index, frequency_range_t freq_range, uint8_t unpaired);
/**
* @brief Fetch PRACH format (format concatenated with format2) from PRACH configuration tables
*
* @param index PRACH configuration index
* @param pointa Point A ARFCN to determine the Frequency range FR1 or FR2
* @param unpaired Duplex mode TDD or FDD
* @return PRACH format (format concatenated with format2)
*/
uint16_t get_nr_prach_format_from_index(uint8_t index, uint32_t pointa, uint8_t unpaired);