Commit Graph
9011 Commits
Author SHA1 Message Date
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
Romain Beurdouche 5f22b05695 feat(nrLDPC_coding_interface): Add reworked interface definition and loader 2024-12-12 08:37:20 +01:00
Jaroslava Fiedlerova 55a18514b6 Merge remote-tracking branch 'origin/thread-pool-fixed' into integration_2024_w49 (!3025)
New threadpool, fixed in NR UE

This merge request is an attempt to fix the new thread pool implementation
for use in NR UE and gNB (as well as eNB).
2024-12-06 16:36:38 +01:00
Jaroslava Fiedlerova 797bc1b285 Merge remote-tracking branch 'origin/remove-not-needed-global-vars' into integration_2024_w49 (!3140)
remove un-necessary global variables

Remove global variables that can be removed by a trivial way:
- simply dead globals
- or reference is a single source, so can be static

setting them static reduces the scope, that is a progress, but of course as
for all static variables, the code is still not re-entrant
2024-12-06 11:51:29 +01:00
Jaroslava Fiedlerova c1e7c3795f Merge remote-tracking branch 'origin/fix-lacking-barrier-actor-dependancy' into integration_2024_w49 (!3145)
a lib has been added but missed dependancies
2024-12-05 19:09:41 +01:00
Jaroslava Fiedlerova 2ef4dbe6b9 Merge remote-tracking branch 'origin/rfsimdoc' into integration_2024_w49 (!2392)
Documentation: add multi-UE deployment with RFsimulator

Extended doc/NR_SA_Tutorial_OAI_nrUE.md with section about how to run multiple UEs

- multiple UEs with namespaces (provided new script)
- multiple UEs with Docker UEs
- updated rfsimulator and channel simulation tutorials
- updated README.md
2024-12-05 19:07:13 +01:00
Guido CasatiandArash Sahbafard 3438d45d6c Add tutorial about how to run multiple UEs
* multiple UEs with namespaces (provided new script)
* multiple UEs with Docker UEs
* updated rfsimulator and channel simulation tutorials
* updated README.md

Co-authored-by: Arash Sahbafard <arash.sahbafard@silicon-austria.com>
2024-12-05 13:50:36 +01:00
Laurent THOMAS 443307a34a a lib has been added but missed dependancies 2024-12-05 11:29:42 +01:00
Jaroslava Fiedlerova 80736bb2bd Merge remote-tracking branch 'origin/t-tracer-nrue-macpdu' into integration_2024_w49 (!3137)
T tracer: add macpdu traces for the NR UE

MIB, SIB1, random access and regular scheduling are traced.

At the beginning of a connection (rrc setup request and rrc setup), the
RNTI is reported as 0. Might be fixed, somehow, if absolutely needed (not
sure).
2024-12-05 10:19:12 +01:00
21dafbcde7 New threadpool
- removed some whitespace noise.
 - cleaned up CMakeLists.txt
 - reintegrated task_manager.c into thread-pool.c
 - cleaned up some unnecessary code

Co-authored-by: Cedric Roux <cedric.roux@eurecom.fr>
Co-authored-by: Mikel Irazabal <mikel.irazabal@openairinterface.com>
2024-12-04 17:54:51 +01:00
Laurent THOMAS 279d49415f remove un-necessary global variables 2024-12-04 12:26:36 +01:00
Cedric Roux 5ff4b7a328 T tracer: add macpdu traces for the NR UE
MIB, SIB1, random access and regular scheduling are traced.

At the beginning of a connection (rrc setup request and rrc setup), the
RNTI is reported as 0. Might be fixed, somehow, if absolutely needed (not
sure).
2024-12-03 15:46:12 +01:00
Robert Schmidt b5675d3eea Merge remote-tracking branch 'origin/nfapi-p7-refactoring' into integration_2024_w48 (!3131)
FAPI P7 Refactoring and unitary test creation

This MR is a follow-up to the work done in !2714 this time separating
the P7 FAPI messages into its own library (nr_fapi_p7).

In the same way, utility functions to copy, free and compare have been
added for each message, as well as an addition function to get the
allocated size for a message, which is used for the messages that can be
too big to fit in a buffer that's allocated in the stack.

Unitary tests have been added for each of the messages, testing
pack/unpack and the utility functions added.
2024-11-30 12:59:25 +01:00
Robert Schmidt f5888225ad Merge remote-tracking branch 'origin/imscope-docking' into integration_2024_w48 (!3030)
Imscope updates

- Using imgui docking branch - allows window docking.
- Moved scopes to different windows to allow docking.
- Disabled scatterplot for time domain samples - issues with amount of
  vertices caused segfaults.
- Disabled IQ heatmaps for RX IQ samples on gNB and UE - this was
  incorrect and currently I don't know how to fix it. This will be
  reenabled once it is.
