Commit Graph
100 Commits
Author SHA1 Message Date
Robert Schmidt 0e4ff0ecb4 L2 sim: space RA in time 2020-04-10 00:09:36 +02:00
Robert Schmidt 23fb00a248 Fix: telnet use right variable names 2020-04-10 00:09:36 +02:00
Robert Schmidt a56be93e80 Reduce CPU load in PHY stub UE (L2 sim)
Instead of looping over UEs and all DL config Req/HI DCI0, loop first
over all DL config Req/HI DCI0, and for each, match UE.  Lowers CPU
traffic for high traffic situations.
2020-04-10 00:09:36 +02:00
Robert Schmidt 4df3157a7a L2: do not overwrite FAPI message, correct check 2020-04-10 00:09:36 +02:00
Robert Schmidt 0bef57e2d4 L2 sim: fix PDU_index test 2020-04-10 00:09:36 +02:00
Robert Schmidt 382b815fa4 Remove AssertFatal from UCI handlers 2020-04-10 00:09:36 +02:00
Robert Schmidt 8f450f0e51 DL PP: consider the last RBG might be smaller 2020-04-10 00:09:36 +02:00
Robert Schmidt 1372e02206 Check for CCE allocation in UL PP 2020-04-06 13:56:59 +02:00
Robert Schmidt 36ebfe04f6 Use CCE_try_allocate_ulsch() in ULSCH 2020-04-06 13:56:59 +02:00
Robert Schmidt c76af0a142 Check for CCE allocation in DL PP 2020-04-06 13:56:56 +02:00
Robert Schmidt ed6e5ce832 Use CCE_try_allocate_dlsch() 2020-04-06 13:56:31 +02:00
Robert Schmidt 6b3b0b0b8b Final CCE allocation check: print message on fail 2020-04-06 13:56:31 +02:00
Robert Schmidt 88d156478f CCE_allocation_infeasible(): log only debug 2020-04-06 13:56:31 +02:00
Robert Schmidt 5443c7a792 fill_nfapi_dlsch_config() takes index for filling 2020-04-06 13:56:31 +02:00
Robert Schmidt 0f46f17c1c UL PP can change retx freq allocation 2020-04-06 13:56:31 +02:00
Robert Schmidt 24fb5e9c80 add adaptive HARQ UL 2020-04-06 13:56:31 +02:00
Robert Schmidt 9256a9e813 Clean up schedule_ulsch_rnti() 2020-04-06 13:56:31 +02:00
Robert Schmidt c9a921504c TEST: TPC + TA cleaned up in DLSCH 2020-04-06 13:56:31 +02:00
Robert Schmidt fd2e5fee96 Clean up schedule_dlsch() 2020-04-06 13:56:31 +02:00
Robert Schmidt 2f32448707 Correctly handle 2ms Sched. Reqs 2020-04-06 13:56:31 +02:00
Robert Schmidt a3bbbd0630 Lock PRACH region through vrb_map_UL 2020-04-06 13:56:31 +02:00
Robert Schmidt abc65b1d86 Reimplement UL PP 2020-04-06 13:56:31 +02:00
Robert Schmidt 8bf7a13ffa Remove first_rb from ULSCH scheduler 2020-04-06 13:56:31 +02:00
Robert Schmidt 8a84e2d92e Rewrite assign_max_mcs_min_rb() more concisely 2020-04-06 13:56:31 +02:00
Robert Schmidt 10bd164ad4 UL PP: Remove UE sorting and slicing 2020-04-06 13:56:31 +02:00
Robert Schmidt 9b4725ad0b Shortened UL-PP, remove CC and slicing 2020-04-06 13:56:31 +02:00
Robert Schmidt 4250f8eaec ULSCH: remove CC loop, remove variables or limit scope 2020-04-06 13:56:31 +02:00
Robert Schmidt 1670b4521e Reimplement the DLSCH preprocessor
This refactors the preprocessor. The new preprocessor implements the
same scheduling strategy (Modified Round-Robin: give resources according
to round-robin, then group) but should be fairer by changing every time
the RR start UE (i.e., 1st TTI UE 0 starts, 2nd TTI UE 1, etc) when the
UE number is not a divisor/multiple of the RBG size (and the last RBG is
often smaller). This also removes all unneeded code of the preprocessor
such as allocate(), positioning(), etc.
2020-04-06 13:56:27 +02:00
Robert Schmidt eb0af3a5e0 Simplify DLSCH code
* do not check rlc_ind()
* Simplify retransmission part and remove nb_rb_available var
* Simplify new transmission code
* Simplify fill_DLSCH_dci(), avoid unnecessary copies
* fix: first check No. RBs, then check CCE alloc
2020-04-06 13:43:52 +02:00
Robert Schmidt eeaa5a99d0 RLC: _req() accepts max TB size, _ind() not
Previously, the various rlc_*_ind() functions had a parameter to enable
the MAC to specify the max TB size that a subsequent call to the
corresponding rlc_*_req() (!) function would return. This patch removes
this parameter from the rlc_*_ind() functions and makes the parameter
working that is already in the rlc_*_req() functions.
2020-04-06 13:43:52 +02:00
Robert Schmidt 5c153ca0d2 Move release and RA control to own function, call once for every UE 2020-04-06 13:43:52 +02:00
Robert Schmidt 97a1bd105c store_dlsch_buffer() works per CC, checks only active LCs
store_dlsch_buffer() puts the RLC buffer status results in the
UE_TEMPLATE, which is per-CC. Since the DLSCH scheduler works per-CC,
too, we pass the right CC. However, this is not strictly necessary, as
we could do this once before every CC, and it might be updated.
2020-04-06 13:43:52 +02:00
Robert Schmidt 2e9f391a0a Store active LCs in MAC, remove unneeded headers 2020-04-06 13:43:52 +02:00
Robert Schmidt 5420e74032 Efficient RB estimation through binary search 2020-04-01 11:13:58 +02:00
Robert Schmidt 8ffe5b4920 Rename UE_list_t to UE_info_t, UE_list_t separate struct
UE_list_t is now used as a separate list. It can be e.g. used in the
scheduler to mark groups of users. The original UE_list_t is renamed to
UE_info_t to reflect that it is a container for information about UEs.
2020-04-01 10:47:02 +02:00
Robert Schmidt 7c92456338 Remove DL Slicing-related variables 2020-04-01 10:38:47 +02:00
Robert Schmidt fd6618dc1c Simplify preprocessor, retain functionality
* Simplify store_dlsch_buffer()
* Simplify assign_rbs_required()
* Simplify dlsch_scheduler_pre_processor_partitioning()
* Simplify dlsch_scheduler_pre_processor_accounting() and dlsch_scheduler_pre_processor_accounting_allocate()
* Simplify allocation printing

