Commit Graph
30245 Commits
Author SHA1 Message Date
Robert Schmidt 71e01bbaa9 Correctly interpret SRS numberOfSymbols
A length of 0 is to be interpreted as 1 symbol, a length of 1 is 2, etc.
2025-08-14 12:50:03 +02:00
Robert Schmidt 98cc36430b Schedule SRS longer in advance, cleanup
Schedule SRS longer in advance, so that it would also be enough even
with big k2 for UL TDA.

Remove useless types: we do not use the information on sched_srs
anymore, so remove it.

Check that the VRB map is free before making allocations.
2025-08-14 12:50:03 +02:00
Robert Schmidt 6ef8dadd88 Only add SRS TDA if SRS is activated
Since the parent commit, the TDA for UL scheduling is dynamically
selected, instead of being hardcoded to specific indices. We can thus
also omit the SRS TDA if no SRS is configured.

Also add SRS-specific TDAs if we schedule further into the future.
2025-08-14 12:50:03 +02:00
Robert Schmidt cf8099fab1 Refactor TDA allocation: scheduler can take advantage of multiple k2
Add multiple TDAs with k2 larger than the min_rxtxtime, to potentially
allow to allocate all available slots. For this, nr_rrc_config_ul_tda()
inspects the TDD pattern, and allocates as many TDAs as necessary. It
also sorts the TDA list, with smaller k2 and larger symbol lengths
first.

This in turn is now used by get_num_ul_tda() to use a k2 and the slot
configuration to find a suitable TDA, assuming a list as sorted in
nr_rrc_config_ul_tda().

Note that since get_num_ul_tda() does only inspect the available UL
slots, there might be overlap (e.g., when scheduling SRS), which will be
fixed in a follow-up commit.

Also, TDD pattern 2 is not handled here yet, and a follow-up commit will
fix it.
2025-08-14 12:50:03 +02:00
Robert Schmidt 3102068e71 Add ULSCH preprocessor slot logic for scheduling multiple slots
Add a loop to advance slots as determined by current ("DL") slot, and
advance further into the future (for "UL" slots) if TDAs allow. Ensure
to schedule all TDAs if it's the last DL slot, to guarantee a previously
scheduled TDA will also reoccur (i.e., for guaranteeing that
retransmissions can be made).

Note that the check for number of UE being zero is removed, as this
allows to keep "ul_next" close to the "min_next" slot. This way, we can
use fs_get_max(); otherwise, if we did not always execute this loop,
they might diverge far from each other, making the logic inside the loop
more complicated.

This commit introduces a new type "fsn_t" (frame-slot number) that
encapsulates a single frame-slot combination in a single struct. The
helper functions (in gNB_scheduler_ulsch.c) should be moved to a new
file under common/, but we don't do this here to limit the amount of
code changes.
2025-08-14 12:50:03 +02:00
Robert Schmidt 4aea866b6a Use k2 to decide which TDA to use
For scheduling multiple ULSCH ahead, we will have to use different k2.
Hence, we will need to check for k2 in the TDA selection as well. The
function get_ul_tda() is renamed to get_num_ul_tda() to reflect that it
might return multiple TDAs (not done in this commit, but in a follow-up
MR). get_num_ul_tda() also returns a pointer to the first suitable TDA.

In the phy-test scheduler, simplify the selection of the TDA to use: do
not hardcode a specific K2, but rather, use the first one (with any k2).
2025-08-14 12:50:03 +02:00
Robert Schmidt 9059c0290e Provide selected TDA to pf_ul() 2025-08-14 12:50:03 +02:00
Robert Schmidt 90406c101e Introduce dedicated ul_tda array 2025-08-14 12:50:03 +02:00
Robert Schmidt 948c0d5d2c Count and print failed CCE allocations for UL/DL 2025-08-14 12:50:03 +02:00
Robert Schmidt 5e734238c1 pf_ul(): report if UEs scheduled
For the multi-UL slot scheduling functionality in a follow-up commit, it
would be important to know if the scheduler allocated any UEs. If
pf_ul() allocated for some UEs, we might run it again on a different
slot. If on the other hand, no UEs were allocated, there is no point in
running it again.
2025-08-14 12:50:03 +02:00
Robert Schmidt d90c432f10 Merge remote-tracking branch 'origin/aerial_pbbf' into integration_2025_w33 (!3556)
Introduce support for Cat-B RU using Predefined-Beam BF with Aerial L1

