Skip to content

Separate NR from LTE#229

Open
teodora-vladic wants to merge 19 commits into
developfrom
lte-nr
Open

Separate NR from LTE#229
teodora-vladic wants to merge 19 commits into
developfrom
lte-nr

Conversation

@teodora-vladic

Copy link
Copy Markdown
Contributor

Not yet finished.

I need CI results for all pipelines in order to continue reworking NR APIs.

francescomani and others added 12 commits June 19, 2026 09:46
Signed-off-by: Francesco Mani <email@francescomani.it>
fh_if4p5_south_in and fh_if4p5_south_out are called in NR for 7.2 split but never actually executed
they are overwritten at runtime in ru_thread

Signed-off-by: Francesco Mani <email@francescomani.it>
…for NR

Create nr_fhi_t *fhi in openair0_device_t (rfdevice for LOCAL_RF,
ifdevice for IF5/IF4p5), keeping split logic out of the L1 struct.

LOCAL_RF used for rfsimulator and USRP.

For REMOTE_IF4p5, nr_fhi_if4p5_dl_slot_send now calls ru->fh_south_out after
get_internal_parameter("fh_if4p5_south_out") overwrites fh_south_out.

Signed-off-by: Teodora Vladić <teodora.vladic@openairinterface.org>
Signed-off-by: Teodora Vladić <teodora.vladic@openairinterface.org>
Signed-off-by: Teodora Vladić <teodora.vladic@openairinterface.org>
Signed-off-by: Teodora Vladić <teodora.vladic@openairinterface.org>
Signed-off-by: Teodora Vladić <teodora.vladic@openairinterface.org>
Signed-off-by: Teodora Vladić <teodora.vladic@openairinterface.org>
Signed-off-by: Teodora Vladić <teodora.vladic@openairinterface.org>
Signed-off-by: Teodora Vladić <teodora.vladic@openairinterface.org>
Signed-off-by: Teodora Vladić <teodora.vladic@openairinterface.org>
Signed-off-by: Teodora Vladić <teodora.vladic@openairinterface.org>
@teodora-vladic teodora-vladic added 4G-LTE Perform 4G Tests 5G-NR Perform 5G Tests retrigger-ci Re-run CI labels Jun 24, 2026
@github-actions github-actions Bot removed the retrigger-ci Re-run CI label Jun 24, 2026
@durantabot

Copy link
Copy Markdown
Collaborator

CI Build: #447 | Failed on the following stages:

@durantabot

Copy link
Copy Markdown
Collaborator

CI Build: #446 | Failed on the following stages:

…_if5_south_out to AW2S

Signed-off-by: Teodora Vladić <teodora.vladic@openairinterface.org>
@teodora-vladic teodora-vladic added the retrigger-ci Re-run CI label Jun 25, 2026
@github-actions github-actions Bot removed the retrigger-ci Re-run CI label Jun 25, 2026
@sgarg00 sgarg00 added the retrigger-ci Re-run CI label Jun 25, 2026
@github-actions github-actions Bot removed the retrigger-ci Re-run CI label Jun 25, 2026
…_if5_south_in to AW2S

Signed-off-by: Teodora Vladić <teodora.vladic@openairinterface.org>
@durantabot

Copy link
Copy Markdown
Collaborator

CI Build: #457 | Failed on the following stages:

@sgarg00 sgarg00 added the retrigger-ci Re-run CI label Jun 25, 2026
@github-actions github-actions Bot removed the retrigger-ci Re-run CI label Jun 25, 2026
…ng init_NR_RU()

Signed-off-by: Teodora Vladić <teodora.vladic@openairinterface.org>
… for NR

Signed-off-by: Teodora Vladić <teodora.vladic@openairinterface.org>
…t_NR_RU()

Signed-off-by: Teodora Vladić <teodora.vladic@openairinterface.org>
…pendant

Move stopping and ending RF/IF devices from nr-softmodem.c to nr-ru.c

RU_t dependency function pointers:
- feprx
- start_rf
- stop_rf
- start_write_thread
- nr_start_if