The original functions used in the fairRR scheduler have been moved to
eNB_scheduler_fairRR
2020-04-01 08:49:26 +02:00
Robert Schmidt 4462e2d710 Remove unused/broken code in preprocessor
* Remove MIMO_mode_indicator: it is simply not used ATM
* Remove min_rb_unit as parameter: function auto-detects
* Remove commented code
* Remove slice sharing/multiplexing: it is broken
* Remove UE sorting, add UE with add_new_ue() in MAC
  - UE sorting is useless overhead on every iteration, instead it should
    be governed by a scheduling algorithm (e.g., RR or PF)
  - The MAC keeps a UE list and automatically adds a UE
  - UE_list empty, set head to -1
* Remove slice_positioning: the slicing functionality is broken
* Remove unused/untested code
2020-04-01 08:49:26 +02:00
Robert Schmidt 8d3fa4dc22 Simplify dlsch_scheduler_pre_processor_reset()
The original reset() function used in fairRR has been moved to
eNB_scheduler_fairRR.c
2020-04-01 08:49:26 +02:00
Robert Schmidt ff766786a8 Remove mbsfn_flag from schedule_ue_spec(), simplify pre_processor interface 2020-04-01 08:49:26 +02:00
Robert Schmidt 8e72b1364a Remove sf0 DC limitation 2020-04-01 08:49:26 +02:00
Robert Schmidt cd480271af Remove everything related to TM5 in pre_processor 2020-04-01 08:49:26 +02:00
Robert Schmidt 99301f438f Call schedule_ue_spec() once for each CC 2020-04-01 08:49:26 +02:00
Robert Schmidt 81fb7628c5 get_min_rb_unit(): all channel bandwidths 2020-04-01 08:49:26 +02:00
Robert Schmidt ffc4f464f5 Remove useless mac_proto.h include
When a header is changed, all including files need to be recompiled,
too. Thus, including a header needlessly all over the place drives
compile times up without any reason.
2020-04-01 08:49:26 +02:00
Robert Schmidt 1efd2b428b Remove useless MAC/defs.h file 2020-04-01 08:49:26 +02:00
Robert Schmidt 5e0d6253b8 Fix: search UE in ULSCH when handling UCI 2020-04-01 08:49:26 +02:00
Robert Schmidt 8a47fa484c Handle residual MAC PDU < 0 gracefully 2020-03-24 17:54:08 +01:00
Robert Schmidt daefb67c82 Fix: correct check for dummy-traffic 2020-03-24 17:54:08 +01:00
Robert Schmidt 69c16efe07 Fix: check that UE RRC config files are found 2020-03-24 17:54:08 +01:00
Robert Schmidt 2c21e8229c Fix: correctly set context before calling pdcp_run() 2020-03-24 17:54:08 +01:00
Robert Schmidt 8a589f5b08 Fix: rx_indication length is in bytes 2020-03-24 15:54:45 +01:00
Robert Schmidt df0bc30e28 Make function static inline, not inline
inline alone does only define a function without a corresponding
declaration. static solves this problem
2020-03-24 15:41:54 +01:00
Robert Schmidt 0de3c73475 Place MBMS tun fd into single int 2020-03-10 17:38:24 +01:00
Robert Schmidt 84482489e4 Reformat phy_stub_UE.c with clang-format 2020-03-08 20:34:20 +01:00
Robert Schmidt fa7ace4b1d Reimplement dl_config_req_UE_MAC() more concisely 2020-03-08 18:34:00 +01:00
Robert Schmidt 34e7952944 CI: Multi. UEs handled by 1 thread (no races) in l2sim 2020-03-08 18:33:34 +01:00
Robert Schmidt 719667895c Prevent memory leak in L2 sim due to NFAPI 2020-03-08 18:33:34 +01:00
Robert Schmidt 6ec6c8b261 Request CQI in all NFAPI modes (i.e., also for L2 sim) 2020-03-08 18:33:34 +01:00
Robert Schmidt 6866be7175 Trigger ULSCH CQI ind only when instructed 2020-03-08 18:33:34 +01:00
Robert Schmidt 943f907ae1 Send correct ULSCH CQI indication message in L2 sim 2020-03-08 18:33:34 +01:00
Robert Schmidt b34a0e2f54 Increase (fixed) PHR for UE phy stub mode (L2 sim) 2020-03-05 16:06:02 +01:00
Robert Schmidt 8af8836c4b Call oai_nfapi_cqi_indication() to send cqi_indications 2020-03-05 16:04:44 +01:00
Robert Schmidt 15a2767562 Don't call fill_ulsch_cqi_indication_UE_MAC()
This functions fills the ULSCH CQI indication message incorrectly. Also,
it should only be triggered when the eNB requests CSI. We disable it
here and a subsequent commit enables it again.
2020-03-05 16:04:44 +01:00
Robert Schmidt c321f9b5a3 Make UE mem alloc for UL_INFO only once in PHY stub mode 2020-03-05 16:04:44 +01:00
Robert Schmidt 5f851d45b3 Fill UE RX Indication Rel9 to prevent error message 2020-03-05 16:04:44 +01:00
Robert Schmidt 05577be422 Reduce logging verbosity and levels 2020-03-04 13:38:04 +01:00
Robert Schmidt a51dc94e8b Set correct UE ID in Kenb Refresh Req
NAS triggered the Kenb Refresh Req always for (hardcoded) UE 0. This
fixes this by setting the correct UE ID.

