754 Commits (c0d2e8c11d1fb1a6a7a72d7c8362c464facd9484)

Author SHA1 Message Date
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.
4 years ago
Francisco 996d8ef74d multiqueue bugfix for non-blocking pushes when queue is full 4 years ago
Francisco 99abae9e6a fix multiqueue producer to consumer notification to avoid deadlocks 4 years ago
Francisco 0d800eb8f6 stack, multiqueue - bugfix for multiqueue destruction, and addition of unit test 4 years ago
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.
4 years ago
Francisco cd51537234 add comment explaining the use case of cached_alloc 4 years ago
Francisco 28847badcf implementation of custom allocator for memory caching. This allocator may be used for unbounded queues 4 years ago
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.
4 years ago
Xavier Arteaga fb5dfb3a86 Improved NR unit test 4 years ago
Xavier Arteaga 6c39a5e4ff Added PDSCH DMRS aditional unpacking 4 years ago
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
4 years ago
AlaiaL 862784ee46 Fixed coverity 369719 4 years ago
AlaiaL 82788ca094 Fixed issues from coverity:
- 370233
- 370234
- 370239
- 370240
- 370241
- 370242
- 370243
- 370295
4 years ago
faluco 1ccb62af3d Apply srsLTE formatting rules to srsLog. They were previously formatted with different rules when the project lived in the external rapo. 4 years ago
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.
4 years ago
Francisco 28f787f1de extend timer handler unit test to check correct time wheel implementation 4 years ago
Francisco 2b572f5376 fix overwrite of timer timeout when it matches previous time wheel position 4 years ago
Francisco ce47cf5910 fix - re-add log flush to srsran_assert 4 years ago
Francisco 3b78bf3730 bugfix - fix memcheck warnings. move instructions with side effects outside of asserts 4 years ago
David Rupprecht 6b41ae7e8b Updated PDCP config struct for rat type 4 years ago
Xavier Arteaga 53e41a165c Revert zeros around DC REs in NR PDSCH 4 years ago
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 4 years ago
Francisco 3f15fc2811 implemented bounded_bitset::find_first(...) 4 years ago
David Rupprecht f42d4dbc28 Refactored carrier config 4 years ago
Xavier Arteaga abfc1da921 Multiple NR-PUSCH fixes 4 years ago
Xavier Arteaga 01ce0718be NR-PUSCH RE mapping correction and NR-SCH detailed grant information 4 years ago
David Rupprecht fe8727050b Added new rrc_nr to phy flattening functions and fixes 4 years ago
Xavier Arteaga e4e3456d76 Refactored PDSCH/PUSCH decoder for LDPC early stopping 4 years ago
Francisco e37968410e simplification of timers handler design, relying solely on one time wheel. 4 years ago
Francisco 60896e30b5 implementation of time wheel-based timer handler, using a circular array and intrusive list 4 years ago
Xavier Arteaga 80f5c82b53 Fix formatter test 4 years ago
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
4 years ago
Xavier Arteaga 2e3c00aa97 NR PDSCH zeroes RE around the DC. Added delay and CFO emulation to phy_dl_nr_test 4 years ago
Francisco 21718af3b6 avoid allocating std::string to get lcid radio bearer name. Refactored the lte radio bearer enum type 4 years ago
Andre Puschmann 6dd8c21073 mac_sch_pdu_nr: add unpacking of TA CE in DL-SCH
also add basic test to verify correct unpacking
4 years ago
David Rupprecht 82c9636156 Refactor pdcp ctor seperate the configure function 4 years ago
David Rupprecht f9ea02b6bf Added functions for rrc reestablishing procedure if nr reconfig failes 4 years ago
Xavier Arteaga 58a9ef6e7f Minor NR PHY tweaks and aesthetic 4 years ago
Xavier Arteaga 49731ab5a1 Initial NR-DCI refactor
Added NR DCI 1_1 size

Several DCI NR fixes
4 years ago
Xavier Arteaga 1dcd75a6c7 Ignore CRC for RV!=0 in phy_dl_nr_test 4 years ago
Xavier Arteaga ecd2c1cdcc Improved LDPC decoded performance and other NR aesthetical changes 4 years ago
Francisco cdf72248f3 Reimplement batch-based background object/memory pool
Main changes:
- addition of pool utilities
- The node size/alignment and batch allocation threshold are now runtime arguments
- object pool and memory pool are not anymore based on the same class.
  The object pool cannot use intrusive free list because it would overwrite the object
  memory
