- 10 Mar, 2026 7 commits
-
-
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).
-
Robert Schmidt authored
-
Robert Schmidt authored
-
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.
-
Robert Schmidt authored
-
Robert Schmidt authored
-
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.
-
- 09 Mar, 2026 10 commits
-
-
Jaroslava Fiedlerova authored
Limit dl_DataToUL_ACK values to 15 as per standard If min feedback time is high enough otherwise we might fail to encode/decode pucch-Config Assertion (enc_rval.encoded > 0 && enc_rval.encoded <= max_buffer_size * 8) failed! In encode_cellGroupConfig() /home/francesco/openairinterface5g/openair2/LAYER2/NR_MAC_gNB/nr_radio_config.c:4029 ASN1 message encoding failed (dl-DataToUL-ACK, 18446744073709551615)!
-
Jaroslava Fiedlerova authored
Harmonize the use of definition for number of symbols per slot No need to have both NR_NUMBER_OF_SYMBOLS_PER_SLOT and NR_SYMBOLS_PER_SLOT
-
Jaroslava Fiedlerova authored
remove xran_fh_tx_send_slot_BySymbol() and xran_fh_rx_read_slot_BySymbol() We have separate functions ran_fh_tx_send_slot_BySymbol() and xran_fh_rx_read_slot_BySymbol() for liteon. This MR is to remove those separate functions. Main author: Teodora Vladić Co-author: Mario Joa-Ng Changes: xran_fh_tx_send_slot() is using if then else to handle per slot and per symbol logic. xran_fh_rx_read_slot() is straightforward. Testing: - Liteon: Verified end-to-end. - Benetel: (per slot without beam_id): Verified end-to-end. - Microamp: (per slot with beam_id): Verified end-to-end. The branch microamp_F_harmonize is used instead as microamp could not be run with develop branch.
-
Mario Joa-Ng authored
Co-authored-by:Teodora Vladić <teodora.vladic@openairinterface.org>
-
Thomas Schlichter authored
Even though the NR ARFCN uses a 15 kHz raster until 24250 MHz, the ssb_offset_point_a is still scaled by 60 kHz for FR2. So we need two different scaling factors.
-
Raghavendra Dinavahi authored
-
Raghavendra Dinavahi authored
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) UL STEPSIZE, UL NOFFS added into band table -
Raghavendra Dinavahi authored
-
Robert Schmidt authored
-
Robert Schmidt authored
-
- 06 Mar, 2026 12 commits
-
-
francescomani authored
-
francescomani authored
-
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
-
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.
-
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
-
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
-
Jaroslava Fiedlerova authored
Increase UHD streamer thread priority in nrUE This minor change allows nrUE UHD threads to inherit priority OAI_PRIORITY_RT_MAX.
-
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 -
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
-
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
-
Jaroslava Fiedlerova authored
CI: Create new pipeline for testing with Aerial and Jetson
-
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
-
- 05 Mar, 2026 3 commits
-
-
Bartosz Podrygajlo authored
Launch a temporary high-priority thread to start the UE RU, ensuring radio library threads inherit this priority
-
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.
-
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.
-
- 04 Mar, 2026 8 commits
-
-
Jaroslava Fiedlerova authored
Add information about the new CI setup and the RAN-SA-AERIAL-OAIUE-CN5G testing pipeline.
-
Jaroslava Fiedlerova authored
Since the setup script is available, use it to ensure the correct bandwidth configuration before each run.
-
Jaroslava Fiedlerova authored
-
Jaroslava Fiedlerova authored
Remove Ubuntu 20 and RHEL/Rocky 8 support, increase cmake min version Ubuntu 20 is EOL [1]. This was the version with the lowest CMake version, so we can increment the minimum CMake version to 3.19 as well. Increasing the minimum version will in particular help with the integration of CUDA (updates in 3.17 and 3.18), the current 3.19 brings better support for apple silicon. Some minor CMake updates (removing superfluous files and dependencies). [1] https://ubuntu.com/blog/ubuntu-20-04-lts-end-of-life-standard-support-is-coming-to-an-end-heres-how-to-prepare
-
Jaroslava Fiedlerova authored
UE: Fix if target cell during handover has SSB at a different offset as in source cell These changes fixed these observed issues: - If target cell has a different SSB position compared to source cell during ho - sync was not successful. - RAR does not get decoded if SSB position has changed on the target cell compared to source cell.
-
rmagueta authored
0 in dB is -INF, but since we're dealing with integer variables, we'll put 10*log10(2^-30) in the output, which corresponds to the symmetrical maximum output of the function.
-
rmagueta authored
-
Robert Schmidt authored
-