Add Dockerfile, OpenShift build config, and OpenShift image stream, to
compile OAI using clang, notably to get compiler warnings and keep it
OAI compilable using clang.
clang (at least version 14.0.6 used on the cluster) is very slow when
compiling both ASan and UBSan into the binary. We therefore move clang
out, into a separate file in a later commit
integration_2023_w15
See merge request oai/openairinterface5g!2057
* !1977 UL-MMSE
* !2021 Remove globals demodulator
* !2025 NR UE implementation of PUCCH multiplexing procedures
* !2049 reworking UE function to get max transmitted power
* !2034 Compiling CLANG warning free
* !2043 Refactor radio-related RRC parameters and further cleanup
fill_default_secondaryCellGroup() is moved to nr_rrc_config.c.
Furthermore, the signature is changes to return the NR_CellGroupConfig
from the functions, instead of filling a pre-allocated structure (which
is, in all cases, allocated just before calling
fill_default_secondaryCellGroup().
There is a problem with this function: the function also fills the
ServingCellConfig (a parameter to this function). This behavior has not
been changed.
nr_DRB_preconfiguration() does a "pre-configuration" for the default DRB
for "noS1" mode, i.e., when there is no connection to core network. In
this case, there is no PDU session to be set up, and hence we need to
preconfigure the DRBs.
We replace this function with partially existing functions and a new
function fill_nr_noS1_bearer_config() which returns a bearer
configuration for the noS1 case, also better reflected in the function
name. It has also been moved to asn1_msg.c, away from the actual PDCP
layer.
For nr_DRB_preconfiguration() and fill_default_secondaryCellGroup(),
there is duplicated code to generate and RLC-BearerConfig, when calling
the existing get_DRB_RLC_BearerConfig() (with the right parameters)
yields a similar configuration (see exceptions below).
Differences:
- We do not support reestablishmentRLC, so we don't set it
- Set prioritisedBitrate to 8kbps instead of infinity (we don't
prioritize anything, anyway)
- bucketSizeDuration is 50ms instead of 100ms
integration_2023_w14
See merge request oai/openairinterface5g!2048
* !1861 NR UE RX Multi-threading
* !2017 scheduling aperiodic SRS at UE
* !2046 Correctly allocate GUTI in NAS UE structures
* !2033 PBCH radio link failure detection at MAC
* !1959 bugfix: change memory management of interface between PHY and MAC scheduler
* !2041 hack: see "Bye." message when quitting gnb running with aw2s
* !2047 NR RRC - RRCReestablishment - Fix MultiplePDU Regression
integration_2023_w13
See merge request oai/openairinterface5g!2037
* !1945 Free RNTI related structures at PHY after UE disconnection
* !2011 Creation of new pipeline LTE-TDD-2x2-container
* !1854 Handle reconfigurationWithSync
* !2019 bugfix: LDPC decoding in the gNB: clear d properly
* !2038 Fix DL 2x2 errors
* !2039 Adding test-case in XML to reset USRP in LTE-TDD pipeline
* !2008 Implement NR-UE Deregistration procedure
* !2023 Rework PDCP OAI API to allow custom SRB data forwarding (e.g., in F1)
* !2015 Update documentation: CI, general README.md, overview of doc README, various improvements
The GTP module is common for 4G and 5G. It hardcodes the functions to
call when creating S1U and NGU tunnels. The S1U case is both applicable
for LTE and NR (NSA), which until now was not a problem as the PDCP data
forwarding functions where called pdcp_data_req. The issue is that in this
branch, the NR PDCP functions have changed to nr_pdcp_data_req_drb().
When setting up a GTP tunnel, we now pass the PDCP data forwarding
functions into GTP, since the caller knows whether it is in 4G or 5G,
but GTP itself does not.
In the UE, we wish to handle ^C in the UE to send a message before
terminating, so we allow custom wait handlers to implement such
functionality. Use itti_wait_tasks_unblock() to unblock
itti_wait_tasks_end().
Also, implement itti_wait_tasks_end() using semaphores, as signals are
not async-signal-safe (and therefore should not be used in a signal
handler).
nr_pdcp_entity_recv_sdu() processes PDCP SDUs, and forwards the PDU at the
end of the function, while having the PDCP lock. This can lead to
deadlocks, e.g., when another thread goes through RLC and tries to
access the PDCP while the PDCP tries to lock the RLC.
This commit changes the logic: instead of having recv_sdu() forward the
PDU directly, it fills a buffer with the PDU (thus the name change to
process_sdu()), and returns. We then unlock the PDCP, before forwarding
the PDU, thus eliminating potential deadlocks.
Creates function that have nr_pdcp_ prepended to their name, and change
the signature of some functions for the 5G PDCP:
- nr_pdcp_layer_init()
- nr_pdcp_data_req()
- nr_pdcp_remove_UE()
- nr_pdcp_config_set_security()
- nr_pdcp_remove_UE()
- Make separate functions for nr_pdcp_data_req_srb/drb()