Commit Graph
108 Commits
Author SHA1 Message Date
Laurent THOMAS 1292cd68b7 Remove the usage of global mem for rach rx process
saves about 600MB of memory allocation

Move the definition of PRACH items and the PRACH list to the
defs_nr_commons.h file.

Do not re-write the entire structure in nr_schedule_rx_prach(), as it is
quite large now.
2025-10-30 23:01:06 +01:00
Mario Joa-Ng 65ef3cfa74 Set RX nBeamIndex according to beam allocation
Handle CP UL packet at xran_fx_tx_send_slot() instead of
xran_fh_rx_read_slot(), as the latter would set this information too
late (on reception on samples, but it needs to be filled in the CP
packet prior to reception).
2025-10-20 17:21:12 +02:00
Mario Joa-Ng 2d27e0fc0a Set TX nBeamIndex according to beam allocation
Initialize ru_info structure with beam information, and set beams on TX
direction. Initialize the number of antennas for both RX/TX in both
cases for completeness.
2025-10-20 17:21:12 +02:00
Mario Joa-Ng c645e8b096 Fix xran: Correctly read PRACH beam index
Upgrade xran patch, bump version number.
2025-10-20 17:21:12 +02:00
Mario Joa-Ng c36a6bcb47 Fix the bug in calculating fh_config->neAxc where num_beams_period is multiplified twice. 2025-10-14 11:56:03 +02:00
Robert Schmidt 19813283fb Avoid T error on radio libraries
These libraries have an (indirect) dependency on T, either by using the
logging module (which in turn depends on T), or through other includes.

The easiest is to depend on the logging module, which will fulfil also
the T dependency.

It would equally be feasible to use the utils target (which in turn
depends on log_headers), but this would necessitate to compile, and does
not seem to be necessary.
2025-09-29 09:04:02 +02:00
Teodora 0367881ba9 Performance Management implementation
Introduced a parameter start_up_timing which indicates if PM activation is supported during the start-up
procedure. We initialize this parameter, based on the vendor.

Notification interval is set to 10s.
2025-08-26 15:17:38 +02:00
Teodora 625b4b0cde Add support for RU username parameter for connection to a RU via M-plane
The "sudo" access group is required by OAI gNB.
2025-08-26 15:17:38 +02:00
Teodora e7db367c9d Rearrange <edit-config>, <validate>, and <commit> RPCs
Refactor these RPCs to facilitate their use in other Management functionalities,
not only Configuration Management.
2025-08-26 15:17:38 +02:00
Teodora 5291afe165 Add a comment for Rx gain correction
Definition in o-ran-uplane-conf.yang model:
"Gain correction of RF path linked with array element or array layers.
 Common part of overall gain_correction.
 gain_correction = common array-carrier gain-correction + eAxC gain correction."
2025-08-26 15:17:38 +02:00
Teodora eee7d976ec Correct the Tx gain 2025-08-26 15:17:38 +02:00
Teodora 2e9101f833 Add managed delay node in Rx endpoint creation 2025-08-26 15:17:38 +02:00
Teodora 9bb15f15b8 Correctly fill the cyclic prefix for Tx/Rx endpoints 2025-08-26 15:17:38 +02:00
Teodora 8bd6e16ad1 Correctly fill the frame structure for Tx/Rx endpoints and fft size for Rx endpoints 2025-08-26 15:17:38 +02:00
Teodora 0b0e804f73 Properly pass the frequency offset to Tx/Rx endpoints 2025-08-26 15:17:38 +02:00
Teodora 10d60f71ce Separate Tx/Rx endpoint creation
As per o-ran-uplane-conf model, some nodes exist in Rx but not in Tx
(e.g. "ul-fft-sampling-offsets"), and vice versa.
2025-08-26 15:17:38 +02:00
Teodora 4e9e2b39e9 Set the correct yang node name for MTU retrieval 2025-08-26 15:17:38 +02:00
Laurent THOMAS c4f4f8d919 Remove threequarter_fs, log_level; make functions static
2 functions with same name as static to make it clearer they are separate.

remove unused copy of log_level global var.

