Commit Graph
100 Commits
Author SHA1 Message Date
Robert Schmidt a389e6f5e9 Fixup: reserve space for TA command 2020-10-07 17:54:39 +02:00
Robert Schmidt a2bf8f478a Add configurable UE as param for nr_generate_dlsch_pdu() 2020-09-30 14:52:59 +02:00
Robert Schmidt f97c4f8ae6 Remove statistics from nr_generate_dlsch_pdu() 2020-09-30 14:52:59 +02:00
Robert Schmidt 574f47d014 nr_fill_nfapi_dl_pdu(): pdu index and nPDUs counting 2020-09-30 14:52:59 +02:00
Robert Schmidt ea9aacd664 Directly construct tx_req nFAPI message in DL postprocessor 2020-09-30 14:52:59 +02:00
Robert Schmidt b7b32fbe77 allocate only necessary amount of RBs 2020-09-30 14:52:59 +02:00
Robert Schmidt 0c61983196 Consider retransmissions in the preprocessor 2020-09-30 14:52:59 +02:00
Robert Schmidt 2209b999a0 DL Post processor: distinguish tx/retx 2020-09-30 14:52:59 +02:00
Robert Schmidt 09d85a052a Store retx Info 2020-09-30 14:52:59 +02:00
Robert Schmidt b4d8e41a00 Create UE MAC Context after successful RA 2020-09-30 14:52:59 +02:00
Robert Schmidt a2b1fa5d57 fixup: throughput correct only if first TDD slot 2020-09-30 14:52:59 +02:00
Robert Schmidt b9eb6c9843 Use vrb_map in in DL for NSA mode 2020-09-30 14:52:59 +02:00
Robert Schmidt ce2dd17ed5 Post-processor: enable multi-UE handling 2020-09-30 14:52:59 +02:00
Robert Schmidt fdb4c69221 Preprocessor: check for number of UEs 2020-09-30 14:52:59 +02:00
Robert Schmidt f13c97db02 Mark active in add_new_nr_ue() only if phytest 2020-09-30 14:52:59 +02:00
Robert Schmidt 738d61a173 Remove fiveG_connected and use active 2020-09-30 14:52:59 +02:00
Robert Schmidt 77e2a5aab8 Simplify allocate_rn_CCEs() 2020-09-30 14:52:59 +02:00
Robert Schmidt 5efe475120 Make UE_info.active C99 bool 2020-09-30 14:52:59 +02:00
Robert Schmidt 34f61ce396 add_nr_ue_list() 2020-09-30 14:52:59 +02:00
Robert Schmidt ccb83d16e1 Add NR_UE_list_t type 2020-09-30 14:52:59 +02:00
Robert Schmidt adcd2949fe Rename NR_UE_list_t to NR_UE_info_t
The name NR_UE_list_t is misleading: beyond being a simple "list", this
structure carries all/most UE-related MAC information. If at all, it is
a container for multiple lists. The next commit introduces a
NR_UE_list_t structure that organizes UEs in lists such that it is
easier to go through the UEs.
2020-09-30 14:52:59 +02:00
Robert Schmidt 476c7177f9 PreProc IF: save MCS-info per UE 2020-09-30 14:52:59 +02:00
Robert Schmidt 9ad94aad82 PreProc IF: Freq domain allocation per UE 2020-09-30 14:52:59 +02:00
Robert Schmidt 123a4e9ada PreProc IF: save Time domain assignment info per UE 2020-09-30 14:52:59 +02:00
Robert Schmidt ad4da1b068 PreProc IF: save PUCCH info per UE 2020-09-30 14:52:59 +02:00
Robert Schmidt 020405686c PreProc IF: save CCE info per UE 2020-09-30 14:52:59 +02:00
Robert Schmidt 5e5abe420e PreProc IF: RLC status per UE 2020-09-30 14:52:59 +02:00
Robert Schmidt 77a814fe27 Start PreProc interface, add UE active BWP 2020-09-30 14:52:59 +02:00
Robert Schmidt a403ca0398 Reduce log DLSCH scheduler 2020-09-30 14:52:59 +02:00
Robert Schmidt b516e26a66 Move HARQ calculations out of nr_fill_nfapi_dl_pdu() 2020-09-30 14:52:59 +02:00
Robert Schmidt 8dd212c0d1 Only send random data if phytest 2020-09-30 14:52:59 +02:00
Robert Schmidt 439095bc84 Remove UE-specific ulsch bitmap, special phy test slot
when in phy test, only schedule UE to be in slot 8
2020-09-30 14:52:59 +02:00
Robert Schmidt 4ffc4fdad8 clean up gNB_dlsch_ulsch_scheduler(), remove UE-specific DL bitmap 2020-09-30 14:52:59 +02:00
Robert Schmidt 5578aeb4a5 Do not allocate CCE in nr_configure_pdcch()
nr_configure_pdcch() allocates the CCE, but this is not wanted, e.g., in
multi-user scheduling, since it might not be possible to allocate the
CCEs for these UEs. This commit makes the following changes:

- remove CCE allocation in nr_configure_pdcch()
- remove coreset search in nr_configure_pdcch()
- add functions get_coreset() and get_searchspace() to retrieve coresets
  and search spaces easily
- in nr_fill_nfapi_dl_pdu(), add extra parameters for aggregation level
  and CCE indices and the searchspace and coreset of a UE, which might
  be different for each UE
- allocate CCEs manually in phytest, RA, and DLSCH schedulers
2020-09-30 14:52:59 +02:00
Robert Schmidt 67a081772d Restructure nr_schedule_ue_spec() 2020-09-30 14:52:59 +02:00
Robert Schmidt f0533b9ec4 Move TBS calculation out of nr_fill_nfapi_dl_pdu 2020-09-30 14:52:59 +02:00
Robert Schmidt 71bfadf192 nr_fill_nfapi_dl_pdu(): MCS + other params configurable 2020-09-30 14:52:59 +02:00
Robert Schmidt fc179f396c Inline nr_get_tbs_dl() 2020-09-30 14:52:59 +02:00
Robert Schmidt 9b2be0a1f6 nr_fill_nfapi_dl_pdu(): Parameters by value, not pointers 2020-09-30 14:52:59 +02:00
Robert Schmidt 192da32734 Create separate nr_fill_nfapi_dl_pdu() 2020-09-30 14:52:59 +02:00
Robert Schmidt 566bc95bc0 Create NR DLSCH nr_schedule_ue_spec() 2020-09-30 14:52:59 +02:00
Robert Schmidt 5b9658f005 Reduce log nr-softmodem 2020-09-30 14:52:59 +02:00
Robert Schmidt e761819e28 Fix in other functions 2020-08-05 10:10:50 +02:00
Robert Schmidt a4a7de5ffe Make restart work again: do not free/copy ru frame_parms 2020-08-05 08:57:05 +02:00
Robert Schmidt 6eb00a0895 Enable multi-module support in pdcp_fifo_flush_sdus() 2020-07-20 09:33:35 +02:00
Robert Schmidt 33b860f1b4 FlexRAN: use lock-free ringbuffers for slice conf
Use LFDS 7.0.0 Ringbuffer implementation to handle
* Slice Configuration
* UE slice association
which is then uploaded through MAC scheduling thread
2020-07-20 09:13:19 +02:00
Robert Schmidt 07313fd96d FlexRAN Bugfix: Free Ringbuffer on exit 2020-07-20 09:13:19 +02:00
Robert Schmidt 4901daf759 FlexRAN: New protobuf slice structure + Static Slice handling 2020-07-20 09:13:19 +02:00
Robert Schmidt 872cfc03fe Implement Static Slicing 2020-07-20 09:13:19 +02:00
Robert Schmidt 9956b96049 Use fptr for preproc and align UL PP definition 2020-07-20 09:13:19 +02:00
Robert Schmidt 2b4e529068 Simplify add_ue_list(), remove_ue_list(); add init_ue_list() 2020-07-20 09:13:19 +02:00
Robert Schmidt a74f4c1238 Delete old protobuf slice types flex_slice_{dl,ul} 2020-07-20 09:13:19 +02:00
Robert Schmidt 714a2df097 Remove any slice-related information from OAI 2020-07-20 09:13:19 +02:00
Robert Schmidt da09d63acd Default pre-processor: efficiently build UE list 2020-07-20 09:13:19 +02:00
Robert Schmidt 6fcc4f5970 Format to dynamically handle UL SCHED 2020-07-20 09:13:19 +02:00
Robert Schmidt af89a6b780 Configurable Default Scheduler DL Algo 2020-07-20 09:13:19 +02:00
Robert Schmidt fe7236d9c4 Add Maximum Throughput scheduler, wbCqi
Selects the UE with the highest CQI. If two UEs have the same CQI,
choses the one with highest number of bytes in RLC queue. Allocates as
many RBGs as possible, and potentially continues with the next UE.
2020-07-20 09:13:19 +02:00
Robert Schmidt 2de57fbc36 Add Proportional Fair scheduler, wbCqi
Selects UE with highest coefficient. Allocates until there are no more
RBGs to allocate, or UE has no more data. In the latter case, continues
with the next UE (second-highest coefficient).
2020-07-20 09:13:19 +02:00
Robert Schmidt 18a6961fcd Format to dynamically handle default DL SCHED algo 2020-07-20 09:13:19 +02:00
Robert Schmidt 8c7d94133f Bugfix RR DL: a retx UE might not be allocated again 2020-07-20 09:13:19 +02:00
Robert Schmidt 864fa84ba8 Default SCHED RR algo: optimize algo and defer RB calc.
- Loop only to next UE instead of jumping multiple

- mark used RBGs in rbg_mask

- Only calculate number of RBs based on CQI when UE is selected, instead
of calculating for all UEs which might be unnecessary.

- When looping the list of UEs for RB allocation, remove UEs that have
no data anymore instead of skipping them.
2020-07-20 09:13:19 +02:00
Robert Schmidt 82194319cf Bugfix DLSCH: only warn when retx with less RB
The preprocessor pre-allocates a CCE. Thus, when arriving at the check
for the number of RBs for retransmission, it is too late to skip the UE.
Therefore, only print a warning.

The default schedulers allocate a correct amount of RBs for
retransmissions, therefore it is ok.
2020-07-20 09:13:19 +02:00
Robert Schmidt d0baab6ed3 DLSCH: limit LC bytes according to preprocessor 2020-07-20 09:13:19 +02:00
Robert Schmidt a96c3761cc Log TBS in every window 2020-07-20 09:13:19 +02:00
Robert Schmidt 19c2856bbe UE: Set correct selected PLMN Identity 2020-07-20 09:13:19 +02:00
Robert Schmidt 332dec605a UE: Print all SIB1 decoded PLMNs 2020-07-20 09:13:19 +02:00
Robert Schmidt a1f77198f7 FlexRAN: Manage PLMNs 2020-07-20 09:13:18 +02:00
Robert Schmidt e4eea33de6 FlexRAN: Enable MME adding/removing 2020-07-20 09:13:18 +02:00
Robert Schmidt d47c539dda S1AP: Only register MME if we do not know it yet 2020-07-20 09:13:18 +02:00
Robert Schmidt 64f0b7e0e5 Do not check for register_enb_pending
The test seemingly ensures that this code block is hit only once.
However, if we enable later activation of MMEs, it will be hit a second
(and third, ...) time. The only thing in guards against, though, is an
INIT message to the L1L2 thread, when register_enb_pending == 0, which
should only be sent once.  Therefore, functionality won't be changed if
register_enb_pending becomes negative, and the assert can be removed.
2020-07-20 09:13:18 +02:00
Robert Schmidt 40fdd53adc Correctly decode IMSI also when not integrity protected 2020-07-20 09:13:18 +02:00
Robert Schmidt bbca88ad78 Bugfix FlexRAN: if a UE is in RRC but not S1AP, treat as no bug 2020-07-20 09:13:18 +02:00
Robert Schmidt dcd43c1526 FlexRAN: use lock-free ringbuffers for slice conf
Use LFDS 7.0.0 Ringbuffer implementation to handle
* Slice Configuration
* UE slice association
which is then uploaded through MAC scheduling thread
2020-07-01 10:10:48 +02:00
Robert Schmidt 05c10662da FlexRAN Bugfix: Free Ringbuffer on exit 2020-07-01 10:10:48 +02:00
Robert Schmidt d926a9a9c8 FlexRAN: New protobuf slice structure + Static Slice handling 2020-07-01 10:10:48 +02:00
Robert Schmidt d2fe5af67a Implement Static Slicing 2020-07-01 10:10:48 +02:00
Robert Schmidt 115c1f38f6 Use fptr for preproc and align UL PP definition 2020-07-01 10:10:48 +02:00
Robert Schmidt a21e9aa6ef Simplify add_ue_list(), remove_ue_list(); add init_ue_list() 2020-07-01 10:10:48 +02:00
Robert Schmidt 8c76d6ab57 Delete old protobuf slice types flex_slice_{dl,ul} 2020-07-01 10:10:48 +02:00
Robert Schmidt 198822aa17 Remove any slice-related information from OAI 2020-07-01 10:10:48 +02:00
Robert Schmidt 9f26028ded Default pre-processor: efficiently build UE list 2020-07-01 10:10:48 +02:00
Robert Schmidt 41de51b187 Format to dynamically handle UL SCHED 2020-07-01 10:10:48 +02:00
Robert Schmidt 5d1d2bcd1c Configurable Default Scheduler DL Algo 2020-07-01 10:10:48 +02:00
Robert Schmidt 36cd697b62 Add Maximum Throughput scheduler, wbCqi
Selects the UE with the highest CQI. If two UEs have the same CQI,
choses the one with highest number of bytes in RLC queue. Allocates as
many RBGs as possible, and potentially continues with the next UE.
2020-07-01 10:10:48 +02:00
Robert Schmidt a0b331415f Add Proportional Fair scheduler, wbCqi
Selects UE with highest coefficient. Allocates until there are no more
RBGs to allocate, or UE has no more data. In the latter case, continues
with the next UE (second-highest coefficient).
2020-07-01 10:10:48 +02:00
Robert Schmidt dc5357ca13 Format to dynamically handle default DL SCHED algo 2020-07-01 10:10:48 +02:00
Robert Schmidt 31ad66e146 Bugfix RR DL: a retx UE might not be allocated again 2020-07-01 10:10:48 +02:00
Robert Schmidt 1401d21081 Default SCHED RR algo: optimize algo and defer RB calc.
- Loop only to next UE instead of jumping multiple

