1. 08 Oct, 2025 5 commits
    • Jaroslava Fiedlerova's avatar
      Unify physim test definition · ec8efe1b
      Jaroslava Fiedlerova authored
      Replace the previous add_timed_physim_test() macro with add_physim_test()
      to use a single, unified function for defining physim tests. This simplifies
      the test configuration and removes redundant macro definitions while keeping
      all existing functionality.
      
      This change follows up on the earlier addition of support for including
      custom timing threshold files (PHYSIM_CHECK_FILES).
      
      Update existing tests accordingly.
      ec8efe1b
    • Jaroslava Fiedlerova's avatar
      Add support for including custom timing threshold files in physim tests · 8910406a
      Jaroslava Fiedlerova authored
      Introduce a new CMake variable PHYSIM_CHECK_FILES to specify CMake files
      (semicolon-separated) containing timing thresholds for timed physim tests.
      8910406a
    • Jaroslava Fiedlerova's avatar
      Include timing analysis file in physim.rhel9 image · 78d91db9
      Jaroslava Fiedlerova authored
      Add missing timinig analysis scripts to RHEL9 physim docker image. These files
      are now copied from the build stage to /oai-ran/openair1/SIMULATION/tests/,
      where they are expected by ctest.
      
      Resolves following issue when running ctest in docker container:
      CMake Error: Error processing file: /oai-ran/openair1/SIMULATION/tests/RunTimedTest.cmake
      78d91db9
    • Robert Schmidt's avatar
      analyze-timing.sh: check only last measurement occurrence · a3ac1dbd
      Robert Schmidt authored
      For some physical simulators, we have multiple SNR iterations.
      
      The previous version of the script correctly retained only the last
      measurement, but if a previous measurement condition set RC=1, the
      script would fail although the final "good" run might fulfil the
      measurement condition (IOW, it would show SUCCESS, but still fail on the
      check).
      
      Instead, check if all measurement lines finish on SUCCESS, which handles
      the above case.
      a3ac1dbd
    • Robert Schmidt's avatar
      Fix analyze-timing.sh for mawk compatibility · b012700f
      Robert Schmidt authored
      The awk script in analyze-timing.sh used syntax that works with gawk but fails
      on systems where mawk is the default implementation, producing errors such as:
      
      awk: /dev/fd/3: line 6: syntax error at or near ,
      -- test command finished with SIGPIPE
      
      Concretely, the match(text, pattern, variable) function does not exist
      in mawk, as it cannot capture matches in variables. Work around by
      substituing strings, and force a numeric comparison.
      b012700f
  2. 30 Sep, 2025 2 commits
  3. 18 Sep, 2025 33 commits
    • Robert Schmidt's avatar
      Merge branch 'integration_2025_w38' into 'develop' · 32c81b7b
      Robert Schmidt authored
      Integration: `2025.w38`
      
      Closes #954
      
      See merge request oai/openairinterface5g!3646
      
      * !3639 Fix error ind unpack
      * !3643 Fix memory allocation issue in KPM RAN function sd parameter handling
      * !3568 Fix UE DCI monitoring after RRC setup
      * !3642 Check command line for unknown options also at gNB
      * !3647 Add nr-cuup to run_locally.sh
      * !3596 L3 measurements and measReport A2
      * !3648 fix MSG3 with C-RNTI failure
      * !3649 CI: build images on Jetson (armv8)
      * !3334 N2 Handover
      32c81b7b
    • Robert Schmidt's avatar
      84c51802
    • Robert Schmidt's avatar
      Fix: define_property() needs FULL_DOCS · 870b25e9
      Robert Schmidt authored
      define_property() has optional FULL_DOCS in cmake 3.23+, but before it's
      required. I did not notice when adding this.
      870b25e9
    • Robert Schmidt's avatar
      Merge remote-tracking branch 'origin/n2-handover' into integration_2025_w38 (!3334) · 7227cfb3
      Robert Schmidt authored
      N2 handover
      
      This MR introduces full support for N2 handover, covering handover
      decision, preparation, execution, and notification between source and
      target NG-RAN nodes.
      
      Key features:
      
      1. Handover Decision & Preparation:
        - Implement N2 handover decision based on UE measurement reports.
        - Generate the Handover Preparation Information message, including
          RRCReconfiguration.
        - Send Handover Required message from the source NG-RAN to the AMF.
      2. Handover Execution:
        - Decode and handle the Handover Request on the target NG-RAN.
        - Process the Handover Command on the source gNB, triggering
          RRCReconfiguration.
        - Initiate Handover Notify after successful completion.
      3 NGAP & RRC Enhancements:
        - Implement NGAP encoding/decoding functions for Handover Required,
          Handover Request, Handover Command, Handover Failure, and Handover
          Notify (3GPP TS 38.413).
        - Adds NG-RAN Status Transfer support (UL/DL) for PDCP COUNT
          preservation during mobility:
          - support for NGAP Uplink and Downlink RAN Status Transfer messages
            (TS 38.413 §9.2.3.13-14) to enable proper PDCP COUNT value
            transfer during handover or recovery: NGAP encoding/decoding for
            RAN Status Transfer, PDCP helpers to extract and apply COUNT (HFN
            + SN) per DRB. This aligns with TS 38.300 §9.2.3.2.1 and TS 23.502
            §4.9.1.3.3, ensuring PDCP status preservation in AM.
      4. Testing:
        - Introduce a Telnet command to manually trigger N2 handover using UE
          ID and neighbor PCI.
        - Add configuration file for testing N2 handover with a target gNB.
      7227cfb3
    • Guido Casati's avatar
      Add N2 handover documentation · f9f6e96d
      Guido Casati authored
      f9f6e96d
    • Robert Schmidt's avatar
      Merge remote-tracking branch 'origin/ci-build-jetson' into integration_2025_w38 (!3649) · ef5191b6
      Robert Schmidt authored
      CI: build images on Jetson (armv8)
      
      Add a new build pipeline for NVIDIA Jetson (armv8). Images have tag
      prefix armv8_ to distinguish from gracehopper-built images prefixed arm_
      (should have maybe been better with armv9_?)
      ef5191b6
    • Robert Schmidt's avatar
      Merge remote-tracking branch 'origin/fix_UE_msg3_crnti_fail' into integration_2025_w38 (!3648) · 8927032f
      Robert Schmidt authored
      fix MSG3 with C-RNTI failure
      
      When RA procedure with MSG3 carrying C-RNTI fails we shouldn't send an
      indication to RRC because it is a L2 procedure
      8927032f
    • Guido Casati's avatar
      Add N2 Handover Cancel (8.4.5 of 3GPP TS 38.413) · 85f586c7
      Guido Casati authored
      This commit completes the NGAP Mobility Management procedure for N2 handover.
      Upon failure on source gNB the Handover Cancel message is sent to the AMF which
      in return responds with an ack.
      85f586c7
    • Guido Casati's avatar
      target-CU-CP: Transfer PDCP Count to target-CU-UP · 4facb4d6
      Guido Casati authored
      Upon reception of NG RAN Status at the target CU-CP, send PDCP Status
      via E1 Bearer Context Modification to the target CU-UP and update PDCP Count
      upon reception of the message.
      
      For the sake of simplicity, re-used and extended legacy e1_send_bearer_updates.
      Further refactoring is not addressed in this commit.
      4facb4d6
    • Guido Casati's avatar
      a82353f4
    • Guido Casati's avatar
      source-CU-CP: trigger UL NG RAN Status Transfer upon reception of PDCP Status... · badb0c56
      Guido Casati authored
      source-CU-CP: trigger UL NG RAN Status Transfer upon reception of PDCP Status in E1 Bearer Context Modification Response
      
      Once fetched the PDCP Status from the PDCP entity over E1, the CU-CP triggers
      the NG RAN Status Transfer procedure to transfer the PDCP Status to the target
      CU.
      
      This commit is also introducing the RRC callback.
      badb0c56
    • Guido Casati's avatar
      source-CU-UP: fill PDCP Status in response upon reception of E1 Bearer Context Modification Request · 44e4ebc4
      Guido Casati authored
      * Check presence of PDCP Status Requested in Bearer Context Modification Request
      * Fetch PDCP Status from PDCP entity and fill in the Bearer Context Modification Response
      44e4ebc4
    • Guido Casati's avatar
      source-CU-CP: trigger E1 PDCP Status Request in UE Context Modification Response handler · fc5e3ce6
      Guido Casati authored
      The E1 Bearer Context Modification Request shall send a PDCP Status Request IE
      during handover, e.g. the HO context is set to source, and it is not target, i.e.
      only in N2 not in F1.
      
      The current function "e1_send_bearer_updates" used to fill the E1 Request has been
      refactored only for the sake of this commit and to avoid duplicated and redundant code.
      The function itself deeper analysis and eventually a refactoring that will not be addressed
      in this commit.
      fc5e3ce6
    • Guido Casati's avatar
      Add PDCP API getter and setter for PDCP count values in PDCP entity · e96d7f95
      Guido Casati authored
      * Introduced nr_pdcp_count_update() to apply COUNT values to the PDCP entity:
        - Computes tx_next, rx_next, and rx_deliv from HFN+SN
        - Handles both 12-bit and 18-bit SN modes with dynamic bitmask
      * Introduced nr_pdcp_get_drb_count_values() to extract PDCP COUNT values from entity:
        - Used for building UL RAN Status Transfer on source CU side
      e96d7f95
    • Guido Casati's avatar
      PDCP Status Information: add enc/dec/cp/eq and test to E1AP lib · e527b99d
      Guido Casati authored
      Also:
      * remove unused oldQosFlows IEs
      * adopt new enc/dec functions
      * fix missing return in eq_bearer_context_mod_response
      e527b99d
    • Guido Casati's avatar
      Add NGAP RAN Status Transfer enc/dec and handlers (UL and DL) · bc9c59f1
      Guido Casati authored
      According to 4.9.1.3.3 of 3GPP TS 23.502:
      
      > 2a. - 2c. The S-RAN sends the Uplink RAN Status Transfer message to the S-AMF,
      > as specified in TS 36.300 [46] and TS 38.300 [9]. The S-RAN may omit sending
      > this message if none of the radio bearers of the UE shall be treated with PDCP status preservation.
      
      TS 38.300 says:
      > For DRBs not configured with DAPS, the source gNB sends the SN STATUS TRANSFER message to the target
      > gNB to convey the uplink PDCP SN receiver status and the downlink PDCP SN transmitter status of DRBs for
      > which PDCP status preservation applies (i.e. for RLC AM). The uplink PDCP SN receiver status includes at
      > least the PDCP SN of the first missing UL PDCP SDU and may include a bit map of the receive status of the out
      > of sequence UL PDCP SDUs that the UE needs to retransmit in the target cell, if any. The downlink PDCP SN
      > transmitter status indicates the next PDCP SN that the target gNB shall assign to new PDCP SDUs, not having a
      > PDCP SN yet.
      
      i.e., for DRBs for which PDCP status preservation applies (i.e. for RLC AM), which is is our case.
      
      This commit introduces full support for NG-RAN Status Transfer message handling
      (TS 38.413 §9.2.3.13-14) in CU. It enables correct state transfer of PDCP COUNT
      values (SN + HFN) during mobility or recovery scenarios.
      
      Summary of changes - NGAP:
      * Added encoding/decoding support for UL/DL RAN Status Transfer message
      * Defined structures for: ngap_drb_count_value_t, ngap_drb_status_t,
        ngap_ran_status_container_t, ngap_ran_status_transfer_t
      bc9c59f1
    • Guido Casati's avatar
      Add new CI pipeline for N2 Handover · 1015c1f5
      Guido Casati authored
      The pipeline is using the already existing conf files
      for the source/target gNB CUs/DUs.
      
      For the sake of simplicity, neighbour-config.conf has
      been rewritten and simplified in this commit, then
      adopted in this pipeline. The file was not used before.
      1015c1f5
    • Guido Casati's avatar
      Add telnet trigger for N2 handover · 5227becf
      Guido Casati authored
      * the command gets in input the neighbour PCI and the UE ID
      * the telnet ci function to retrieve the UE context was extended in the process
      * add function to trigger handover on the same gNB for testing purposes
      Co-authored-by: default avatarbatuhan duyuler <batuhan.duyuler@firecell.io>
      5227becf
    • Guido Casati's avatar
      OAI UE: introduce AS security key update procedure (5.3.5.7 3GPP TS 38.331) · cb68d817
      Guido Casati authored
      * trigger upon reception of MasterKeyUpdate
      * derive NH, store NH NCC and valid NH key in RRC
      * masterKeyUpdate: derive enc/int keys after master key update
        and set PDCP security for SRB1
      * call nr_rrc_process_reconfiguration_v1530 before nr_rrc_ue_process_RadioBearerConfig
        and move dedicatedNAS_MessageList processing at the end of the flow. The sequence
        shall be (1) keys/security update (2) radioBearerConfig processing, with PDCP entity
        creation, PDCP reestablishment, SDAP entity creation (3) NAS PDUs processing, which
        triggers PDU Session Establishment Accept, which sets up the TUN interface.
        SDAP entity is a pre-requisite, therefore the radioBearerConfig has to be processed
        (in nr_rrc_ue_process_RadioBearerConfig, add_drb) early enough, or it may cause a
        race condition in SDAP.
      cb68d817
    • Guido Casati's avatar
    • Guido Casati's avatar
      Add N2 HO trigger on Bearer Context Setup Response (target NG-RAN) · 28f92660
      Guido Casati authored
      * add trigger function to (1) add the callbacks and (2) initiate
        handover on the target NG-RAN
      * add handover failure callback on target NG-RAN: the Handover
        Failure is a procedure that belongs to the target NG-RAN and
        it is different from the Handover Cancel procedure
      Co-authored-by: default avatarbatuhan duyuler <batuhan.duyuler@firecell.io>
      28f92660
    • Guido Casati's avatar
      Add NGAP Handover Notify encoder and trigger on the target NG-RAN · e611d092
      Guido Casati authored
      This commit introduces the NG Mobility Management Procedure known as
      Handover Notification. The outbound message is sent by the target NG-RAN
      and is known as Handover Notify. The procedure is used to indicate to
      the AMF that the UE has arrived to the target cell and the NG-based
      handover has been successfully completed
      
      * after RRCReconfiguration complete, in the N2 callback for HO success
      * add NGAP encoder for the message
      * RRC callback to trigger Handover Notify message
      Co-authored-by: default avatarbatuhan duyuler <batuhan.duyuler@firecell.io>
      e611d092
    • Guido Casati's avatar
      Add NGAP Handover Command decoder and RRC handler on source gNB · f6652487
      Guido Casati authored
      * add NG Handover Command message decoder
      * process in RRC: encode RRCReconfiguration message
        from the received HandoverCommandMessage
      * trigger RRCReconfiguration for handover
      Co-authored-by: default avatarbatuhan duyuler <batuhan.duyuler@firecell.io>
      f6652487
    • Guido Casati's avatar
      Handle N2 handover in UE Context Setup Response on the target NG-RAN · 6fd02ee7
      Guido Casati authored
      * generate Handover Command for the source NG-RAN
        to be added to the target to source transparent
        container of the Handover Acknowledge message
      * add Handover Acknowledge callback for N2
      * send NG Handover Acknowledge to AMF
      Co-authored-by: default avatarbatuhan duyuler <batuhan.duyuler@firecell.io>
      6fd02ee7
    • Guido Casati's avatar
      Add NGAP Handover Request Acknowledge encoder and RRC callback · fa75484e
      Guido Casati authored
      This commit completes the NG Mobility Management Procedure known as
      Handover Resource Allocation. The outbound message is sent by the
      target NG-RAN and is known as Handover Request Acknowledge.
      
      Major changes:
      
      * add RRC callback to trigger the generation of NG Handover
        Request Acknowledge on the target NG-RAN
      * add NG Handover Request Acknowledge encoder
      Co-authored-by: default avatarbatuhan duyuler <batuhan.duyuler@firecell.io>
      fa75484e
    • Guido Casati's avatar
      Add NGAP Handover Request decoding and RRC handler · 461cfb79
      Guido Casati authored
      This commit introduces the NG Mobility Management Procedure known as
      Handover Resource Allocation. The inbound message is sent by the AMF
      and is known as Handover Request.
      
      Major changes:
      
      (0) Add Handover Resource Allocation initiating message decoding
          * add case for NGAP initiating message and unsuccessful message decoding
      (1) handle Handover Request on the target NG-RAN
      (2) decode NG Handover Request message
      (3) process payload, e.g. create UE context,
          store IDs, set UP security and trigger bearer setup
      Co-authored-by: default avatarbatuhan duyuler <batuhan.duyuler@firecell.io>
      461cfb79
    • Guido Casati's avatar
      Add NGAP Handover Failure message · 92abefb8
      Guido Casati authored
      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: default avatarbatuhan duyuler <batuhan.duyuler@firecell.io>
      92abefb8
    • Guido Casati's avatar
      Add N2 Handover decision and trigger preparation on source CU · 6e4f1b7b
      Guido Casati authored
      (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: default avatarbatuhan duyuler <batuhan.duyuler@firecell.io>
      6e4f1b7b
    • Guido Casati's avatar
      Add NGAP Handover Required message NGAP encoder and RRC callback on source NG-RAN · 20e534d4
      Guido Casati authored
      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: default avatarbatuhan duyuler <batuhan.duyuler@firecell.io>
      20e534d4
    • Guido Casati's avatar
      cfb654e7
    • Guido Casati's avatar
      ff5b2bc8
    • Guido Casati's avatar
      HO Preparation: allocate HO Context in the F1 trigger rather than nr_initiate_handover · 2f4f1770
      Guido Casati authored
      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.
      2f4f1770
    • Guido Casati's avatar
      HO Preparation: do verify_section_notset of neighbour and measurement config for DU · 26698d4f
      Guido Casati authored
      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.
      26698d4f