remove threequarter sampling variable from the radio board general
configuration. The decision of sampling rate is made above. A better
behavior can be done later, like ask to the radio board what sampling
rate it can do,then use it to decide the appropiate sampling rate from
the gNB configuration. In UE case, it is another issue, as the sampling
rate would change after we decode SIB1, but also it is not developped
yet.
2025-08-20 09:36:23 +02:00
Xin Zhe Khooi f6aeb21d97 ldpc_aal: handle T2 case in runtime 2025-08-05 18:38:17 +02:00
Robert Schmidt 0d4246e354 Rename nrLDPC_coding_t2 options to nrLDPC_coding_aal 2025-08-05 18:38:17 +02:00
Romain Beurdouche 8e33727c37 feat(oran_fhlib_5g): pkgconfig fix for E release
E release had the same issue of not using pkgconfig properly as F release.
This issue was fixed in F release when enabling its compatibility with DPDK 21+.
This commit brings this fix to E release.
2025-07-09 14:55:44 +02:00
Romain Beurdouche 486726233d feat(oran_fhlib_5g): Enable to include a BBDEV device while initializing EAL
In order to be usable in parallel of FHI 7.2, BBDEV devices should be included in the EAL initialization that is prformed by xran.
This commit adds a way of adding the BBDEV device from OAI.
Also fixes an issue with pkgconfig in xran.
2025-07-09 14:55:44 +02:00
Robert SchmidtandRomain Beurdouche 02bc14d8c1 get xran stats
Get xran stats in the trx_oran_get_stats function
and use trx_oran_get_stats upon stopping and ending RF.

Co-authored-by: Romain Beurdouche <romain.beurdouche@eurecom.fr>
2025-07-09 14:55:44 +02:00
Robert Schmidt b7a6b1b7d6 Do not include xran internal data: not needed 2025-07-09 14:55:44 +02:00
Robert SchmidtandRomain Beurdouche cc076eb547 Use locally available data instead of peaking into xran internals
Look up xran_fh_init/xran_fh_config through driver instead of peaking
into xran internals. Note that xran writes values back into these
structs during initialization, and hence it is important to store them
_after initialization_.

Some remarks regarding less obvious changes:
- slotnum is replaced by slots_in_sf: SLOTNUM_PER_SUBFRAME uses the time
  duration of a slot (=interval_us_local) to calculate the numbers of
  slots in a subframe, which can be done with a simple shift instead
- The prach duration should be queried from the PRACH configuration
  table. The function to query the occasion info is part of the MAC
  layer code while this information can be used outside of this layer.
  Use header `nr_prach_config.h` to not duplicate functionality.

Co-authored-by: Romain Beurdouche <romain.beurdouche@eurecom.fr>
2025-07-09 14:54:52 +02:00
Robert Schmidt 8dcdee85f7 Use buffers as set up by driver
The buffers are set up by the OAI xran driver, so instead of peaking
into xran internal data, access the buffers through the driver directly.

The buffers get set up through the following xran calls

In xran_5g_fronthault_config():
- src   => sFrontHaulTxBbuIoBufCtrl
- srccp => sFrontHaulTxPrbMapBbuIoBufCtrl
- dst   => sFrontHaulRxBbuIoBufCtrl
- dstcp => sFrontHaulRxPrbMapBbuIoBufCtrl

In xran_5g_prach_req()
- prach(dst)       => sFHPrachRxBbuIoBufCtrl
- prach(dst)decomp => sFHPrachRxBbuIoBufCtrlDecomp

Note that in all cases:
- the xran buffer array is [XRAN_N_FE_BUF_LEN][XRAN_MAX_SECTOR_NR][XRAN_MAX_ANTENNA_NR]
  (of [internal] type BbuIoBufCtrlStruct, but we give an sBufferList)
- the driver buffer array is [XRAN_MAX_ANTENNA_NR][XRAN_N_FE_BUF_LEN]

Hence, we switch the order of indexing, leave out the sector, and omit
the sBufferList member.
2025-07-09 08:12:48 +00:00
Robert Schmidt 3e3d872268 Avoid use of xran_get_slot_idx_from_tti() and use public API
xran_get_slot_idx_from_tti() has been introduced to access data
information from xran. However, it makes no sense, as the used macros to
calculate frame, slot, subframe, are already in the public API. Hence,
use these macros directly.

