Commit Graph

672 Commits

Author SHA1 Message Date
Andre Puschmann a013a2fe05 rlc_stress_test: fix bug when read_pdu was returning -1 2021-06-04 13:23:54 +02:00
Andre Puschmann c0be8187c8 rlc interface: convert entire read_pdu() interface to return uint32_t
we had it returning int but had a bug in using the return value properly,
i.e. handling when -1 was returned in RLC TM.

Thinking about it more, it doesn't make sense to have a negative return
value here anyway. Either the RLC can return a PDU or not. If it can't the
returned lenght is zero.
2021-06-04 13:23:54 +02:00
Francisco 539ca47fe2 lib,bugfix: fix blocking queue unit test. Dtor cannot destroy object while a thread is still pushing data 2021-06-04 13:02:39 +02:00
Andre Puschmann 9612bb0e14 rlc_am_test: fix status PDU test and add extra test for failure signaling 2021-06-03 21:11:47 +02:00
Andre Puschmann aaffdeb326 rrc,rlc: add method to signal protocol failure to RRC
general-purpose method for lower layers to signal protocol
failures to higher layers, i.e. RRC.

In the current case, implement a direct release of the UE (enb) or
a reestablishment (UE).
2021-06-03 21:11:47 +02:00
Andre Puschmann 107f6334dd compile: fix compilation on 32bit systems that require -latomic 2021-06-03 20:45:02 +02:00
Andre Puschmann b88f22b9fe network_utils_test: fix race detected with TSAN 2021-06-01 22:44:12 +02:00
Andre Puschmann 716caafd6c multiqueue_test: fix race reported by TSAN 2021-06-01 22:44:12 +02:00
Andre Puschmann c434aac526 rlc_stress_test: include tsan options header 2021-06-01 22:44:12 +02:00
Xavier Arteaga 10a268fdba Added SNR to phy_dl_test 2021-06-01 08:26:36 +02:00
Francisco f36f5271d3 timers,feature: make timers thread-safe by using atomic to store timers state. 2021-05-31 23:26:36 +01:00
Andre Puschmann 531acc0a98 rlc_am_test: add check for RLC buffer state return during retx 2021-05-31 09:40:37 +02:00
Pedro Alvarez c74b2dd633 Fix some warnings in PHY due to array parameter mismatch for a few functions 2021-05-26 22:16:22 +02:00
Francisco f2a56c9139 simplification of multiqueue design.
- the consumer does multi-staged waiting:
  1. spins first across all queues in a RR fashion
  2. each queue access is done with a try_lock.
  3. if the try_lock fails, it increases the number of spins needed
  2. if no queue had data, the consumer sleeps for 100 usec.
