The bug was:
connect a phone, disconnect, repeat five times. The fifth time the phone
does not reconnect because there is no free RA process.
When an UE is removed, we have to free associated RA processes.
MR !1111 : fix x2 without gnb
-fix x2 without gnb (that is: the eNB is running without gNB, then we must not switch the UE to NR)
-exit gNB if eNB crashes (and exit eNB if gNB crashes)
MR !1102 : nr rlc: bugfix: fix NACK with range
We do some sanity checks for incoming rlc control packets. One of them is to check that so_start is not > so_end when present.
But when 'range' is present and bigger than 1 it means that so_start refers to one PDU and so_end to another one. So we may well have so_start > so_end.
This MR fixes that and reorganizes a bit the code to do the check before processing and rejecting the PDU if the values are not correct. (Before this commit we were NACKing the whole PDUs if so_start > so_end.)
MR !1096 : build_oai: Add --sanitize-address option
-pass the -fsanitize=address option to the compiler which enables run-time checks for some kinds of memory mismanagement
MR !1085 : Nr mac ssb
-MAC scheduling of multiple SSBs
-Symbol level occupation of VRB map for SSBs
-Multi SSB SIB1 scheduling
MR !1097 : NR_PRACH: nr_du\[\] buffer not filled in High Speed case for both gNB and nrUE
Issue: TC nr_prachsim failed with High Speed(-H) enabled.
While generating NR PRACH for High Speed case : Array nr_du\[\] was not filled for both gNB and nrUE. Added function nr_fill_du() to resolve the issue.
MR !1107 : Small bugfixes for 5G NR
Before this commit, when the gNB crashes, the eNB keeps running.
Same, if the eNB crashes, the gNB keeps running.
In a far past when this happened, the other program (the one not
crashing) was forced to exit.
Then this behavior was changed, for some reason.
But the code was not finished, so now we have a system in an inconsistent
state.
So either we accept that the connection between eNB and gNB can break,
that is one of the programs crashes, and we clean the state of the
program that keeps running. But this is a complex work and it will
surely not survive very long, because someone will change something
in the code later that will break this complex behavior.
Or, simpler, we go back to initial behavior, which is: the program that
did not crash does actually exit when the other crashes.
This commit provides the second solution.
It can easily be reverted whenever someone wants to implement the complex
solution.
We used to set 'does_nr' of an UE if we detect ENDC supported in the
UE capabilities.
Then we activate NR measurements if 'does_nr' is true.
The problem is that if the eNB is not connected to a gNB but the UE
reports some NR measurements (because a gNB is running somewhere near)
then the eNB will crash when starting the switch to NR.
A (quick) solution is to set 'does_nr' only if there is a gNB connected to
the eNB.
Maybe not the best solution. To be changed if needed.
MR !1092: Nr pdcp nia2 integrity
This code has not been tested with a COTS UE. We need SRB1/2 (so we need SA) to test.
The activation of security and integrity for SRB1 will need more code (new functions) because it happens after some time, not at creation time of the PDCP entity and there is no way to do this with current code.
MR !1075: Fft bench hotfix
Simple fix to make the FFT testbench compile and run on current develop.
MR !1083: NR power measurement fixes
If the array of pointers is allocated using malloc(), it is not guaranteed that the pointers are NULL, so the actual PHY_VARS_gNB might nit be allocated correctly!
Also replace a malloc() + memset() combination by just a calloc().
This code has not been tested with a COTS UE. We need SRB1/2 (so we need SA)
to test.
The activation of security and integrity for SRB1 will need more code
(new functions) because it happens after some time, not at creation time
of the PDCP entity and there is no way to do this with current code.