4 years ago
Francisco 460d7a8f4f fix memory pool test - placed the pool state into a shared_ptr so that the callbacks still have a valid handle when the pool is destroyed 4 years ago
Francisco 9bec13731a adt unit test - fix memory pool test 4 years ago
Francisco ec3cd9ffea adt - added background object pool test, and fix existing bugs related to the creation of pools with objects that are too small to be used in free lists 4 years ago
Francisco d1c5b000dc adt - creation of pre-initialized object pool, that leverages the background memory pool allocator 4 years ago
Francisco a79ca92020 refactor type storage and pool tests 4 years ago
Francisco 2723993740 fix network utils test 4 years ago
Francisco c24e382c19 Refactor of socket manager class
- use of inheritance to simplify testing
- removal of global network manager
- pass of custon socket manager to s1ap and gtpu ctors
- overhauled the registration of socket fd,callback in socket manager
4 years ago
Francisco 4aac7ac238 use global rx multisocket handler, and remove stack-s1ap interface 4 years ago
Francisco bf96d897ee network utils refactor - renaming of socket handle to unique socket and cleanup of its methods 4 years ago
Francisco ced757a11b adt - add optional construct that closely emulates std::optional<T> 4 years ago
Francisco d04a19f8bc refactor - increase code reuse in adt files 4 years ago
Francisco eb38ff43ab fixed size buffer pool bugfix - deleted threads now return the cached memory blocks to the pool shared memory block container 4 years ago
Francisco be771e5c23 performance - use of new concurrent fixed size pool for byte_buffer pool 4 years ago
Francisco e1523692c2 implementation of concurrent fixed size pool that leverages thread local caches to avoid mutexing 4 years ago
faluco e2c7809abb - Introduce a new tracer scoped object that only records if the event duration exceeds the programmed threshold. 4 years ago
David Rupprecht 8c86d2084d Adding NR phy config RRC parsing
Added error handling

