Commit Graph
30817 Commits
Author SHA1 Message Date
Guido Casatiandbatuhan duyuler 92abefb815 Add NGAP Handover Failure message
This message is sent from the Target NG-RAN to the AMF.

The commit introduces:
* NGAP encoding function
* N2 callback for the target gNB
* handle the failure in RRC, inform NGAP
* send NGAP message to AMF via SCTP

Note: UE context in NGAP is fetched from the amf_ue_ngap_id

Co-authored-by: batuhan duyuler <batuhan.duyuler@firecell.io>
2025-09-18 11:34:30 +02:00
Guido Casatiandbatuhan duyuler 6e4f1b7b31 Add N2 Handover decision and trigger preparation on source CU
(1) add N2 ho decision based on measurements
(2) add trigger for N2 HO on source CU
(3) generate NG Handover Preparation Information message,
    including RRCReconfiguration, to be passed to the
    NG Handover Required message
(4) call RRC callback for Handover Required message

Co-authored-by: batuhan duyuler <batuhan.duyuler@firecell.io>
2025-09-18 11:34:30 +02:00
Guido Casatiandbatuhan duyuler 20e534d483 Add NGAP Handover Required message NGAP encoder and RRC callback on source NG-RAN
This commit introduces the NG Mobility Management Procedure known as
Handover Preparation. The outbound message is sent by the source NG-RAN
and is known as Handover Required.

* introduce NGAP library for Mobility Management
* introduce NGAP IEs encoder functions for Handover Required and relevant common IEs
* handle RRC trigger in NGAP and Send NGAP Handover Required to the AMF

Co-authored-by: batuhan duyuler <batuhan.duyuler@firecell.io>
2025-09-18 11:34:30 +02:00
Guido Casati cfb654e77f HO Preparation: add alloc_ho_ctx to rrc_gNB_mobility lib 2025-09-18 11:34:30 +02:00
Guido Casati ff5b2bc8b2 HO Preparation: print neighbour cell configuration 2025-09-18 11:34:30 +02:00
Guido Casati 2f4f177050 HO Preparation: allocate HO Context in the F1 trigger rather than nr_initiate_handover
During the N2 HO review has been found that the HO context
was not allocated at trigger time but later in the flow. This
might lead to issues in some scenarios (e.g. in N2 HO)
and it was fixed in this commit.
2025-09-18 11:34:30 +02:00
Guido Casati 26698d4f07 HO Preparation: do verify_section_notset of neighbour and measurement config for DU
During the review of N2 HO MR it has been found that there was no
check on the absence of the neighbour and measurement section in the DU config file.
2025-09-18 11:34:30 +02:00
Robert Schmidt 25380e8075 Add transm_timout timer to set UE to UL failure after timeout
Introduce a new timer for the use case where a UE should not be
scheduled anymore after a certain time. This is the case, for instance,
during handover, where the "source DU" forwards the RRCReconfiguration
and should stop scheduling this UE after some time.

