1. 10 Mar, 2026 7 commits
    • Jaroslava Fiedlerova's avatar
      Merge remote-tracking branch 'origin/rlc-less-locking' into integration_2026_w11 (!3919) · 8556a148
      Jaroslava Fiedlerova authored
      Reduce number of mutex locking in MAC->RLC direction
      
      Currently, the scheduler locks RLC for each operation. Concretely
      - for RLC status indication (to get amount of bytes per LC), it locks per LC
      - for RLC indication (UL traffic), it locks for each MAC SDU of which there can
        be multiple in a TB
      - for RLC data req (getting data from RLC to put into a transport block), it
        locks for each LCID and PDU to get.
      This can have a certain overhead, because we need to re-lock RLC multiple times
      instead of once (per operation above). In this MR, rework the interfaces such
      that it is possible to get all information/data in a single lock-unlock cycle,
      which should also help with "spikes" of scheduler times (in some scenarios, it
      seems the scheduler takes longer than 0.5ms, and while it's not only locking,
      re-locking might contribute), and an increase of number of UEs (e.g., instead
      of doing 3 * N UEs lock cycles for getting status of SRB1, SRB2, DRB1, we do
      only N times). Concretely, for each UEs RLC status indication, we lock once,
      only once per LCID when filling a TB (in particular for LCID 4, on high
      throughput, it might be many times), and only once per UL TB (for the common
      case of UL data).
      
      Minor fixes include the increase of the Aerial VNF thread priority, and reducing
      the maximum RLC indication size to reduce excessive computation (we can't have
      1MB in one TB, it is too much).
      8556a148
    • Robert Schmidt's avatar
      reduce max buffer status size · 17d1e567
      Robert Schmidt authored
      17d1e567
    • Robert Schmidt's avatar
      increase priority of Aerial thread · 4c9b7ec6
      Robert Schmidt authored
      4c9b7ec6
    • Robert Schmidt's avatar
      RLC data req: Add API to fill multiple RLC PDUs in one TB, use at gNB · 4426fb1a
      Robert Schmidt authored
      Adds the API, which will always prepend a 3 byte header before writing a
      PDU. This can be used to call less often into RLC, and avoid potential
      locking.
      
      The API is used at the gNB DLSCH scheduler.  Also, this removes the
      "overhead" calculation: since we fill the entire TB at once, RLC will
      leave space for headers as necessary.
      4426fb1a
    • Robert Schmidt's avatar
      c0a78e6c
    • Robert Schmidt's avatar
      2e049363
    • Jaroslava Fiedlerova's avatar
      Merge remote-tracking branch 'origin/NTN_FR2_bands' into integration_2026_w11 (!3414) · ee8de3ea
      Jaroslava Fiedlerova authored
      Added NTN-FR2 FDD bands defined in release 18 in Ka-band range
      
      * NTN-FR2 bands 510, 511, 512 added. TS 38.101-5 v 18.9 defines these 3 FR2-FDD
        bands for NTN operation.
      * These bands are defined in Ka band range (17.3Ghz - 31Ghz).
      * Tested using the added conf files using RFSIM and GEO configuration.
      * There were some inconsistencies observed when testing with RFSimulator before UE
        Syncs to the gNB in terms of samples being written for FR2 configurations. Once
        the UE syncs, the inconsistencies disappear.
      * this is the problem - UE writes incorrect number of samples and gNB complains
        about getting samples in past
      * The above inconsistencies were also fixed in this merge request.
      * These commits solving above inconsistencies were removed from this MR and a
        different MR was raised. MR with those commits: !3928.
      ee8de3ea
  2. 09 Mar, 2026 10 commits
  3. 06 Mar, 2026 12 commits
    • francescomani's avatar
    • francescomani's avatar
    • Jaroslava Fiedlerova's avatar
      Merge branch 'integration_2026_w10' into 'develop' · 582ce818
      Jaroslava Fiedlerova authored
      Integration `2026.w10`
      
      * !3946 UE L1 cleanup
      * !3929 UE: Fix if target cell during handover has SSB at a different offset as in source cell
      * !3961 Remove Ubuntu 20 and RHEL/Rocky 8 support, increase cmake min version
      * !3884 Integrate NRPPA and NGAP messages required for positioning
      * !3784 CI: Create new pipeline for testing with Aerial and Jetson
      * !3697 fix: issue 911 - OAI gNB hangs when AMF connection goes down
      * !3914 Fix dB_fixed() function
      * !3800 Add tracer to record configured events to database
      * !3954 UHD streamer thread priorities in nrUE
      * !3846 rename with distinct names structs and related typedefs, remove spread struct keyword
      * !3958 Remove unused function arguments
      
      Closes #911
      
      See merge request oai/openairinterface5g!3962
      582ce818
    • francescomani's avatar
      Merge remote-tracking branch 'origin/unused_function_arguments' into integration_2026_w10 (!3958) · 8ad86783
      francescomani authored
      Remove unused function arguments
      
      Some of them, because there are hundreds if not thousands. Warnings at compilation time can be enabled using -Wunused-parameter.
      8ad86783
    • Jaroslava Fiedlerova's avatar
      Merge remote-tracking branch 'origin/change-typedef-names-for-coding-style'... · acf9c25e
      Jaroslava Fiedlerova authored
      Merge remote-tracking branch 'origin/change-typedef-names-for-coding-style' into integration_2026_w10 (!3846)
      
      rename with distinct names structs and related typedefs, remove spread struct keyword
      acf9c25e
    • francescomani's avatar
      limit dl_DataToUL_ACK values to 15 as per standard to prevent ASN1... · 94a85735
      francescomani authored
      limit dl_DataToUL_ACK values to 15 as per standard to prevent ASN1 encoding/decoding failure when min feedback time is too high
      94a85735
    • Jaroslava Fiedlerova's avatar
      Merge remote-tracking branch 'origin/uhd_priority_in_nrUE' into integration_2026_w10 (!3954) · 4e3ac9e9
      Jaroslava Fiedlerova authored
      Increase UHD streamer thread priority in nrUE
      
      This minor change allows nrUE UHD threads to inherit priority
      OAI_PRIORITY_RT_MAX.
      4e3ac9e9
    • Jaroslava Fiedlerova's avatar
      Merge remote-tracking branch 'origin/recordDb' into integration_2026_w10 (!3800) · e6105b9d
      Jaroslava Fiedlerova authored
      Add tracer to record configured events to database
      
      This extends the functionality provided by record in that it allows
      collection of data into a Clickhouse database, allowing aggregation of
      data from gNB and UE for functions like channel estimation for PUSCH
      transmissions that did not decode successfully at the gNB.
      
      It is intended to be used in conjunction with Aerial Data Lake but is
      not limited to it. Data access is simpler than in !3462 (merged), but
      could be improved using the metadata approach from !3462 (merged).
      
      Usage is similar to the exsting record tracer:
      
              docker exec -it oai-nr-ue bash -c "record_db -on UE -off VCD -ch-droptables -off UE_PHY_UL_TICK -off UE_PHY_DL_TICK -off UE_PHY_PDSCH_IQ"
      
      Which outputs recorded data every 5 seconds:
      
              17:35:40.945037 record_db.cpp:570 INF[main  ] Initialized buffer for event_id:21   name:UE_PHY_INITIATE_RA_PROCEDURE    has_frame_slot:false columns:5
              17:35:40.945924 record_db.cpp:570 INF[main  ] Initialized buffer for event_id:26   name:NRUE_PHY_MIB                    has_frame_slot:true columns:6
              17:35:40.946717 record_db.cpp:570 INF[main  ] Initialized buffer for event_id:53   name:NRUE_MAC_DL_PDU_WITH_DATA       has_frame_slot:true columns:7
              17:35:40.947467 record_db.cpp:570 INF[main  ] Initialized buffer for event_id:54   name:NRUE_MAC_UL_PDU_WITH_DATA       has_frame_slot:true columns:7
              17:35:40.948208 record_db.cpp:570 INF[main  ] Initialized buffer for event_id:55   name:NRUE_MAC_DL_RAR_PDU_WITH_DATA   has_frame_slot:true columns:6
              17:35:40.948912 record_db.cpp:570 INF[main  ] Initialized buffer for event_id:318  name:UE_MASTER_TICK                  has_frame_slot:true columns:5
              17:35:40.949679 record_db.cpp:570 INF[main  ] Initialized buffer for event_id:321  name:UE_PHY_DLSCH_UE_DCI             has_frame_slot:true columns:10
              17:35:40.950397 record_db.cpp:570 INF[main  ] Initialized buffer for event_id:322  name:UE_PHY_DLSCH_UE_ACK             has_frame_slot:true columns:7
              17:35:40.951125 record_db.cpp:570 INF[main  ] Initialized buffer for event_id:323  name:UE_PHY_DLSCH_UE_NACK            has_frame_slot:true columns:7
              17:35:40.951903 record_db.cpp:570 INF[main  ] Initialized buffer for event_id:324  name:UE_PHY_ULSCH_UE_DCI             has_frame_slot:true columns:12
              17:35:40.952604 record_db.cpp:570 INF[main  ] Initialized buffer for event_id:325  name:UE_PHY_ULSCH_UE_ACK             has_frame_slot:true columns:7
              17:35:40.953305 record_db.cpp:570 INF[main  ] Initialized buffer for event_id:326  name:UE_PHY_ULSCH_UE_NACK            has_frame_slot:true columns:7
              17:35:40.954035 record_db.cpp:570 INF[main  ] Initialized buffer for event_id:327  name:UE_PHY_INPUT_SIGNAL             has_frame_slot:true columns:7
              17:35:40.954778 record_db.cpp:570 INF[main  ] Initialized buffer for event_id:328  name:UE_PHY_DL_CHANNEL_ESTIMATE      has_frame_slot:true columns:8
              17:35:40.955533 record_db.cpp:570 INF[main  ] Initialized buffer for event_id:329  name:UE_PHY_DL_CHANNEL_ESTIMATE_FREQ has_frame_slot:true columns:8
              17:35:40.956250 record_db.cpp:570 INF[main  ] Initialized buffer for event_id:330  name:UE_PHY_PDCCH_IQ                 has_frame_slot:false columns:5
              17:35:40.957010 record_db.cpp:570 INF[main  ] Initialized buffer for event_id:331  name:UE_PHY_PDCCH_ENERGY             has_frame_slot:true columns:9
              17:35:40.957781 record_db.cpp:570 INF[main  ] Initialized buffer for event_id:333  name:UE_PHY_PDSCH_ENERGY             has_frame_slot:true columns:9
              17:35:40.958599 record_db.cpp:570 INF[main  ] Initialized buffer for event_id:334  name:UE_PHY_PUSCH_TX_POWER           has_frame_slot:true columns:10
              17:35:40.959364 record_db.cpp:570 INF[main  ] Initialized buffer for event_id:335  name:UE_PHY_PUCCH_TX_POWER           has_frame_slot:true columns:9
              17:35:40.960154 record_db.cpp:570 INF[main  ] Initialized buffer for event_id:336  name:UE_PHY_MEAS                     has_frame_slot:true columns:12
              17:35:40.961126 record_db.cpp:570 INF[main  ] Initialized buffer for event_id:337  name:UE_PHY_UL_PAYLOAD_TX_BITS       has_frame_slot:true columns:30
              17:35:40.962126 record_db.cpp:570 INF[main  ] Initialized buffer for event_id:338  name:UE_PHY_UL_SCRAMBLED_TX_BITS     has_frame_slot:true columns:30
              17:35:40.962455 record_db.cpp:1063 INF[main  ] Tables created, waiting for messages...
      
              17:36:00.842116 record_db.cpp:1096 INF[main  ]   UE_PHY_UL_SCRAMBLED_TX_BITS     rows:       52  total:        119
              17:36:00.842117 record_db.cpp:1096 INF[main  ]   UE_PHY_UL_PAYLOAD_TX_BITS       rows:       55  total:        119
              17:36:00.842117 record_db.cpp:1096 INF[main  ]   UE_PHY_MEAS                     rows:        5  total:         12
              17:36:00.842117 record_db.cpp:1096 INF[main  ]   UE_PHY_PDSCH_ENERGY             rows:        6  total:         29
              17:36:00.842117 record_db.cpp:1096 INF[main  ]   NRUE_MAC_DL_PDU_WITH_DATA       rows:        6  total:         28
              17:36:00.842117 record_db.cpp:1096 INF[main  ]   NRUE_MAC_UL_PDU_WITH_DATA       rows:       54  total:        118
              17:36:00.842118 record_db.cpp:1096 INF[main  ]   NRUE_PHY_MIB                    rows:      260  total:        495
              17:36:00.842118 record_db.cpp:1100 INF[main  ]
              17:36:05.861012 record_db.cpp:1096 INF[main  ]   UE_PHY_UL_SCRAMBLED_TX_BITS     rows:       55  total:        174
              17:36:05.861013 record_db.cpp:1096 INF[main  ]   UE_PHY_UL_PAYLOAD_TX_BITS       rows:       55  total:        174
              17:36:05.861013 record_db.cpp:1096 INF[main  ]   UE_PHY_MEAS                     rows:        5  total:         17
              17:36:05.861013 record_db.cpp:1096 INF[main  ]   UE_PHY_PDSCH_ENERGY             rows:       12  total:         41
              17:36:05.861013 record_db.cpp:1096 INF[main  ]   NRUE_MAC_DL_PDU_WITH_DATA       rows:       12  total:         40
              17:36:05.861014 record_db.cpp:1096 INF[main  ]   NRUE_MAC_UL_PDU_WITH_DATA       rows:       56  total:        174
              17:36:05.861014 record_db.cpp:1096 INF[main  ]   NRUE_PHY_MIB                    rows:      260  total:        755
      
      This can also be done for the L2 on the gNB side:
      
              $ docker exec -it oai-gnb-aerial bash -c "record_db -on GNB_MAC_DL_PDU_WITH_DATA"
              turning ON GNB_MAC_DL_PDU_WITH_DATA
              connecting to 127.0.0.1:2021
              16:31:01.742287 record_db.cpp:1000 INF[main  ] on: item: GNB_MAC_DL_PDU_WITH_DATA, on_off_name: GNB_MAC_DL_PDU_WITH_DATA, on_off_action: 1
              16:31:01.742340 record_db.cpp:1011 INF[main  ] No database file provided, using default: T_messages.txt
              16:31:01.751101 record_db.cpp:1020 INF[main  ] Number of events: 801
              16:31:01.752264 record_db.cpp:439 INF[main  ] ClickHouse connection initialized
              16:31:01.752997 record_db.cpp:570 INF[main  ] Initialized buffer for event_id:49   name:GNB_MAC_DL_PDU_WITH_DATA        has_frame_slot:true columns:9
              16:31:01.753065 record_db.cpp:1063 INF[main  ] Tables created, waiting for messages...
              16:31:07.299147 record_db.cpp:1096 INF[main  ]   GNB_MAC_DL_PDU_WITH_DATA        rows:        1  total:          1
              16:31:07.299148 record_db.cpp:1100 INF[main  ]
              16:31:12.299490 record_db.cpp:1096 INF[main  ]   GNB_MAC_DL_PDU_WITH_DATA        rows:      234  total:        235
              16:31:12.299491 record_db.cpp:1100 INF[main  ]
              16:31:17.299594 record_db.cpp:1096 INF[main  ]   GNB_MAC_DL_PDU_WITH_DATA        rows:      260  total:        495
      e6105b9d
    • Jaroslava Fiedlerova's avatar
      Merge remote-tracking branch 'origin/fix_db_fixed' into integration_2026_w10 (!3914) · 257de657
      Jaroslava Fiedlerova authored
      Fix dB_fixed() function
      
      - dB_fixed(0) returns 0 in develop branch;
      - 0 in dB is -INF, but since we're dealing with integer variables, we'll put
        20*log10(2^-15) in the output of dB_fixed() function, instead of 0.
      - make all users use signed variables
      257de657
    • Jaroslava Fiedlerova's avatar
      Merge remote-tracking branch 'origin/issue-911-fix' into integration_2026_w10 (!3697) · ef14a2b9
      Jaroslava Fiedlerova authored
      fix: issue 911 - OAI gNB hangs when AMF connection goes down
      
      Once the AMF is down, based on the AMF UE NGAP ID and RAN UE NGAP ID,
      the UE associated with the AMF is found
      
      All the contexts related to the UE are released and the timer is started
      in the NGAP to look up for the SCTP association. The AMF-gNB reconnection
      is made if an SCTP connection is found, also the registration of multiple
      UE is triggered
      
      These actions are based on the reference from 4.2.6 AN release Specs
      TS 123 502 V16.7.0 (2021-01)
      
      When the NG-AP signalling connection is lost due to (R)AN or AMF failure,
      the AN release is performed locally by the AMF or the (R)AN as described
      in the procedure flow below without using or relying on any of the signalling
      shown between (R)AN and AMF. The AN release causes all UP connections of the UE
      to be deactivated.
      
      closes #911
      ef14a2b9
    • Jaroslava Fiedlerova's avatar
      Merge remote-tracking branch 'origin/ci-add-jetson-test' into integration_2026_w10 (!3784) · 5b66b537
      Jaroslava Fiedlerova authored
      CI: Create new pipeline for testing with Aerial and Jetson
      5b66b537
    • Jaroslava Fiedlerova's avatar
      Merge remote-tracking branch 'origin/nrppa_ngap_integration' into integration_2026_w10 (!3884) · d7fc76b7
      Jaroslava Fiedlerova authored
      Integrate NRPPA and NGAP messages required for positioning
      
      This MR integrates NRPPA and NGAP messages required for positioning.
      The following NGAP messages are integrated (3GPP 38.413 Version 16.0.0):
      
      NGAP UPLINK UE ASSOCIATED NRPPA TRANSPORT
      NGAP UPLINK NON UE ASSOCIATED NRPPA TRANSPORT
      NGAP DOWNLINK UE ASSOCIATED NRPPA TRANSPORT
      NGAP DOWNLINK NON UE ASSOCIATED NRPPA TRANSPORT
      
      The following NRPPA messages are integrated (3GPP 38.455 Version 16.7.1):
      
      TRP Information Request
      TRP Information Response
      Positioning Information Request
      Positioning Information Response
      Positioning activation request
      Positioning Activation Response
      Measurement Request
      Measurement Response
      
      This MR tests these messages via a standalone tester nr-cu-nrppa-test that
      connects to the AMF to perform NGAP enc/dec and NRPPA enc/dec
      
      Core Network:
      To pull the docker images:
      
      docker pull oaisoftwarealliance/ims:latest
      docker pull oaisoftwarealliance/oai-amf:develop
      docker pull oaisoftwarealliance/oai-nrf:develop
      docker pull oaisoftwarealliance/oai-smf:develop
      docker pull oaisoftwarealliance/oai-udr:develop
      docker pull oaisoftwarealliance/oai-upf:develop
      docker pull oaisoftwarealliance/oai-udm:develop
      docker pull oaisoftwarealliance/oai-ausf:develop
      docker pull oaisoftwarealliance/oai-lmf:develop
      
      openairinterface5g$ cd doc/tutorial_resources/oai-cn5g
      To deploy:
      openairinterface5g/doc/tutorial_resources/oai-cn5g$ docker compose -f docker-compose-positioning.yaml up -d
      
      To undeploy:
      openairinterface5g/doc/tutorial_resources/oai-cn5g$ docker compose -f docker-compose-positioning.yaml down -t 0
      
      RAN:
      To compile:
      openairinterface5g$ mkdir build
      openairinterface5g$ cd build
      openairinterface5g/build$ cmake .. -GNinja
      openairinterface5g/build$ ninja nr-cu-nrppa-test
      
      To run:
      openairinterface5g/build$ LD_LIBRARY_PATH=. ./tests/nr-cu-nrppa/nr-cu-nrppa-test -O ../tests/nr-cu-nrppa/nr-nrppa-test.conf
      
      To initiate positioning procedure:
      openairinterface5g$ cd doc/tutorial_resources/positioning/
      openairinterface5g/doc/tutorial_resources/positioning$ curl --http2-prior-knowledge -H "Content-Type: application/json" -d "@InputData.json" -X POST http://192.168.70.141:8080/nlmf-loc/v1/determine-location
      d7fc76b7
  4. 05 Mar, 2026 3 commits
    • Bartosz Podrygajlo's avatar
      Run nrue_ru_start in a high priority thread · 7d058eb0
      Bartosz Podrygajlo authored
      Launch a temporary high-priority thread to start the UE RU,
      ensuring radio library threads inherit this priority
      7d058eb0
    • Robert Schmidt's avatar
      Add T tracer to record configured events to database · 1d69eb0e
      Robert Schmidt authored
      This extends the functionality provided by record in that it allows
      collection of data into a Clickhouse database, allowing aggregation of
      data from gNB and UE for functions like channel estimation for PUSCH
      transmissions that did not decode successfully at the gNB.
      
      It is intended to be used in conjunction with Aerial Data Lake but is
      not limited to it. Data access is simpler than in !3462, but could be
      improved using the metadata approach from !3462.
      
      The integration uses logfmt for fast logging, and a clickhouse DB
      client, both integrated using CPM.
      
      This change set also adds a docker-compose file for a UE on 100MHz, to
      be used with Aerial configurations, and builds the tracer for Aerial and
      nrUE docker files.
      1d69eb0e
    • Aswanth KC's avatar
      fix: issue 911 - OAI gNB hangs when AMF connection goes down · c90d7f7f
      Aswanth KC authored
      - Extended fix to support multiple UEs instead of single UE
      - Actions now trigger upon AMF reconnection
      
      Per 3GPP TS 123 502 V16.7.0 (2021-01) Section 4.2.6 (AN Release):
      When NG-AP signalling connection is lost due to (R)AN or AMF failure,
      AN release is performed locally by AMF or (R)AN without relying on
      signalling between (R)AN and AMF. This deactivates all UP connections.
      c90d7f7f
  5. 04 Mar, 2026 8 commits