Commit Graph
7855 Commits
Author SHA1 Message Date
Robert Schmidt d3afce4f3c Print detailed info why mutex locking failed 2018-09-05 14:21:39 +02:00
Robert Schmidt 1f60f4ecea Log Level Debug for Freeing Transport Channel Msg 2018-09-05 14:21:39 +02:00
Robert Schmidt 9f04614304 Remove huge comment from sort_UEs()
Commit 7823858e2d11e8cabc1ca7bf7f507b9a050942d3 introduced this as a comment.
2018-09-05 14:21:38 +02:00
Robert Schmidt 07ad2470d1 Remove warnings pre_processor_fairRR 2018-09-05 14:21:36 +02:00
Robert Schmidt 49b167d6ae Remove warnings pre_processor 2018-09-03 18:10:28 +02:00
Robert Schmidt 972f52fd56 fix remove LOG_N in restart 2018-09-03 18:10:28 +02:00
Robert Schmidt e1a598bc8d Fix function parameter definition/order
Affects:
* store_dlsch_buffer()
* assign_rbs_required()
2018-09-03 18:10:28 +02:00
Robert Schmidt 21983a2028 Patch fairRR scheduler to use slice iface of pre-processor 2018-09-03 18:10:28 +02:00
Robert Schmidt 08b122e3ff FlexRAN: update slice config array dimensions 2018-09-03 18:10:28 +02:00
Robert Schmidt 71a9115abd Iterate over actual number of CC, not NFAPI_CC_MAX 2018-09-03 18:10:28 +02:00
Robert Schmidt 3278aa494d Return immediately from pdcp_data_req
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.
2018-09-03 18:10:28 +02:00
Robert Schmidt 204281e3af change types in RCconfig_flexran(), avoid seg fault
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
2018-09-03 18:10:28 +02:00
Robert Schmidt 77f2ffcdfb FlexRAN: call the agent_rrc_xface with the mod_id 2018-09-03 18:10:28 +02:00
Robert Schmidt cca5c1b71a FlexRAN: use correct identifiers for PDCP, RRC
* 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
2018-09-03 18:10:28 +02:00
Robert Schmidt 97c69dc4a4 Drop traffic in PDCP if RLC buffer is full
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.
2018-09-03 18:10:28 +02:00
Robert Schmidt 3b80c73f93 FlexRAN: Loop over UEs using UE_id, not index 2018-09-03 18:10:28 +02:00
Robert Schmidt 9399bed23a FlexRAN MAC: align allocated memory for lfds 2018-09-03 18:10:28 +02:00
Navid Nikaein 1adbaa7a54 when restarting, re-init MAC UE_list 2018-09-03 18:10:28 +02:00
Navid Nikaein 6c4f58a0a0 move UE_list/slice init in dedicated functions 2018-09-03 18:10:28 +02:00
Robert Schmidt 0bb6a19f71 only initialize RC.mac once 2018-09-03 18:10:28 +02:00
Robert Schmidt da35afb01b fix: repair RC.mac memory allocation
- 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
2018-09-03 18:10:28 +02:00
Robert Schmidt 62957b97d8 bugfix FlexRAN: only write to file if file is not null 2018-09-03 18:10:28 +02:00
Robert Schmidt 1e9f3235d3 fix: avoid AssertFatal() in load_module_shlib()
don't fail in library utility function, return with error code instead and let
application decide what is best on how to proceed
2018-09-03 18:10:28 +02:00
Robert Schmidt 604ec25a68 improve soft-restarting messages 2018-09-03 18:10:28 +02:00
Robert Schmidt d24e17f0f7 improve load_module_shlib()
* 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
2018-09-03 18:10:28 +02:00
Robert Schmidt 175d28ee35 bugfixes kill_eNB_proc()
* put mutex lock around instance_prach
* destroy attributes
2018-09-03 18:10:28 +02:00
Robert Schmidt 917b9ca0c2 correct ITTI task name 2018-09-03 18:10:28 +02:00
Robert Schmidt c4077f3cf7 cell reconfiguration/restart: take protobuf, perform in ENB_APP
* 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
2018-09-03 18:10:28 +02:00
Robert Schmidt f0670154b3 Correctly join RU threads
* 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
2018-09-03 18:10:28 +02:00
Robert Schmidt 2e1dfb5b3e place oai_exit test after wait_on_condition() in threads 2018-09-03 18:10:28 +02:00
Robert Schmidt c56b5af00e bugfix: kill td/te threads only if initialized
* 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()
2018-09-03 18:10:28 +02:00
Robert Schmidt 35b3a2af14 Reorganize TASK_L2L1 loop 2018-09-03 18:10:28 +02:00
Robert Schmidt 0846460753 show which task sends TERMINATE_MESSAGE to which task 2018-09-03 18:10:28 +02:00
Robert Schmidt ef0d86564c when sending config report, copy slice config to new mem 2018-09-03 18:10:28 +02:00
Robert Schmidt 7a0c00330b put intra-/inter slice sharing within slice config 2018-09-03 18:10:28 +02:00
Robert Schmidt 44481a5649 FlexRAN: improve info messages 2018-09-03 18:10:28 +02:00
Robert Schmidt 472ebf5622 mark UL slice sorting overwriting as TODO 2018-09-03 18:10:28 +02:00
Robert Schmidt e94b0bde51 FlexRAN fixes
* 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
2018-09-03 18:10:28 +02:00
Robert Schmidt 0c0e7b6ead simplify control flow 2018-09-03 18:10:28 +02:00
Robert Schmidt bd041a34aa use changed RAN API, set scheduler for new slice 2018-09-03 18:10:28 +02:00
Robert Schmidt 6e5a2f45ce FlexRAN: set deleted slice configuration to zero 2018-09-03 18:10:28 +02:00
Robert Schmidt 8804319322 FlexRAN MAC: before verifying slice params, set default vals
- 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
2018-09-03 18:10:28 +02:00
Robert Schmidt d8c2943f60 FlexRAN RAN API: slice creation does not set default vals 2018-09-03 18:10:28 +02:00
Robert Schmidt 328a464e37 remove update_sched slice param variables
- whether a scheduler callback has to be changed is now handled by the agent
2018-09-03 18:10:28 +02:00
Robert Schmidt 766e8a5bbe link to scheduler function in mac init fct 2018-09-03 18:10:28 +02:00
Robert Schmidt 0778481f75 FlexRAN RAN API: extend scheduler set&get functions
- 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
2018-09-03 18:10:28 +02:00
Robert Schmidt 21f6609472 FlexRAN: move slice param verification to agent
- 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
2018-09-03 18:10:28 +02:00
Robert Schmidt 6b3dd8716b FlexRAN: set values of removed slices to 0 2018-09-03 18:10:28 +02:00
Robert Schmidt 088b1d5a8d refine MAC Debug output
- 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
2018-09-03 18:10:28 +02:00
Robert Schmidt 11e45be9c5 fix: resort UE_list after slice multiplexing
- 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
2018-09-03 18:10:28 +02:00