Commit Graph
28156 Commits
Author SHA1 Message Date
Robert Schmidt 5600316d34 UL ref sequences: prevent double-initialization
The existing code prevents double initialization if e.g., both gNB&UE
call these functions (like in a simulator). However, in the case of a
double-initialization such as stopping and re-starting the L1, the
memory will be freed, but not freed again. Basically, this works:

    generate()
    generate() # not initialized again

but this leads to problems:

    generate()
    free()
    generate() # not initialized again, but should be!

Reimplement the check based on the data to be initialized, such that an
intermediate free() will be handled properly.
2024-12-16 16:18:10 +01:00
Robert Schmidt 70b4611001 Stop L1_rx_thread/L1_tx_thread first
These are the "main" worker threads (apart the ru_thread). If the
thread-pool stops, they might get stuck. E.g., in PUSCH channel
estimation, it uses a local response queue, and if the thread pool is
terminated, it seems that the L1_rx_thread can get stuck in there.

To limit these problems, attempt to stop these threads first; stop the
queue from which they read and make them terminate; then, stop the
thread pool.

Also, fix the termination of respPuschSymb queue.
2024-12-16 16:18:10 +01:00
Robert Schmidt 3361db1a34 Stop RU thread pool on exit, if applicable 2024-12-16 16:16:44 +01:00
Robert Schmidt a7d0e609ed config module: check that memory is enough, allow more restarts
A later commit implements the "restart" of the L1. The L1 reads
configuration options. First, allow to re-read configurations by
increasing the amount of memory the config module might allocate. Then,
avoid an out-of-bound write by checking that we still have memory
available (and assert if not possible).
2024-12-16 16:16:44 +01:00
Robert Schmidt 6330bfe0e8 fixup: there is no init_gNB_afterRU() 2024-12-16 16:16:43 +01:00
Robert Schmidt f804a355ad Trigger F1 UE context release if no UE context in RRC 2024-12-16 16:16:43 +01:00
Robert Schmidt c80821e578 NR MAC: save total/used PRBs aggregate 2024-12-16 16:16:43 +01:00
Robert Schmidt 5785bc1894 Msg4 RNTI not found: abort RA 2024-12-16 16:16:43 +01:00
Bartosz Podrygajlo 28b7e0b7d5 UL BLER vs SNR plot
Added a tool for generating UL BLER vs SNR from nr_ulsim runs.
2024-12-16 16:10:36 +01:00
Bartosz Podrygajlo 9e6c0c8c78 Fix unused code paths in PHY_ofdm_mod
For completeness sake, unused CYCLIC_SUFFIX and NONE extension
types were fixed to match CYCLIC_PREFIX memcpy usage.
2024-12-16 15:37:56 +01:00
Bartosz Podrygajlo 5ab9bd95bd Add const to input argument in PHY_ofdm_mod 2024-12-16 15:35:07 +01:00
Robert Schmidt a2613d5604 Merge remote-tracking branch 'origin/ldpc_decoding_module_interface_rework' into integration_2024_w50 (2952)
New LDPC coding library interface for decoding and encoding complete slots in one call to the library

Previous attempts to integrate LDPC decoding relying on offloading show
the limitation of the original code segment coding interface for the
library implementing LDPC coding. In order to perform the offload and
therefore the decoding in an optimal fashion, it is relevant to provide
the implementation with the broader amount of data possible per call,
which is a slot.  A previous MR related to T2 offload managed to offer
an interface for decoding transport blocks by modifying only
nr_ulsch_decoding.c. But this may not be sufficient for performing an
efficient decoding in any situation. Slots could be shared between
multiple transport blocks in case multiple UEs are connected to the RAN,
which makes the transport block size shrink and therefore degrades the
efficiency of the offloading.

This MR offers a broader interface with a gNB decoding entry point in
phy_procedures_nr_gNB.c. The file nr_ulsch_decoding.c now lets the
decoding library implement deinterleaving, rate-unmatching and decoding
for the slot. In gNB encoding and UE decoding and encoding as well,
tasks are partitioned in a similar fashion.

