Commit Graph
2281 Commits
Author SHA1 Message Date
francescomani abc5069a55 handling beams in PHY RX channels 2024-10-11 08:02:06 +02:00
francescomani 014338105e remove unused bf_weights feild from config files 2024-10-11 08:02:06 +02:00
francescomani 64ed4e9262 handling beams in PHY TX channels 2024-10-11 08:02:06 +02:00
francescomani 2a9a038dbd improvements in RU beamforming handling procedures 2024-10-11 07:59:31 +02:00
francescomani 6b58d357d9 moving beamforming matrix to MAC and feeding it to FAPI structures 2024-10-10 12:42:17 +02:00
Jaroslava Fiedlerova 9ca37d1b94 Merge remote-tracking branch 'origin/ue-RF-warmup' into integration_2024_w40b 2024-10-04 07:53:17 +02:00
Jaroslava Fiedlerova b824e55cdd Merge remote-tracking branch 'origin/imscope-td-plot' into integration_2024_w40b 2024-10-04 07:52:36 +02:00
Thomas LaurentandRobert Schmidt 5811ab1dc8 Apply 2 suggestion(s) to 2 file(s)
Co-authored-by: Robert Schmidt <robert.schmidt@eurecom.fr>
2024-10-02 09:11:49 +00:00
Bartosz Podrygajlo b2c49fbc27 Add time-domain scope to gNB imscope. 2024-09-30 20:41:08 +02:00
Bartosz Podrygajlo 80f90b5599 Add time domain sample scope before sync
Added new data sync for UE which displays time domain samples read from RF device
before synchronization to PSS/SSS
2024-09-30 20:36:38 +02:00
Bartosz Podrygajlo 7986a4de8e Time domain samples scope for NR UE
Add a new scope data source (ueTimeDomainSamples) which provides time domain samples
for antenna 0 to the scope. Add graphical representation of the data in imscope.

Removed C-define from ENABLE_IMSCOPE cmake option, the #define was unused and this way
code does not have to be recompiled when imscope enable state changes.
2024-09-30 20:34:09 +02:00
Jaroslava Fiedlerova 6984c05aad Merge remote-tracking branch 'origin/fix_nr_pdcp_tick' into integration_2024_w39 2024-09-30 13:14:06 +02:00
Robert Schmidt 51bb3d25cf Merge remote-tracking branch 'origin/small_fixes_for_5G_NR' into integration_2024_w39 2024-09-29 22:09:26 +02:00
Xin Zhe Khooi 163d058d4a introduce dedicated nr pdcp tick thread for F1 split
Currently, NR PDCP ticks are active only with monolithic gNB, triggered by the MAC scheduler in gNB_scheduler.c.
In F1 split mode, as there is no MAC, there’s no source to advance the NR PDCP timer via "nr_pdcp_wakeup_timer_thread()".
This commit introduces a dedicated thread for NR PDCP ticks in gNB-CU and CU-UP mode.
Without it, packet losses at the F1 uplink would cause indefinite buffering, as t-Reordering won't expire due to the lack of NR PDCP timer ticks.
2024-09-29 15:10:54 +00:00
Thomas Schlichter 791cc4f648 NR UE: set time sync PI controller integral weight to 0.0 by default
Experiments did show that the time sync is less stable in terrestrial mode if the integral part of the PI controller is used.
So set it to 0.0 by default. For NTN LEO use case we can still use it by providing the command line parameter --time-sync-I 0.2 .
fixes #846
2024-09-27 17:06:42 +02:00
Laurent THOMAS 711afedfe1 warmup RF board in UE 2024-09-27 14:39:41 +02:00
francescomani 15279d8732 common function for default N_TA_offset (not sure what in develop is correct) 2024-09-24 10:39:25 +02:00
Laurent THOMAS c8116b3fa3 remove dead code 2024-09-19 09:29:02 +02:00
Laurent THOMAS 31f770978c option q is to set cpu measurements but it is hardcoded in some places 2024-09-18 16:02:14 +02:00
Jaroslava Fiedlerova 872981f207 Merge remote-tracking branch 'origin/NR_UE_fix_usrp_flag' into integration_2024_w38 2024-09-16 14:32:22 +02:00
Sakthivel Velumani 76cec45e80 Set correct USRP flags when not transmitting
Flags are set to INVALID when it is not a UL slot. This is important
when using GPIO to control TRX switch.
2024-09-10 14:41:05 -04:00
Guido Casati 70dd524e2b Define softmodem bits in a separate header for either C and C++ 2024-09-05 15:19:26 +02:00
Bartosz Podrygajlo 6dcd3ae8c4 Use --imscope flag to enable/disable imscope 2024-09-05 15:19:09 +02:00
Bartosz Podrygajlo bdc6df8c42 NR UE & gNB imscope.
A new phy scope based on ImGui and ImPlot. This scope uses a different concurrency model than previous
scopes.

