The F1AP message encoders and decoders should do only that, encoding and
decoding messages. For the actual logic handling, including set up and
teardown of bearers, we should use the handlers.
In this commit, delete GTP tunnel handling from encoders/decoders. For
the CU, this happens already in the CU-UP/E1 handlers in
cucp_cuup_handler.c. For the DU, add it in the handlers in
mac_rrc_dl_handler.c.
nr_fill_indication() fills CRC and RX requests, to be sent from L1 to
L2. Before this commit, nr_fill_indication() is called when
- we finally decoded LDPC (or not)
- low signal on PUSCH
This might happen at the same time, i.e., nr_fill_indication() might try
to fill both CRC and RX, in the same list, from different threads. This
can lead to this assertion:
Assertion (crc->rnti == rx->rnti) failed!
In handle_nr_ulsch() ../../../openair2/NR_PHY_INTERFACE/NR_IF_Module.c:190
mis-match between CRC RNTI e071 and RX RNTI 5e3b
e.g., e071 is low energy, and while 5e3b related message are filled in
one thread, e071 is being put into the message structure as well.
At least that is my understanding. I could not actually reproduce this
assertion; to be seen if it still happens.
They use 4G NUMBER_OF_UE_MAX, which is not supposed to be present in 5G.
Further, the mutex and variable are global state; for Paging, we should
use F1.
We can only support up to 30 UEs for SRS. In this commit, we change:
- if the total number of UEs is > 32, throw error during compilation to
raise awareness (32 so that a multiple of two still works, everything
else is confusing, see also next point)
- during runtime, handle gracefully if UID is 30 or 31 to not abort (we
can simply not allocate SRS resources)
Also, refactor config_srs() to always give back new memory; the code is
shorter and clearer. Rename to get_contig_srs() to make it explicit.
SCF 222.10.02, Table 3-35: the PDUSize parameter of a DL_TTI.request PDU
includes the 4 bytes required for PDUType and PDUSize parameters (each 2
bytes), not 2.
This is required for the Aerial interoperability.
The original UL max MCS of 9 was chosen for performance reasons. In the
meantime, machines became faster, and the ULSCH decoding faster. Improve
UL max MCS to be 28 by default to use the complete range of possible
MCS.
Doing only 5 LDPC iterations by default leads to a poor reception
performance, and correspondingly many retransmissions. Increase to 8 as
the new default to improve user experience.
- PDCP reestablishment on CUCP (DRBs) triggering Bearer Context Modification procedures over E1
- Performing PDCP reestablishment for requested DRBs on CUUP
- Introduced function to notify re-establishment to CU-UP
- removed call to PDCP reestablishment for the DRBs on CUCP (it's done on CUUP)
cuup_notify_reestablishment:
- to fetch PDU session to setup in E1 following logic as in e1_send_bearer_updates
- fill bearer context modification request with stored F1-U tunnel information
during E1 reestablishment, otherwise it would initialized to 0 by default
- update GTP tunnel with the stored configuration after E1 reestablishment
The following ASSERT is tirggered while testing 16 UE setup.
Assertion (NPRB>0 && (NPRB + RBstart <= BWPsize)) failed!
In PRBalloc_to_locationandbandwidth0() /home/ran/common/utils/nr/nr_common.c:286
Illegal NPRB/RBstart Configuration (1,48) for BWPsize 48
Corrected the get_start_stop_allocation calculation to fix the issue.
The implementation was wrong. The rbstop shall be the last rb that could
be allocated. Also the following two conditions are taken care
rbStart needs to be strictly smaller than rbStop
rbStart+rbSize needs to be smaller or equal to rbStop
The problem was that we confounded both conditions, so rbStart could
be equal to rbStop, which then leads to one PRB being allocated at the end.
Setting rbStop to BWPsize - 1 and making sure the above two conditions are
true does not make it lead to wrong allocations anymore.
The previous code removed the "secondary UE" data (about DU association,
DU UE ID, associated CU UP), and only filled the F1-related data. In
other words, the associated CU-UP was lost. This commit reworks this
piece of code to retrieve old data, and update the relevant data without
destroying other.