Commit Graph
32352 Commits
Author SHA1 Message Date
Robert Schmidt d93b0e13d2 Prevent infinite loop on HARQ PID=-1 and Single Entry PHR
When receiving single-entry PHR with HARQ PID -1
(nr_mac_process_mac_pdu() is called with such parameter in at least two
places), the error handling path calls continue skipping the accounting
of the current sub-pdu (pduP and pdu_len). This results in an infinite
loop. Fix by moving functionality into a separate function.

Fixes: 2e0493632d ("RLC data ind: single call for complete TB at gNB")
Signed-off-by: Robert Schmidt <robert.schmidt@openairinterface.org>
2026-04-08 14:24:00 +02:00
Jaroslava Fiedlerova ef67552e1f Merge remote-tracking branch 'origin/further_unused_arguments_cleanup' into integration_2026_w15 (!3977)
Further unused arguments cleanup

More fixes for unused function arguments (see #1057),
add_compile_options(-Wunused-parameter) added in folders:
- nfapi
- openair2
- openair3
- USRP
- rfsimulator
2026-04-08 13:55:16 +02:00
Jaroslava Fiedlerova 8d8ac73cb4 Merge remote-tracking branch 'origin/fix-build_oai' into integration_2026_w15 (!4032)
build_oai fixes: harmonize duplicate options, remove wrong --build-lib handling

Correctly handle --build-lib such that missing arguments are still handled
properly. Harmonize, and remove useless code.
2026-04-08 13:54:38 +02:00
Bartosz Podrygajlo dfed62bd24 Better stubs for test_nr_ue_ra_procedures 2026-04-08 08:31:14 +02:00
francescomani edd7611854 pre-store pucch_ResourceCommon to avoid segfault in scheduling PUCCH at UE
(the field in some scenarios was erased by RRCSetup before being used for ACK of MSG4, storing it in advance prevents the segfault)
2026-04-08 08:30:20 +02:00
Robert Schmidt 466c9b5eee Increase reliability of ltebox start
The existing ltebox startup sequence on nepes occasionally fails.
Running

    sudo su -c 'screen -dm -S simulated_hss /opt/hss_sim0609/starthss' \
        && sleep 1 && sudo /opt/ltebox/tools/start_mme && sudo /opt/ltebox/tools/start_xGw \
        & sleep 1 && ip a show dev tun1

Reliably shows that no tun1 interface is created, because that takes
around 1s itself. Increasing the second sleep to 2 reliably deploys it
correctly.

Do the same for sabox and ltebox on nano for consistency.

Signed-off-by: Robert Schmidt <robert.schmidt@openairinterface.org>
2026-04-08 02:13:53 +02:00
Robert Schmidt 447c0b211e gNB_scheduler_ulsch: make functions static 2026-04-07 21:05:43 +02:00
Robert Schmidt d63dc3a321 Remove build_oai --clean-kernel option
This option is potentially dangerous as it might override custom user
options.

Signed-off-by: Robert Schmidt <robert.schmidt@openairinterface.org>
2026-04-07 15:06:42 +02:00
Robert Schmidt 900fa704ed bugfix run_asn1c: make make/ninja fail on error
Functionality existed to print all output of asn1c on error, but the
form

    asn1c || cat X

makes the command exit with a 0 exit code (success). Fix by explicitly
returning non-zero exit code in this case:

    asn1c || ( cat X && false )

Signed-off-by: Robert Schmidt <robert.schmidt@openairinterface.org>
2026-04-07 15:06:42 +02:00
Robert Schmidt be9fc79f77 harmonize build_oai -c/-C
Both do practically the same. Harmonize them into one while guaranteeing
backwards compatibility.

Signed-off-by: Robert Schmidt <robert.schmidt@openairinterface.org>
2026-04-07 15:06:42 +02:00
Robert Schmidt 57df1ede4b Remove log directory creation: it's not used
Signed-off-by: Robert Schmidt <robert.schmidt@openairinterface.org>
2026-04-07 15:06:42 +02:00
Robert Schmidt 6684ead115 Correctly handle build_oai --build-lib option
This fixes two problem:

1. an omitted --build-lib library could yield strange grep errors. For
   instance, calling build_oai --build-lib --cmake-opt OPTION passed
   "--cmake-opt" to grep, that does not know this option. Handle by
   explicitly separating options and search pattern through --.
2. Even with this fixed, set -e triggered an exit because grep exits
   with non-zero error code. Remove set -e to have the error handling
   code pass.

With set -e removed, properly check that the build passes.

Update a log line to make it clearer.

Assisted-by: Claude:claude-sonnet-4-6
Signed-off-by: Robert Schmidt <robert.schmidt@openairinterface.org>
2026-04-07 15:06:33 +02:00
Jaroslava Fiedlerova 8dfb61827b Merge remote-tracking branch 'origin/bugfix-rlc-fuzzing' into integration_2026_w15 (!4029)
nr rlc: tolerate bogus data

Some unfriendly entity may play with the RLC module and send bogus data to
trigger funky behaviors here and there.

A report sent by Dhanish indentifies one such issue.

From analyzing this report, a possible scenario is the following. Unfriendly
entity sends an RLC PDU with: is_first=0 is_last=0 so=15 lenght of data,
whatever, let's say 1.

This PDU is put in the RX list.

Then later it sends another PDU (for the same SN, obviously), with: is_first=1
is_last=1 so=0 (well, since is_first=1, necessarily so=0; it is not transmitted,
see 38.322 6.2.2.3 for UM and 38.322 6.2.2.4 for AM) length=10, let's say.

This PDU is also put in the RX list, before the previous one.

Then the function sdu_full() returns 1, so reassemble_and_deliver() is called
and the 'while (pdu)' loop is executed for both PDUs. When the second (bogus
one) is processed, so==10 (after processing the first PDU) and the line: int
len = pdu->size - (so - pdu->so) is: int len = 1 - (10 - 15) which is not good.

So we detect the case 'pdu->so > so' and reject the SDU. We could label the
other entity as bogus, since no standard RLC implementation will produce such a
case, but let's remain friendly, even with unfriendly entities. (To be changed
later if needed.)