As it allows to feed the implementation with the broadest amount of data
possible, it allows to fit any coding solution in a library. This will
avoid further modification to OAI source code and addition of options to
select an implementation when integrating new decoding solutions. An
implementation of this interface will therefore be offered for every
existing decoding solution in OAI and solutions added in the future will
be provided as independent module code without any modification to the
core of OAI code.  The way to choose the decoding solution and to
configure it was also unified using configmodule. The library can be
chosen through the option --loader.ldpc.shlibversion. The slot coding
solutions shipped with this MR can be configured through configmodule
(e.g., T2 address and isolated cores).

This MR includes three coding implementations:

- A wrapper around segment decoding libraries for test purpose: libldpc.so
- A one shot slot coding and encoding with the T2 board: libldpc_t2.so
- A decoder on FPGA using the XDMA driver: libldpc_xdma.so

Improvements brought by this MR:

- Easy integration of a wider variety of LDPC coding solution at gNB and UE
- Easy selection of the LDPC coding solution (option --ldpc-offload-enable is kept for now but it can be ultimately removed)
- T2:
  * More efficient when many UEs are connected
  * Decoding and encoding in nr-uesoftmodem
2024-12-16 15:29:20 +01:00
Robert Schmidt deba36a5d1 Merge remote-tracking branch 'origin/NGAP-FAILMESSAGE' into integration_2024_w50 (!3163)
NGAP-Initial Context Setup Failure

NGAP Failure message - Initial Context Setup Failure.  When an Initial
Context Setup Request is received with the UE context as null, it
triggers Initial Context Setup failure
2024-12-16 15:27:38 +01:00
Robert Schmidt e5622f442c Merge remote-tracking branch 'origin/build-rocky9.5' into integration_2024_w50 (!3162)
Add Rocky 9.5 to list of distributions
2024-12-16 15:27:17 +01:00
Robert Schmidt 0b78a18d47 Merge remote-tracking branch 'origin/sib19-ue-utilization' into integration_2024_w50 (!3019)
SIB19 utilization on UE

Following SIB19 initialization and scheduling on gNB (!2899 - merged)
and Receive SIB19 on nrUE (!2920 - merged), this merge request aims to
introduce the actual use of the SIB19 provided parameters by gNB in UE.
Changes needed for utilization include: initialization of position
coordinates parameters for UE (which are needed to calculate propagation
delay between UE and SAT), propagation delay calculations and timing
advance adjusts. Moreover, this change removes the now unused arguments
for ntn_koffset, ntn_ta_common and ntn_ta_commondrift
2024-12-16 15:26:48 +01:00
Robert Schmidt a8a7946975 Merge remote-tracking branch 'origin/fhi-72-hotfixes' into integration_2024_w50 (!3160)
FHI-72: initialize mask, find correct libxran

See commits for more information
2024-12-16 15:25:52 +01:00
Robert Schmidt 85440e2d4e Merge remote-tracking branch 'origin/gtpv1u-data-no-itti' into integration_2024_w50 (!3158)
GTP: use direct call instead of ITTI

Using ITTI calls for user plane implies (1) a memory allocation, (2)
mutexes, and (3) queueing messages for each user plane packet, which is
heavy. Use a direct API call instead to reduce overhead.
2024-12-16 15:25:18 +01:00
Bartosz Podrygajlo b92ee59d41 Fix instrumentation target for old CMake versions
Older make versions do not support source files to be added to INTERFACE
type target. The source file is not needed there so it was removed.
2024-12-16 15:21:11 +01:00
Bartosz Podrygajlo 1481d89dfd Optimize PHY_ofdm_mod CYCLIC_PREFIX in case of incidentally aligned pointers
It seems that the cyclic prefix is in most cases a multiple of 512 samples.
This means that in most cases the idft output pointer is already aligned and
there is no need to perform an extra memcpy. This saves the memcpy time in
most cyclic prefix insertion cases.
2024-12-16 15:04:03 +01:00
Bartosz Podrygajlo 31b8d98bb5 Formating for PHY_ofdm_mod 2024-12-16 15:04:03 +01:00
Romain Beurdouche 7bf6f3f276 Simplify segment decoder and encoder interfaces
More complex implementations will be achieved using the new reworked interface