An effect of this was that the Kenb would always be set for UE 0,
regardless for which UE it was actually intended. This led for integrity
check failures for every UE with ID > 0.
2020-03-04 13:38:04 +01:00
Robert Schmidt dabe2ae7ab FlexRAN: remove unused import in protocol def 2020-01-20 14:05:05 +01:00
Robert Schmidt 1c8c839f65 FlexRAN: Reformat code for X2 HO NetControl activation 2020-01-20 14:05:05 +01:00
Robert Schmidt e33be3ccd3 FlexRAN: Re-enable the soft-restart, it works 2020-01-20 14:05:05 +01:00
Robert Schmidt c6e389ed4c FlexRAN: assert if out of memory 2020-01-20 14:05:05 +01:00
Robert Schmidt a87220d376 Add S1AP control module for FlexRAN with status monitoring support 2020-01-20 14:05:05 +01:00
Robert Schmidt 44fdb23f15 FlexRAN: fix RRC protobuf definition 2020-01-20 11:35:35 +01:00
Robert Schmidt 6a581d903b Add FlexRAN protobuf definition for S1AP 2020-01-20 11:35:35 +01:00
Robert Schmidt d2b1e6aa9a FlexRAN: report employed splits to controller 2020-01-20 11:35:35 +01:00
Robert Schmidt a8b4a62b82 Read RU config before FlexRAN to allow split identification 2020-01-20 11:35:35 +01:00
Robert Schmidt f87c1cbb92 FlexRAN refactor+format MAC stats function 2020-01-20 11:35:35 +01:00
Robert Schmidt b6d466d772 FlexRAN: reimplement timers without ITTI
The timer code used to trigger periodic statistics message sending used
ITTI. Together with a high frequency reporting (e.g. 1ms), this resulted
in high CPU usage. This commit reimplements this:
* using a thread that is synchronized to the RU (if there is no MAC, we
  assume there is no RU generating a tick so we create the tick source
  ourselves)
* no RB trees but plain arrays
* smaller interface for users
* slight user interface changes
* remove stopped timer state: such timer might be simply removed
* remove one-shot timers
2020-01-20 11:35:35 +01:00
Robert Schmidt 233affc9dd FlexRAN: include header, not C file 2020-01-20 11:34:54 +01:00
Robert Schmidt 5c4aa309eb FlexRAN: helper function to get No. UEs 2020-01-20 11:34:54 +01:00
Robert Schmidt 7415d08138 FlexRAN: Simplify stats request handling
* only set up timer for sending requests
* simplify interface for timer setup
* on timer expiry, do not pass through stats request function but
  directly send the reply
* Remove whatever report structure and use stats request directly for
  inferring the data to send
2020-01-20 11:34:54 +01:00
Robert Schmidt a21c1b1f73 Remove unused sleep function() 2020-01-20 11:33:32 +01:00
Robert Schmidt e26f7d7555 F1: correctly initialize CU RRC params (clean up code after 99012f88b9) 2019-06-27 14:22:10 +02:00
Robert Schmidt 5b12a60950 Flexran-triggered RRC Reconf: free memory of mac_MainConfig after setting new, do not free new memory 2019-06-25 15:47:52 +02:00
Robert Schmidt 0f568fd40a FlexRAN: Comment non-functional code regarding Neigh CGI PLMN ID reporting 2019-06-25 10:40:12 +02:00
Robert Schmidt f1a1ff036d FlexRAN: HO request first check whether X2 is active, minor indentation fixes 2019-06-24 17:55:13 +02:00
Robert Schmidt a6be54a6f4 Fix: X2 Setup Req/Resp: first check, then increase number of cells 2019-06-24 17:54:38 +02:00
Robert Schmidt 960e8dc9d8 FlexRAN: Calculate sfnsn such that diff 1s = 1000 2019-06-24 16:29:14 +02:00
Robert Schmidt a90a7f352e Additional messages for error diagnosis for net-ctrld HO 2019-06-24 16:29:14 +02:00
Robert Schmidt 67fc2f7c62 FlexRAN: add GTP statistics in UE stats through RRC module 2019-06-24 16:29:14 +02:00
Robert Schmidt 939251e004 Fix: Memory allocation for offsetFreq parameter 2019-06-24 16:29:14 +02:00
Robert Schmidt 8cf520d283 Rename FlexRAN RRC reconfiguration function, simplify function 2019-06-24 16:29:11 +02:00
Robert Schmidt 76a7b7036e FlexRAN: Add Protobuf UE-specific RRC measurement report configuration 2019-06-24 16:15:44 +02:00
Robert Schmidt 82db432191 Make separate func_ptr setters for PDCP Ind/RLC Req 2019-04-19 14:06:48 +02:00
Robert Schmidt 42713b95fc Configure complete PDCP in lte-(ue)softmodem
* Instead of partly initializing in read_config_and_init(), everything of
  PDCP is initialized in main() of lte-softmodem
* Omit RC.rrc access in RRU through checking of RC.nb_inst > 0
* Includes FlexRAN, i.e. do not start FlexRAN in RRU
* Function pointers to PDCP functions have to be set explicitly (avoid
  confusion of multiply setting function pointers)
2019-04-19 14:05:51 +02:00
Robert Schmidt de1dc5c9d7 Correct if before call free() 2019-04-18 16:03:01 +02:00
Robert Schmidt b4f462b9c8 Align PROTO_AGENT functions with PDCP/RLC function pointers 2019-04-18 13:42:20 +02:00
Robert Schmidt 896ea4a72a Fix: Check for node type in L2_interface only when not UE 2019-03-26 13:37:14 +01:00
Robert Schmidt 024007716a Check type of node using NODE_IS_CU/DU/MONOLITHIC macros 2019-03-26 13:15:02 +01:00