The problem was reported for RLC AM but is also present in RLC UM. (Not in RLC
TM, where there is no segmentation.) Note: according to the report, this bug was
found using a fuzzer described as 'AI-assisted custom 5G NR protocol fuzzer'. It
had to be said.
2026-04-07 12:09:51 +02:00
Romain Beurdouche f6693d41e3 fix(nr_dlsch): Remove DLSCH mapping debugs 2026-04-07 09:21:22 +00:00
Romain Beurdouche 1d42dfda66 fix(nr_dlsch): time meas in TX symbol processing
* Global timers were started and stopped
  in the TX symbol processing tasks
  which is not thread safe
* gNBs nrL1_stats.log now shows
  PDSCH generation time rather than
  layer mapping and precoding times
2026-04-07 09:21:22 +00:00
Romain Beurdouche b875f855c7 fix(nr_dlsch): symbol offset calculation
There was an indexing error in the calculation of the symbol offset `re_beginning_of_symbol`.
The symbol was tested to hold PTRS or DMRS based on the index of the
first symbol processed in the task and not based on the index of the
symbol as it should be.
Then PDSCH generation was not working properly for more than one symbol
per task.
2026-04-07 09:21:22 +00:00
Raymond KnoppandRobert Schmidt bad2ae874e added thread-pool support for TX symbol processing
removed warnings in nr_dlsch.c and changed return of do_onelayer

Co-authored-by: Robert Schmidt <robert.schmidt@openairinterface.org>
2026-04-07 09:19:01 +00:00
Jaroslava Fiedlerova da44a52092 Merge remote-tracking branch 'origin/microamp_MR' into integration_2026_w15 (!4014)
Microamp FR2 configuration file and documentation