- no differentiation between queues, in terms of notification features
2021-05-24 17:24:12 +02:00
Francisco b41aba2a03 fix task scheduler test 2021-05-24 17:24:12 +02:00
Francisco 2d6a878826 change interface to create multiqueue queues 2021-05-24 17:24:12 +02:00
yagoda 9501283c1c fixing support for extended Cyclic Prefix
small cosmetic fixes of CP code
2021-05-20 18:16:15 +02:00
Andre Puschmann 81c1851bbd rlc_am_test: fix TSAN isses and removing info log when dropping PDU 2021-05-20 13:41:07 +02:00
faluco 6fb81c7619 - Add a mutex with priority inheritance for srslog internal structures.
- Replace shared_variable members in log_channel class in favor of atomics.
- Remove the small string optimization in srslog now that we dont allocate anymore.
- Trim some critical sections in srslog.
2021-05-18 09:28:03 +02:00
Francisco 996d8ef74d multiqueue bugfix for non-blocking pushes when queue is full 2021-05-11 21:27:08 +02:00
Francisco 99abae9e6a fix multiqueue producer to consumer notification to avoid deadlocks 2021-05-10 15:27:21 +01:00
Francisco 0d800eb8f6 stack, multiqueue - bugfix for multiqueue destruction, and addition of unit test 2021-05-10 15:27:21 +01:00
Francisco ef9d1b8c13 stack optimization - reduction of contention in multiqueue class
With the new design, each queue created in the multiqueue object has its own mutex.
Pushing tasks to separate queues will, therefore, not cause contention.
There will be, however, still contention between the popping thread and the pushing threads.
2021-05-10 15:27:21 +01:00
Francisco cd51537234 add comment explaining the use case of cached_alloc 2021-05-06 18:06:10 +01:00
Francisco 28847badcf implementation of custom allocator for memory caching. This allocator may be used for unbounded queues 2021-05-06 18:06:10 +01:00
faluco aef18f9931 Implement a benchmark for measuring latency in the foreground threads when pushing log entries.
This benchmark runs with several threads to test contention.
2021-05-04 09:49:26 +02:00
Xavier Arteaga fb5dfb3a86 Improved NR unit test 2021-04-28 20:23:52 +02:00
Xavier Arteaga 6c39a5e4ff Added PDSCH DMRS aditional unpacking 2021-04-28 20:23:52 +02:00
Andre Puschmann 4dd17aee45 rrc/phy/nr: calculate tuning freq of NR carrier from RRC signaling params
skip initial tuning to hard-coded NR frequency and use RRC-provided
values to calculate center frequency
2021-04-25 21:05:23 +02:00
AlaiaL 862784ee46 Fixed coverity 369719 2021-04-23 21:22:06 +02:00
AlaiaL 82788ca094 Fixed issues from coverity:
- 370233
- 370234
- 370239
- 370240
- 370241
- 370242
- 370243
- 370295
2021-04-23 21:22:06 +02:00
faluco 1ccb62af3d Apply srsLTE formatting rules to srsLog. They were previously formatted with different rules when the project lived in the external rapo. 2021-04-22 16:35:23 +02:00
Francisco ff3fc0826b asn1 fixes and improvements
- use const char* instead of std::string in enumerated<>::to_string() to avoid mallocs.
- Remove the use of "typedef", and use "using" keyword instead.
- Fix rrc_nr::setup_release_c<>::to_string() broken linkage.
2021-04-22 10:21:08 +01:00
Francisco 28f787f1de extend timer handler unit test to check correct time wheel implementation 2021-04-21 10:02:03 +01:00
Francisco 2b572f5376 fix overwrite of timer timeout when it matches previous time wheel position 2021-04-21 10:02:03 +01:00
Francisco ce47cf5910 fix - re-add log flush to srsran_assert 2021-04-20 16:27:40 +01:00
Francisco 3b78bf3730 bugfix - fix memcheck warnings. move instructions with side effects outside of asserts 2021-04-20 14:01:05 +01:00
David Rupprecht 6b41ae7e8b Updated PDCP config struct for rat type 2021-04-19 22:23:59 +02:00
Xavier Arteaga 53e41a165c Revert zeros around DC REs in NR PDSCH 2021-04-19 15:15:55 +02:00
Francisco 22024ac35d implemented bounded_bitset::find_lowest(...) for both reverse and non-reverse bit ordering. Applied this method to UL scheduling search for PRB intervals 2021-04-19 13:31:20 +01:00
Francisco 3f15fc2811 implemented bounded_bitset::find_first(...) 2021-04-19 13:31:20 +01:00
David Rupprecht f42d4dbc28 Refactored carrier config 2021-04-19 12:13:37 +02:00
Xavier Arteaga abfc1da921 Multiple NR-PUSCH fixes 2021-04-17 15:51:11 +02:00
Xavier Arteaga 01ce0718be NR-PUSCH RE mapping correction and NR-SCH detailed grant information 2021-04-17 15:51:11 +02:00
David Rupprecht fe8727050b Added new rrc_nr to phy flattening functions and fixes 2021-04-16 09:02:29 +02:00
Xavier Arteaga e4e3456d76 Refactored PDSCH/PUSCH decoder for LDPC early stopping 2021-04-15 20:42:41 +02:00
Francisco e37968410e simplification of timers handler design, relying solely on one time wheel. 2021-04-15 18:46:42 +01:00
Francisco 60896e30b5 implementation of time wheel-based timer handler, using a circular array and intrusive list 2021-04-15 18:46:42 +01:00
Xavier Arteaga 80f5c82b53 Fix formatter test 2021-04-14 08:16:44 +02:00
Andre Puschmann c9da21c9bb mac_nr: add error handling when unpacking SCH MAC PDU
* only handle PDU if unpacking was successfull
* add TC unpacking with malformed PDU
2021-04-12 18:26:31 +02:00