The previous version was calling taus(), which
may return any value in [0..65535].
The new version restricts it to [1024..59999]
(arbitrary values, big enough, and in the valid range).
It also checks that the new RNTI is not already present
in the MAC.
I think we should also check that it's not used by a RA
process.
The "loop" thing may not be the best solution either.
To be refined.
A RA process is not available if
and RA_template[i].wait_ack_Msg4 != 0
We can have RA_active==FALSE and wait_ack_Msg4==1,
in which case the RA process is in use and cannot
be reassigned.
RRC does not work very well when one UE goes away and comes
back in some situations.
This commit is an attempt at making things work better.
It is probably not the end of the story.
Modern UEs have very long UE capabilities.
It disrupts realtime behaviour of the modem.
Let's put a simple log message indicating we got the
UE capabilities.
Here is the problem:
Sometimes the UE has no PHY context but
is still present in the MAC with 'ul_failure_timer' = 0 and
'ul_out_of_sync' = 0. It seems wrong and the UE stays there forever. Let's
start an UL out of sync procedure in this case.
The root cause of this problem has to be found and corrected.
In the meantime, this hack...
This has to be redone at some point.
Here is the problem:
UE comes. SRB2 is configured via message to RRC.
At some point the RLC AM is created but not configured yet.
At this moment (I think) MAC calls mac_rlc_status_ind
which calls this function. But the init was not finished yet
and we have a crash below when testing mem_block != NULL.
The "solution" is to test if rlc->input_sdus is NULL.
This is a very dirty hack. I would say the solution
is to use proper locking mechanism because RLC is used
by two threads: PHY/MAC on one hand and RRC on another
hand (I think).
The management of uplink failure generates a DCI to send
a RA PDCCH order. It calls add_ue_spec_dci which increases
DCI_pdu[CC_id]->Num_ue_spec_dci, but this was reset to 0
*after* the DCI generation. Let's reset *before*.
Bug reported by Liang Yong on openair5g-user mailing list.
The function may return NULL if the UE has been dropped
in the PHY layer but is still present in the MAC layer.
Deal with the NULL case everywhere it's needed.
I am not sure this is the correct solution.
The problem seems to be that the RRH GW does not use ITTI
and thus the type 'as_nas_info_t' is not defined, and then
the compilation fails.
The simple fix is to include 'as_message.h' in
'openair2/RRC/LITE/defs.h' if ENABLE_ITTI is not
defined. Maybe it's not good. RRH GW compiles with this fix.
It is defined both in openair2/COMMON/commonDef.h and
openair2/COMMON/platform_types.h.
Removing one or the other definition creates many problems
when compiling this or that part of the system (ue_ip.ko,
at_nas_ue). Let's keep both and protect the definitions
inside #ifdefs.
Several various fixes are included. Not sure what component of
the system uses this file.
There is one 'abort' added in case a fscanf fails. It may be a
bit too brutal.
init_nas_s1 may not work properly, but many people complain
about this file, so let's put it in the repository.
We'll fix it at some point if it's not properly usable.
The LOG_X macros emit a lot of warnings when compiling with the T
because they call the function logRecord (or logRecord_mt)
which has not been "marked" as calling printf, so gcc won't
emit typical printf warnings.
With the T, they directly translate to sprintf, so those warnings
pop up, much more verbose due to several macro expansions.
Let's make them pop up all the time so it's easier to fix them.
The throughput for the bandrich dongle was limited to 13Mb/s in downlink
UDP with iperf, with lots of packets lost (we sent 15Mb/s). TCP was
working fine.
Replacing /dev/ttyUSB2 by /dev/ttyUSB0 for wvdial solves the issue.
We also had to have separate data/control links. (See bandrich.txt
in cmake_targets/autotests/v2/actions for full details.)
As reported on the mailing list, there was a problem
for some users. The link phase of building the simulators
was giving the error "undefined reference to ATL_scopy".