Adding Microamp FR2 RU configuration file and updating documentation
2026-04-07 10:38:40 +02:00
Karim Boutiba f55e26a25e Adding Microamp FR2 RU configuration file and updating documentation 2026-04-07 10:23:32 +02:00
francescomani 5d8e79521e some cleanup and improvements for default PUCCH on gNB 2026-04-07 10:07:07 +02:00
rmagueta 14cceed229 Fix incorrect SRS subcarrier mapping in fill_srs_channel_matrix
The previous implementation of fill_srs_channel_matrix assumed an incorrect SRS subcarrier mapping, leading to wrong indexing of the estimated channel in frequency domain
2026-04-06 10:19:34 +01:00
Jaroslava Fiedlerova 2407c35633 Merge branch 'integration_2026_w14' into 'develop'
Integration `2026.w14`

* !4021 hotfix for 4 layer mapping on aarch64
* !4022 UE: Fix CSI RS Measurement
* !4010 UE: Implement SUCI Profile Scheme A
* !4012 More compilation improvements
* !4027 CI: fix Aerial conf for test with 30 MHz BW
* !3948 Update doc: split RUNMODEM.md, clarify USRP-specific workarounds
* !4026 RRC/E1 bugfixes: handle missing UE context, don't send E1 msg if no PDU session
* !3996 Switch xran lib repo to https://github.com/openairinterface/o-du-phy.git
* !4020 Remove a lot of unused code and defines
* !3969 Acceleration of channel convolution
* !4023 Cleanup common_lib.h
* Clarifications on license
* !4017 CI: Add stage to push to local git repository

See merge request oai/openairinterface5g!4025
2026-04-03 10:09:09 +00:00
Jaroslava Fiedlerova 1a4c4c9b35 Merge remote-tracking branch 'origin/ci-push-local-repo' into integration_2026_w14 (!4017)
CI: Add stage to push to local git repository

This MR includes minor code cleanup and fixes for warnings reported by Jenkins.
It also introduces a new stage in ci-scripts/Jenkinsfile-GitLab-Container that
pushes the branch to a local repository after the merge. In a follow-up MR,
this local repository will be used as the source for cloning the branch,
replacing direct access to GitLab/GitHub.
2026-04-03 09:09:06 +02:00
Jaroslava Fiedlerova 3f3c0b5ed2 Jenkinsfile-GitLab-Container: declare pipeline variables
Did you forget the `def` keyword? WorkflowScript seems to be setting a field named JOB_TIMESTAMP (to a value of type String) which could lead to memory leaks or other issues.
Did you forget the `def` keyword? WorkflowScript seems to be setting a field named MR_NUMBER (to a value of type String) which could lead to memory leaks or other issues.
2026-04-03 08:48:32 +02:00
Jaroslava Fiedlerova febbadf83a CI: Add stage to push to local git repository 2026-04-03 08:48:32 +02:00
Jaroslava Fiedlerova e0d9edeeee Add Jenkinsfile for RAN-Local-Repo-Push 2026-04-03 08:48:32 +02:00
Robert Schmidt 0f7550831f Clarifications on license
Signed-off-by: Robert Schmidt <robert.schmidt@openairinterface.org>
2026-04-03 04:14:46 +02:00
Cedric Roux 6556c88694 nr rlc: tolerate bogus data
Some unfriendly entity may play with the RLC module and send bogus data to
trigger funky behaviors here and there.

A report sent by Dhanish, India, indentifies one such issue.

From analyzing this report, a possible scenario is the following.

Unfriendly entity sends an RLC PDU with:
is_first=0
is_last=0
so=15
lenght of data, whatever, let's say 1.

This PDU is put in the RX list.

Then later it sends another PDU (for the same SN, obviously), with:
is_first=1
is_last=1
so=0 (well, since is_first=1, necessarily so=0; it is not transmitted,
see 38.322 6.2.2.3 for UM and 38.322 6.2.2.4 for AM)
length=10, let's say.

This PDU is also put in the RX list, before the previous one.

Then the function sdu_full() returns 1, so reassemble_and_deliver() is
called and the 'while (pdu)' loop is executed for both PDUs. When the
second (bogus one) is processed, so==10 (after processing the first
PDU) and the line: int len = pdu->size - (so - pdu->so)
is: int len = 1 - (10 - 15)
which is not good.

