328 Commits (5999b0d3a5e8ad5c8863961de0464009f9190a30)

Author SHA1 Message Date
Francisco e3e4564a7e fix inconsistency in use of invalid_sn and status_report_sn throughout rlc am code 4 years ago
Francisco c3ec28002b refactor - integration of segment list in rlc_amd_tx_pdu and pdcp_pdu_info classes 4 years ago
Francisco 7f0083a985 implementation of intrusive list abstract classes to be used in RLC for lists of segments 4 years ago
Francisco b06f16891d use of a single array-based pool of RLC AM PDU segments to build data PDUs, while
avoiding any allocations.
Each segment stores its own PDCP SN and RLC SN and has two pointers,
one for the next segment of the same RLC PDU, and another for the next segment
of the same PDCP PDU.
4 years ago
faluco e1752c0878 Replace the queue in thread pool in favour of a static circular buffer to avoid allocations. 4 years ago
David Rupprecht 1cbd1c9d26 Deleted hardcoded phy config 4 years ago
David Rupprecht fe8727050b Added new rrc_nr to phy flattening functions and fixes 4 years ago
Ismael Gomez 635db8dde1 Initialize metrics in hub 4 years ago
Xavier Arteaga e4e3456d76 Refactored PDSCH/PUSCH decoder for LDPC early stopping 4 years ago
Xavier Arteaga 422d479852 Added CRC match function and optimised byte packing 4 years ago
Xavier Arteaga 5aa7f9dd8b Condensed LDPC Decoder config arguments into an structure and unified common decoder code 4 years ago
Francisco 1f1233782f timers - fix old gcc compilation issue. Changed free list to intrusive list. 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
Ismael Gomez 77b11b82ac
Release UE if no activity in DRB (#2658)
* Count user activity with DRB only and SRBs for initial procedures. Add counter to release user after max KO in UL.
4 years ago
Francisco 4838cd2f5e implement cell measurement bandwidth feature 4 years ago
Francisco 14d32db92f implement Handover direct forwarding path availability configuration feature 4 years ago
faluco 582ad5f6de Replace the std::stack member in the buffer_pool class for a vector to avoid reallocs. 4 years ago
Francisco b8fa1d1b61 fix rrc mobility test 4 years ago
Francisco 66988ffd32 s1ap - simplified erab setup procedure. Handle correctly the failure to setup causes 4 years ago
Francisco f401683960 s1ap - simplified erab modify procedure 4 years ago
Francisco 76978f0d14 s1ap - simplified erab release procedure 4 years ago
Francisco c5fc543516 s1ap - handling of ts1 reloc overall timer. 4 years ago
Andre Puschmann 44baea6666 mac_nr: add UL HARQ
this patch adds a basic UL HARQ entity for NR.

The patch also updates some interfaces between MAC/RA/HARQ,
i.e. get_temp_crnti().

It also adds a Msg3 unit test.
4 years ago
Andre Puschmann b7146c41b2 nr: add NDI for PUSCH grant to sch cfg struct 4 years ago
faluco a474a0f293 SRSLOG: Avoid calling unordered_map::emplace if element already exists since it will allocate even if the insertion is not going to take place. 4 years ago
Xavier Arteaga 7823bfc28c Fix append NR to loggers for NR components 4 years ago
Francisco c2a99a8112 handover - support for handover cancellation causes, check for E-RAB QoS requirements, cancellation of handover if E-RABs are not supported in the target eNB 4 years ago
faluco a2f6e13138 Add a tag to the string memory pool in fmt to discriminate between pool vs heap allocated buffers. Heap allocated buffers are used as a fallback mechanism when the buffer runs out of space. 4 years ago
faluco 0465f6badd Implement a pool in FMT to avoid allocating heap memory when passing a char* to the backend, usually when formatting a %s argument.
Previously since a char* can have any length, this was managed by FMT by converting it into a std::string.
Now we store it into a configurable size node that can store a fixed size string, otherwise it falls back to std::string.
4 years ago
Xavier Arteaga 2f453b43ba Initial NR PHY interface 4 years ago
Francisco d2c404b166 handover - setup s1ap cause in case of handover failure at the target enb 4 years ago
Francisco 49bd895e29 s1ap - handle invalid or repeated erab ids in s1ap erab release command 4 years ago
Francisco 7842e3bff3 s1ap - add unit test to check correct handling of invalid E-RAB ids in modification request. Fix s1ap in order for the test to pass 4 years ago
Francisco 985846e3bd s1ap - set multiple erab ids cause in replay when s1ap erab modify request has repeated ids. 4 years ago
David Rupprecht 5a3a2a6d6f Added functions for adding phr and tag config 4 years ago
Andre Puschmann 48537f3fe7 pdcp,rlc: increase number of PDCP SDUs for notification from RLC
the current value of 256 limits the number of PDCP SDUs that can be
notified from RLC. The limit is quickly hit when too many SDUs
are in flight. This can cause unwanted log entries and weird PDCP
behaviour.

the patch increases the value to 1024, which still can be too few if
many smaller SDUs are traveling.

The patch also set the log level to warning to quicker spot
misconfigs in logs.

Fixes #2616
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 b8a9a7fc70 Review soft demodulator zero check 4 years ago
Xavier Arteaga 17a3c76540 Fix NR TDD pattern configuration 4 years ago
Xavier Arteaga 3889f1369f Added partial NR time resource mapping tables 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
Xavier Arteaga 667cc0b552 NR PDSCH/PUSCH DMRS estimation precompensates Synch error and CFO before interpolation 4 years ago
Francisco 685c971dc2 fix recursive call to get rb name 4 years ago
Francisco f7a8b8bf94 separate drb srb ids into separate enum types 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
Francisco 437db3af03 forbid allocations when dispatching task to thread pool 4 years ago
Andre Puschmann 8024bf7820 mux_nr: improve logging when building UL MAC PDU 4 years ago
Andre Puschmann 9950278a12 nr,mac_sch_pdu,mux: fix packing of MAC subPDUs with 16bit L field
the created RLC PDU was too large to fit inside the MAC grant
because only the header room for the short L field was used.

The patch determines the correct size before passing the opportunity to RLC.

It also improves logging in error case by using the MAC logger instead of
stderr/stdout when error occurs.
4 years ago
Francisco ff8a43f6b0 avoid allocation of dl_sched_list and ul_sched_t by converting a std::vector to bounded_vector 4 years ago
Francisco f1c67f5b2b pool - avoid concurrent batch allocations in background threads 4 years ago
Francisco 75e9700de0 rlc - usage of memory pool to allocate RLC bearers 4 years ago
Francisco 71f1f1b556 enb - log warning when rnti-specific memory block is full 4 years ago
Francisco a890a22ccd enb - rnti memory pool now fallbacks to new/delete if rnti-specific memory block is full 4 years ago
Francisco a780a6a7b6 fix obj pool interface 4 years ago
Francisco 60d5c6df7b implementation of memory pool with individual memory blocks per UE that get accessed via their rnti 4 years ago
Andre Puschmann db496df1e6 mac_nr: add support for periodic BSR reporting
building on the previous refactor this patch now adds support
for peridoic BSR reporting (using short BSR). It furthermore does
the following changes:

* add BSR packing
* add proc_bsr_nr unit test
* move mac_nr test code into test folder under src (needs to be done with other test code too)
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
Francisco dc763b5045 rlc am - fix bugs in buffered_pdcp_pdu_list
The count and container elements were not being correctly updated in the events
of SN overwrite, clear(), clear_pdcp_sdu(sn) of sn that doesnt exist
4 years ago
Francisco ebbb74e639 rlc am - use of circular_map container in RLC AM window
The window elements are not being correctly cleaned up when clear() is called
or when overwritten by newer SN. Furthermore, the window count member is not being
correctly updated when the insertion of a newer SN overwrites the previous one.

I used the circular_map container to avoid this sort of bugs
4 years ago
David Rupprecht 82c9636156 Refactor pdcp ctor seperate the configure function 4 years ago
David Rupprecht 56e947bf27 Added functionality for releasing a NR bearer 4 years ago
David Rupprecht cc6d8128ad Added gw interface if it is running 4 years ago
David Rupprecht f9ea02b6bf Added functions for rrc reestablishing procedure if nr reconfig failes 4 years ago
Xavier Arteaga 991c6e7016 Refactored NR HARQ-ACK feedback enqueue 4 years ago
Xavier Arteaga bd11b66b6c Fix unitialised NR PHY arguments 4 years ago
Francisco b7d4a72ea1 adt - fix circular map clear() and erase(it) functions 4 years ago
Francisco d02cc51e33 use mutex or atomic in running flag to signal the interruption of a thread 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 01990c2e1d SRSUE: Add PHY-MAC SR related interfaces 4 years ago
Xavier Arteaga 3568f633c3 Use LDPC RM number of useful LLR and rename functions 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 62a6d9a8dc fix background memory pool destruction 4 years ago
Francisco b004c2024d integration of object pool in mac::ue for allocation of softbuffers. Definition of common object pool interface class 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 2fc2280c3b adt pool - replace uint8_t* for void* to represent memory blocks 4 years ago
Francisco a79ca92020 refactor type storage and pool tests 4 years ago
Francisco 046633674a refactor - removal of stack-gtpu interface, and use of socket manager interface instead 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 39de2efa69 multisocket handler - use blocking socket remove method 4 years ago
Francisco bf96d897ee network utils refactor - renaming of socket handle to unique socket and cleanup of its methods 4 years ago
Pedro Alvarez 8194b5ec73 Added check for consequetive KOs in MAC. Change set_activity_user to pass activity and max KOs to RRC and trigger RLF timeout. 4 years ago
Francisco 23ae9967cf replaced present+value for optional field in s1ap mme_ue_s1ap_id context field 4 years ago
Francisco c3482b45e1 s1ap - handle erroneous enb/mme s1ap ue id in received s1ap messages from the MME 4 years ago
Francisco ced757a11b adt - add optional construct that closely emulates std::optional<T> 4 years ago
faluco 54fab314c0 Enhance RRC eNB events:
- Implement a common event "log_rrc" for all RRC events and discriminate by procedure using an enum.
- Log events for connection, reestablishment, reconfig, reject and release.
- Log the corresponding ASN1 message used by each procedure.
- Redefine the JSON object for this event to match the new structure.

Fixed a compilation error detected by the static analyzer in gcc9.3 where bounded_vector::data() was using taking the address of the internal buffer which confused it, prefer to use the data method of std::array.
4 years ago
Andre Puschmann d135ae4d29 proc_bsr: initial BSR procedure for NR
* refactor some common methods to mac_common.cc
* add common mux_base class
* move UL PDU generation to mux class
* add logical channel registration to MAC, MUX, BSR
* add initial proc BSR
* add basic MAC NR test
* rework MAC interfaces
4 years ago
Francisco d04a19f8bc refactor - increase code reuse in adt files 4 years ago
Francisco 5eccfad05b gtpu - added comments, updated expected construct, handled in rrc the case a gtpu teid fails to allocate 4 years ago
Francisco ab2bd9a2d2 gtpu refactor - handle dl path state activation internally in gtpu tunnel manager class 4 years ago
Francisco cfd24f6a0e gtpu - leverage byte_buffer_pool to store buffered sdus in gtpu 4 years ago
Francisco c201eb7708 use of more space efficient sorted vector structure for lcid tunnels of a rnti 4 years ago
Francisco eba0edea4a creation of static id obj pool class. Application of this class to gtpu tunnels container to avoid allocations 4 years ago
Francisco 60cd7e6cfe adt - improved concurrent fixed memory pool policy to send buffers from thread cache to central cache 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
Andre Puschmann bde7b49ca3 ue,mac_nr: add basic SR procedure
the current implementation support only one SR config
and doesn't support the prohibit timer
4 years ago
Xavier Arteaga 6219500148 Added NR-RRC RACH parsing 4 years ago
faluco 3c1a97f450 - Use fprintf in the srsran_assert context incase the assert is being triggered by srslog producing a circular loop.
- Switch to use a dynamic circular buffer for the log backend queue.
4 years ago
faluco 4b5e15cd70 - Fixed missing return statements in base_circular_buffer::try_push.
- Fixed array index calculation in base_circular_buffer::clear.
- Removed redundant explicit in srslog::backend_worker.
4 years ago
faluco b06ef3f390 Switch the queue of the log backend to use a circular buffer. 4 years ago
David Rupprecht 8c86d2084d Adding NR phy config RRC parsing
Added error handling

Reworked flattening error handling
4 years ago
Andre Puschmann 48c106ae64 rlc_um_nr: fix packing/unpacking of PDUs with 12bit SN
* fix SN extraction/writing
* fix packed header size calculation
* fix segmentation logic and take variable header lenght into account
4 years ago
AlaiaL fd3c2b855e - Renamed log to logger.
- Added a log entry in the metrics when skipping a measurement due to
time constrains
4 years ago
AlaiaL bbaebd1274 Added a warning in the log when the cpu metrics are not registered due
to the number cpu cores is greater than supported.
4 years ago
AlaiaL c9d1c77e8c - Deleted the magic number of maximum supported cores, now it is a
constexpr.
- When the system has more cores that the maximum supported, the cpu
metrics will not be registered.
4 years ago
AlaiaL 6cd9bba641 Added the cpu metrics to the system metrics. 4 years ago
Xavier Arteaga 5bdf2c93b3 Initial NR PDSCH CSI-RS RE skip and other changes 4 years ago
Pedro Alvarez 5bc55ec48c Changed discard_if to appyly_if in circular_buffer.h.
This was done so it would work when circular buffer holds other things
that are not unique_pointers. Queue and pop_func had to be made public
to be able to call the pop_func when an SDU is discarded.
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 46d46e70ff add documentation for srsran_assert and srsran_expect macros 4 years ago
Francisco dd336c53ea changed srsran_warning to srsran_expect. Applied new macro to rlc am 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
Andre Puschmann 26e7964694 mac_pcap_base: increase PDU queue size to 512 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 88f5add1fb adt - fix circular map erase function and added extra asserts 4 years ago
Francisco 5d676199ab adt bugfix - fix copy/move ctor of circular map 4 years ago
Francisco 4869b14de3 application of new circular map to mac::ue_db 4 years ago
Codebot 4523ee6087 rename srsLTE to srsRAN 4 years ago