The PHY thread writing the data first checks if the data is ready to be written. If its not, nothing is copied.
The GUI thread reads data if available and marks it ready to write. This makes sure that the PHY threads are not
busy copying data that would never be displayed.

Some of the scopes also have a freeze functionality that further limit the amount of data that needs to be copied
from PHY threads. If a scope is "frozen" it still allows the user to explore the data using plots zoom/pan functions
but doesn't cause PHY threads to perform extra writes on the displayed data.

A compile option was added to enable/disable the scope. Use cmake -DENABLE_IMSCOPE=ON to enable the scope.

Update CXX standard to 17; it is required by some libraries (e.g., dear imgui). The oldest gcc version in
use by a distribution supported is Ubuntu 20, which has gcc 9.4 with c++17 support.
2024-09-05 15:19:00 +02:00
Robert Schmidt 450346c7dc Merge remote-tracking branch 'origin/NR_gNB_cleanup' into integration_2024_w35 2024-09-02 10:31:57 +02:00
Robert Schmidt af9f422a84 Merge remote-tracking branch 'origin/NR_UE_MAC_PHY_separation_improvements' into integration_2024_w35 2024-08-30 17:45:18 +02:00
francescomani d04a83ea93 defs_gNB cleanup 2024-08-29 08:54:42 +02:00
Robert Schmidt 8bffd1666d Avoid complete rebuild on cmake run with git info change
Before this commit, the following will trigger a complete rebuild:

- create another git name (git checkout -b test)
- run cmake again manually (cmake ..)
- run ninja again

The top-level CMakeLists.txt uses add_definitions() to add git
information to all targets; if some git information changes, this will
mark all command lines as dirty, triggering the build.

There is an easy solution: instead of passing this information on the
command line, pass it in a header. This commit uses configure_file() to
generate a file oai_version.h in the build directory with the same
information. Various sources files, e.g., main executables, use this to
output the same information as before. It is then also not necessary to
use header guards, as cmake takes care to create this file.

If cmake is re-run, it will update the header, and trigger only files
including this header will be rebuilt (which can be shown with the above
stpes). The information passed is the same as before, and updates the
information when the old method would have updated it.
2024-08-28 15:57:24 +02:00
Robert Schmidt 68b29301b0 Merge remote-tracking branch 'origin/ntn_leo_time_comp' into integration_2024_w34 2024-08-27 14:30:15 +02:00
Robert Schmidt 922e810a82 Merge remote-tracking branch 'origin/ci-rfsim-optimize' into integration_2024_w34 2024-08-27 14:30:05 +02:00
Thomas Schlichter 4b859a2eb8 fix sidelink UE issues found by sanitizer 2024-08-26 17:08:27 +02:00
Thomas Schlichter 0eb409f114 NR_UE: Perform autonomous timing advance to compensate for fast time drift with relatively large RTT
As we don't have SIB19 with continuously updated ta-Common and ta-CommonDrift values yet, the UE can only adapt it's UL timing according to it's DL drift.
This is required for the UE to keep UL sync with fast time drift and relatively long RTT (e.g. LEO satellite).
We should replace this with the standard compliant way as soon as we have SIB19 with continuously updated contents.
2024-08-23 14:57:48 +02:00
Thomas Schlichter e662721310 NR_UE: make NTN parameter ta_CommonDrift_r17 configurable via command line parameter --ntn-ta-commondrift
While we don't have SIB19 support yet, UE gets this parameter from command line, just like --ntn-koffset and --ntn-ta-common.
We use this value to initialize the UE's time-tracking PI controller accumulator.
This allows to correctly track the time even if the delay is changing significantly (e.g. due to LEO satellite movement).
We also use it to compensate for the time drift that happenes while performing the initial sync.
2024-08-23 10:26:18 +02:00
Thomas Schlichter 4039473a70 NR_UE: add PI controller to time sync
this allows to compensate larger continuous time drift in DL (e.g. large Doppler from LEO satellite)
2024-08-23 10:26:18 +02:00
Thomas Schlichter 8ab7f1dd68 change returned value of UE_dl_preprocessing() in case no sampleShift change from 0 to INT_MAX
This now allows to indicate "there was a new sampleShift calculation, and the actual value is 0"
additionally to "there was no new sampleShift calculation".
2024-08-23 10:25:00 +02:00
Jaroslava Fiedlerova 6529863af2 Merge remote-tracking branch 'origin/ue-cleanup-2' into integration_2024_w33 2024-08-16 18:54:59 +02:00
Jaroslava Fiedlerova d1a272be1b Merge remote-tracking branch 'origin/fix-gnb-ue-memory-leaks' into integration_2024_w32 2024-08-12 18:12:38 +02:00
Guido Casati 7c788be9e0 Cleanup of unused parallel/worker thread configuration in NR
* In LTE there is logic that checks the thread configurtion with the
  getters `get_thread_parallel_conf()` and `get_thread_worker_conf()`
  in NR these getters are not used, only setters, which have no impact