- added a simple menu and disabled demo windows by default.
2024-11-29 15:52:50 +01:00
Robert Schmidt ca3739e806 Merge remote-tracking branch 'origin/nr-ue-threading-improvements' into integration_2024_w48 (!3091)
Update NR UE threading model

This updates the NR UE threading model by preventing calling threadpool
from threadpool and fixes deadlock issues related to processSlotTX. By
making processSlotTX run to completion instead of starting and waiting
for other threads to finish it prevents locking thread pool cores,
therefore prevening deadlocks.

There is a slight difference here compared to the previous version where
I do not use the UL actor as I believe it is not necessary,
processSlotTX satisfies the run-to-completion requirement now. If in the
future any UL procedure would be parallelized using the thread pool it
should either be done in a run-to-completion model or the processSlotTX
function should be taken off the thread pool.

The documentation has been updated.
2024-11-29 15:51:56 +01:00
Bartosz Podrygajlo ef803d02e4 Add default docking window layout for imscope 2024-11-29 11:23:27 +01:00
Bartosz Podrygajlo fddc52de38 Imscope updates
- Using imgui docking branch - allows window docking.
 - Moved scopes to different windows to allow docking.
 - Disabled scatterplot for time domain samples - issues with amount of vertices caused segfaults.
 - Disabled IQ heatmaps for RX IQ samples on gNB and UE - this was incorrect and currently I don't know
   how to fix it. This will be reenabled once it is.
 - added a simple menu and disabled demo windows by default.
2024-11-29 11:23:27 +01:00
Rúben Soares Silva 6a34439c86 Fix SRS beamforming_report reported symbol list.
Renames nfapi_nr_srs_reported_symbol_t prgs into *reported_symbol_list for two reasons:
  So that the name is more representative of what the parameter represents.
  For it to actually be a list, and not assume only 1 reported symbol is used.

Allocate reported_symbol_list in unpack_nr_srs_beamforming_report.

Updated all references to prior prgs to point to the first position of reported_symbol_list, still only effectively using the first reported_symbol.

Rename fill_srs_reported_symbol_list into fill_srs_reported_symbol and update input parameter name, since it only fills the information related to one reported symbol
2024-11-29 09:15:03 +01:00
Robert Schmidt 5e72bd70bc nfapi: Fixup BG (un)packing and error message 2024-11-29 09:12:55 +01:00
Robert Schmidt ce9aaa8f53 Merge remote-tracking branch 'origin/improve-chanest-single-antenna' into integration_2024_w48 (!3132)
Run the last job of gNB pusch channel estimation inline

In case of 1 antenna this prevents the usage of threadpool which
eliminates the thread pool overhead.  In case of >1 antenna the
threadpool contention should be reduced providing smaller benefits.
2024-11-28 18:49:52 +01:00
Robert Schmidt a8081914fb Merge remote-tracking branch 'origin/t2-fix-4x4' into integration_2024_w48 (!3115)
T2: minor fix for 4x4 processing

- correct max number of LDPC segments for T2 processing
- use pointer arithmetics in retrieve_ldpc_enc_op() in T2 lib to
  optimize loop processing
2024-11-28 18:47:40 +01:00
Robert Schmidt bbc35c7a0e Merge remote-tracking branch 'origin/tracy-profiler' into integration_2024_w48 (!2951)
Integrate Tracy with NR UE

This commit enables the optional use of Tracy for profiling NR UE. See
https://github.com/wolfpld/tracy/releases/tag/v0.11.1 for details.

