- 27 Jul, 2026 1 commit
-
-
yangjian authored
-
- 24 Jul, 2026 4 commits
-
-
Jaroslava Fiedlerova authored
Integration: 2026.w30 - #324 ci: fix pull_request_target fork checkout error and Node 20 deprecation warning - #143 Harmonize PUSCH CDM groups and port allocation - #182 PMI and MCS table index in phy-test - #285 Cleanup RU_t for NR and LTE - #325 Simplify nr_fill_xx_indication() - #140 Introduce group based processing for 5G uplink MU-MIMO and a MU-MIMO physical simulator - #292 simplify and comment how the UE generates PSS reference signal - #328 ci: split PCF CN config out of shared mini_nonrf_config.yaml - #234 [NR UE] PDSCH Rx: Pre-allocate large buffers on heap - #319 fix(nr_ue_rrc): calculate shortMAC-I and fill in RRCReestablishmentRequest - #282 Two-pass min1/min2 cnProc for BG1 and BG2. - #310 doc(t2): Update T2 related documentation - #330 Force RedCap UE on the initialBWP Closes: #278
-
Robert Schmidt authored
Force RedCap UE on the initialBWP (#330) Closes: #278 Reviewed-by:
Robert Schmidt <robert.schmidt@openairinterface.org> Reviewed-By:
Luis Pereira <lpereira@allbesmart.pt>
-
Jaroslava Fiedlerova authored
Update timing thresholds using the average of three runs and apply a 20% allowed margin. This reflects the decoding time improvements introduced by #282. Signed-off-by:Jaroslava Fiedlerova <jaroslava.fiedlerova@openairinterface.org>
-
Jaroslava Fiedlerova authored
doc(t2): Update T2 related documentation (#310) Update T2 documentation and DPDK build in Dockerfile. Reviewed-by:
Shubhika Garg <shubhika.garg@openairinterface.org> Reviewed-by:
Robert Schmidt <robert.schmidt@openairinterface.org>
-
- 23 Jul, 2026 14 commits
-
-
Jaroslava Fiedlerova authored
Signed-off-by:Jaroslava Fiedlerova <jaroslava.fiedlerova@openairinterface.org>
-
Jaroslava Fiedlerova authored
Update the DPDK version for fhi72 build with T2 support from 22.11 to 22.11.3 to align with LDPC_OFFLOAD_SETUP.md. Both 22.11 and 22.11.3 are compatible with the AMD-T2-SDFEC_25-03-1.patch and have been tested with the T2 card. Signed-off-by:Jaroslava Fiedlerova <jaroslava.fiedlerova@openairinterface.org>
-
Jaroslava Fiedlerova authored
Update the T2 card build instructions to use the latest DPDK patch, AMD-T2-SDFEC_25-03-1.patch. The required DPDK version for builds with T2 offload enabled is now 22.11 or 22.11.3, replacing the previous patch and version requirements. Signed-off-by:Jaroslava Fiedlerova <jaroslava.fiedlerova@openairinterface.org>
-
Romain Beurdouche authored
Signed-off-by:Romain Beurdouche <romain.beurdouche@eurecom.fr>
-
Robert Schmidt authored
Two-pass min1/min2 cnProc for BG1 and BG2. (#282) nrLDPC_cnProc_BG1_2pass and nrLDPC_cnProc_BG2_2pass replace the LUT-exclude-self approach with a two-pass algorithm: - Pass 1: single sweep over all numBN inputs to collect min1, min2 (two smallest |vk|) and the full sign product via sign_epi8. - Pass 2: re-read each vk, select min2 where |vk|==min1 (tie approx), remove self sign with sign_epi8(vsgn_all, vk), and store. Memory reads per CN group: `2*numBN` vs `numBN*(numBN-1)` for LUT approach: numBN= 4: 8 vs 12 (1.5x fewer) numBN= 7: 14 vs 42 (3.0x fewer) numBN=10: 20 vs 90 (4.5x fewer) numBN=19: 38 vs 342 (9.0x fewer) A generic nrLDPC_cnProc_group_2pass(buf, res, numBN, M, off) helper does the work; the BG1/BG2 wrappers loop over their degree groups and derive the BN stride from lut_numCnInCnGroups_BG1/2_R13/15 exactly as the existing functions do. No new LUT tables are required. Placed inside the #else (non-AVX512) block alongside the existing BG1/BG2 functions; AVX512 path is unchanged. It also removes the cnProc/bnProc/bnProcPC generators and simplifies the original implementation (several hundreds of lines of repetitive code replaced by generic functions.) Reviewed-by:Laurent THOMAS <laurent.thomas@open-cells.com>
-
Robert Schmidt authored
fix(nr_ue_rrc): calculate shortMAC-I and fill in RRCReestablishmentRequest (#319) Currently the shortMAC-I field is hardcoded in RRCReestablishmentRequest message, fix it by calculating as written in TS 38.331 section 5.3.7.4. Before this fix, test with OCUDU gNB when triggering re-establishment will cause gNB verification of shortMAC-I fail, then gNB will send RRCSetup instead of RRCReestablishment. After this fix, OCUDU gNB will send RRCReestablishment after UE sent RRCReestablishmentRequest. Reviewed-by:
Robert Schmidt <robert.schmidt@openairinterface.org> Reviewed-by:
Guido Casati <guido.casati@openairinterface.org>
-
Robert Schmidt authored
[NR UE] PDSCH Rx: Pre-allocate large buffers on heap (#234) Performs memory optimization to speed up OAI UE. 1. Replace per slot memory allocation and free of buffers dl_ch_mag/b/r, rho_dl, rxdataF_comp and pdsch_dl_ch_estimates with one-time allocation at init and free at teardown by pre-allocating one buffer set per actor. 2. Remove unnecessary memset on buffers as they are immediately written afterwards before being read. Reviewed-by:
Robert Schmidt <robert.schmidt@openairinterface.org> Reviewed-by:
Sakthivel Velumani <s.velumani@northeastern.edu>
-
Robert Schmidt authored
ci: split PCF CN config out of shared mini_nonrf_config.yaml (#328) The u0_25prb multi-QoS CI scenario needs PCF (use_local_pcc_rules: no), but in f02c84fc that configuration has been placed in the shared 5g_rfsimulator/mini_nonrf_config.yaml. Every other rfsim pipeline mounts that file without running oai-pcf. In some setups different from Linux (i.e. WSL2) this causes issues. With use_local_pcc_rules: no, SMF attempts associating to oai-pcf when creating SM Context even when no PCF container exists. If that HTTP call exceeds the wait timeout (100 ms), AMF gets error and does not complete the SM context creation, a later Update SM Context then fails ("Could not find Nsmf_PDUSession URI"). Native Linux is usually fine: when the failed PCF association is fast enough, context creation completes successfully. This commit moves PCF-specific configuration into 5g_rfsimulator_u0_25prb only. The shared config is restored to use_local_pcc_rules: yes and a single oai DNN (pre-f02c84fc status). Changes: - Add new file 5g_rfsimulator_u0_25prb/mini_nonrf_config.yaml (PCF, dual-DNN, use_local_pcc_rules: no) and mount in 5g_rfsimulator_u0_25prb/docker-compose.yaml -Revert 5g_rfsimulator/mini_nonrf_config.yaml Reviewed-by:
Jaroslava Fiedlerova <jaroslava.fiedlerova@openairinterface.org> Reviewed-by:
Thomas Schlichter <thomas.schlichter@iis.fraunhofer.de>
-
Robert Schmidt authored
simplify and comment how the UE generates PSS reference signal (#292) a small simplification in UE PSS amplitude Reviewed-by:
Sakthivel Velumani <s.velumani@northeastern.edu> Reviewed-by:
Alex Jiao <alex.jiao@keysight.com>
-
Robert Schmidt authored
Taken from three runs and averaged. Signed-off-by:Robert Schmidt <robert.schmidt@openairinterface.org>
-
Robert Schmidt authored
I took three runs, averaged the respective times. For the thresholds, always apply a 20% margin. Signed-off-by:Robert Schmidt <robert.schmidt@openairinterface.org>
-
Alex Jiao authored
Currently the shortMAC-I field is hardcoded in RRCReestablishmentRequest message, fix it by calculating as written in TS 38.331 section 5.3.7.4. Signed-off-by:Alex Jiao <alex.jiao@keysight.com>
-
Robert Schmidt authored
Introduce group based processing for 5G uplink MU-MIMO and a MU-MIMO physical simulator (#140) This MR introduces the baseband processing at the gNB required to support Uplink MU-MIMO gNB by updating ULSCH_id based processing to FAPI group-based joint processing. The PHY layer can now perform spatial demultiplexing for multiple UEs scheduled on the exact same time and frequency resources. Additionally, this MR introduces a dedicated MU-MIMO physical simulator (nr_ulsim_mu_mimo) to validate the joint receiver's performance. The simulator can be compiled with the other physical simulators using ./build_oai --phy_simulators It can be run using the following: sudo ./nr_ulsim_mu_mimo -n 300 -s 30 -S 30 -R 273 -W 1 -y 2 -z 2 -L 3 -N 2 -g C,l,10 This is the following output: ***************************************** [UE 0] SNR 30.000000: n_errors (4/300,0/10,0/0,0/0) (negative CRC), false_positive 0/300, errors_scrambling (30357/4140000,335/138000,0/0,0/0) SNR 30.000000: Channel BLER (1.333333e-02,0.000000e+00,-nan,-nan Channel BER (7.332609e-03,2.427536e-03,-nan,-nan) Avg round 1.03, Eff Rate 9070.2667 bits/slot, Eff Throughput 98.33, TBS 9224 bits/slot DMRS-PUSCH delay estimation: min 0, max 10, average 1.9 ***************************************** ***************************************** [UE 1] SNR 30.000000: n_errors (6/300,0/10,0/0,0/0) (negative CRC), false_positive 0/300, errors_scrambling (32485/4140000,1104/138000,0/0,0/0) SNR 30.000000: Channel BLER (2.000000e-02,0.000000e+00,-nan,-nan Channel BER (7.846618e-03,8.000000e-03,-nan,-nan) Avg round 1.03, Eff Rate 9070.2667 bits/slot, Eff Throughput 98.33, TBS 9224 bits/slot DMRS-PUSCH delay estimation: min 0, max 10, average 1.9 ***************************************** Reviewed-by:Roberto Louro Magueta <rmagueta@allbesmart.pt> Reviewed-by:
Robert Schmidt <robert.schmidt@openairinterface.org>
-
Robert Schmidt authored
Simplify nr_fill_xx_indication() (#325) nr_fill_xx_indication() in the UE is hard to understand, this is a small clarification step. Reviewed-by:Francesco Mani <email@francescomani.it>
-
- 22 Jul, 2026 15 commits
-
-
Francesco Mani authored
Signed-off-by:Francesco Mani <email@francescomani.it>
-
Robert Schmidt authored
UL Indications typically is fast, so the 1-3us have all a guard interval of 100%. Worse, in phy-test, we typically don't actually forward any RLC PDUs, so we don't measure much anyway. Remove this from all configs. Signed-off-by:Robert Schmidt <robert.schmidt@openairinterface.org>
-
Rupanjali authored
Add llr[2] and llr_buf_max to pdsch_scratch_t, allocated once at init at worst-case size (12 * 14 * N_RB_DL * 8 * 4). Remove the per-slot malloc16_clear + free from nr_ue_pdsch_procedures. The zero-init is also dropped as nr_dlsch_layer_demapping unconditionally overwrites all G positions before any function reads the buffer. Signed-off-by:Rupanjali <rupanjali.srivastava@openairinterface.org>
-
Rupanjali authored
Replace all per-slot heap allocations for rxdataF_comp, dl_ch_mag/magb/magr, rho_dl and pdsch_dl_ch_estimates with a pre-allocated scratch buffer array stored in PHY_VARS_NR_UE. One scratch set is allocated per DL actor (num_dl_actors from UE params, defaulting to 1); the actor index is derived as proc->nr_slot_rx % pdsch_num_actors, giving each parallel DL actor its own non-overlapping buffer set and eliminating heap contention between actors. Also remove redundant memset() calls on dl_ch_estimates_ext and rxdataF_ext stack VLAs, which are fully overwritten by nr_dlsch_extract_rbs() before use. Signed-off-by:Rupanjali <rupanjali.srivastava@openairinterface.org>
-
Guido Casati authored
The u0_25prb multi-QoS CI scenario needs PCF (use_local_pcc_rules: no), but in f02c84fc that configuration has been placed in the shared 5g_rfsimulator/mini_nonrf_config.yaml. Every other rfsim pipeline mounts that file without running oai-pcf. In some setups different from Linux (i.e. WSL2) this causes issues. With `use_local_pcc_rules: no`, SMF attempts associating to oai-pcf when creating SM Context even when no PCF container exists. If that HTTP call exceeds the wait timeout (100 ms), AMF gets error and does not complete the SM context creation, a later Update SM Context then fails ("Could not find Nsmf_PDUSession URI"). Native Linux is usually fine: when the failed PCF association is fast enough, context creation completes successfully. This commit moves PCF-specific configuration into 5g_rfsimulator_u0_25prb only. The shared config is restored to `use_local_pcc_rules: yes` and a single oai DNN (pre-f02c84fc status). Changes: - Add new file 5g_rfsimulator_u0_25prb/mini_nonrf_config.yaml (PCF, dual-DNN, use_local_pcc_rules: no) and mount in 5g_rfsimulator_u0_25prb/docker-compose.yaml - Revert 5g_rfsimulator/mini_nonrf_config.yaml Signed-off-by:
Guido Casati <guido.casati@openairinterface.org> Reported-by:
Thomas Schlichter <thomas.schlichter@iis.fraunhofer.de>
-
Jaroslava Fiedlerova authored
ci: fix pull_request_target fork checkout error and Node 20 deprecation warning (#324) Fixes: - The Jenkins dispatch workflow failed on fork PRs with Error: Refusing to check out fork pull request code from a 'pull_request_target' workflow. This workflow runs with the base repository's GITHUB_TOKEN, secrets, default-branch cache scope, and runner access. Fetching and executing a fork's code in that trusted context commonly leads to "pwn request" vulnerabilities. To opt in, review the risks at https://gh.io/securely-using-pull_request_target and set 'allow-unsafe-pr-checkout: true' on the actions/checkout step. - Node 20 warnings on GitHub Actions Related commit: 8e30ec80 ("ci: migrate Jenkins dispatch to pull_request_target") See the commit message for more details Reviewed-by:
Robert Schmidt <robert.schmidt@openairinterface.org> Reviewed-by:
Jaroslava Fiedlerova <jaroslava.fiedlerova@openairinterface.org>
-
Robert Schmidt authored
Signed-off-by:Robert Schmidt <robert.schmidt@openairinterface.org>
-
Laurent THOMAS authored
nr_fill_rx_indication() increments itself, remove full memset for the related struct (100 elements, one used) Signed-off-by:Laurent THOMAS <laurent.thomas@open-cells.com>
-
Laurent THOMAS authored
Instead of this somewhat opaque function, fill the struct in place to make it clearer what gets filled. This should make the code clearer in general. Co-authored-by:
Robert Schmidt <robert.schmidt@openairinterface.org> Signed-off-by:
Laurent THOMAS <laurent.thomas@open-cells.com> Signed-off-by:
Robert Schmidt <robert.schmidt@openairinterface.org>
-
Laurent THOMAS authored
Signed-off-by:Laurent THOMAS <laurent.thomas@open-cells.com>
-
Robert Schmidt authored
Cleanup RU_t for NR and LTE (#285) For both LTE and NR, removes: - txfh_in_fep - fh_north_in - eth_params_t -> initialized directly via ifdevice For NR, removes: - do_prach - fh_north_out - fh_south_asynch_in - fh_north_asynch_in Removes useless time-domain functions pointers for split 7.2. Reviewed-by:
Robert Schmidt <robert.schmidt@openairinterface.org> Reviewed-by:
Laurent THOMAS <laurent.thomas@open-cells.com>
-
Jaroslava Fiedlerova authored
Signed-off-by:Rakesh Mundlamuri <rakesh.mundlamuri@openairinterface.org>
-
Teodora Vladić authored
Signed-off-by:
Teodora Vladić <teodora.vladic@openairinterface.org> Fixes: 7b7afae0 ("feat(oran_fhlib_5g): Changes to run K release")
-
Teodora Vladić authored
Move ru_thread create into `start_NR_RU()` Signed-off-by:Teodora Vladić <teodora.vladic@openairinterface.org>
-
Teodora Vladić authored
`synch_to_ext_device` not relevant for NR Signed-off-by:Teodora Vladić <teodora.vladic@openairinterface.org>
-
- 21 Jul, 2026 6 commits
-
-
Shubhika Garg authored
- bump the detect-changes checkout from v4 to the latest v7 to clear the "Node 20 is deprecated" warning. It runs on Node 24. - actions/checkout now refuses to check out fork PR code from a pull_request_target workflow, which broke the trigger-jenkins job. It was checking out the fork's head SHA via 'ref: github.event.pull_request.head.sha'. However, the job only forwards the github.event payload to Jenkins via curl. - paths-filter v3 runs on Node 20, which GitHub Actions runners now flag as deprecated. Update to v4 which runs on Node 24. Fixes: 8e30ec80 ("ci: migrate Jenkins dispatch to pull_request_target") Signed-off-by:Shubhika Garg <shubhika.garg@openairinterface.org> Tested-by:
Jaroslava Fiedlerova <jaroslava.fiedlerova@openairinterface.org>
-
Teodora Vladić authored
Previously, `eth_params_t *` from `openair0_device_t` pointed to `eth_params_t` from `RU_t`. However, only for transport methods using ethernet, we shall initialize necessary params (addresses and ports). Signed-off-by:Teodora Vladić <teodora.vladic@openairinterface.org>
-
Rakesh Mundlamuri authored
The MMSE is computed using (H^H*H + N*I)^-1. While computing the MMSE term H^H*H + N*I before the inverse, the term H^H*H is scaled using shift (log2_max). However, the term N (noise) is not scaled. The fix scales the noise term using the shift. Signed-off-by:
Rakesh Mundlamuri <rakesh.mundlamuri@openairinterface.org> Fixes: 1b77adcb ("Segregate the LLR and channel compensation related common functions into different files")
-
Rakesh Mundlamuri authored
Signed-off-by:Rakesh Mundlamuri <rakesh.mundlamuri@openairinterface.org>
-
Rakesh Mundlamuri authored
Signed-off-by:Rakesh Mundlamuri <rakesh.mundlamuri@openairinterface.org>
-
Rakesh Mundlamuri authored
This commit introduces a dedicated simulation environment to validate the uplink MU-MIMO joint processing framework. It models a scenario where a single gNB serves multiple spatially multiplexed UEs sharing the exact same time and frequency resources. The simulator executes the complete physical layer baseband pipeline: - PUSCH data generation and LDPC encoding per UE - OFDM modulation (TX) - Signal propagation through a multi-path channel model - OFDM demodulation (RX) at the gNB - Joint PUSCH decoding, equalization, and spatial demultiplexing Performance metrics such as scrambling errors and BLER per UE is evaluated at the end of the simulation. Signed-off-by:Rakesh Mundlamuri <rakesh.mundlamuri@openairinterface.org>
-