Using the basic simulator and valgrind, it was found that
the lack of initialization of those two pointers leads to
some very nasty behavior of some other parts of the system.
In the eNB it's not really used for the moment because there
is a limitation to uplink scheduling. In
openair2/LAYER2/MAC/eNB_scheduler_ulsch.c we have:
while (((rb_table[rb_table_index] > (N_RB_UL - 1 - first_rb[CC_id]))
|| (rb_table[rb_table_index] > 45))
That limits uplink scheduling to at most 44 RBs. The 768 case is for
64 RBs.
When the RLC layer returns error codes (like dropped packets), this is still
counted as PDCP layer traffic. In order to reflect dropped packets or
malfunctioning, this patch makes that upon an RLC error code, the function is
exited immediately. In this case, it is not counted as additional PDCP traffic.
An example is too much UDP traffic. If the RLC buffer is saturated and the
packet therefore refused, incoming traffic won't be counted anymore. With this
patch, the PDCP layer statistics won't count such traffic anymore.
the integration of the nfapi-L2-emulator-for-develop (f254107b2) added more
types in the RCconfig_flexran(), but they were partially wrong. This commit
fixes those types after the rebase of this branch on top of 2018.w19
* give the correct UE_id instead an index of the protobuf message (they can
diverge from each other)
* in the PDCP part of the RAN API, the RAN API has to make the conversion UE_id
(MAC) to UID (PDCP)
* a follow up commit could clean up the interfaces:
- the MAC functions take the UE_id
- the RRC functions take the RNTI
- the PDCP functions take the UID
this would mean the caller has to find those ID but would decrease
computations since the RAN API functions do not have to do that themselves
If the buffer in the RLC is full, testing the buffer state over and over again
slows the DL traffic down. In order to circumvent this, the PDCP will drop any
data during a configurable time (compile-time) before it delivers data to RLC
again.
To change this, see the constant TM_SKIP_FULL_BUF_MS in pdcp.h.
- there can be a race between the FlexRAN agent reading the RC.mac and its
allocation in main.c
- In order to circumvent this, change the allocation by allocating
everything "into" a local variable
- finally "make it visible" by storing the pointer in RC.mac
* check whether a library has been loaded before; in this case, don't allocate
new memory but load from old library again
* vital parameters, previous exit_fun are checked by AssertFatal()
* structure has changed a bit to make it easier to follow (instead of nested
ifs includes one goto to the end of the function)
* formatting has been improved
* instead of the lengthy YAML parsing, can now handle protobuf message
* after setting the parameters, send a message to ENB_APP to perform it
* old YAML way still works
* join pthread_FH (ru_thread) once all condition variables have been set
* join RU FHTX only if it has been started (check as for pthread_create())
* join PRACH thread in the monolithic case
* send broadcast on condition variable cond_eNBs, as there can be multiple
waits on it
* integrate stop_ru(*ru) into kill_RU_proc(*ru)
* Correct memory freeing
* init_td_thread()/init_te_thread() are only initialized depending on condition
get_nprocs() > 2 && codingw
* apply the same the same for the functions kill_td_thread()/kill_te_thread()