This merge introduces the support for BeamID based Beamforming in OAI L2 using FAPI and leveraging Aerial L1. Support for OAI L1 is not in the scope of this MR.

Main changes:

- Introduced a third state for the analog_beamforming parameter.
  0=disabled,1=analog_bf,2=oran_bf
- Correctly populated the FAPI BF PDUs (prg_size, num_prgs,
  dig_bf_interfaces)
2025-08-14 10:37:57 +02:00
Robert Schmidt 3ee41c3fec Explain steps to build Dockerfiles without BuildKit
The Dockerfiles are reused for building on different architectures
(amd64/arm64). They differ, though, on some steps for downloading or
installing platform-specific utilities.

This is handled automatically when using BuildKit, which is the default
in docker versions v23.0+. Older docker versions require some special
settings. Explain this in the README.

Closes: #973
2025-08-14 09:49:43 +02:00
Robert Schmidt ff9a6d97ea gNB MAC doc: add dl/ul_min_mcs
Previous commits removed min_grant_mcs and instead introduced
dl/ul_min_mcs as a more generic replacement.

Fixes: 96b0cae63e ("Drop 'min_grant_mcs' configuration parameter ")
Fixes: 699afafc6f ("Add support for 'dl_min_mcs' and 'ul_min_mcs'
    configuration parameters")
2025-08-14 08:43:38 +02:00
francescomani 1719375cea minor refactoring in nfapi_nr_interface_scf 2025-08-13 19:31:49 +02:00
Gabriele Gemmi 61a7b6b80e compute prgsize from number of RA RB 2025-08-13 19:31:49 +02:00
Gabriele Gemmi 8beb382277 Removed TRP-scheme byte from UL BF PDU to Interop with Aerial 25-1 (FAPI 10.02) 2025-08-13 19:31:49 +02:00
Gabriele Gemmi 9e34a8ebed Compute DCI prgsize from Coreset 2025-08-13 19:31:46 +02:00
Gabriele Gemmi ce06099a99 Configuration of FAPI Beamforming PDU for Aerial PBBF 2025-08-13 19:07:53 +02:00
Robert Schmidt ebb544601c Merge remote-tracking branch 'origin/improve-gtpu-error-handling' into integration_2025_w33 (!3584)
add gtpu error packet parsing and display
2025-08-13 18:36:19 +02:00
Robert Schmidt 569cbe24fa Merge remote-tracking branch 'origin/print_UE_cmd_MAC' into integration_2025_w33 (!3586)
Print UE command line parameters at gNB MAC for split architecture without L1
2025-08-13 18:31:32 +02:00
Laurent THOMAS efccad956a add gtpu error packet parsing and display 2025-08-13 18:00:31 +02:00
Robert Schmidt 843b12db7f Merge branch 'ci-update-uhd' into 'develop'
CI: Update UHD version to 4.8

See merge request oai/openairinterface5g!3587
2025-08-13 10:20:38 +00:00
francescomani 071d28b3c9 print UE command line parameters also at MAC 2025-08-13 11:05:44 +02:00
Robert Schmidt 3a241fe587 Merge remote-tracking branch 'origin/amarisoft-ue-redcap' into integration_2025_w33 (!3573)
Make Amarisoft UE sim a RedCap UE

Change Amarisoft UE configuration and gNB of the AW2S pipeline to
be/handle RedCap UEs.

The UE should only connect if the gNB handles RedCap UEs. In the logs,
we should see

    [MAC]   UE with RNTI 3725 is RedCap

which we check for the first two UEs (one normal UE/absence of this
message, one RedCap UE/presence of this message).
2025-08-13 08:10:32 +02:00
Robert Schmidt 96c2c143f3 Merge remote-tracking branch 'origin/ldpc_clean_outdated_logs_and_interfaces' into integration_2025_w33 (!3576)
Cleanup documentation and interface of the LDPC segment coding libraries

Fix interface: The LDPC segment decoder interface had variables
'harq_pid', 'ulsch_id' and 'C' that are not useful to the segment
decoder. This MR removes these variables from the interface.

Fix documentation: libconfig log do not display anymore by default so we
may better not show them in the documentation to avoid any
misunderstanding.

Remove ldpc_cl library since the library does not work.
2025-08-13 07:41:31 +02:00
Jaroslava Fiedlerova 8f79abed2e CI: Update UHD version to 4.8 2025-08-12 22:27:29 +02:00
francescomani 4b85f35369 add option to directly send the beam index to L1 via FAPI without look-up table (for 7.2 split) 2025-08-12 18:51:16 +02:00
Robert Schmidt 3b57379887 CI AW2S-Amarisoft: verify RedCap'edness of a UE
Since the parent commit, UE 1 is normal (no RedCap), UE 2 is RedCap.
Verify that the gNB agrees with that and detects the second UE as RedCap
by analyzing some logs.

The first check is a bit elaborate, but basically is

    [ $(docker logs | grep XYZ | wc -l) -eq 0 ]
    ^   ^             ^          ^      ^
    1   2             3          4      5

(1) is the if statement, that compares
  (4) the number of occurrences
  (3) of "RedCap" in the
  (2) docker logs
(5) to being equal to

Note for all UEs which number, and whether it is RedCap (so this need to
be kept in sync with the Amarisoft UE sim configuration file in use!).
2025-08-12 17:33:14 +02:00
Robert Schmidt 4a41df2788 Make some Amarisoft UEs RedCap UEs
Change the parameters to be redcap (release: 17, redcap: "redcap") on
some UEs, and modify the path to the updated configuration.
Specifically, make UE 1 normal (no RedCap), UE 2 RedCap, UEs 3&4 normal,
UEs 5&6 RedCap, etc.

RedCap UEs should now only be able to connect if the gNB is handling Redcap
UEs, which is done in the parent commit.
2025-08-12 17:25:44 +02:00
Robert Schmidt 08428381d6 CI AW2S: modify configuration to have RedCap UEs connect 2025-08-12 17:25:44 +02:00
Robert Schmidt c3e7fe47e6 Remove unused Amarisoft CI XML file 2025-08-12 17:25:44 +02:00
Robert Schmidt 21dd03ee73 Merge remote-tracking branch 'origin/fix_nr_ue_pdcch_llr_size' into integration_2025_w33 (!3580)
NR UE: fix pdcch llr_size calculation in nr_rx_pdcch()
2025-08-12 12:46:46 +02:00
Robert Schmidt 3681ef33a9 Merge remote-tracking branch 'origin/nr_ue_improve_ntn_ta' into integration_2025_w33 (!3581)
NR UE NTN: consider acceleration on orbital path to calculate N_UE_TA_drift_variant

The ntn-Config ephemerisInfo contains the SAT position and velocity
vector but not the acceleration vector.

But the acceleration magnitude on the orbital path can be calculated as:

    t = 2 * pi * r / v
    omega = 2 * pi / t = v / r
    acceleration = omega² * r = v² / r

Where t is the orbital period, r is the orbital radius, v is the orbital
velocity, omega is the angular velocity. The acceleration direction is
from the SAT position towards the earth center. To calculate the
acceleration towards the UE, this is projected on the direction from the
SAT to the UE.

This is used to calculate the variable N_UE_TA_drift_variant and improve
the TA accuracy.
2025-08-12 12:46:14 +02:00
Robert Schmidt 5f674f5b68 Merge remote-tracking branch 'origin/issue_927' into integration_2025_w33 (!3395)
RFsim variable size H_awgn_mimo

Closes #927
2025-08-12 12:45:53 +02:00
Robert Schmidt 98cfbf0203 Merge remote-tracking branch 'origin/hotfix-bad-t-trace' into integration_2025_w33 (!3578)
fix a 4G T trace
2025-08-12 09:42:26 +02:00
Robert Schmidt 345fd992d9 Merge remote-tracking branch 'origin/searchspace0_with_2_occasion_per_slot' into integration_2025_w33 (!3567)
Workaround for handling 2 SS0 occasions per slot

Search Space 0 monitoring might depend on SSB. In !3332 this dependence
was removed by moving the configuration of SS0 earlier in a workaround
to avoid a segfault in handover. Now, a new workaround is needed to
handle 2 search space occasions per slot.
2025-08-12 09:41:50 +02:00
Robert Schmidt b0ba247a9e Merge remote-tracking branch 'origin/ue_pucch2_bugfix' into integration_2025_w33 (!3563)
UE fixes: pucch format 2 and CSI IM

- DMRS bugfix for PUCCH format 2 with odd start PRB
- CSI IM noise power estimation omits DC subcarrier
2025-08-12 09:41:19 +02:00
Laurent THOMAS e2c4033b57 When a client connects, we need to start the send/receive loop but the first reception is void data 2025-08-12 09:22:03 +02:00
francescomani c137020ca2 remove fixed size H_awgn_mimo that may cause segfault in simulator in case of more than 4 antennas 2025-08-12 09:22:03 +02:00
calvin_peyron 12cf015525 "as" should be in capital letters 2025-08-11 17:11:21 +02:00
Calvin Peyron 3a1be4895f Rename ubuntuXX to ubuntu 2025-08-11 17:11:21 +02:00
Calvin Peyron 5210750883 Fix warning tmp may be uninitialized leads to error 2025-08-11 17:11:21 +02:00
calvin_peyron bc9ae55723 Remove redundancy
As DEBIAN_FRONTEND has been set as environment variable, there is no need to use DEBIAN_FRONTEND=noninteractive inside RUN lines, it is redundant, hence it has been removed.
2025-08-11 17:11:21 +02:00
calvin_peyron b3675be33a Upgrade CI images to Ubuntu 24
Libboost went from 1.74.0 to 1.83.0 alongside Ubuntu update.
GCC version is set as default to be more practical.
In Ubuntu22, apt sources were in .list files, in Ubuntu24 they are in .sources files.
Add --break-system-packages for pip installation to use same logic as before, see the pip update 23.0.1 (2023-02-17).
With Ubuntu24 liboai_device requires libpython3.12
2025-08-11 17:11:21 +02:00
Robert Schmidt 35361db76b build_oai: don't redirect compilations to a file
Redirecting to a file has the problem that it is difficult in the CI to
recover these files. Furthermore, at least with ninja, when running
build_oai interactively, the build output will only take some lines
(because ninja rewrites lines), so the change should not be that big to
users.

One CI function would print the entire output from build_oai to the
console. Since that output might be long now, do not do this. The file
is archived, anyway.
2025-08-11 16:11:35 +02:00
Romain Beurdouche b9bed5838e feat(ldpc_cl): Remove ldpc_cl 2025-08-11 08:38:06 +00:00
Thomas Schlichter eb6c195c9b NR UE NTN: consider acceleration on orbital path to calculate N_UE_TA_drift_variant
The acceleration magnitude on the orbital path can be calculated as:

t = 2 * pi * r / v
omega = 2 * pi / t = v / r
acceleration = omega² * r = v² / r

Where t is the orbital period, r is the orbital radius, v is the orbital velocity, omega is the angular velocity.
The acceleration direction is from the SAT position towards the earth center.
To calculate the acceleration towards the UE, this is projected on the direction from the SAT to the UE.
2025-08-09 07:37:35 +02:00
Thomas Schlichter 4de0e54a3a NR UE: further simplify and optimize the usage of the PDCCH LLR array
The initial version of this patch was provided by "Laurent THOMAS <laurent.thomas@open-cells.com>"
2025-08-08 17:41:15 +02:00
Romain Beurdouche a2c03f26e9 fix(nrLDPC_decoder_CL): Apply clang-format 2025-08-08 14:48:41 +00:00
Romain Beurdouche 37bf1deb7d fix(nrLDPC_decoder_LYC): apply clang-format 2025-08-08 14:48:41 +00:00