Signed-off-by: Teodora Vladić <teodora.vladic@openairinterface.org>
Signed-off-by: Teodora Vladić <teodora.vladic@openairinterface.org>
Fixes: 7b7afae ("feat(oran_fhlib_5g): Changes to run K release)"
@durantabot

Copy link
Copy Markdown
Collaborator

CI Build: #488 | Failed on the following stages:

@sgarg00 sgarg00 added the retrigger-ci Re-run CI label Jun 26, 2026
@github-actions github-actions Bot removed the retrigger-ci Re-run CI label Jun 26, 2026
@bpodrygajlo

Copy link
Copy Markdown
Collaborator

It would be better to use established terms in names and use existing architectures as the base of this work. I don't know about AW2S or legacy LTE radios, but what you are describing here is a lower-layer split, specifically a family of 7.x splits. To me this does not necessarily fit the openair0_device interface, which fits split8 devices the best. Its is visible that some functions were crammed into openair0_device to make it work for frequency-domain interfaces.

I think it would be best if the name was related to LLS / Split7.x. We should also drop all names like if5, if4.5 as these are historical synonyms to the now industry-standard split8/split7 nomenclature.

The entire integration layer should be inside the application instead of the openair0_device. Accesses to RU_t and gNB_t just make the code more difficult to understand inside the libraries.

One thing that is missing is the 7.2 extensions related to beamforming and precoding. We should identify these extensions and add them to the interface. An example is of these extensions are seen here: https://gitlab.eurecom.fr/oai/openairinterface5g/-/merge_requests/4016.

@teodora-vladic

Copy link
Copy Markdown
Contributor Author

It would be better to use established terms in names and use existing architectures as the base of this work. I don't know about AW2S or legacy LTE radios, but what you are describing here is a lower-layer split, specifically a family of 7.x splits. To me this does not necessarily fit the openair0_device interface, which fits split8 devices the best. Its is visible that some functions were crammed into openair0_device to make it work for frequency-domain interfaces.

I think it would be best if the name was related to LLS / Split7.x. We should also drop all names like if5, if4.5 as these are historical synonyms to the now industry-standard split8/split7 nomenclature.

The entire integration layer should be inside the application instead of the openair0_device. Accesses to RU_t and gNB_t just make the code more difficult to understand inside the libraries.

One thing that is missing is the 7.2 extensions related to beamforming and precoding. We should identify these extensions and add them to the interface. An example is of these extensions are seen here: https://gitlab.eurecom.fr/oai/openairinterface5g/-/merge_requests/4016.

Thanks @bpodrygajlo.

I will delete if5/if4p5 naming. I just need to do step by step to make sure that CI is unaffected with my cleanup. But yes, I completely agree it's outdated.

I want to completely remove NR dependency on RU_t. However, I disagree with putting all L1 inside the application because an application should only contain the relations between layers, and libraries should take care of each layer. For different radios, we have a device (rfsimulator, oai_usrpdevif, oran_fhlib_5g,...). And currently, we use openair0_device_t for time-domain samples, stopping, ending the device,... I would like that device be also used for split handling.

I am aware for precoding and beamforming, that I still have to do. At the moment, we use nr_feptx_prec() function, that shall incorporate multi-sections handling as well.

@rorsc

rorsc commented Jun 29, 2026

Copy link
Copy Markdown
Member

And currently, we use openair0_device_t for time-domain samples, stopping, ending the device,... I would like that device be also used for split handling.

"Split handling" means LLS/7.2/frequency domain?

can you please say why you would like to use openair0 for frequency domain, please? I agree with Bartosz in that this seems to be made for time-domain signals, and that at least for 7.2, people crammed it there because they did not know where to put it, not because that was the best choice.

@teodora-vladic

Copy link
Copy Markdown
Contributor Author

And currently, we use openair0_device_t for time-domain samples, stopping, ending the device,... I would like that device be also used for split handling.

"Split handling" means LLS/7.2/frequency domain?

can you please say why you would like to use openair0 for frequency domain, please? I agree with Bartosz in that this seems to be made for time-domain signals, and that at least for 7.2, people crammed it there because they did not know where to put it, not because that was the best choice.

Yes, I want a device to take care of all LLS (time and frequency domain) splits.

Since initially, 7.2 is designed to use oai_transpro, and loaded by transport_init(), I assumed that a device should take care of all existing LLS splits. But that is not the case at the moment. If we don't go through that route, and just leave openair0_device_t as it is in develop, then I would suggest to not use a device for 7.2 at all because it only starts/stops/ends the plugin for xran, which can be then done through another way and delete device for 7.2 entirely.

My main goals would be to:

  1. delete RU_t dependency for NR,
  2. create one struct for split 8,
  3. one struct for split 7.2,
  4. reference both structs in a new NR_L1_info_t (or NR_LLS_t) struct,
  5. create function pointers for:
    • time domain samples,
    • frequency domain samples,
    • triggering UL slot when ready (in order to push into the Tx FIFO queue),
    • remove prach_l1rx_queue and trigger PRACH slot when ready

That would be it for now, and then I need to figure out the sync time for 7.2 (because I would like to remove ru_thread dependency for 7.2), precoding/beamforming and multi-sections.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

4G-LTE Perform 4G Tests 5G-NR Perform 5G Tests

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants