* 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()
* properly allocate memory for scheduler name/sorting
* free mem of sc_update, include todo for slice_config
* set has_x to one, add fct whether sorting update necessary
* set n_ul/n_dl to correct value after every loop iteration
* support for delete of multiple slices
* allocate memory for scheduler name in slice_config
* check that we really set the scheduler
- in order to facilitate the steps as verification and parameter setting,
slices are "filled up" with default values:
* if it is an update, with the values of the concerned slice
* if it is a new one, with the parameters of slice 0
- because of this, it can be assumed that all slices have all parameters
- setter & getter have been renamed
- setter sets scheduler name and links to the corresponding function
- it also returns whether it succeeded (whether the scheduler callback is
non-null)
- it performs a strdup on the scheduler name
- the remove function free the scheduler function name
- until now, on every iteration, the scheduler checked for changed parameter
(and verified some)
- this functionality moves to the FlexRAN Agent, which verifies all parameters
* individually, e.g. Max MCS <= 28 for DL
* group-based, e.g. the sum of slice percentages is <= 100
- slice configuration changes are only applied if all verifications pass
- it is assumed in the scheduler, that configuration passed from outside is
correct and can be used "as-is"
fix accounting setting
- uncomment "Couldn't find RNTI for UE X" in UE_RNTI() and rb_alloc in
pre_processor_reset() as they only inflate the debug output with little
benefited
- "doing ue_schedule_spec" is now displayed for individual UEs (and individual
CCs)
- show messages when not scheduling UE in ue_schedule_spec() due to invalid
slice or if not in RRC_CONNECTED
- slice multiplexing resorts UE_list for its purposes with restoring the
original order
- in order to keep the order in UE_list, resort to original order after
multiplexing
- ideally, this would happen in the multiplexing but currently, the slice_idx
is not passed to multiplexing (it does not care), so this cannot be done ATM
Incoming slice configuration changes are buffered in an intermediate structure.
The MAC scheduler periodically polls the agent about changes. If there has been
a slice configuration change, apply it.
- introduce structure in RC for slicing conf (UL/DL)
- move global variables regarding slice configuration into RC
- change ue_slice_membership(): consider UL/DL
- remove the unnecessary header files
- set default parameters: one slice