- mark used RBGs in rbg_mask

- Only calculate number of RBs based on CQI when UE is selected, instead
of calculating for all UEs which might be unnecessary.

- When looping the list of UEs for RB allocation, remove UEs that have
no data anymore instead of skipping them.
2020-07-01 10:10:48 +02:00
Robert Schmidt b06dadbdb0 Bugfix DLSCH: only warn when retx with less RB
The preprocessor pre-allocates a CCE. Thus, when arriving at the check
for the number of RBs for retransmission, it is too late to skip the UE.
Therefore, only print a warning.

The default schedulers allocate a correct amount of RBs for
retransmissions, therefore it is ok.
2020-07-01 10:10:48 +02:00
Robert Schmidt 71647eb4ef DLSCH: limit LC bytes according to preprocessor 2020-07-01 10:10:48 +02:00
Robert Schmidt 476d58a8de Log TBS in every window 2020-07-01 10:10:48 +02:00
Robert Schmidt 9d5a46dcfa UE: Set correct selected PLMN Identity 2020-07-01 10:10:48 +02:00
Robert Schmidt d2cc43b4e7 UE: Print all SIB1 decoded PLMNs 2020-07-01 10:10:48 +02:00
Robert Schmidt f895a28645 FlexRAN: Manage PLMNs 2020-07-01 10:10:48 +02:00
Robert Schmidt df3f7e1ecf FlexRAN: Enable MME adding/removing 2020-07-01 10:10:48 +02:00
Robert Schmidt 1363a53dd0 S1AP: Only register MME if we do not know it yet 2020-07-01 10:10:48 +02:00
Robert Schmidt b01d63ba4e Do not check for register_enb_pending
The test seemingly ensures that this code block is hit only once.
However, if we enable later activation of MMEs, it will be hit a second
(and third, ...) time. The only thing in guards against, though, is an
INIT message to the L1L2 thread, when register_enb_pending == 0, which
should only be sent once.  Therefore, functionality won't be changed if
register_enb_pending becomes negative, and the assert can be removed.
2020-07-01 10:10:48 +02:00
Robert Schmidt 9072101a1a Correctly decode IMSI also when not integrity protected 2020-07-01 10:10:48 +02:00
Robert Schmidt c5fdcd85cc Bugfix FlexRAN: if a UE is in RRC but not S1AP, treat as no bug 2020-07-01 10:10:48 +02:00
Robert Schmidt 0e4ff0ecb4 L2 sim: space RA in time 2020-04-10 00:09:36 +02:00