So we detect the case 'pdu->so > so' and reject the SDU. We could label
the other entity as bogus, since no standard RLC implementation will
produce such a case, but let's remain friendly, even with unfriendly
entities. (To be changed later if needed.)

The problem was reported for RLC AM but is also present in RLC UM.
(Not in RLC TM, where there is no segmentation.)

Note: according to the report, this bug was found using a fuzzer
described as 'AI-assisted custom 5G NR protocol fuzzer'. It had
to be said.
2026-04-02 21:41:18 +02:00
Jaroslava Fiedlerova 5e6fd58dde Merge remote-tracking branch 'origin/cleanup-split8-api' into integration_2026_w14 (!4023)
Cleanup common_lib.h

This change reduces the number of dependecies of common_lib.h and simplifies
the task of implementing an external OAI radio library.
2026-04-02 18:33:50 +02:00
Jaroslava Fiedlerova 978932e522 Merge remote-tracking branch 'origin/vrtsim-convolution-acceleration' into integration_2026_w14 (!3696)
Acceleration of channel convolution

Added two versions of channel convolution:
- accelerated via threadpool
- accelerated using CUDA
2026-04-02 17:11:31 +02:00
Robert Schmidt 0393a14049 Merge remote-tracking branch 'origin/remove-unused-code' into integration_2026_w14 (!4020)
Remove a lot of unused code, defines, and config options

Remove unused header files and defines.

Slightly clean up gnb_config.c by removing all _IDX variables. Remove
these unused parameters:

- MACRLCs.[0].num_cc
- MACRLCs.[0].local_n_portc
- MACRLCs.[0].remove_n_portc
- MACRLCs.[0].remote_s_portc
- MACRLCs.[0].remote_s_portd
- L1s.[0].num_cc
- L1s.[0].local_n_portc
2026-04-02 15:46:56 +02:00
Jaroslava Fiedlerova eb50f78ed5 Merge remote-tracking branch 'origin/xran-repo' into integration_2026_w14 (!3996)
Switch xran lib repo to https://github.com/openairinterface/o-du-phy.git
2026-04-02 12:49:50 +02:00
Jaroslava Fiedlerova 13fbc5a643 CI: Get source repository from Gitlab plugin in Jenkins 2026-04-02 12:34:55 +02:00
Jaroslava Fiedlerova 6cf2570a9f Jenkinsfile-GitLab-Container: declare local vars in slave job triggers
Declare `localStatus` and `localResult` as local variables in `triggerSlaveJob`
and `triggerCN5GSlaveJob` functions by adding `def`.

This prevents unintended use of global variables in pipeline and avoids
potential variable leakage or conflicts between stages.

Follows the Jenkins recommendation:
Did you forget the `def` keyword? WorkflowScript seems to be setting a field named localStatus (to a value of type RunWrapper) which could lead to memory leaks or other issues.
Did you forget the `def` keyword? WorkflowScript seems to be setting a field named localResult (to a value of type String) which could lead to memory leaks or other issues.
2026-04-02 12:34:55 +02:00
Jaroslava Fiedlerova df7a1704cc Jenkinsfile-GitLab-Container: remove unused function 2026-04-02 12:34:55 +02:00
Robert Schmidt e1a7a2e8af Remove L1s.local_n_portc: not used
Also remove intermediate variable eth_params_n that is not used
anywhere.
2026-04-02 11:58:59 +02:00
Robert Schmidt 16b1a031a9 Remove MACRLCs.remote_s_portc/d: not used
Remove the gNB_MAC_INST.eth_params_s, since it's only purpose is to
store what can be on the stack.

For the Aerial log message, don't print an empty prefix but what is
actually used for Aerial.
2026-04-02 11:58:59 +02:00
Robert Schmidt 7ee619b0bc MACRLCs my/remote_portc: remove, is unused 2026-04-02 11:58:59 +02:00
Jaroslava Fiedlerova 1682507735 CI: Add CUDA-enabled unit tests for running on GH
- remove test_multipath and test_noise from ChanelSim tests of
  RAN-Channel-Simulation pipeline - will be executed together with the
  other CUDA-enabled unit tests