It would be possible to remove xran_get_slot_idx_from_tti(), but doing
so we would need to update the patch ID, causing trouble to users.
2025-07-09 08:12:48 +00:00
Raymond Knopp 1153721b19 changes for multi-RU DAS scenario, handling of antenna ports in 7.2 (memory allocations for PRACH and neAxc in fh_config) 2025-06-10 12:11:51 +02:00
Raymond Knopp a1a4f24d0f hotfix for F. Mani's update to nr_feptx_prec handling of multiple beams 2025-06-10 12:11:51 +02:00
Teodora 3a1fc2ef65 Fix Liteon for xran F release and improve docs
1. Closes #884 - increase the XRAN_MAX_FRAGMENT from 4 to 6 (sufficient for MTU 1500 with compression 8b)
2. Add new firmware version that supports jumbo frames
3. Update the config file to align with the new Liteon unit in our lab - center frequency, jumbo frames, compression and RU MAC address,
as well as the max DL MIMO layers.
2025-05-13 12:53:16 +02:00
Teodora 83afb8b852 Set common E&F releases for CUS and CUSM 2025-05-10 00:31:03 +02:00
Romain Beurdouche e12bcc964d feat(oran_fhlib_5g): Make F release patch dual
Update the xran F release patch to work for Arm targets in addition to x86 targets.
2025-04-04 13:26:01 +00:00
Romain Beurdouche 54fd8ed9df feat(oran_fhlib_5g): BFP compression and decompression for Arm targets
The fronthaul library ships with BFP compression for AVX512 enabled targets.
This commit adds BFP compression for Arm targets by using the ArmRAL library.
2025-04-04 13:25:53 +00:00
047e80f070 feat(oran_fhlib_5g): Make E release patch dual
Update the xran E release patch to work for Arm targets in addition to x86 targets.

Co-authored-by: Yi-Hung Chang <Yi-Hung.Chang@eurecom.fr>
Co-authored-by: brobert <brobert@valiha.com>
2025-04-01 12:23:03 +00:00
brobert db27b09b7c enabling ARM and INTEL memory alignment 2025-04-01 12:23:03 +00:00
brobert a0f16e7e83 fix(oran_fhlib_5g): Do not include immintrin.h for Arm targets
Remove include of immintrin.h in radio/fhi_72/oaioran.c when compiling for a Arm target.
2025-04-01 12:23:03 +00:00
Teodora 7beb88425f Use [HW] logging instead of [PHY] or [NR_PHY] 2025-03-31 12:16:18 +02:00
Teodora d5fceb8e1f Parsing RU M-plane info to xran 2025-03-31 12:16:18 +02:00
Teodora 430026f1ec Wait until RUs are ready and add <disconnect> RPC for M-plane
- if RU(s) are not well configured, disconnect immediately and stop the DU
  - if all RUs are well configured, proceed with waiting until ready. The RU is
    ready when the carriers are activated. Either the RU already has preconfigured
    carriers (previous M-plane client configured), or the DU has to wait until receives
    the notifications.
2025-03-31 12:16:16 +02:00
Teodora f22bc5acc7 Add <commit> RPC for M-plane 2025-03-31 12:15:20 +02:00
Teodora b478930a04 Add <validate> RPC for M-plane 2025-03-31 12:15:20 +02:00
Teodora e79c79b82e Add <edit-config> RPC for M-plane
- generate CU-planes RU configuration based on the loaded yang models
    and DU config file
  - not yet implemented for libyang and libnetconf2 v1
2025-03-31 12:15:18 +02:00
Teodora dd8a6eaaf5 Load yang models
Ideally, we should load the yang models from the RU operational datastore, but the issues are following:
  1) the yang models order is not good - dependancy models have to be loaded first
  2) earlier O-RAN yang versions (e.g. v4) is not properly defined (i.e. optional parameters should not be included by default)

Added support in both cases, loading from RU with <get-schema> RPC, and loading statically from "radio/fhi_72/mplane/yang/models" folder.
2025-03-31 12:14:33 +02:00
Teodora e0ffba49ae Store U-plane related info from xml
- interface name,
  - TX/RX carrier names, and
  - TX/RX endpoint names
2025-03-31 12:14:30 +02:00
Teodora 45d0eaf3c4 Get and store M-plane related params for xran 2025-03-31 12:13:44 +02:00
Teodora 2cd5c1faf7 Add <supervision-watchdog-reset> RPC for M-plane 2025-03-31 12:12:38 +02:00
Teodora 6266239c34 Add <subscribe> RPC for M-plane 2025-03-31 12:11:58 +02:00
Teodora 07bab2a707 Get the current sync status from operational datastore 2025-03-31 12:11:11 +02:00
Teodora fb670db91e Get info from xml operational datastore
- obtain one or multiple node values
2025-03-31 12:10:10 +02:00
Teodora 064866459c Add <get> RPC for M-plane 2025-03-31 12:10:03 +02:00