- 15 Jul, 2026 2 commits
-
-
Jaroslava Fiedlerova authored
Add/modify/remove required files for SA-AERIAL-OAIUE-CN5G Signed-off-by:Jaroslava Fiedlerova <jaroslava.fiedlerova@openairinterface.org>
-
Jaroslava Fiedlerova authored
Signed-off-by:Jaroslava Fiedlerova <jaroslava.fiedlerova@openairinterface.org>
-
- 10 Jul, 2026 4 commits
-
-
Jaroslava Fiedlerova authored
Integration: 2026.w28 - #235 RRC fixes - #247 Enforce N_PRB=2^x3^y5^z in SC-FDMA uplink scheduler - #274 Fix PSS correlation peak value and average value on the OAI UE logs - #261 ci: Speedup fhi72 dockerfiles - #273 Simplifications for xran builds - #270 xran: fixes for FDD operation - #281 Handle invalid input in nr_get_E - #149 fix(zmq): speedup zmq radio - #260 O-RU first fix pass - #202 doc: add a Git guide (commit signing, branch management, rerere) - #249 SDAP header handling fixes - #199 UE: implement TRS processing in PHY - #197 Bump SIMDE commit to the most up-to-date (1c68d9a) Closes: #118 Closes: #127 Closes: #128 Closes: #148 Closes: #262
-
Jaroslava Fiedlerova authored
Bump SIMDE commit to the most up-to-date (1c68d9a) (#197) Reviewed-by:Robert Schmidt <robert.schmidt@openairinterface.org>
-
Jaroslava Fiedlerova authored
UE: implement TRS processing in PHY (#199) This PR implements PHY layer processing for CSI-RS tracking signal that estimates the CFO and sends a frequency correction command to the radio when CFO goes above a threshold of 500Hz. A CI test is added with a GNU radio script between OCUDU gNB and the UE that simulates a continuous frequency offset. The test passes if the UE sends a frequency correction command. Reviewed-by:
Robert Schmidt <robert.schmidt@openairinterface.org> Reviewed-by:
Bartosz Podrygajlo <bartosz.podrygajlo@openairinterface.org> Reviewed-by:
Francesco Mani <email@francescomani.it>
-
Luis Pereira authored
Signed-off-by:Luis Pereira <lpereira@allbesmart.pt>
-
- 09 Jul, 2026 33 commits
-
-
Robert Schmidt authored
SDAP header handling fixes (#249) OAI SDAP treated SDAP header presence as a single PDU-session flag (enable_sdap), so a valid asymmetric RRC config (UL header present, DL header absent) caused the UE to parse downlink payload as an SDAP QFI and drop traffic (e.g. IPv4 0x45 -> bogus QFI 5). SDAP now follows RRC SDAP-Config per DRB and per direction from (TS 38.331 / TS 37.324). Header presence, QFI-to-DRB mapping, and default-DRB fallback all derive from what RRC configured for each DRB. In the new implementation, RRC (SDAP-Config IE) fills sdap_config_t per DRB (role, defaultDRB, mapped QFIs), SDAP entity stores it in qfi2drb_table + default_drb row to be used in the TX/RX data path. Also, simplify mapping logic, improves E1 QoS-flow remap, and completes UE reflective QoS mapping with the correct entity_role on new QFI rows. Reviewed-by:
Robert Schmidt <robert.schmidt@openairinterface.org> Reviewed-by:
Bartosz Podrygajlo <bartosz.podrygajlo@openairinterface.org>
-
Sakthivel Velumani authored
Signed-off-by:Sakthivel Velumani <s.velumani@northeastern.edu>
-
Sakthivel Velumani authored
measurement bitmap for CSI-RS is 0 means CSI-RS for tracking. So don't return and proceed with processing the CSI-RS. Signed-off-by:Sakthivel Velumani <s.velumani@northeastern.edu>
-
Sakthivel Velumani authored
TRS resources if configured by gnb, is present in two consequtive slots and two symbols per slot. LS estimates from the first symbol is saved and in second symbol frequency offset and time offset is estimated. The estimated FO is saved in UE global structure which is used in the last TRS slot. If the FO is above a threshold, the radio's center frequency is adjusted. Time offset is estimated but not used because time is already tracked using PBCH DMRS. Signed-off-by:Sakthivel Velumani <s.velumani@northeastern.edu>
-
Robert Schmidt authored
doc: add a Git guide (commit signing, branch management, rerere) (#202) Adds doc/git-guide.md, a single entry point for the practical Git knowledge needed to contribute to OAI: commit signing setup (DCO + verified commits), branch management (including fixup commits and --autosquash), submodules, recovering from mistakes, and reusing conflict resolutions with git rerere. This started as a rerere-only guide. Review discussion (@luispereira106, @rorsc, @sgarg00) converged on a broader scope: the Git how-tos are scattered across the documentation (signing in CONTRIBUTING.md, branch management in code-style-contrib.md), and configuring commit signing in particular was reported as hard to get right. This PR consolidates the how-tos in one guide while the policy documents stay authoritative for the rules. Single commit (review rounds squashed per the linear-history policy): - New doc/git-guide.md with sections on commit signing (moved from CONTRIBUTING.md, led by a copy-pasteable SSH recipe), branch management (moved from code-style-contrib.md; git switch, fixup/--autosquash, --fixup=amend:), submodules (unintended pointer-update pitfall), recovering from mistakes (restore/reset/reflog), and git rerere. - CONTRIBUTING.md keeps the normative DCO/Verified requirements and links to the guide; code-style-contrib.md keeps the workflow policy and links to the guide; doc/README.md lists the guide under Developer tools. - Cross-references (not moved, since they are coupled to their own docs): clang-format.md pre-commit hook, GET_SOURCES.md branch/tag model, doc_best_practices.md docs: commit prefix. - Small typo fix in the T tracer addconsoletrace.md documentation. Reviewed-by:
Robert Schmidt <robert.schmidt@openairinterface.org> Reviewed-by:
Francesco Mani <email@francescomani.it> Reviewed-by:
Shubhika Garg <shubhika.garg@openairinterface.org>
-
Robert Schmidt authored
O-RU first fix pass (#260) Added several fixes requested in the original PR - simplify code - add example config files & test procedure Reviewed-by:Robert Schmidt <robert.schmidt@openairinterface.org>
-
Robert Schmidt authored
fix(zmq): speedup zmq radio (#149) - Utilize ZMQ "zero-copy" inteface on TX - Skip one memcpy in RX - Use AVX-512 optimized cf_t <-> c16_t conversion loops in tx and rx - Parallelize TX and RX polling threads for faster execution Closes: #118 Reviewed-by:Robert Schmidt <robert.schmidt@openairinterface.org>
-
Robert Schmidt authored
Handle invalid input in nr_get_E (#281) This PR prevents the function nr_get_E to crash with an assertion for invalid input by handling the scenario with an error code Reviewed-by:Robert Schmidt <robert.schmidt@openairinterface.org>
-
Robert Schmidt authored
xran: fixes for FDD operation (#270) Two fixes in the xran fronthaul found while bringing up an FDD cell (Band n1, 10 MHz). Verified on a Band n1 FDD 10 MHz cell using Keysight RUsim/UEsim, End-to-end UE attach and traffic work. - Derive TTI from the configured numerology instead of a hardcoded 20 slots per frame: xran_fh_tx_send_slot() assumed 30 kHz SCS. Compute slots_per_frame as 10 << mu from the fronthaul config (mu_number[0] for K release, frame_conf.nNumerology for F release), so the TTI is correct for any numerology. With the original code, PRACH was not working properly. - Fix DL transmission in FDD mode: the TDD DL/guard slot check skipped every DL slot in FDD, where no TDD pattern exists and all slots carry DL. The check is now only applied when the frame duplex type is not FDD. Without this, no DL traffic was sent. Reviewed-by:
Teodora Vladić <teodora.vladic@openairinterface.org> Reviewed-by:
Robert Schmidt <robert.schmidt@openairinterface.org>
-
Robert Schmidt authored
Simplifications for xran builds (#273) - make xran_DOWNLOAD=ON default - skips an extra argument in cmake command - Automatically detect aarch64 and select correct target for external xran build Reviewed-by:
Jaroslava Fiedlerova <jaroslava.fiedlerova@openairinterface.org> Reviewed-by:
Teodora Vladić <teodora.vladic@openairinterface.org>
-
Andrea Lacava authored
Add doc/git-guide.md, a single entry point for the practical Git knowledge needed to contribute to OAI, consolidating the how-tos that were scattered across the documentation: - Setting up commit signing: moved from CONTRIBUTING.md, which keeps the normative DCO/Verified requirements and links to the guide; led by a compact SSH recipe, with the allowed_signers troubleshooting and a note on repository-level configuration for shared servers. - Managing your own branch: moved from code-style-contrib.md, which keeps the workflow policy and links to the guide; mentions git switch and covers fixup commits with git rebase --autosquash, including the --fixup=amend:<commit> variant. - Working with submodules: the update command and the unintended submodule-pointer-update pitfall seen in past PRs. - Recovering from mistakes: git restore --staged, git restore, git reset --soft/--hard, and git reflog. - Reusing conflict resolutions with git rerere: enabling, typical flow, inspecting, seeding from existing history, sharing the cache, and caveats, clarifying that contribution branches must keep a linear history while forks may carry merge commits. The guide is referenced from doc/README.md (Developer tools), code-style-contrib.md, and CONTRIBUTING.md. Guidance coupled to its own document is cross-linked instead of moved: clang-format.md (pre-commit hook), GET_SOURCES.md (branch and tag model), and doc_best_practices.md (docs: commit prefix). Also fix a typo in the T tracer addconsoletrace documentation. Signed-off-by:Andrea Lacava <thecave003@gmail.com>
-
Guido Casati authored
Log, param help, and rrc-usage.md described enable_sdap as toggling the SDAP layer, while it only sets sdap-HeaderUL/DL in RRC SDAP-Config. Signed-off-by:Guido Casati <guido.casati@openairinterface.org>
-
Karim Boutiba authored
Signed-off-by:Karim Boutiba <karim.boutiba@openairinterface.org>
-
Karim Boutiba authored
Previously, is_tdd_ul_symbol() and is_tdd_dl_symbol() returned true unconditionally in FDD. This is correct for UL/DL presence (in FDD, every symbol carries both UL and DL), but it breaks logic that relies on the TDD property that a UL symbol is not a DL symbol (and vice versa), e.g. the computation of the last DL symbol in mixed slots. In FDD, this assumption does not hold, leading to incorrect behavior. Remove the FDD shortcut from the TDD symbol helpers so they strictly answer the TDD question, and make the FDD case explicit at each function call (nFrameDuplexType != XRAN_FDD && ...). This harmonizes the TDD and FDD paths: in FDD, no slot/symbol is skipped on RX or TX, and guard-slot handling only applies to TDD. Signed-off-by:Karim Boutiba <karim.boutiba@openairinterface.org>
-
Karim Boutiba authored
The TTI computation in xran_fh_tx_send_slot() assumed 20 slots per frame (30 kHz SCS only). Compute slots_per_frame as 10 << mu from the fronthaul configuration instead, so the TTI is correct for any numerology. Signed-off-by:Karim Boutiba <karim.boutiba@openairinterface.org>
-
Guido Casati authored
In nr_sdap_rx_entity, the RX callback receives the DRB identity from PDCP (drb-Identity). Rename pdcp_entity to drb_id to be aligned with TS 37.324 terminology. Changes: - Rename the RX callback argument through the full SDAP RX surface: sdap_data_ind(), the rx_entity function pointer table, and nr_sdap_rx_entity(). Signed-off-by:Guido Casati <guido.casati@openairinterface.org>
-
Guido Casati authored
After new per-DRB SDAP roles changes, UE downlink reflective mapping (TS 37.324 §5.3.2) still stored only drb_id on the new QFI row. entity_role stayed NO_SDAP_HEADER, so later uplink TX and §5.3.1 end-marker logic read the wrong header config from that row. When storing the reflective UL rule, copy the receiving DRB entity_role (from nr_sdap_drb_lookup) together with drb_id, matching qfi2drb_map_add. Changes: - nr_sdap_rx_entity(): set qfi2drb_table[qfi].entity_role on RDI store Refs: - TS 37.324 §5.3.1, §5.3.2 - TS 38.331 SDAP-Config (sdap-HeaderUL / sdap-HeaderDL) Signed-off-by:Guido Casati <guido.casati@openairinterface.org>
-
Guido Casati authored
In fill_e1_drb_to_setup(), derive E1 SDAP-Config header-present booleans with logical negation instead of redundant ternary expressions. Changes: - NGAP: sDAP_Header_UL/DL assignment in fill_e1_drb_to_setup() Signed-off-by:Guido Casati <guido.casati@openairinterface.org>
-
Guido Casati authored
Parent commits route QFI-to-DRB lookup through qfi2drb_map (including default-DRB fallback per TS 37.324 clause 5.2.1), but gNB UL RX still checked the raw mapping table and accepted any mapped QFI on whatever DRB received the PDU. On gNB UL SDAP PDUs with a header, nr_sdap_rx_entity resolves the QFI through entity->qfi2drb_map, drops when no rule and no default DRB apply, and drops when the resolved DRB does not match the receiving DRB before GTP-U forwarding. Changes: - parse UL header with nr_sdap_ul_hdr_t - call qfi2drb_map for QFI validation - verify receiving-DRB match - simplify gNB UL block Refs: - TS 37.324 clause 5.2.1 (Uplink), clause 6.2.2.3 (UL data PDU) Signed-off-by:Guido Casati <guido.casati@openairinterface.org>
-
Guido Casati authored
E1 DRB-To-Modify already carries the new QFI list. The old nr_sdap_entity_update_qos_flows() duplicated that as a bare qfi[] plus other params while map_update expects a full sdap_config_t (add/release lists and per-DRB role). Route the E1 path through one struct instead. Changes: - nr_sdap_entity_update_qos_flows(): take sdap_config_t *, caller fills the struct, function sets role and defaultDRB from qfi2drb_table, builds mappedQFIs2Release for QFIs dropped from the DRB, then calls qfi2drb_map_update() - cucp_cuup_handler.c: build stack sdap_config_t from E1 qosFlows[] and call the new API Signed-off-by:Guido Casati <guido.casati@openairinterface.org>
-
Guido Casati authored
A DRB may have an uplink SDAP header but no downlink header (valid TS 38.331). The old entity->enable_sdap flag was true if either direction had a header, so UE downlink wrongly read byte 0 as QFI. IPv4 payloads start with 0x45 -> bogus QFI 5 and dropped traffic before the TUN (PR !158). Header presence must follow TS 37.324 §5.2.1/§5.2.2 per DRB and direction, not a single PDU-session-wide enable-sdap. Also, store the default DRB as a `qfi2drb_t` mapping in the SDAP entity and use it directly for fallback paths. Changes: - Add nr_sdap_drb_lookup() to return first qfi2drb_table row for a DRB - nr_sdap_rx_entity(): parse QFI only when the receiving direction has a header, drop if the DRB has no table row - nr_sdap_tx_entity(): UL/DL TX header bits from qfi2drb_map() (drb_id + entity_role), including default-DRB fallback - nr_sdap_qfi2drb(): const qfi2drb_t *, remove SDAP_MAP_RULE_EMPTY - nr_sdap_map_ctrl_pdu(): handle NULL from qfi2drb_map - nr_sdap_qfi2drb_map_update(): sync entity_role on all QFIs for the DRB. At most one DRB when both headers absent. - nr_sdap_entity_update_qos_flows(): keep per-DRB role from nr_sdap_drb_lookup(), skip update when DRB has no row - Cleanup entity->enable_sdap - nr_sdap.c: remove TUN-thread QFI drop, tx_entity owns unmappable-QFI handling - replace default_drb with qfi2drb_t default_drb in SDAP entity and init default DRB id+role at SDAP entity creation Refs: - PR #158 - TS 37.324 §5.2.1, §5.2.2, §6.2.2.1 - TS 38.331 SDAP-Config (sdap-HeaderUL / sdap-HeaderDL) Signed-off-by:Guido Casati <guido.casati@openairinterface.org>
-
Bartosz Podrygajlo authored
To run the test with OAI UE and vrtsim, use the following commands, assuming the executables are in the build directory. OAI O-RU: ./nr-oru -O ../targets/PROJECTS/GENERIC-NR-5GC/CONF/ru.band77.mu1.106rb.1x1.conf --device.name vrtsim --vrtsim.role server OAI 7.2 gNB: ./nr-softmodem -O ../targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.band77.mu1.106rb.fhi.1x1.conf OAI NR UE: ./nr-uesoftmodem -C 4049760000 -r 106 --numerology 1 --ssb 516 --device.name vrtsim Signed-off-by:Bartosz Podrygajlo <bartosz.podrygajlo@openairinterface.org>
-
Bartosz Podrygajlo authored
Signed-off-by:Bartosz Podrygajlo <bartosz.podrygajlo@openairinterface.org>
-
Bartosz Podrygajlo authored
Signed-off-by:Bartosz Podrygajlo <bartosz.podrygajlo@openairinterface.org>
-
Bartosz Podrygajlo authored
Signed-off-by:Bartosz Podrygajlo <bartosz.podrygajlo@openairinterface.org>
-
Bartosz Podrygajlo authored
Replace the single polling thread that handled all channels with separate, dedicated polling threads per TX and RX channel. This avoids calling `zmq_poll` across all sockets simultaneously, reduces lock contention, and enables concurrent socket operations on multiple antennas. Signed-off-by:Bartosz Podrygajlo <bartosz.podrygajlo@openairinterface.org>
-
Bartosz Podrygajlo authored
Add `TxRxSamplesSIMD` to validate the correctness of the new ZMQ device transmit and receive paths with int16 complex samples. Signed-off-by:Bartosz Podrygajlo <bartosz.podrygajlo@openairinterface.org>
-
Bartosz Podrygajlo authored
Optimize the TX path by converting int16 complex samples to float complex format directly into ZMQ message buffers using SIMD. Queue these ZMQ messages (`zmq_msg_t`) directly, avoiding temporary internal copying and enabling ZMQ's zero-copy interface during actual transmit in the polling thread. Signed-off-by:Bartosz Podrygajlo <bartosz.podrygajlo@openairinterface.org>
-
Bartosz Podrygajlo authored
Optimize the RX path by converting float complex samples received on ZMQ to int16 complex format using SIMD right inside the polling thread. This allows storing int16 complex (c16_t) samples directly inside the overflow_buffer, skipping a temporary float buffer allocation and a memcpy in the receive function. Signed-off-by:Bartosz Podrygajlo <bartosz.podrygajlo@openairinterface.org>
-
Bartosz Podrygajlo authored
Support float and int16 complex types Signed-off-by:Bartosz Podrygajlo <bartosz.podrygajlo@openairinterface.org>
-
Bartosz Podrygajlo authored
Add AVX-512 and AVX2 optimized conversion loops between float complex (cf_t) and int16 complex (c16_t) sample formats in radio/zmq/zmq_simd.h. Signed-off-by:Bartosz Podrygajlo <bartosz.podrygajlo@openairinterface.org>
-
Bartosz Podrygajlo authored
Add a performance benchmark `BenchmarkThroughput` to measure the sample rate capacity Signed-off-by:Bartosz Podrygajlo <bartosz.podrygajlo@openairinterface.org>
-
Francesco Mani authored
Signed-off-by:Francesco Mani <email@francescomani.it>
-
- 08 Jul, 2026 1 commit
-
-
Bartosz Podrygajlo authored
This update allows automatic discovery of target platform when building xran. Supproted platforms: armv8 and x86_64 with avx512 Signed-off-by:Bartosz Podrygajlo <bartosz.podrygajlo@openairinterface.org>
-