Reworked flattening error handling
4 years ago
Andre Puschmann 6eedd70275 rlc_stress_test: add RLC UM NR 12bit stresstest 4 years ago
Andre Puschmann f992350d2d rlc_um_nr_pdu_test: add testcases for 12bit SN length packing/unpacking 4 years ago
Xavier Arteaga 5bdf2c93b3 Initial NR PDSCH CSI-RS RE skip and other changes 4 years ago
Francisco 6d9709fe54 adt - make circular buffer work with types without default ctor 4 years ago
Francisco ef5329bec0 adt - extend circular map unit test to test the container with move-only types 4 years ago
faluco e8395c7474 - Implement a pool to store dyn arg store objects in srslog to avoid allocations when passing arguments to the backend.
- Use string views inside the log formatters to avoid allocations.
- Avoid a std::string when using fmt::vsprintf, instead favour fmt::vprintf.
4 years ago
Andre Puschmann 1a0891df51 all: check return value of make_byte_buffer() and handle them safely 4 years ago
Francisco b5692037a2 created macros for assertions and warnings. The assert macro prints the whole callstack on crash. The warning macro can just log a warning or call an assertion fail depending on the cmake flag STOP_ON_WARNING 4 years ago
Pedro Alvarez d91119baf6
RLC discard (#2515)
* Added ability to discard to dyn_block_queue

* Change way of keeping track of SDUs

* Check nullptr in poping callback. Starting to check for nullptr in RLC read_pdu.

* Adding RLC discard tests

* Clearing PDCP info when RLC discard happens

* Read SDUs until they are no longer nullptr

* Changed discard_if to use template argument
4 years ago
Francisco 0d5038dd34 fix wrong lib linking in cmaker 4 years ago
Francisco 88f5add1fb adt - fix circular map erase function and added extra asserts 4 years ago
Francisco 4869b14de3 application of new circular map to mac::ue_db 4 years ago
Francisco 98d0637ded adt addition - implemented reusable circular map 4 years ago
Codebot 4523ee6087 rename srsLTE to srsRAN 4 years ago
David Rupprecht ad3a3af490 Adding more info into pcap test 4 years ago
faluco 358c4de0bd Fix a valgrind issue in a unit test in log_channel_test where the buffer was not being null terminated. 4 years ago
Andre Puschmann 3e07767f28 rlc_stress_test: set maxRetx for AM to 32 by default
since the tests are random we sometimes hit the maxRetx threshold
with 8 retx allowed that made the unit test fail.

increase threshold to lower the likelihood for this to happen.
4 years ago
faluco e43f555fc0 - Provide a fast path for logging pre-formatted strings that are small and fit in 64 bytes without any allocations.
- Use this new feature in the tracer.
4 years ago
Pedro Alvarez f02694dd3e PDCP status report: Fix issue in keeping track of Rx'ed COUNTs after eNB reestablishment. Fixed issue in logic that limits the size of the rx_counts info vector. 4 years ago
Pedro Alvarez d2ef541957 Changed the structure to store rx_counts info to std::vector, to reduce
memory allocations.
Update the rx_count_info queue if the queue size is too large.
4 years ago
Pedro Alvarez 3f79cd6281 Changed generation of status report to use rx_counts instead of
undeliverd_sdus_queue. Added a queue to store information about
rx_counts received.
Added unit test for when the SNs wrap-around in status report genaration
4 years ago
Francisco 3e9f93eb8a refactor - remove old log_filter and logmap libraries from the codebase 4 years ago
Francisco 7dcb703d06 adt lib,bugfix - fix bounded_bitset resize to clear bits outside of mask correctly 4 years ago
faluco 173dcdd421 - Import latest srslog version.
- Remove string allocs in some log lines in radio.cc.

Add new tracing buffer capcity options into srsenb and srsue.

Add missing file.
4 years ago
Andre Puschmann 20cbc48f90 rlc_am_lte: refactor PDCP/RLC interface to use fix sized data structure
this patch replaces the std::vector type used in the interface between
PDCP and RLC to signal delivery status between both layers. The new
data type is a configurable but fixed-size vector.
The RLC AM doesn't need to dynamically allocate the vector for every SN but
uses the tx_window for storage.
4 years ago
Francisco 20e341d0a1 mac,bugfix - fixed formatting of MAC and scheduler user-defined types 4 years ago
Francisco 5a1bf28fe1 optimization - minimization of number of std::string allocations for logging 4 years ago
Francisco 1ffc4cef86 rlc am,optimization - change helper log methods to avoid mallocs 4 years ago
Francisco d77b6e1d9c sched,optimization,refactor - use of custom formatter that avoids mallocs for getting bitmasks strings in hex and binary formats 4 years ago
Francisco f0ed1e06a8 documentation,bugfix - added documentation to new blocking queues, changed class names, and removed blocking pushes from the critical path 4 years ago
Francisco d1236fd62f stack,optimization - replaced previous block_queue design for new bounded queue in several places in the enb 4 years ago
Francisco 0ba93d274f converted byte_buffer_queue to use new circular buffer-based queue to avoid mallocs 4 years ago
Francisco 822e26b63f implemented circular buffer-based queue 4 years ago
Andre Puschmann 83f24fbf77 rlc_am_test: fix max_retx test
the test should only check the correct signaling of the maxretx
to the upper layer.
4 years ago
Andre Puschmann 9f627911df rlc_am_{control}_test: extend status PDU test 4 years ago
Andre Puschmann fa23be4d6d rlc_stress_test: fix SDU generation
the PDCP SN was used to fill the SDU with data. But since
the max value isn't devisable by 256 it didn't always increment
correctly. Use a normal byte now that wraps correctly.
4 years ago
Andre Puschmann 5e345df439 rlc_stress_test: make pedantic operation the default
among cleaning up the the stress test, it does:
* remove optional pedantic flag and make it the default to catch resegmentation issues
* use random SDU and MAC grant size the default
* use factory functions to create RLC configs (make maxretx configurable)
* remove reestablishment and print error when maxRetx is triggered
* fix NR PCAP usage and removes PCAP ifdef
4 years ago
Andre Puschmann 1a59f2d5ba rlc_am_test: extend header reconstruction test
this patch adds various new test cases generated from
rlc_stress_test to test header reconstruction.
4 years ago
Pedro Alvarez 7b23a83306 Fixup tests to consider wrap-around in status report 4 years ago
Pedro Alvarez c4e9516561 Fix issue when LMS wraps-around and FMS doesn't in PDCP status report. Fix incorrect update of FMS on clear_sdu. Adding unit test to LMS wrap-around. 4 years ago
David Rupprecht 894e4d3501 Added mac pcap network class that dumps the packets to a udp network sink 4 years ago
David Rupprecht 5a95cbdfae Disable rat assignment in pcap class 4 years ago
Xavier Arteaga 1e55d68b55 Removed set RNTI from API 4 years ago
Pedro Alvarez 4011714664 Fix errors in RLC stress tests due to PDCP SN wrap-around 4 years ago
Francisco 4b09507c19 remove srslte.h includes from upper layers 4 years ago
Francisco b329e25bbb move ue phy interfaces to separate interfaces header file 4 years ago
Francisco b8bd869d0f move ue rlc interfaces to separate interfaces header file 4 years ago
Francisco a988351f46 move ue pdcp interfaces to separate interfaces header file 4 years ago
Francisco ea04104e8e move ue gw interfaces to separate interfaces header file 4 years ago
Francisco f610a7b83d Change background worker pool to become a global variable
Allocate rrc::ue objects in batches in the background worker pool
4 years ago
Andre Puschmann c0a1b0efa3 rlc_am_test: add TC to check RLC AM drops PDU if max retx have been reached 4 years ago
David Rupprecht fc9d5befda Remove header test case 4 years ago
Andre Puschmann 5e93a6f5bd rlc_um_nr_pdu_test: add 12bit SN unpack test 4 years ago
David Rupprecht 0f1586dd2d Deleted all HAVE_5GNR in CC and h files
CMakeList and travis yaml
4 years ago
Pedro Alvarez d8f3878ce1
RLC failure to deliver notifications and discard timer limits to 1500ms (#2368)
* Added interfaces for the RLC to notify the PDCP of failure to transmit
SDU

* Limit discard timer to 1500ms, to avoid issues of lingering SDUs in the undeliverd_sdus_queue.

* Fix bug in early exit of notify_delivery and notify_failure

* fix compilation issue in rlc-pdcp notification

Co-authored-by: Francisco <francisco.paisana@softwareradiosystems.com>
4 years ago
Pedro Alvarez 24d5b9071c Fix issue with status report test config 4 years ago
David Rupprecht 876858b44c Added mac nr prach common config convert function with test case 4 years ago
David Rupprecht b19cbdde23 Added test case for testing the decoding of cell group config 4 years ago
Xavier Arteaga 784a33583b SRSUE: Initial NR MAC-PHY interfaces
SRSUE Fix compilation

SRSUE: temporary fixes LTE/NR PHY/Stack interface problem

fix

fix
4 years ago
Pedro Alvarez 89a23cec7e Added statusReportRequired to the PDCP entity config. 4 years ago
Pedro Alvarez 2ed8dceddf Use TX_COUNT in RLC AM stress test. Avoids issue with re-using SNs within the test 4 years ago
Pedro Alvarez f89b644902 Added function to get control pdu type to the PDCP base class. Shorten logger name in PDCP Status report test. 4 years ago
Pedro Alvarez 9bc08af880 - Added ability to the PDCP LTE entity to send PDCP Status report.
- Added handling of PDCP status report to the PDCP LTE entity.
- Added test to the generation and handling of PDCP status report.
4 years ago
Francisco Paisana 5e48327eca fix valgrind memcheck warnings in rlc_am_test 4 years ago
Francisco dc4283c572 added cmake functions as helpers to set labels in ctests 4 years ago
Pedro Alvarez 492ea2a5a8 Addressing reviewers comments to #2290.
Removing unecessary \n for logs and changed log of PDCP info queue
 capacity to debug to avoid log spam.
Changed log level for unhandled S1AP messages from error to warning
 in EPC to avoid failing tests because of error message.
Changed usage of allocate_unique_buffer to make_unique_buffer()
4 years ago
Pedro Alvarez fcaaf72187 Starting to add discard functionality to PDCP LTE entity.
This includes:
  - Adding a queue (implemented with std::map) for undelivered PDUs.
    This queue uses the SN used for TX as the key.
  - Added discard timer that is started upon reception of the SDU. Upon
    expiry of the timeout a discard callback removes undelivered PDUs
from the queue.
  - Added the mechanisms to the notify_delivery to remove PDUs from the
    undelivered queue when the PDU is ACK'ed.
  - Added test case for both timer expiry and acknowledgment.
  - Fix up the getter for buffered SDUs to return the undelivered SDUs
  - Changed default PDCP discard timer, so AM has a discard timer by
    default.
4 years ago
faluco 57f66febfc Ported the RLC classes to srslog in the lib dir. 4 years ago
faluco f424f2e113 - Upgraded PDCP classes in lib to use srslog.
- Update tests to new changes.
4 years ago
faluco 9d15a44c73
Port lib/phy to srslog (#2298)
* - Ported the channel class to srslog.
- Removed all newlines of log messages in lib/phy.

* Remove more newlines that use the C debug macros.
4 years ago
Andre Puschmann 01acf95566 mac_rar_pdu_nr: update public interface to make it easier to access
* provide all subPDUs as const vector&
* return UL grant directly
4 years ago
Francisco 3265d940ec remove byte buffer pool cached member variables as they are unnecessary now. 4 years ago
Francisco 04ab4eefcd use new make_byte_buffer() helper method to create unique_byte_buffers 4 years ago
Francisco 8a9c326bcb remove old direct uses of byte_buffer_pool 4 years ago
Francisco 1e2153769e remove byte buffer pool cleanup method and unnecessary mutexes 4 years ago
Andre Puschmann 30216fe1fc mac_pdu_nr_test: add packing test for UL-SCH PDU with CRNTI, PHR and SBSR 4 years ago
Andre Puschmann 4ca43c6804 mac_sch_pdu_nr: add unpacking helpers for CRNTI, SBSR and PHR CEs
* unpackers for CEs
* testcase with TV
4 years ago
Xavier Arteaga a19671802e Added SRSUE NR-PUSCH initial procedures 4 years ago
Pedro Alvarez 7b25eac47c Fix race condition in rlc_am_stress test and other fixes related to this
test. The race condition was being cause by write_sdu being called
simultanously to read_pdu, which could cause the read_pdu to try to get
the SDU info before it had been written by the write_sdu.

Changes in this commit include:
 - Make sure PDCP sn in included in RLC AM stress test.
 - Stop handling control PDU when TX is not enabled in RLC AM.
 - Fixed issue with length of the PDCP SN in rlc_stress_test.
 - Moved the place were sdu info erase was called to avoid double calls to erase
 - Tentative fix for race condition in rlc_am_stress test.
 - Added function to print information about undelivered_sdu_info_queue
   for debugging.
4 years ago
Pedro Alvarez d0ef6ce00b Fix typos and bad comments in rlc_am_lte.cc and rlc_am_test.cc
Added checks for the nack_sn in the status reports of the rlc_am_test.
4 years ago
Pedro Alvarez 24db20bcca Removed some unused variables after changing method of tracking notifications. Removed rlc_am_notify_pdcp test file. Testing is now in rlc_am_test.cc 4 years ago
Pedro Alvarez 6c071a784c Changed notification mechanisms to use map of acked SNs instead of acked bytes.
This was required due to an issue where bytes were counted twice when a
packet had been lost.
4 years ago
Pedro Alvarez 649d642776 Moved notification tests from rlc_am_notify_pdcp_test.cc to rlc_am_test.cc.
This added some tests to resegmentation.
4 years ago
Pedro Alvarez de669d214a Fix test header and queue_capacity check in RLC notifications.
Also, remove unecessary nullptr initializaion and fixup some newlines.
4 years ago
Pedro Alvarez de90b4753f Added the ability of the RLC AM to notify the PDCP of the acknowledged
PDCP PDUs. This includes:

- Modifying the byte_buffer_t to include PDCP SN meta-data. This way,
  the RLC can keep track of the ack'ed bytes for a specific PDCP PDU.
- Added in the RLC an `undelivered_sdu_info queue`, to keep track of the
  amount of ack'ed bytes and the total size of the PDCP PDU,
  so the RLC can know when delivery is finished.
- Added an interface between the PDCP and the RLC so that the RLC can
  notify the PDCP when it receives an ack from the status PDUs. The RLC
  passes to the PDCP a vector of all the ack'ed pdus in a rx'ed status PDU.
- Added some tests to the notify functionality. This includes some tests
  where the PDUs are acked imediatly, and one test where the PDU is
  retx'ed.
4 years ago
faluco 821925a273 - Upgrade to srslog the loggers in lib/mac.
- Adapted users of these classes and tests.
4 years ago
Andre Puschmann 8e13f04684 mac_pcap: refactor MAC PCAP and include NR RAT into same object
after adding the thread-safe PCAP writer functionality to the EUTRA
MAC object it became clear that we don't wont to replicate the
same for the NR object.

This patch therefore refactors the class that now supports both EUTRA and
NR rats. The old mac_nr_pcap.[h/cc] has been deleted. All test-cases
and usages now use the new object that needs to pass the RAT type in
the ctor.

this patch addresses the last open point of #2160
4 years ago
faluco b014233662 - Port time related classes to srslog.
- Adapt tti_point_test to srslog.
4 years ago
faluco 1a5799a6ca - Replace loggers is network utils.
- Adapt tests that use network utils and callers.
4 years ago
faluco 79eca0980d - Ported fsm.h to srslog.
- Adapted and removed old loggers in tests and code that used fsm.h
4 years ago
Xavier Arteaga 2421f2cd99 Multiple PHY fixes and NR-PHY configuration refactor 4 years ago
Xavier Arteaga b652cd68a5 Refactored NR PHY configuration to accept multiple CORESETs/SearchSpaces 4 years ago