Commit Graph

400 Commits

Author SHA1 Message Date
Francisco ed8ab3871c re-designed algorithm to compute lowest mcs that meets cqi,req_bytes,nof_prbs requirements in the scheduler 2021-03-04 23:40:35 +01:00
Francisco 3dd7877199 wrote unit test to check tbs,mcs derivation based on cqi,nof_prb in scheduler 2021-03-04 23:40:35 +01:00
Xavier Arteaga 1e55d68b55 Removed set RNTI from API 2021-03-01 15:30:33 +01:00
Francisco 4b09507c19 remove srslte.h includes from upper layers 2021-02-26 16:44:57 +01:00
Francisco 13d805ef56 move ue rrc interfaces to separate interfaces header file 2021-02-26 16:44:57 +01:00
David Rupprecht 0f1586dd2d Deleted all HAVE_5GNR in CC and h files
CMakeList and travis yaml
2021-02-22 21:16:04 +01:00
Francisco 9a9ed01dda rename pdcch_sched to sf_cch_allocator 2021-02-19 17:34:55 +01:00
Pedro Alvarez 6ecd6e273c Make sure that the status report is sent in RLF and PDCP reestablishment triggered by Handover 2021-02-19 13:30:48 +00:00
faluco a940e169a3 Add the enb_cc_idx value to S1 events. 2021-02-19 09:54:41 +01:00
Francisco 9546634b37 use unique_ptr for sched_ue database in scheduler. This will minimize the time spent locking while adding new users 2021-02-17 11:04:07 +01:00
Francisco c1adaec038 refactored cce position table structs 2021-02-16 21:22:40 +01:00
Francisco 823da24a8e removed uneeded sched method to set sched algorithm, and made configured flag atomic 2021-02-16 21:22:40 +01:00
Francisco 6b3cf6c597 moved pdcch sched to separate file 2021-02-16 21:22:40 +01:00
Pedro Alvarez b0fe302f8e Added interfaces so the upper layers can trigger the PDCP status report. Added ability to the UE to send Status Report aftre reestablishment. 2021-02-16 13:21:50 +00:00
Francisco Paisana c40ad81a90 cleanup s1ap methods. remove hard coded erab list in s1ap handover required message. 2021-02-15 10:49:54 +01:00
Francisco dc4283c572 added cmake functions as helpers to set labels in ctests 2021-02-12 20:27:31 +01:00
Francisco 23459dee28 Created enb_{rlc/pdcp/gtpu/phy_interfaces.h files. 2021-02-12 16:36:50 +01:00
Francisco 43e57df00b breaking enb_interfaces.h into multiple files on a layer basis. Created enb_rrc_interfaces.h, enb_mac_interfaces.h and enb_s1ap_interfaces.h 2021-02-12 16:36:50 +01:00
faluco 5c8923123a Misc compilation fixes from the fapi repo. 2021-02-11 15:38:50 +01:00
faluco 6359a2d948 - Upgrade the gtpu class in lib dir to srslog.
- Propagate old log elimination through all the dependencies of gtpu.
2021-02-11 14:37:27 +01:00
Francisco 4188b5146e fix uninitialized memory access in gtpu_test and liblte_mme unpacking 2021-02-11 13:09:06 +00:00
Francisco 3265d940ec remove byte buffer pool cached member variables as they are unnecessary now. 2021-02-07 18:48:21 +00:00
Francisco 04ab4eefcd use new make_byte_buffer() helper method to create unique_byte_buffers 2021-02-07 18:48:21 +00:00
Francisco c4a50b7de0 avoid loss of pdcp sdus' SNs buffered in gtpu during handover 2021-02-03 17:20:07 +00:00
Francisco 78d1b8083a fix GTPU tunneling. Avoid forwarding packets to PDCP while the PDCP bearer is not yet created 2021-02-03 17:20:07 +00:00
faluco 199f1c953e Remove unneeded logmap headers. 2021-02-03 14:15:27 +01:00
faluco 79eca0980d - Ported fsm.h to srslog.
- Adapted and removed old loggers in tests and code that used fsm.h
2021-02-03 14:15:27 +01:00
Francisco 411946c752 Improvements on GTPU message logging
- Avoid multiple lines per each SDU Rx or Tx
- log info relative to source and destination of each SDU
- log info relative to whether the Rx SDU has been forwarded into a tunnel
- log info relative to whether the Rx SDUs are being buffered.
2021-02-02 21:37:18 +00:00
Francisco 2bde28252c send UE capability indication through S1AP 2021-02-01 22:27:49 +00:00
Francisco d64ce7df77 implementation of S1 E-RAB Release Indication and Error Indication messages 2021-02-01 22:27:49 +00:00
Francisco 2befbd1825 setup of forwarding tunnels during enb s1 handover 2021-01-29 18:46:11 +00:00
Francisco ee3d8a5c77 fix gtpu_test memcpy param overlap bug 2021-01-29 17:22:58 +00:00
Francisco b9271f26da change naming from mme to sgw in gtpu_test 2021-01-29 17:22:58 +00:00
Francisco e8f6a436af update gtpu test to account for scenario of buffered PDCP SNs, and buffering of direct path until indirect tunnel is closed 2021-01-29 17:22:58 +00:00
Francisco 56ec2c286e add gtpu test for tunneling 2021-01-29 17:22:58 +00:00
Francisco 13649e4e19 Implement new GTPU functionality:
- multiple tunnels per E-RAB
- data forwarding between connected GTPU tunnels
- forwarding GTPU End Marker between connected tunnels
- TeNB GTPU handles in-sequence delivery when multiple tunnels for the same ERAB exist.
2021-01-29 17:22:58 +00:00
faluco 711438f756
Port enb specific classes to use srslog (#2155)
* - Started porting the enb PHY layer to use srslog loggers.
- Updated srslog to manage the none level.

* Finished porting enb phy layer including the NR part.

* Ported MAC, GTPU, PDCP, RLC and S1AP enb classes to use srslog.

* Use new stack logger.

* Ported the enb RRC clases to use srslog.

* Remove unused log macros.

* Replace loggers in sched, sched_carrier, sched_helpers.

* Replaced loggers in sched grid.

* Replaced loggers in sched harq.

* Replaced loggers in sched ue.

* Replaced loggers in sched ue ctrl.

* Replace loggers in sched ue ctrl TPC.

* Replaced loggers in sched subclasses.

* Replaced loggers in rrc_meascfg_test

* Configure loggers in rrc_mobility_test.

* Fix compilation errors left out after the rebase.

* - Implement a custom log sink that will serve as a test spy to intercept and count the number of error and warning log entries.
- Adapt the erab_test_setup and rrc_mobility tests to use this new class and make them pass again.

* - Remove trailing new lines introduced in the rebase.
- Ported the sched_ue_cell class to srslog.

* Remove unused log member.

* Ported mac tests to srslog.

* - Removed remaining trailing newlines from log entries.

* Fix compiler errors detected in CI.

* Fix another static variable without definition passed to log lines.

* Fixed a bug in srslog::flush that would never end when the backend queue is full.

* Fetch the RRC logger instead of injecting it in the constructor.
2021-01-28 12:17:18 +01:00
Francisco Paisana 3892194d98 sched refactor, use enb_cc_idx rather than ue_cc_idx primarily to avoid uneeded conversions 2021-01-21 17:04:25 +00:00
Ismael Gomez 47dbd6ed70
Merge pull request #2214 from softwareradiosystems/pr_mac_buffers
Limit the number of UL buffers in MAC and deallocate old ones
2021-01-20 21:12:39 +01:00
Francisco 7f6f3f7912 fix sched test check for ConRes DCI format. 2021-01-20 17:11:04 +01:00
Ismael Gomez d5f0634975
Add PUCCH SNR measurement (#2175)
* Add PUCCH SNR measurement

* Fix PUCCH SNR estimation

* Reverted PUCCH noise estimation

* use fpclassify instead of iszero

Co-authored-by: Xavier Arteaga <xavier@softwareradiosystems.com>
2021-01-19 21:55:24 +01:00
Ismael Gomez c1c5fa426c Fix issue with new way of managing ul buffers not working with CA 2021-01-19 16:59:36 +01:00
Francisco Paisana d0a17b0a40 created sched_ue_cell class that is indexed based on enb_cc_idx 2021-01-15 23:24:39 +01:00
Francisco Paisana 2abe486e18 separate control loops for PUCCH and PUSCH TPC 2021-01-06 22:14:46 +01:00
faluco 92b11c1adb Backport misc changes from the fapi repo. 2020-12-21 13:45:22 +01:00
Francisco Paisana 099dad8cb1 disable PHR handling in the UL sched by default 2020-12-17 17:56:42 +01:00
Ismael Gomez f9a02299f9 Use MAC PDU pointer instead of tti_rx and rnti as a key to associate buffers. Decouple crc_info() and push_pdu() functions. This allows for different timing architectures in the PHY 2020-12-16 13:49:29 +01:00
Ismael Gomez 0498439d41
Backport some changes from FAPI branch (#2124)
* Reorder DCI FORMAT enum

* Fix endianness issue

* Fix return codes in phy_ue_db

* Log members should be destructed after the layers.

* Add JSON metrics and Events. Add Alarm log channel. Simplify MAC metrics struct.

* Restore metrics_stdout change
2020-12-16 13:48:48 +01:00
faluco 8c42ec26c3 Fix error in previous rebase from dev. 2020-12-14 13:16:13 +01:00
faluco f20b75a05f Re-structure enb metrics a bit. Create a generic mac metric struct and per ue mac metrics struct. 2020-12-14 13:16:13 +01:00
Francisco 783131a4e1 sched rand test refactor: removal of redundant tests 2020-12-12 15:59:27 +01:00
Francisco cba0cc457f sched rand test refactor: creation of abstract sched simulator class for testing 2020-12-12 15:59:27 +01:00
Francisco aed36eb273 sched rand tester refactor: elimination of ue_ctxt_test obsolete class 2020-12-12 15:59:27 +01:00
Francisco a068ae11b0 sched rand tester ue_sim class now handles cqi 2020-12-12 15:59:27 +01:00
Francisco 8f05982bef simplification of scheduling of UL acks in sched random tester 2020-12-12 15:59:27 +01:00
Francisco 86eb315102 simplification of scheduling of DL acks in sched tester 2020-12-12 15:59:27 +01:00
Andre Puschmann eea6f0f11b enb: fix potential invalid access in stdout metrics
this fixes a potential access of invalid PHY or MAC metrics by checking
the user entry actually exists.

the RFCI has shown this error:

------DL--------------------------------UL------------------------------------
rnti cqi  ri mcs brate   ok  nok  (%)  snr  phr mcs brate   ok  nok  (%)   bsr
ASAN:DEADLYSIGNAL
=================================================================
m==31838==ERROR: AddressSanitizer: SEGV on unknown address 0x000000000000 (pc 0x555d482b6893 bp 0x7f6ac32d1160 sp 0x7f6ac32d0bc0 T21)
==31838==The signal is caused by a READ memory access.
==31838==Hint: address points to the zero page.
    #0 0x555d482b6892 in srsenb::metrics_stdout::set_metrics(srsenb::enb_metrics_t const&, unsigned int) /mnt/data/jenkins/workspace/srslte_dev_ogt_zmq_nightly/srsLTE/srsenb/src/metrics_stdout.cc:101
    #1 0x555d482865f1 in srslte::metrics_hub<srsenb::enb_metrics_t>::run_period() /mnt/data/jenkins/workspace/srslte_dev_ogt_zmq_nightly/srsLTE/lib/include/srslte/common/metrics_hub.h:88
    #2 0x555d482865f1 in srslte::periodic_thread::run_thread() /mnt/data/jenkins/workspace/srslte_dev_ogt_zmq_nightly/srsLTE/lib/include/srslte/common/threads.h:143
    #3 0x555d4826813d in srslte:🧵:thread_function_entry(void*) /mnt/data/jenkins/workspace/srslte_dev_ogt_zmq_nightly/srsLTE/lib/include/srslte/common/threads.h:102
    #4 0x7f6b0dc546da in start_thread (/lib/x86_64-linux-gnu/libpthread.so.0+0x76da)
    #5 0x7f6b0bf0171e in __clone (/lib/x86_64-linux-gnu/libc.so.6+0x12171e)
2020-12-12 15:59:27 +01:00
David Rupprecht 848496bb0f Moved get_earfcn to srslte get_carrier_freq func 2020-12-12 15:59:27 +01:00
Francisco b4861bc59a move sched params and sched helper methods to sched_helpers.h/cc files. Removed place in the scheduler where the mcs is increased forcefully to avoid segmentation 2020-12-12 15:59:27 +01:00
Francisco 9eddfdb4a3 fix sched rand tester coderate check. tbs needs to be converted from bytes to bits 2020-12-12 15:59:27 +01:00
Francisco 0ae304a6ed update sched rand tester to detect when tbs coderate exceeds 0.93 2020-12-12 15:59:27 +01:00
Francisco 99f94d9a1a Bug fixes of srseNB scheduler TPC
- fix encoding of TPC command
- use of exponential average with irregular sampling for the ULSNR average estimate.
  Turns out using a time-windowed average for the SNR was a bad idea.
  If the UL grants are very sporadic, the SNR time window will never have samples
  when a TPC is encoded
- update of TPC sched test
- other fixes in accumulators lib
2020-12-12 15:59:27 +01:00
Francisco 2598989f7d replace msg3grant type from C-array to bounded vector 2020-12-12 15:59:27 +01:00
Francisco 69748e9313 fix compilation issue regarding definition of size_t in header and declaration of static member null_value in sliding average class 2020-12-12 15:59:27 +01:00
Francisco d42dc50c44 Write TPC sched unit test and fix sched logical channel test 2020-12-12 15:59:27 +01:00
Francisco 479602ed1d add option to specify target ul sinr for UL power control to the enb rr.conf parser 2020-12-12 15:59:27 +01:00
Francisco 5865df39d1 created class that implements the scheduler transmit power control and PHR handling 2020-12-12 15:59:27 +01:00
Francisco d98d14efcc remove tti_params struct from sched testers, and use tti_point instead 2020-12-12 15:59:26 +01:00
Francisco 86ab1864f7 The struct tti_point is now used ubiquitously in the scheduler 2020-12-12 15:59:26 +01:00
Francisco 8fb3ea6922 Added the ability to choose scheduling policy from enb.conf
- The two options provided at the moment are time-domain RR and PF
2020-12-12 15:59:26 +01:00
Francisco 64ee0ac2ef New statistics were added in the random sched tester
- new stats allow to analyze the average bitrates of each user
- there is a new stat that computes the total of RBs allocated and total bitrate achieved by the scheduler
2020-12-12 15:59:26 +01:00
Andre Puschmann 07d2bc4fe8 change license header to agnostic version with hint to root LICENSE file 2020-12-12 15:59:25 +01:00
Francisco 8d181ef41c Optimization of cc_sched_ue::cqi_to_tbs(...) method via the use of root-finding algorithm 2020-12-12 15:59:25 +01:00
Francisco 3d80ff4831 fix activation of PDCCH for adaptive retxs. 2020-12-12 15:59:25 +01:00
Francisco fc81a5c6ba harq ack state can now only be NACK or ACK. The ul_harq pending phich flag is now reset after phich scheduling. Thus, the existence of a crc_info(...) signal from the PHY is not required. 2020-12-12 15:59:25 +01:00
Francisco 66712023bb remove unneeded includes of full rrc asn1 lib 2020-12-12 15:59:25 +01:00
Francisco bb96625129 renaming lch_manager -> lch_ue_manager 2020-12-12 15:59:25 +01:00
Francisco a348508072 simplified sched_ue pending DL bytes calculation API 2020-12-12 15:59:25 +01:00
Francisco eae0dc93ad rename scheduler files. scheduler -> sched 2020-12-12 15:59:25 +01:00
Francisco 68eda336bd remove ENB_METRICS_MAX_USERS compile time macro and use run-time variable to set maximum number of UEs the srseNB can have connected at a given instant. 2020-12-12 15:59:25 +01:00
Francisco 324cb80cac rename cell_info_common->enb_cell_common and cell_ctxt_dedicated->ue_cell_ded 2020-12-12 15:58:34 +01:00
yagoda bdc1964335 consolidating RRC eMBMS configuration into single function, setting some parameters to const 2020-12-12 15:58:34 +01:00
yagoda b90574975b refactoring asn1 eMBMS code, removing asn1 from PHY and MAC in eNodeB 2020-12-12 15:58:34 +01:00
Francisco 92c1c2a182 more efficient measObjToAddModList reconfiguration by ensuring consistency in EARFCN ordering 2020-12-12 15:58:34 +01:00
Francisco e88ba6dfc8 move rrc measconfig handling functions to separate file. Update measconfig tests 2020-12-12 15:58:34 +01:00
Francisco 25bfb6d84d move rrc measconfig handling functions to separate file. Update measconfig tests 2020-12-12 15:58:34 +01:00
Francisco 1cb65f07f1 enable meas gaps in RRC and enb parser 2020-12-12 15:58:34 +01:00
Francisco Paisana 9ff0a9b254 fix random array index picker 2020-12-12 15:58:34 +01:00
Francisco Paisana 49a48c0130 add measgap awareness to scheduler metric and sf_sched. Add measGap test to random sched test suite. 2020-12-12 15:58:34 +01:00
Francisco Paisana ff7811c822 remove unused member variable from sched tester 2020-12-12 15:58:33 +01:00
Francisco Paisana 3407ac6741 fix ca sched test 2020-12-12 15:58:33 +01:00
Francisco Paisana e8ac98d06f added extra tbs and dci aggregation level checks to sched test suite 2020-12-12 15:58:33 +01:00
Francisco Paisana 5467ee9f83 moved more tests to ue-dedicated test suite 2020-12-12 15:58:33 +01:00
Francisco Paisana 992ea7fd29 moved UE-dedicated RA sched test to separate test suite file. 2020-12-12 15:58:33 +01:00
Francisco Paisana d5f6ccc0c4 integrated UL UE-dedicated sched tests in random test 2020-12-12 15:58:33 +01:00
Francisco Paisana eb327183d3 moved harq tests from scheduler_test_common.cc to separate test suite file. Created a class ue_sim, whose role is to emulate a UE behavior 2020-12-12 15:58:33 +01:00
Francisco Paisana 64fca23eb3 extended dci content checks of DL and UL grants in the scheduler random tester. 2020-12-12 15:58:33 +01:00
Francisco Paisana 88105c1577 change the namespace of tti point helper functions for the eNB 2020-12-12 15:58:33 +01:00
Francisco Paisana 114932b4c6 extended common sched test suite api to multi carrier 2020-12-12 15:58:33 +01:00
Francisco Paisana f24e5aadaf clean common sched output tests 2020-12-12 15:58:33 +01:00