- 19 Dec, 2024 1 commit
-
-
Bartosz Podrygajlo authored
Added ./run_locally.sh script. The script takes one argument being the testcase that one wants to run. The testcase is run locally. This means that some testcases that utilize hardware resources will not run. However most if not all rfsimulator testcases should run as in CI. To this end, the CI python scripting framework was updated, adding --local flag which changes the script behavior as follows: - overrides <node> and <srv_node> XML elements to 'localhost' so all commands are executed locally - Avoid running image pull, image cleanup and workspace creation steps of the scripts: user is responsible for that
-
- 17 Dec, 2024 1 commit
-
-
Robert Schmidt authored
Integration: `2024.w50` Closes #753 See merge request oai/openairinterface5g!3166 * !3159 CI: Add FHI7.2 test with Metanoia RU * !3111 Enable USRP Tx thread in nrUE * !3144 UE data race fix * !3149 Fix several issues in ulsch_mmse_2layers * !3158 GTP: use direct call instead of ITTI * !3160 FHI-72: initialize mask, find correct libxran * !3019 SIB19 utilization on UE * !3162 Add Rocky 9.5 to list of distributions * !3163 NGAP-Initial Context Setup Failure * !2952 New LDPC coding library interface for decoding and encoding complete slots in one call to the library * !3125 Add support for O1 in O-DU via telnet * !3161 Cmd line option for sync in frames for iqrecorder
-
- 16 Dec, 2024 38 commits
-
-
Robert Schmidt authored
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.
-
Robert Schmidt authored
Add support for O1 in O-DU via telnet This change set adds a simple telnet interface to nr-softmodem. Together with oai/o1-adapter>, this implements a part of the O1 interface, for the DU only. Currently supported uses cases: - some stats are send to an SMO (such as bandwidth, PLMN, frequency, ...) - re-configuration of bandwidth, frequency - stop/start of the softmodem, while keeping the CU and L2 running - the o1-adapter implements two alarms, load overload and base station offline, using this interface. It is possible to use the telnet interface by itself (i.e., "o1" without the o1-adapter). To do this, compile with telnet support (./build_oai --build-lib telnetsrv) and start the nr-softmodem with O1 module (./nr-softmodem --telnetsrv --telnetsrv.shrmod o1). You can then do the following: - see some statistics as exposed to o1-adapter, in JSON: echo o1 stats | nc 127.0.0.1 9090 && echo - stop the L1: echo o1 stop_modem | nc 127.0.0.1 9090 && echo - reconfigure bandwidth: e.g., echo o1 bwconfig 20 | nc 127.0.0.1 9090 && echo (also supported: 40, 60, 100) - start the L1: echo o1 start_modem | nc 127.0.0.1 9090 && echo Note that the reconfiguration works with split-8 radios. Notably, it does not work yet out-of-the-box with 7.2 radios, because they have to be manually reconfigured on bandwith/frequency switch. The planned M-plane should allow such use case, though. To help with the above, this branch also includes fixes (for more information, refer to the corresponding commits): - fixes for stopping the L1, notably stop threads in right order, stop thread pool of RU - collect some general MAC metrics, fix some bugs in MAC - fix problems in F1AP gNB-DU configuration update message, update test - fix some problems in RRC
-
sagar arora authored
-
Robert Schmidt authored
The consumer of this function just passes a pointer to something to be sent. This function should not free this memory, it's simply not it's task. This is the same bug as above in "CU_handle_gNB_DU_CONFIGURATION_UPDATE(): don't free the message of RRC"
-
Robert Schmidt authored
-
Ronak Kanthaliya authored
-
Robert Schmidt authored
This adds a basic telnet module to support the O1 interface at the DU, to be used together with the oai/o1-adapter>. Concretely, this first version supports to - read/modify cell parameters - stop/start the L1
-
Robert Schmidt authored
Implements the re-start of the L1 after it has been stopped through stop_L1(). It takes into account some changes, such as bandwidth, or frequency, when restarting the L1. To this end, it also triggers a gNB-DU configuration update message on each restart to inform the CU about any changes in the DU. FDD has not been tested.
-
Robert Schmidt authored
Refactor L1 stopping code into a function. The function is basically the same as what we were doing at the end of main() of nr-softmodem.c. This will be reused to support the "soft-restart" functionality in the next commits.
-
Robert Schmidt authored
Need to proper forward declaration, as we otherwise need to make telnet_o1 module dependent on F1. Make functions publicly accessible, as the F1 functions are used in an upcoming commit to start the L1.
-
Robert Schmidt authored
-
Robert Schmidt authored
Need to keep track of number of RUs, as the RU initialization increments the number of RUs. Therefore, subsequent initializations would fail if we don't decrement first. There is no better place (or I did not find it) to decrement the number of RUs than in nr_phy_free_RU(). For this reason, we also have to manually set the number of RUs in nr_prachsim to 1, otherwise the assert will trigger.
-
Robert Schmidt authored
The message is already freed at reception at RRC.
-
Robert Schmidt authored
-
Robert Schmidt authored
-
Robert Schmidt authored
-
Robert Schmidt authored
-
Robert Schmidt authored
Implement those functions following more closely 38.473, i.e., check all mandatory fields. Add mandatory fields in the test.
-
Robert Schmidt authored
-
Robert Schmidt authored
Check that both a->tac/b->tac are present, or both not present. Then, check they are equal if present.
-
Robert Schmidt authored
a and b can only be equal if both NULL or both set (and all fields the same). Check for this.
-
Robert Schmidt authored
Split out these functions, to be reused in a follow-up commit to correctly have gNB-DU configuration update message working. Change the return type copy_f1ap_served_cell_info(), to return the copy, which IMO is more intuitive then passing target and source in parentheses.
-
Robert Schmidt authored
For the "restart" feature, earlier versions where creating multiple UL TDA. This is not a problem (anymore), but to avoid that we call this multiple times, add this assert.
-
Robert Schmidt authored
Set pointer to NULL when freeing to avoid potential double frees.
-
Robert Schmidt authored
-
Robert Schmidt authored
-
Robert Schmidt authored
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.
-
Robert Schmidt authored
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.
-
Robert Schmidt authored
-
Robert Schmidt authored
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).
-
Robert Schmidt authored
-
Robert Schmidt authored
-
Robert Schmidt authored
-
Robert Schmidt authored
-
Robert Schmidt authored
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
-
Robert Schmidt authored
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
-
Robert Schmidt authored
Add Rocky 9.5 to list of distributions
-
Robert Schmidt authored
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
-