- t_nrLDPC_dec_params: remove F, Qm, rv and perCB
- encoder_implemparams_t: remove Qm, Tbslbrm, G, rv and perCB
2024-12-16 08:40:54 +01:00
Robert Schmidt 0aeba914a0 Cleanup in CMakeLists.txt
- Remove all variables (like OPENAIR1), they serve no purpose and make
  unnecessarily long lines
- Remove linking to T, it does not seem to be necessary
- Avoid intermediate variables to keep sources, and declare libraries
  directly, making for shorter code
2024-12-16 08:40:54 +01:00
Romain Beurdouche 23bfce8d91 feat(nrLDPC_coding_interface): Move LDPC and Turdo coding libraries cmake lists in sub directories 2024-12-16 08:40:54 +01:00
Romain Beurdouche 97614d182f feat(nrLDPC_coding_interface): Documentation 2024-12-16 08:40:54 +01:00
Romain Beurdouche 240aafeb14 fix(nrLDPC_coding_interface): use lidldpc_slot_t2 for CI 2024-12-16 08:40:54 +01:00
Romain Beurdouche 37bb58feb2 fix(nrLDPC_coding_interface): lidldpc_slot_segment becomes default libldpc 2024-12-16 08:40:54 +01:00
Raphael Defosseux 52d1d7b6e7 chore(ci): explicitly support BSD-3-Clause as legit license in OAI
Signed-off-by: Raphael Defosseux <raphael.defosseux@eurecom.fr>
2024-12-16 08:40:54 +01:00
Yi-Hung Chang 8756afdb5a feat(nrLDPC_coding_interface): Add ldpc_xdma coding library 2024-12-16 08:40:54 +01:00
Romain Beurdouche 73770da52c fix(nrLDPC_coding_t2): remove legacy T2 coding and rename libldpc_slot_t2.so in libldpc_t2.so 2024-12-16 08:40:54 +01:00
Romain Beurdouche c6bdde1244 feat(nrLDPC_coding_interface): Add ldpc_slot_t2 coding library 2024-12-16 08:40:54 +01:00
Romain Beurdouche 49bdcfd95c feat(nrLDPC_coding_interface): Add ldpc_slot_segment coding library 2024-12-16 08:40:54 +01:00
Romain Beurdouche 7f1d3c6644 feat(nrLDPC_coding_interface): Use reworked interface in PHY simulators 2024-12-16 08:40:54 +01:00
Yi-Hung Chang 80c406693f feat(nrLDPC_coding_interface): Use reworked interface in UE 2024-12-16 08:40:54 +01:00
Romain Beurdouche 00e1ad124d feat(nrLDPC_coding_interface): Use reworked interface in gNB 2024-12-16 08:40:52 +01:00
Madhuri.G 7cfa482107 Initial Context Setup Failure
NGAP Failure message - Initial Context Setup Failure.
When an Initial Context Setup Request is received with the UE context as null, it triggers Initial Context Setup failure.
2024-12-13 15:35:43 +05:30
Robert Schmidt 61849adf8b Merge remote-tracking branch 'origin/fix-type-remove-assert-2layer-mmse' into integration_2024_w50 (!3149)
Fix several issues in ulsch_mmse_2layers

Fix incorrect array type of determ_fin which was set to int32_t while the
array holds the results of simde_mm_abs_epi32 which produces unsigned
values.

Remove assert on right-shifting negative integers as it is impossible for
determ_fin to hold negative values.

Change type of sum_det to uint32_t to prevent possible overflow.  Fix
the type cast (int -> uint32_t) to prevent casting before shift in
nr_ulsch_comp_muli_sum which might have resulted in right shifting
negative integers.

Closes: #753
2024-12-13 08:15:18 +01:00
Robert Schmidt 7fe218b91c Merge remote-tracking branch 'origin/nr-ue-avoid-dl-race' into integration_2024_w50 (!3144)
UE data race fix

