Commit Graph
100 Commits
Author SHA1 Message Date
Robert Schmidt ee048120c4 Change remaining config files to plmn_list style 2018-09-28 17:40:37 +02:00
Robert Schmidt 05262f6684 Fix warning of ignored return val of asprintf 2018-09-28 13:50:29 +02:00
Robert Schmidt b1d1d4c834 X2AP configuration: Use more idiomatic AssertFatal than if 2018-09-28 11:46:11 +02:00
Robert Schmidt b485310ef6 Read X2AP PLMN ID from new configuration file structure 2018-09-28 11:46:11 +02:00
Robert Schmidt f1cc914d4e Change configuration to match new format 2018-09-28 11:46:11 +02:00
Robert Schmidt 751a54820b Create new SCTP conn for all MME reg REQs 2018-09-28 11:46:11 +02:00
Robert Schmidt b1408fd35e Print information about chosen MME by NNSF 2018-09-28 11:46:11 +02:00
Robert Schmidt 02d0945306 Add NNSF by selected PLMN Identity 2018-09-28 11:46:11 +02:00
Robert Schmidt 067f6e7a38 NNSF by GUMMEI: do not use highest capacity 2018-09-28 11:46:11 +02:00
Robert Schmidt ff688f163b NNSF my MME code: respect selected PLMN ID 2018-09-28 11:46:11 +02:00
Robert Schmidt 6c0680db12 Add config_getlist in config module 2018-09-28 11:46:11 +02:00
Robert Schmidt a4bc48a2f7 Fix in paging: iterate list of MCC/MNC/TAC 2018-09-28 11:46:11 +02:00
Robert Schmidt 4f997239c1 S1SetupRequest: Register with PLMN ID/Broadcast PLMNs 2018-09-28 11:46:06 +02:00
Robert Schmidt 418455bc8c NAS First REQ/NAS Uplink: Use selected PLMN ID 2018-09-28 11:46:06 +02:00
Robert Schmidt 81e70dfc25 NAS First REQ: Forward selected PLMN Identity 2018-09-28 11:46:06 +02:00
Robert Schmidt f954bb7700 S1AP MME data: Pass and store Broadcast PLMN index 2018-09-28 11:46:06 +02:00
Robert Schmidt 5f4432a351 Read configuration parameter Broadcast PLMN index for MME 2018-09-28 11:45:56 +02:00
Robert Schmidt 77b9ad2bfc Change type S1AP REG REQ: Pass Broadcast PLMN index for MME selection 2018-09-28 11:45:56 +02:00
Robert Schmidt a52156cf26 Remove unused MCC/MNC in eNB_RRC_INST 2018-09-28 11:45:56 +02:00
Robert Schmidt 514b8d833a Use selectedPLMN_Identity IE to fill GUMMEI at NAS_FIRST_REQ 2018-09-28 11:45:56 +02:00
Robert Schmidt 413b307441 SIB1: Add all configured PLMN IDs in System Information 2018-09-28 11:45:52 +02:00
Robert Schmidt e175363dd8 S1AP eNB instance: make array of MCC/MNC, pass data 2018-09-22 22:52:47 +02:00
Robert Schmidt 3c6d0aed1b Read PLMN list configuration into RRC/S1AP 2018-09-22 22:52:15 +02:00
Robert Schmidt 72ef8be88e Change types in S1AP Register REQ: list of MCC/MNC/TAC 2018-09-22 22:52:11 +02:00
Robert Schmidt d85054c214 Change types in RRC: list of MCC/MNC/TAC 2018-09-22 22:51:48 +02:00
Robert Schmidt 70e1841bb1 Fix: RAN API: remove_ul_slice() frees ul sched_name pointer, when sched_name set, free it when resetting 2018-09-05 14:21:39 +02:00
Robert Schmidt cbc78cd3db Don't warn of ignoring sorting 2018-09-05 14:21:39 +02:00
Robert Schmidt 7162bf6895 Bugfix: Assure available_rbs is positive 2018-09-05 14:21:39 +02:00
Robert Schmidt 066ab90402 Bugfix: Give correct first_rb value to UE 2018-09-05 14:21:39 +02:00
Robert Schmidt d798e03e9d fix rb_table loop 2018-09-05 14:21:39 +02:00
Robert Schmidt f86b51990c restart: first stop RU, then eNB proc threads 2018-09-05 14:21:39 +02:00
Robert Schmidt ff83dc7017 Fix greedy allocation: schedule not more than what slice has 2018-09-05 14:21:39 +02:00
Robert Schmidt fa27b6dcce Fix: Correct numbering of protobuf messages (as in RTC) 2018-09-05 14:21:39 +02:00
Robert Schmidt af83d352c8 Fix: use frame_subframe2_dl_harq_pid() 2018-09-05 14:21:39 +02:00
Robert Schmidt 5a1e8c2869 Lock sync_var access in restart_L1L2() 2018-09-05 14:21:39 +02:00
Robert Schmidt c1b024d354 stop_L1L2(): Do not turn of RF, is done in ru_thread 2018-09-05 14:21:39 +02:00
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
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
Robert Schmidt 8039cd40f5 share the allocation array rballoc_sub between slices 2018-09-03 18:10:28 +02:00
Robert Schmidt 44d1eb8015 preprocessor reset: avoid unnecessary iterations 2018-09-03 18:10:28 +02:00
Robert Schmidt 5ceba4a2a6 FlexRAN: lock sc_update with mutex
Prevent sc_update from being changed by an incoming slice reconfiguration
change while writing data to the scheduler
2018-09-03 18:10:28 +02:00
Robert Schmidt 7b8c5cea52 FlexRAN: handle incoming UE-slice association message 2018-09-03 18:10:28 +02:00
Robert Schmidt 3a78d85f5e FlexRAN: Handle enb_config_reply reconfiguration message 2018-09-03 18:10:28 +02:00
Robert Schmidt 3d8586a5bf FlexRAN: Send Slice ID to which UE belongs in UE config reply 2018-09-03 18:10:28 +02:00
Robert Schmidt d93d73fe9b FlexRAN: Send the Slice Configuration in enb_config_reply 2018-09-03 18:10:28 +02:00
Robert Schmidt 92a3b07bca FlexRAN: send slice ID to which UE belongs + reformat
- flexran_agent_ue_config_reply() and flexran_agent_ue_state_change() send
  slice_id
2018-09-03 18:10:28 +02:00
Robert Schmidt fcaf237182 FlexRAN: Handle slice configuration
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.
2018-09-03 18:10:28 +02:00
Robert Schmidt 9d75b5c3b7 Add FlexRAN RAN API for slice configuration
adds support for:
* create/remove slices
* change UE-slice association
* read/write slice parameters
* find slice index via ID
2018-09-03 18:10:28 +02:00
Robert Schmidt de4ebe0914 remove warnings (comment concerned lines) 2018-09-03 18:10:28 +02:00
Robert Schmidt b29e20d4dd MAC sched slicing: sort only relevant slices 2018-09-03 18:10:28 +02:00
Robert Schmidt 59fc7832fa bugfixes: set max UL MCS to 20, improve sched loading message 2018-09-03 18:10:28 +02:00
Robert Schmidt 1d23a64ced bugfix: memset using the right size 2018-09-03 18:10:28 +02:00
Robert Schmidt 8f2d79709e MAC: change all slice_id_t to slice index variables 2018-09-03 18:10:28 +02:00
Robert Schmidt 87b8b6e86b Increase the number of possible slices to 10 2018-09-03 18:10:28 +02:00