2024-08-12 14:59:03 +02:00
Guido Casati b1609e0534 Fix memory leak in nr-uesoftmodem
* strdup is returning a malloced string that needs to freed after use

> Direct leak of 90 byte(s) in 1 object(s) allocated from:
    >0 0x7ffff745b9a7 in __interceptor_strdup ../../../../src/libsanitizer/asan/asan_interceptors.cpp:454
    >1 0x555556c7b341 in main /executables/nr-uesoftmodem.c:461
    >2 0x7ffff5e29d8f in __libc_start_call_main ../sysdeps/nptl/libc_start_call_main.h:58
2024-08-12 10:06:54 +02:00
Guido Casati a59a69d5e5 Fix strdup-related memory leak in nr-softmodem
* strdup is returning a malloced string which needs to be freed after use

> Direct leak of 90 byte(s) in 1 object(s) allocated from:
	> 0 0x7ffff745b9a7 in __interceptor_strdup ../../../../src/libsanitizer/asan/asan_interceptors.cpp:454
	> 1 0x5555591598a3 in main /executables/nr-softmodem.c:667
	> 2 0x7ffff5e29d8f in __libc_start_call_main ../sysdeps/nptl/libc_start_call_main.h:58
2024-08-12 10:03:20 +02:00
Robert Schmidt 3779483b1b Merge remote-tracking branch 'origin/refactor-nas-config' into integration_2024_w31 2024-08-05 10:20:23 +02:00
Robert Schmidt 335fa3fc50 Merge remote-tracking branch 'origin/NR_UE_data_inactivity_timer' into integration_2024_w31 2024-08-05 10:11:23 +02:00
Jaroslava Fiedlerova fc9c5084eb Merge remote-tracking branch 'origin/nr-ue-pdsch-time-stats-fix' into integration_2024_w31 2024-08-02 16:27:58 +02:00
Robert Schmidt 168582b5a1 Remove netlink_init.c, and move remaining functionality to tun_if.c
Remove openair1/SIMULATION/ETH_TRANSPORT/netlink_init.c, and move TUN
interface creation functionality to tun_if.c.

Remove SIMU_ETH target.
2024-08-02 15:31:04 +02:00
Robert Schmidt 2e804f53c0 Remove useless LINK_ENB_PDCP_TO_IP_DRIVER option 2024-08-02 15:31:04 +02:00
Robert Schmidt 32d9e75dc5 Remove --nokrnmod option, as we never use the kernel anyway 2024-08-01 18:22:46 +02:00
Robert Schmidt cf950dfa86 Remove netlink/PDCP_USE_NETLINK: it's not used
Remove netlink code, and the PDCP_USE_NETLINK macro, as there is no
known use, it makes the code more complicated, and is simply "technical
debt".

In 4G PDCP, a subtle change has been introduced, in pdcp_module_init()
of pdcp.c. Looking at the diff of this commit, it can be seen that there
is now a new "else-if (ENB_NAS_USE_TUN_W_MBMS_BIT)" branch that is under
what was the "if (PDCP_USE_NETLINK)" branch, while the code fragment was
actually inside the "else" branch of PDCP_USE_NETLINK. This seems to be
necessary: previously, if we did not use noS1 mode and we don't use any
TUN (i.e., the eNB), the else block would set up this interface. It is
important that this interface is brought up, because if we omit it,
RFsim will not work. It seems to me that this interface will regularly
create some traffic; without it, RFsim will be blocked, and the UE
cannot connect.

In short, it seems to be important to have the MBMS interface, which
injects traffic in the RFsim side, which will unblock RFsim. The change
in pdcp_module_init() preserves the total changes of the if-else
(PDCP_USE_NETLINK).
2024-08-01 18:22:45 +02:00
francescomani a9902d883c creation of a separate .h file for L2_interface_ue 2024-08-01 16:39:34 +02:00
Bartosz Podrygajlo d465ed2fbc NR UE: Cleanup global variables used for command line parameter storage
Variables moved to nrUEParams:
vcdflag, rx_gain_off, usrp_args, tx_subdev, rx_subdev, reconfig_file, rbconfig_file, uecap_file,
tx_gain, rx_gain

Variables removed:
rx_gain_mode
2024-08-01 09:50:29 +02:00
Bartosz Podrygajlo b0b8818549 Remove unused command like parameter rrc_config_path 2024-08-01 09:48:54 +02:00