Originally, transm_interrupt was introduced in 5c6d90aaff ("Use
NR_timer_t for UE transmission interrupt, e.g., RRC processing") to stop
scheduling a UE.

Commit 004403c84d ("Implement F1 UE Ctxt Modif Transmission Action
Indicator") reused this timer in an attempt to save code with an
"interrupt follow action".

In commit 89ebbb4192 ("Do not trigger ul failure in measgap scheduling
and standardize the verification if MAC is active in other scheduling
functions"), the transm_interrupt timer is used to not schedule a UE
through function nr_mac_ue_is_active(). This led to the UE not being
forwarded the RRCReconfiguration, effectively breaking handover, as the
message never reaches the UE. By using a new timer, the intended
functionality is restored.

Fixes: 89ebbb4192 ("Do not trigger ul failure in measgap scheduling
    and standardize the verification if MAC is active in other
    scheduling functions")
2025-09-18 11:34:30 +02:00
Robert Schmidt 98462c20ba Remove interrupt_action
Remove this flag, as it is not used as of this commit, and introduces
confusion (see next commit: we reused the trans_interrupt timer for
the transmission action indicator stop action, where the UE should stay
active, while it is *not* when transm_interrupt is active).
2025-09-18 11:34:30 +02:00
Robert Schmidt 7a02456883 Merge remote-tracking branch 'origin/meas-report-A2' into integration_2025_w38 (!3596)
L3 measurements and measReport A2

- Implementation of L3 measurements for active cell
- UE sends the measurement report for event A2
2025-09-18 09:38:39 +02:00
Robert Schmidt 8c78ef5b94 Correct Ubuntu version (to generic "Ubuntu") 2025-09-18 09:13:44 +02:00
Robert Schmidt a1175f7f61 Add documentation for Jetson build pipeline 2025-09-18 09:13:44 +02:00
francescomani 95dfb67e51 fix MSG3 with C-RNTI failure 2025-09-18 08:50:55 +02:00
Robert Schmidt 44729d5765 Add Jetson build pipeline to RAN-Container-Parent 2025-09-17 17:24:41 +02:00
Robert Schmidt 8045dc71e0 XML description for build on Jetson (ARMv8) 2025-09-17 15:26:34 +02:00
Robert Schmidt 1ea90fc987 Rename to native_armv9 image build type
For clarity, rename to native_armv9 for clarity. The check inside Python
checked for native_arm, and if we introduce native_armv8 (for jetson),
it would also match that.
2025-09-17 15:24:12 +02:00
Jaroslava Fiedlerova f691b7f9e4 Merge remote-tracking branch 'origin/fix-run-local-ci' into integration_2025_w38 (!3647)
Add nr-cuup to run_locally.sh

E1 deploy wasn't enable in the run_locally.sh script to run the CI on a local
machine. This MR is adding it. It was validated locally.
2025-09-17 14:56:45 +02:00
Jaroslava Fiedlerova e5413dcb2d Merge remote-tracking branch 'origin/issue993' into integration_2025_w38 (!3642)
Check command line for unknown options also at gNB
2025-09-17 10:16:43 +02:00
Jaroslava Fiedlerova 44fa1c2244 Merge remote-tracking branch 'origin/issue-954-fix' into integration_2025_w38 (!3568)
Fix UE DCI monitoring after RRC setup

After the UE is configured with pdcch-Config, it continues to monitor
fallback search spaces in pdcch-ConfigCommon for DCI with C-RNTI.

The rational is that after sending RRC Setup the network won't know if
the UE has received and successfully applied it. Hence the network would
still continue to use the fallback DCI till it receives RRC setup
complete.

Closes #954
2025-09-17 10:14:57 +02:00
Guido Casati 2aa496bae7 Add nr-cuup to run_locally.sh 2025-09-16 15:34:53 +02:00
Jaroslava Fiedlerova a9a554508d Merge remote-tracking branch 'origin/kpm-ran-func-segfault' into integration_2025_w38 (!3643)
Fix memory allocation issue in KPM RAN function sd parameter handling

This fixes a segmentation fault in the gNB when a KPM xApp sends the sd
parameter in the subscription message.

The segmentation fault seems to occur because *sd is uninitialized when
malloc(**sd) is called. This causes a double dereference of an uninitialized
pointer - **sd reads a random memory value which becomes the size parameter
for malloc(), leading to unpredictable memory allocation and segfaults.

This fix allocates the size using malloc(sizeof(uint32_t)) instead of
dereferencing the uninitialized pointer.
2025-09-16 12:58:55 +02:00
Jaroslava Fiedlerova 2a8b89a451 Merge remote-tracking branch 'origin/fix_error_ind_unpack' into integration_2025_w38 (!3639)
Fix error ind unpack

This MR fixes an issue in which the unpacking is erroneously deemed unsuccessful
even though it succeed in pulling all the bytes, this was due to not properly
handling the return value of pull16 which is either 0 or 2, not 0 or 1.

Additionally, this MR adds the Aerial specific expected error codes, as
described here:
https://docs.nvidia.com/aerial/archive/aerial-sdk/23-3/text/cubb_release_notes/scf_fapi_support.html#additional-aerial-specific-error-codes-reported-in-error-indication-from-l1-to-l2
2025-09-16 12:55:21 +02:00
alexjiao 2c369a8299 Handle reportAmount and reportInterval in reportConfigNR 2025-09-16 10:37:13 +01:00
rmagueta 3e65d75f83 UE sends the measurement report for event A2 2025-09-16 10:35:26 +01:00
rmagueta 8d6bb6bf20 Definition of L1 and implementation of L3 measurements for serving cell 2025-09-16 10:32:33 +01:00
francescomani a76f7a8c62 remove rfsim option from CU in F1 docker 2025-09-16 11:21:04 +02:00
francescomani e99cf956e7 remove --sa option from newly created handover test 2025-09-16 10:25:04 +02:00
francescomani fd791568ff change RUNMODEM documentation to reflect --sa not being optional anymore 2025-09-16 10:22:05 +02:00
francescomani b8683dd351 check command line for unknown options at gNB 2025-09-16 10:22:05 +02:00
francescomani 93f5f65806 remove --sa command line option from sa_fhi_7.2_metanoia_2x2_gnb docker compose 2025-09-16 10:22:05 +02:00
francescomani e0b5880db7 cleanup NR_UL_UE_HARQ_t 2025-09-16 09:25:00 +02:00
Sakthivel Velumani 524aa84e96 fix: issue 954 - DCI monitoring after RRC setup
After the UE is configured with pdcch-Config, it continues to monitor
fallback search spaces in pdcch-ConfigCommon for DCI with C-RNTI.

The rational is that after sending RRC Setup the network won't know if
the UE has received and successfully applied it. Hence the network would
still continue to use the fallback DCI till it receives RRC setup
complete.
2025-09-15 15:47:13 -04:00
Rúben Soares Silva 6ff098e0bd Add Aerial-specific ERROR.indication codes
This adds the expectable error codes from Aerial L1, as described in https://docs.nvidia.com/aerial/archive/aerial-sdk/23-3/text/cubb_release_notes/scf_fapi_support.html#additional-aerial-specific-error-codes-reported-in-error-indication-from-l1-to-l2
The errors are added in such a way that they're only visible when compiled with Aerial
2025-09-15 14:54:45 +01:00
Rúben Soares Silva 0a796ebb6c Fix ERROR.indication unpack function
Fix an issue in which the unpacking is erroneously deemed unsuccessful even though it succeed in pulling all the bytes, this was due to not properly handling the return value of pull16 which is either 0 or 2, not 0 or 1.
Check the results of push and pull operation with correct boolean operator.
2025-09-15 14:54:44 +01:00
Guido Casati 956d30f4e1 HO preparation: fix PLMN type in nr_neighbour_cell_t
During the review of the N2 HO MR it has been found that the wrong type
plmn_identity_t (S1AP) was used in RRC. Now updated to the platform type plmn_id_t.
2025-09-15 10:08:49 +02:00
Guido Casati 9f97320cbe HO Preparation: calloc pdcp_config in DRB to Modify Item decoding
The malloced struct is initialized to garbage and when
the IE is absent, the output "PDCP reestablishment"
member (allocated in the stack) is set to a random value.
2025-09-15 10:03:11 +02:00
Robert Schmidt 206c7667e6 Merge branch 'integration_2025_w37' into 'develop'
Integration: `2025.w37`

* !3514 NR UE: add support for PDSCH rate matching with NZP CSI-RS
* !3630 feat(ldpc_aal): Do not try EAL init if FHI 7.2 is enabled
* !3634 reset MSG3 C-RNTI flag in case of failure
* !3566 fix 600 cppcheck notifications
* !3633 Fix PLMN print in select_amf
* !3631 Revert "Removed TRP-scheme byte from UL BF PDU to Interop with Aerial 25-1 (FAPI 10.02)"
* !3622 Populate sampled_ue_antennas
* !3601 gNB: adaptive DL/UL MCS based on reported SSB-SINR and measured PUSCH SNR
* !3637 fix bug in computing number of LCG IDs with data at UE
* !3635 Fixes and updates for UL scheduling, notably DSUUU
* !3607 Reworking BWP configuration
* !3531 Refactor measConfig
* !3612 CI: Creation of F1 Handover pipeline
* !3611 CI: Generalize PhySim tests, run PhySims on Gracehopper

Closes #985 and #975

See merge request oai/openairinterface5g!3636
2025-09-12 16:51:15 +00:00
Robert Schmidt 166589c2ef Add bands for neighbour configuration in HO CI pipeline
Since !3531, the band is mandatory in a neighbour configuration.

See also: fd4de3c720 ("Add support for band in neighbourConfiguration")
2025-09-12 18:47:12 +02:00
Leonardo Bonati 40fd22e26a Fix memory allocation issue in KPM RAN function sd parameter handling 2025-09-12 10:43:34 -04:00
Robert Schmidt e486557f63 Merge remote-tracking branch 'origin/physim-gracehopper' into integration_2025_w37 (!3611)
CI: Generalize PhySim tests, run PhySims on Gracehopper

This changeset generalizes/harmonizes the CI infrastructure for physim
testing, and adds a new pipeline for physim tests on Gracehopper
machines.

Specifically:

- Refactor the existing CI code for running and analyzing physical
  simulators. The existing code assumed those tests are deployed using
  OpenShift. Instead, OpenShift/Helm-specificities (e.g., running a
  "release") have been removed, and instead of hardcoding the deployment
  of the physical simulators using a script for Helm, the function takes
  any script that can deploy using Helm/docker/from source. The overall
  appearance is the same.
- Add a new pipeline RAN-PhySim-GraceHopper-5G that executes physical
  simulators on gracehopper. Reporting is done in the same way as for
  existing physical simulators (e.g., like in the RAN-PhySim-Cluster-5G
  pipeline), but deployed in docker instead of helm.
  -> some tests don't work reliably on ARM yet and are skipped
- the RAN-gNB-N300-Timing-Phytest-LDPC pipeline has been reworked to use
  the same code for testing T2 offload, with ctest, and the same
  reporting.
- the CUDA LDPC test XML has been removed, as these tests don't work
  reliably.
- add a new macro add_timed_physim_test() that allows to define
  thresholds to be checked, so that ctest will check for them. see the
  documentation for more information
2025-09-12 15:57:51 +02:00
Robert Schmidt 230a969be4 Merge remote-tracking branch 'origin/CI-HO-setup' into integration_2025_w37 (!3612)
CI: Creation of F1 Handover pipeline

In this MR we are modifying/adding all the required files (.xml, .conf,
.yml) in order to create a pipeline on Jenkins that allows us to test
OTA F1 handover.
2025-09-12 15:56:34 +02:00
Robert Schmidt 8ca1d0d38d Doc: Add PhySim-Gracehopper and update existing PhySim-Cluster 2025-09-12 15:01:09 +02:00
Robert Schmidt 31aaa4ed3f Add PhySim-GraceHopper-5G to test pipelines 2025-09-12 14:54:49 +02:00
Robert Schmidt 998018db50 Slight restructuring of the physim doc
Move info about pipelines to the introduction instead of somewhere in
the middle. Add some filler text, and fix indentation headings.
2025-09-12 14:54:49 +02:00
Robert Schmidt 5beb8bf314 Print results of physims
Remove the runtime, which is not interesting, and add instead
- test name and if the test failed
- the threshold checks, if any, and
- possible additional information about test failures.
2025-09-12 14:54:49 +02:00
Robert Schmidt eb9e4ef9ba Pass CTest test description in custom property or environment
Prior to this change, each test would have, as label, it's description.
This leads to many labels, which are normally reserved for grouping
tests. Move the description into a custom property instead.

Since we rely on the JSON output for the generation of HTML reports, we
need to also extract the description from the generated JSON. However,
custom properties are only logged starting from cmake 3.30. For
back-wards compatibility, write an additional, separate environment
variable TEST_DESCRIPTION from which the description can be read as a
fallback.

For the add_timed_physim_test(), this has been already done in a parent
commit.
2025-09-12 14:54:49 +02:00
Robert Schmidt e5139b6f0f Put physim status info in separate box
A follow-up commit will introduce a change to print timing logs in the
HTML (if present in the test). Prepare for this with separate box.
2025-09-12 14:54:49 +02:00
Robert Schmidt 15befb41e6 Physim deploy(): add deployment timeout 2025-09-12 14:54:49 +02:00
Robert Schmidt e824a6373d Rename to analyze_physim() 2025-09-12 14:54:49 +02:00
Robert Schmidt b00dd803d1 Remove existing physim offload tests
After the parent commit, there is no need for these XML files anymore.
The tests are driven by ctest instead.
2025-09-12 14:54:49 +02:00