More instructions are in the commit.
2024-11-28 18:46:35 +01:00
Bartosz Podrygajlo afdf5aa49b Increase number of DL Actors to 4
This increases the number of concurrent DL slots processed from 2 to 4.
2024-11-27 18:15:30 +01:00
Bartosz Podrygajlo 6bd50d6e5a Use DL actor for UE_dl_processing instead of thread pool 2024-11-27 18:15:30 +01:00
Bartosz Podrygajlo 3b7c29f2d3 Actor model imlementation
Add actor library which implements the Actor model (see  https://en.wikipedia.org/wiki/Actor_model).
2024-11-27 18:15:24 +01:00
Bartosz Podrygajlo 654cffe39f Do not start processSlotTx before it is ready to run.
Implement run-to-completion for processSlotTX. This is achieved by using a new
dynamic_barrier_t which allows to specify callback after the first join has been
made.
2024-11-27 18:14:59 +01:00
Bartosz Podrygajlo e5b19ad121 Run the last job of gNB pusch channel estimation inline
In case of 1 antenna this prevents the usage of threadpool which eliminates
the thread pool overhead.
In case of >1 antenna the threadpool contention should be reduced providing
smaller benefits.
2024-11-27 18:01:21 +01:00
Jaroslava Fiedlerova a9060cd382 Merge remote-tracking branch 'origin/nr-cleanup-includes' into integration_2024_w47 (!2966)
Refactor of includes in gNB/UE for improved header management

This merge request implements changes suggested by the Include What You Use
(IWYU) open source tool to streamline the project’s header file usage.

The adjustments ensure that each file includes only the necessary headers for
the symbols it uses, making the code more efficient and maintainable.
Unnecessary includes have been removed, and missing headers have been added
where required. This improves modularity and reduces inter-dependencies between
files, helping to avoid future build issues caused by unused or missing includes.

Each output has been manually reviewed.

Followed a similar approach as in !2953 (merged).

Affected folders/files:

- NR_MAC_gNB/main.c
- nr-softmodem.c
- unitary simulators: nr_dlsim, nr_ulsim, prachsim
- openair2/RRC/NR
- openair3/NGAP
- openair2/LAYER2/nr_pdcp
- openair2/SDAP/nr_sdap
2024-11-26 09:26:28 +01:00
Jaroslava Fiedlerova 5b6e16c8e7 Merge remote-tracking branch 'origin/ue-monitoring-stats' into integration_2024_w47 (!2996)
Ue monitoring stats

- one commit to add UE mac stats similar to gNB one and remove a partial
implementation at phy level of some counters
- second commit only rename the two UE persisted HARQ tyepdef names for DL
and for UL (one was saying "UE" but not the direction and the second the
direction but not "UE")
2024-11-25 11:27:22 +01:00
Jaroslava Fiedlerova 2f27839515 T2: Rework retrieve_ldpc_enc_op() 2024-11-22 17:37:36 +01:00
Jaroslava Fiedlerova e531043128 Merge remote-tracking branch 'origin/fix-extraneous-threadpool-tasks' into integration_2024_w47 (!3105)
Fix a small bug with total_res in gNB PUSCH symbol processing

Replaced total_res with res_per_task when deciding whether to start a threadpool
task or not. This does not have big impact on the software as the
nr_pusch_symbol_processing will recheck ul_valid_re_per_slot anyway but it may
reduce the number of thread pool tasks created.
2024-11-22 15:50:40 +01:00
Jaroslava Fiedlerova 45fff9fc0f Merge remote-tracking branch 'origin/dmrs_channel_estimation_parallelization' into integration_2024_w47 (!2972)
Parallelize PUSCH channel estimation

This MR adds PUSCH channel estimation parallelization which reduces the
processing time. It also adds time measurements for each antenna and makes
num_antennas_per_thread configurable in nr_ulsim and the gNB config file.

Some results:

- **273 PRBs 4 antennas** `./nr_ulsim -n200 -m25 -s40 -S40 -q1 -R273 -r273 -z4 -P`

| Number of threads | ULSCH channel estimation time (us) develop| ULSCH channel estimation time (us)| Antenna Processing time (us) |
| ------            | ------                                    | ------                            | ------ |
| 0                 | 194.06                                    |193.17                             |  134.82|
| 2                 | 194.88                                    |154.02                             |  93.43 |
| 4                 | 195.23                                    |134.27                             |   72.71|
- **273 PRBs 8 antennas** `./nr_ulsim -n200 -m25 -s40 -S40 -q1 -R273 -r273 -z8 -P`

| Number of threads | ULSCH channel estimation time (us) develop| ULSCH channel estimation time (us)| Antenna Processing time (us) |
| ------            | ------                                    | ------                            | ------ |
| 0                 | 387.93                                    |384.99                             |  269.39|
| 2                 | 388.10                                    |279.47                             |  161.32|
| 4                 | 387.47                                    |225.37                             |  106.52|
| 8                 | 390.53                                    |204.48                             |   83.74|

- **106 PRBs MIMO 4 layers** `./nr_ulsim -n100 -m9 -r106 -s10 -W4 -y4 -z4 -P`

| Number of threads | ULSCH channel estimation time (us) develop| ULSCH channel estimation time (us)| Antenna Processing time (us) |
| ------            | ------                                    | ------                            | ------ |
| 0                 | 263.20                                    |268.97                             |  57.49 |
| 2                 | 263.90                                    |252.61                             |  51.22 |
| 4                 | 264.17                                    |192.49                             |  36.29 |
2024-11-22 15:48:12 +01:00
Laurent THOMAS 65e3c89bb1 add ue mac stats and monitoring as per gnb ones 2024-11-21 16:39:19 +01:00
Robert Schmidt ba0cad20e6 Move respPuschAarx response queue to stack of nr_pusch_channel_estimation()
The queue for finished jobs of PUSCH channel estimation is only used inside
nr_pusch_channel_estimation(). Since initialization is fast, it can be
declared on the stack in the function where it is used.
2024-11-20 16:30:39 +01:00
Bartosz Podrygajlo 35903f9a10 Integrate Tracy with NR UE & gNB
This commit enables the optional use of Tracy for profiling NR UE & gNB.
See https://github.com/wolfpld/tracy/releases/tag/v0.11.1 for details.

How to compile:
use -DTRACY_ENABLE=ON to enable instrumentation and sampling
For gNB currently only sampling is implemented.

How to collect data:
 - Windows hosts: tracy-profiler.exe in link above
 - Linux hosts: Compile tracy-profiler from source

Enabling collection from docker:
 - open port 8086
 - to collect cpu data
    --privileged
    --mount "type=bind,source=/sys/kernel/debug,target=/sys/kernel/debug,readonly"
    --user 0:0
    --pid=host

How to add instrumentation:
 - See examples in this commit or manual in the link above.
2024-11-20 10:42:51 +01:00
Jaroslava Fiedlerova 0021b69645 Optimize memory usage in decode_offload function
- Reduce the size of z_ol to LDPC_MAX_CB_SIZE to reduce memory footprint.
- Simplify memcpy and pointer casting for z_ol.
2024-11-20 10:39:09 +01:00
Jaroslava Fiedlerova 42b544cda9 Correct max number of LDPC segments for T2 processing
Fix error reported by the T2 card when running nr_dlsim with 4 DL layers.
Error can be reproduced by running:
./nr_dlsim -n100 -s30 -e25 -b273 -R273 -x4 -z4 -y4 -P --ldpc_offload.dpdk_dev 41:00.0 -c

So far we set NR_LDPC_MAX_NUM_CB to 72, which is sufficient for max 2 DL layers.
Set max possible number of LDPC segments based on the max number of layers
and max number of DLSCH segments (currently it is 144).
2024-11-19 16:15:25 +01:00
Jaroslava Fiedlerova 0c3a2c157d Merge remote-tracking branch 'origin/NTN_FR1_bands' into integration_2024_w46 (!3093)
Added NTN FDD FR1 bands defined in 3GPP TS 38.101-5

Added support for NTN FDD FR1 bands 254, 255, 256 as specified in 3GPP
TS 38.101-5. Example Conf files added for band254 for 15Khz, 5Mhz and
30Khz, 10Mhz configurations. Tested NTN GEO configuration on band 254
using these conf files.
2024-11-18 17:30:49 +01:00
Jaroslava Fiedlerova e5fda698ba Merge remote-tracking branch 'origin/enabling_CSIRS_analog_beamformiing_l1_handling' into integration_2024_w46 (!3036)
Further improvements in analog beam management for CSI-RS
2024-11-18 17:29:02 +01:00
Guido Casati 37e856a7fd Add include for MAX_ANT
* to defs_gNB.h, nr_dlsch_demodulation.c
2024-11-18 11:25:02 +01:00
Guido Casati 1c9bcf4004 Refactor includes in unitary simulators
* prachsim, ulsim, dlsim
* used open source IWYU tool + manual review
2024-11-18 11:25:02 +01:00
Jaroslava Fiedlerova 12f29b828e Merge remote-tracking branch 'origin/NR_UE_trigger_reestablishment' into integration_2024_w46 (!2777)
NR UE trigger for re-establishment

The implementation in this MR triggers RRC re-establishment at the UE in case
of radio link failure either for out of sync messages from lower layers or in
case maximum number of RLC retransmissions is reached.
2024-11-18 10:12:25 +01:00
francescomani fe671a8876 take into account the option to have initial pucch when scheduling UCI on PUSCH 2024-11-17 21:46:23 +01:00
Jaroslava Fiedlerova 9b1ccbf3de Merge remote-tracking branch 'origin/hide-overflow' into integration_2024_w46 (!3107)
Clip the input for -32768 because this will make different result in...

Clip the input for -32768 because this will make different result in
mult_complex_vectors() compared to C version
2024-11-15 18:51:26 +01:00
Raghavendra Dinavahi db629e6b58 NTN FDD FR1 bands added
Added support for NTN FDD FR1 bands 254, 255, 256 as specified in 3GPP TS 38.101-5
Conf files added for 15Khz, 5Mhz and 30Khz, 10Mhz configurations added for these bands
2024-11-15 16:23:22 +01:00
Laurent THOMAS 362eba7e27 Clip the input for -32768 because this will make different result in mult_complex_vectors() compared to C version 2024-11-15 13:15:30 +01:00
Bartosz Podrygajlo fe10c90250 Avoid passing gNB pointer to nr_pusch_antenna_processing 2024-11-15 12:35:07 +01:00