Files
openairinterface5g/radio/fhi_72
Jaroslava Fiedlerova 68a4bb9a61 Merge remote-tracking branch 'origin/mplane-v16.01' into integration_2025_w48 (!3616)
[FHI72 M-plane] Update the M-plane support to v16.01

- retrieve the additional hardware states (oper-state, admin-state,
  availability-state) and update according to the received notifications
- properly configure MIMO mode if a RU supports
- update the yang models to v16.01
- tested with Benetel v1.4.1, and added an example run in the M-plane doc

Note: backwards compatible with M-plane v05.00

Also, memory leakages fixed cause by ru_session_list_t, and xml functions
xmlReadMemory() and xmlNodeGetContent().
2025-11-28 18:11:06 +01:00
..
2025-10-30 17:22:40 +01:00
2025-11-28 09:01:20 +01:00
2025-03-31 12:16:18 +02:00
2025-11-28 09:01:20 +01:00
2025-11-28 09:01:20 +01:00
2024-01-23 13:50:49 +01:00

This document describes the driver for the xran driver, implementing O-RAN FHI 7.2 interface. This is for developers; for user documentation, consider the O-RAN 7.2 tutorial instead.

The main source files and their purpose are as follows:

  • oaioran.c: definition of xran-specific callback functions.
  • oran-config.c: reading of 7.2-specific configuration and preparing xran configration.
  • oran-init.c: initialization of xran.
  • oran_isolate.c: main entry point and definition of function pointers for OAI callbacks.

The entry point for the driver library is transport_init() in oran_isolate.c. This function is concerned with setting necessary function pointers for OAI integration, and prepares xran configuration through get_xran_config(). This function reads 7.2 specific configuration and deduces some of the parameters (e.g., frequency) from OAI-provided radio configuration in openair0_config_t.

Actual xran initialization happens in oai_oran_initialize() in oran-init.c. It calls various helper function in the same file to set up DPDK memory buffer (pools). Notably, these callbacks are installed:

  • oai_xran_fh_rx_callback() through xran_5g_fronthault_config(): callback for PUSCH data; used to provide timing data.
  • oai_xran_fh_rx_prach_callback() through xran_5g_prach_req(): callback for PRACH data; not currently used and implemented in PUSCH data callback.
  • oai_physide_dl_tti_call_back() through xran_reg_physide_cb(): only used to unblock timing in oai_xran_fh_rx_callback() upon first xran call.

More detailed information about the xran callbacks can be taken from the xran documentation.

During normal operation, OAI calls into the driver through functions oran_fh_if4p5_south_in() for PUSCH/PRACH and oran_fh_if4p5_south_out() for PDSCH.

For PDSCH, oran_fh_if4p5_south_out() calls xran_fh_tx_send_slot() that optionally compresses IQ data, then writes it into IQ buffers of xran.

For PUSCH/PRACH, oran_fh_if4p5_south_in() calls xran_fh_rx_read_slot() that blocks and waits for the next slot. This is done through either a message queue, or through polling, which in both cases depends on xran calling the callback oai_xran_fh_rx_callback() as installed during xran initialization. Once unblocked, it reads first PRACH data, then PUSCH data, before returning to OAI.