- 30 Oct, 2025 9 commits
-
-
Robert Schmidt authored
As in parent commit.
-
Robert Schmidt authored
Assign NR_sched_pdsch to sched_ctrl->sched_pdsch in one place, where the post-processing functionality will be called in a follow-up commit. This should result in no functional change.
-
Robert Schmidt authored
It seems to be assumed that curInfo actually has the currently active number of layers/PMI. However, I am not sure this would always be true (e.g., UE might not have been scheduled for some slots, but number of layers decreased as reported by CSI). Instead, recalculate the info from scratch when necessary.
-
Robert Schmidt authored
We don't need NR_sched_pdsch here. Remove the use of it.
-
Robert Schmidt authored
PF uses MCS and average throughput to decide which UE to schedule. Thus, the first loop decides on MCS, whereas the second does the "main UE allocation" after sorting by the PF metric. A follow-up commit will remove sched_pusch from NR_UE_sched_ctrl_t. Thus, we cannot rely on sched_ctrl to store the MCS in the first loop, and look it up from there in the second. Instead, store it as part of the UE iterator data, and take it from there. See also: f3068caa ("Store selected MCS in UE iterator", for UL)
-
Robert Schmidt authored
-
Robert Schmidt authored
Introduce a struct with information on FAPI structures to save resource and data allocation into. It's in nr_mac_gNB.h because the next commits will reuse this for all preprocessors.
-
Robert Schmidt authored
-
Robert Schmidt authored
Especially in pf_dl()/pf_ul(), we use a first loop using UE_iterator(), then iterate over a subset of UEs. It has happened a couple of times that I was using variable "UE" (from the iterator), when it should only be used in the first UE_iterator() loop. Rewrite UE_iterator() to effectively limit the scope of the iterator variables to the body of the UE_iterator. This should also make it possible to reuse multiple UE_iterator()s with the same variables in sequence.
-
- 29 Oct, 2025 2 commits
-
-
Robert Schmidt authored
The gNB will stop the periodical logging of UEs in MAC Info level after a configurable number of UEs have been printed, by default 8. Set it to 17 in some CI tests to ensure we still get all UEs for the time being, as the CI might depend on this.
-
Robert Schmidt authored
Without this, the remainder of the file remains in place, and this can be confusing if the total file size reduces.
-
- 28 Oct, 2025 5 commits
-
-
Robert Schmidt authored
The call to snprintf() as was used is wrong: we use the return value to advance output, but the man page says > The functions snprintf() and vsnprintf() do not write more than size > bytes (including the terminating null byte ('\0')). If the output was > truncated due to this limit, then the return value is the number of > characters (excluding the terminating null byte) which would have been > written to the final string if enough space had been available. > Thus, a return value of size or more means that the output was > truncated. Thus, output could go beyond end, and we get a stack overflow. Instead, encapsulate the call to snprintf() checking this condition, and only advancing output as intended, limiting to 0 if we are at the end of the buffer. This avoids this error: ==964825==ERROR: AddressSanitizer: stack-buffer-overflow on address 0x7be799f51988 at pc 0x7fe7d66b0d39 bp 0x7be79b825ef0 sp 0x7be79b8256c0 WRITE of size 3 at 0x7be799f51988 thread T24 #0 0x7fe7d66b0d38 in vsnprintf (/lib64/libasan.so.8+0xb0d38) (BuildId: 10b8ccd49f75c21babf1d7abe51bb63589d8471f) #1 0x7fe7d66b2d44 in snprintf (/lib64/libasan.so.8+0xb2d44) (BuildId: 10b8ccd49f75c21babf1d7abe51bb63589d8471f) #2 0x0000008fe7c6 in dump_mac_stats /home/richie/w/refactor-dlsch/openair2/LAYER2/NR_MAC_gNB/main.c:183 #3 0x00000092071a in gNB_dlsch_ulsch_scheduler /home/richie/w/refactor-dlsch/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler.c:200 #4 0x0000008f8f78 in run_scheduler_monolithic /home/richie/w/refactor-dlsch/openair2/NR_PHY_INTERFACE/NR_IF_Module.c:399 -
Robert Schmidt authored
There is the (global) sched_lock that prevents concurrent access. A dedicated UE lock does not make sense in that case. Worse, this lock does not prevent all concurrent UE accesses (e.g., there are many loops over UEs that are not protected), so it's also wrong.
-
Robert Schmidt authored
truncate resets the file size to 0. Without this, e.g., when disconnecting a UE, the old UE remains at the end and is not overwritten, which is confusing.
-
Robert Schmidt authored
-
Robert Schmidt authored
-
- 16 Oct, 2025 10 commits
-
-
Jaroslava Fiedlerova authored
Integration `2025.w42` * !3623 Optimization of PDSCH precoding operation * !3691 \[CI\] Ensure multi-arch DockerHub Push after successful image build * !3696 asn1c doesn't follow c99 variables alias rules, it needs to be compiled this... * !3685 Assign antenna ports correctly for 1 and 2 layers for aerial. * !3495 Type0 PDSCH frequency allocation at L1 UE * !3686 Remove NR L2 simulator code from UE * !3693 Remove B200-specific clock-rate setting * !3701 OAI UE: add shared RSRP Table 10.1.6.1-1 mapping function to helpers and adopt it RRC UE * !3662 RRC UE file cleanup * update doc/README.md * !3608 use common scale channel functions for DLSCH and ULSCH * !3694 fix non initialized DMRS port value in case of DCI00 at UE * !3702 Extend F1 rfsim CI test * !3704 remove unused global queues, dead code * !3673 CI: Aerial: Add an UL-heavy pipeline test * !3651 CI: Upgrade HO setup to use an attenuator * !3695 CI: Upgrade Aerial setup to 25-2.1 Closes #940 See merge request oai/openairinterface5g!3700
-
Jaroslava Fiedlerova authored
CI: Upgrade Aerial setup to 25-2.1 The purpose of this MR is to upgrade the cuBB image in the Aerial setup to release 25-2.1 and update the doc/Aerial_FAPI_Split_Tutorial.md accordingly.
-
Reem Bahsoun authored
-
Jaroslava Fiedlerova authored
CI: Aerial: Add an UL-heavy pipeline test Add a new test with DSUUU TDD pattern, and try to reach 220Mbps.
-
Jaroslava Fiedlerova authored
CI: Upgrade HO setup to use an attenuator The goal of this MR is to upgrade HO CI setup to include a digital attenuator that will allow us to trigger handover by attenuating the signals on the DUs.
-
Robert Schmidt authored
-
Reem Bahsoun authored
Number linearly for easier navigation in HTML reports, and start DU1 before connecting the UE. Reset attenuation on all channels to 0.
-
Reem Bahsoun authored
Harmonize gNB names with other files, remove control ports (not used), put sl_ahead in right place.
-
Reem Bahsoun authored
-
Reem Bahsoun authored
Harmonize with other files and use dashes.
-
- 15 Oct, 2025 14 commits
-
-
Reem Bahsoun authored
-
Reem Bahsoun authored
-
Robert Schmidt authored
Doing this before using set_master_clock_rate() on the B200 seems to invalidate synchronization setting. [HW] USRP clock set to 1759836386.000000 sec [...] [HW] current pps at 3.286750, starting streaming at 4.286750 In other words, the current time setting was reset. With this change now, we see [HW] USRP clock set to 1759929873.000000 sec [...] [HW] current pps at 1759929873.000000, starting streaming at 1759929874.000000 This is because changing clock sources (I assume setting the master clock rate impacts the clock) can result in changing the time. From the documentation of [1]: > Note: When changing clock sources, a previously set time will most > likely be lost. It is recommended to set the time after changing the > clock source. Otherwise, an unexpected time may line up with future PPS > edges. [1] https://files.ettus.com/manual/classuhd_1_1usrp_1_1multi__usrp.html#a99254abfa5259b70a020e667eee619b9 -
Robert Schmidt authored
- main.py: replace %%workspace%% with CONTAINERS.eNBSourceCodePath in Custom_Command and Custom_Script Co-authored-by:Guido Casati <hello@guidocasati.com>
-
Guido Casati authored
- Add band mismatch check in valid_du_in_neighbour_configs function - Ensures neighbor cell band matches serving cell band - Prevents invalid neighbor configurations for handover
-
Robert Schmidt authored
-
Robert Schmidt authored
The code only checked that Msg3 would be scheduled during UL, but in some combinations, e.g., with DSUUU, the current slot can very well be UL as well => we would schedule DCI in UL slot.
-
Robert Schmidt authored
-
Robert authored
-
Robert Schmidt authored
-
Robert authored
Update cuBB image to cubb-build:25-2.1_srs-ul-heavy (release 25-2.1 with changes in the L1 config to test heavy ul) Co-authored-by:Reem Bahsoun <reem.bahsoun@openairinterface.org>
-
Jaroslava Fiedlerova authored
remove unused global queues, dead code
-
Robert Schmidt authored
Extend F1 rfsim CI test Add one handover hop. Closes #940
-
Robert Schmidt authored
fix non initialized DMRS port value in case of DCI00 at UE When transmitted PUSCH is neither scheduled by DCI format 0_1 with CRC scrambled by C-RNTI, CS-RNTI, SP-CSI-RNTI or MCS-C-RNTI, nor corresponding to a configured grant, the UE shall use [...] DM-RS port 0. In UE code it was not set in case of DCI00 and that was leading to ULSCH failures in some scenarios.
-