2026-04-01 23:00:16 +02:00
Jaroslava Fiedlerova b05985e7ab CI: Extend BuildRunTests() to accept configurable dockerfile and test options
- enable configurable dockerfile, runtime-opt, and ctest-opt parameters in
  the XML file for the Build_Run_Tests step
- pass runtime options to `docker run` to support ctest execution with CUDA
- allow additional ctest options for selective test execution and labeling
2026-04-01 22:57:03 +02:00
Robert Schmidt 7cf92f4bae Remove all gNB num_cc parameters in MACRLCs and L1s sections
These parameters are not used.
2026-04-01 21:38:40 +02:00
Jaroslava Fiedlerova 84d9cd3c93 CI: add channel pipeline tests to CTest and label CUDA tests
- add benchmark_channel_pipeline to CTest
- add test_channel_pipeline to CTest
- add `cuda` label to CUDA-dependent tests for easier execution and
  filtering
2026-04-01 21:36:20 +02:00
Jaroslava Fiedlerova 45d106f1c6 Relax CUDA device requirement
This change removes the cudaDevAttrIntegrated check and only requires
pageable memory access. This change allows to run GPU accelerated
channel convolution on GH machines.
2026-04-01 21:36:10 +02:00
Robert Schmidt 8a48fca140 Remove L1_..._IDX
Similar like parent commit, but for L1.
2026-04-01 21:19:51 +02:00
Robert Schmidt 42d5e5a0dc Remove MACRLC_..._IDX
The indices are brittle and might be wrong. Instead, use the option name
(via gpd()) to look up config options. This will also simplify the
removal of unused parameters, as we don't have to update all indices.

Remove leading CONFIG_STRING_, as it is just repetitive and adds noise.
The constants are both short(er) and sufficiently self-explanatory
without it.
2026-04-01 21:19:14 +02:00
Jaroslava Fiedlerova f69b88a108 Merge remote-tracking branch 'origin/fixes-rrc-e1' into integration_2026_w14 (!4026)
RRC/E1 bugfixes: handle missing UE context, don't send E1 msg if no PDU session

See individual commits
2026-04-01 20:58:35 +02:00
Jaroslava Fiedlerova 8f5148ab2a Merge remote-tracking branch 'origin/update-split-doc-runmodem' into integration_2026_w14 (!3948)
Update doc: split RUNMODEM.md, clarify USRP-specific workarounds

This reworks the documentation:
- split up RUNMODEM.md into separate documents for gNB, UE, NTN
- explains USRP workaround and patches
- makes a standalone UE doc file that explains UE-specific configuration
  & modes
- better explains physical simulators
- adds a document on tracy
- cleanup
2026-04-01 20:57:16 +02:00
Robert Schmidt 1a3bf557cf delay transaction: handle if no UE found
It can happen that a message is delayed, but then no UE is found for
such message, e.g., something is delayed but the UE context is deleted
in the meantime:

    [02:23:16.320730] [NR_RRC] I [--] (UE ID 3 RNTI d2b1) Remove UE context

    Assertion (ue_context_p) failed!
    In rrc_delay_transaction() /oai-ran/openair2/RRC/NR/rrc_gNB.c:191

In that case, don't delay the message further -- all handlers gated by
this function will check for the UE context and abort the transaction if
not present.
2026-04-01 17:09:37 +02:00
Robert Schmidt 1e9476a6de E1 message: handle if no UE found
Abort message processing if no UE can be found, which is what is done in
most other messages.
2026-04-01 17:09:37 +02:00
Robert Schmidt 95e4270ea7 bugfix: do not trigger e1 bearer setup when no PDU session
It can happen that no PDU session can be setup (e.g., PDU session
already setup). Check that there is at least one before triggering the
message.

Also initialize bearer_req.gNB_cu_cp_ue_id early to avoid uninitialized
IDs (e.g., when no PDU session to be setup).
2026-04-01 17:09:37 +02:00