When a new sync request is sent to PHY, we clear harq buffer and start
synchronization process. This could lead to unexpected behavior or segv
because DL actors might be using the buffer we just cleared. To avoid
this, the DL actors are shutdown and re initiated before clearing harq
info.
2024-12-13 08:14:24 +01:00
Robert Schmidt 2de4d8ee0d Merge remote-tracking branch 'origin/ue-usrp-tx-thread' into integration_2024_w50 (!3111)
Enable USRP Tx thread in nrUE

The option usrp-tx-thread-config 1 was not taking effect in UE. This MR fixes it.
2024-12-13 08:13:45 +01:00
Robert Schmidt 4f11e76b6b Merge remote-tracking branch 'origin/ci-test-metanoia' into integration_2024_w50 (!3159)
CI: Add FHI7.2 test with Metanoia RU

Replace VVDN RU by Metanoia RU in the RAN-SA-FHI72-CN5G pipeline.
2024-12-13 08:13:12 +01:00
Romain Beurdouche 5f22b05695 feat(nrLDPC_coding_interface): Add reworked interface definition and loader 2024-12-12 08:37:20 +01:00
Robert Schmidt 13a1d863c7 Add Rocky 9.5 to list of distributions 2024-12-12 08:34:44 +01:00
Robert Schmidt f8d7e1fd1b Findxran: exclude default paths, use hints
Some users copy libxran.so to a system directory (e.g., /usr/local/lib).
At the same time, we require xran_LOCATION to be set to find the build
directory. Use HINTS to prefer the location passed through
xran_LOCATION.

Also, use NO_DEFAULT_PATH to outright disallow global scope, to prevent
"accidentally" finding libxran.so in global scope (this is for
multi-user systems that are used in development, and where people have
different version of libxran for testing purposes). To still use
packages in e.g., /usr/local/, it would be possible to set xran_LOCATION
to this directory. (there is a problem that the version information will
likely not be read correctly, so this might not be enough)
2024-12-12 08:32:48 +01:00
Jaroslava Fiedlerova 02679ca07c CI: Create FHI7.2 test with Metanoia RU, 2 layers in DL 2024-12-12 08:26:42 +01:00
Sakthivel Velumani 4c42a20eaa Cmd line option for sync in frames for iqrecorder
B200 with high clock drift will go out of sync within 280ms which was
the default duration to sync in with iqrecorder. Now this value can be
specified via cmd line so the user can change it according to needs.
2024-12-11 12:34:43 -05:00
Sakthivel Velumani 3f01ec0e71 Fix iqrecord to work on AVX512 machine 2024-12-11 12:32:18 -05:00
Robert Schmidt 42a10e4700 Correctly initialize u64 mask
1 needs to be marked as long long, to allow shifting numbers >= 32.
Otherwise, 1 is an int, limited to 32 bits.
2024-12-11 16:15:07 +01:00
Badescu, Ciprian a049c53e99 better handling of writeBlockSize greater than samples/slot
fix the case when writeBlockSize is greater than samples/slot
by sending samples from the same buffer instead of out-of-bounds memory read
2024-12-11 13:01:50 +02:00
Bartosz Podrygajlo fc26b8c053 Fix process_slot_tx_barriers for high rx-to-tx values
Set the number of barriers to 512 and implement proper slot and frame
based selection. Now the dynamic barriers should not be overwritten in
case the rx-to-tx offset is high. The maximum offset supported is 512.
2024-12-11 13:01:50 +02:00
Roberto Rosca 0b1dd3ed50 Update 5g_rfsimulator_ntn_geo docker file and configs used for test to exclude unused parameters and add ntn related values. 2024-12-11 13:01:50 +02:00
Roberto RoscaandRobert Schmidt ef55aaa7c9 Store position coordinates in NR_UE_RRC_INST_t
position_coordinates will be allocated and populated upon receiving SIB19

Co-authored-by: Robert Schmidt <robert.schmidt@openairinterface.org>
2024-12-11 13:01:50 +02:00