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()
Following changes are made:
1. Removed XMLs used in old pipeline lte-OAIEPC
2. Added TM1 and TM2 config, XML and YAML
3. Added pipeline details in TestBenches.md
4. Modification in Jenkins file for the pipeline
5. Added ping/iperf test cases in XML
6. Minor modification in cls_containerize.py and cls_oaicitest.py
The d array has to be cleared at the first usage, which may not necessarily
be when new_rx is true. For example, in case of DTX detected for a first
transmission, the next transmission won't have new_rx true, so d won't be
cleared, containing data from a previous transmission. Or when a LDPC
decoding is cancelled for a segment when new_rx is true, a decoding for
a retransmission will not clear d because then new_rx will not be true.
(Yes, the logic of cancellation will be changed in the future, but the
changes will be orthogonal to the ones of this commit.)
new_rx is removed.
The message is never sent to the RRC. And this message is to be
forwarded by the DU to the UE, hence it should not even be handled by
the RRC (as the RRC in the CU sends it).
During the Initial UL RRC Message, the CellGroup is created. Since the
CellGroup specifies the SRB1, the SRB1 should also be created (because
the DL RRC Messages is sent via SRB1). However, before this commit, the
CellGroup is created while having the RLC lock, so we cannot create
SRB1, as it results in a deadlock.
Therefore, we now first create CellGroup, SRB0, and SRB1, before giving
the UE message to the RLC.
integration_2023_w11b
See merge request oai/openairinterface5g!2020
* !1833 NR ULSCH transform precoding improvements
* !1929 Implementing bands greater than 64 in the code, feature #603
* !1982 Rework ngap
* !1998 Update NR RRC to version 17.3.0
* !2003 improve NR UE state machine
* !2007 possibility to set identity precoding matrix from config file
* !2009 Use same configurable port number for local and remote N3
* !2012 fix unaligned IDFT
* !2013 doc(tutorial): switching to jinja-rendering configuration on the OAI-CN5 containers
* !2018 demote two UL scheduler warnings to debug level