461 Commits (cd1ca4d095c9c88803896fae576d3729993929cf)

Author SHA1 Message Date
Andre Puschmann f155b7a5d5 rlc: fix stopping of poll retx timer (#2006)
* rlc_am: add TC for pollRetx timer handling

* rlc_am: fix stopping of pollRetx timer

stopping the pollRetx timer when receiving a status PDU
without checking the acknowledged PDUs is wrong.

if an ACK for another PDU, for which the polling bit has been set,
is still pending, it won't be rescheduled until another
PDU is transmitted that again starts the pollRetx timer.

this fixes the issue with missing RLC AM segment retx in #1992,
and #2003
4 years ago
Francisco Paisana 510959b50f update nr asn1 files, and asn1 tests 4 years ago
David Rupprecht 387a84ff84 Updated missing byte 4 years ago
David Rupprecht b85cb614aa Added test cases for asn1 decoding lib from pcap 4 years ago
Francisco Paisana c7697b62a6 fix asn1_utils_test. arrays used for equal comparison where not being initialized. 4 years ago
Francisco Paisana 698af97ec4 updated asn1 utils to account for conversion from 0 to bitstring. Added asn1 utils test to repository. 4 years ago
Andre Puschmann 48e7734188 phy_dl_test: fix uninit var 4 years ago
Pedro Alvarez b43e724b4c Remove packing/unpacking code for M2AP. 4 years ago
faluco 51b27fc255
Import latest srslog version (#1796)
* - Import latest srslog version.
- Adjusted the nas_test to create logs correctly.
- Remove timestamp formatting now that is provided by srslog.
4 years ago
Andre Puschmann 58ce9d3959 pdcp: adding basic test to check if control PDUs are handled correctly
use a 3 B long status PDU to check if its dropped from the rx'ing entity
4 years ago
faluco f0d651ae8e - Fixed a leak in the MME class not releasing the static byte buffer pool.
- Now the pool gets destroyed on program exit using a unique_ptr.
- Removed manual cleanup() calls in all the code base to free the pool instance.
4 years ago
Andre Puschmann d48bc8837e pdu: refactor MAC PDU class
this patch refactors the MAC PDU class, the main changes are:

* add to_string() method to pretty print PDU and subheaders
  This allows to have a single log entry per MAC PDU with all its
  contents.
  It removes the C-style fprint() method

* Simplity payload vs. w_payload_ce
  Before we've used payload when reading the PDU and w_payload_ce
  as a buffer when writing. In all getters we needed to differentiate
  between both. Now payload points to w_payload_ce initially and is
  only updated when parsing a new PDU.

* add various helpers, e.g. to get subheader index, update a BSR, ..

* fix PDU test to use new to_string() method
4 years ago
Ismael Gomez 54eed11e1d Refactor decision for extended CSI/SRS 4 years ago
Ismael Gomez e2154d2213 Renamed constants to SRSLTE and use SRSLTE_CFI macros 4 years ago
Andre Puschmann 96c911752c pdu: add test case for issue #1649
testcase checks the correct handling of the remaining PDU space
when a long BSR is added but no space is left in PDU to fit it
4 years ago
Francisco Paisana 834c0b3929 integrated new observer pattern into phy controller fsm 4 years ago
Francisco Paisana b2313e3631 observer pattern classes. Allows auto and explicit dispatch, and specifying which trigger method to use of an observer. 4 years ago
Francisco Paisana 7cd4f45d62 fsm refactor.
- avoid triggering directly a subfsm
- improved metafunctions
- other cleanups
4 years ago
Francisco Paisana 9146e6ddf1 change method name to resize intervals 4 years ago
Francisco Paisana 4457bbda7e added new asserts to interval interface 4 years ago
Francisco Paisana 8b174ce2f4 changed interval interface to disallow interval::stop < interval::start via an assertion 4 years ago
Francisco Paisana c1755727d7 changed interval method names, and added comments and assertions 4 years ago
Francisco Paisana 20b69fb22e substitution of ul_alloc_t for prb_interval 4 years ago
Francisco Paisana 857cc141c7 fix macro checking for exceptions, added missing includes, fixed bounded bitset methods' noexcept specifiers 4 years ago
Francisco Paisana cceeff10de moved expected, bounded_bitset, move_callback to adt folder. created a test for bitset 4 years ago
Francisco Paisana caf862c99f moved expected, bounded_bitset, move_callback to adt folder. created a test for bitset 4 years ago
faluco 072e84cec8 - Simplified the usage of span now with implicit constructors as it should be.
- Added overload for generic containers that have size and data members like vector.
- Removed unnecessary uses of make_span.
4 years ago
faluco 158edd4fe7 Removed init list constructor test. 4 years ago
faluco af8dfcf19c Extended a bit the span implementation with the following changes:
- Documented methods and class.
- Adapted interface to the latest standard: no init list and generic container constructors, new iterator pair ctor.
- Implemented some SFINAE for managing conversions in constructors.
- Re-organised some methods to be grouped by category (modifiers, observers, iterators, ...).
- Added convenience make_span functions.
- Added some more  asserts.
- Adapted test to use some syntax that was modified.
4 years ago
Francisco Paisana 76a62909c1 use of span type for universal array views 4 years ago
Francisco Paisana a9d882c1f1 fix task_scheduler_test. Fix potential reference invalidation in task_scheduler internal tasks data structure 4 years ago
Francisco Paisana 9d877e55b3 add test for when scope exit lambda is an lvalue 4 years ago
Francisco Paisana 0f67bee556 creation of a scope exit standalone file. Created a new folder ADT. Added test for scope exit. 4 years ago
faluco cfd3f51931
Import of srslog into srsepc and srsenb. (#1574)
* - Import of srslog into srsepc and srsenb.
* - Removed logger_file and logger_stdout files.
4 years ago
faluco efdff8ba4c
Import srslog into srsue (#1556)
- Import the srslog project into srslte.
- Ported srsue app to use the new logging framework.
- Implemented a wrapper that dispatches log entries to srslog.
- Renamed an existing log test to be more specific to avoid name clashes.
4 years ago
Andre Puschmann c8b4ba885b rename rlc_tx_queue to byte_buffer_queue
this data structure will be used by the PDCP layer as well.
4 years ago
Andre Puschmann a7911f0dab pdcp,rlc: refactor SDU queueing policy
this patch refactors the SDU queuing and dropping policy of the RLC and PDCP layer.
the previous design had issues when packets have been generated at a higher
rate above the PDCP than they could be consumed below the RLC.

When the RLC SDU queues were full, we allowed two policies, one to block on the write
and the other to drop the SDU. Both options are not ideal because they either
lead to a blocking stack thread or to lost PDCP PDUs.

To avoid this, this patch makes the following changes:

* PDCP monitors RLC's SDU queue and drops packets on its north-bound SAP if queues are full
  * a new method sdu_queue_is_full() has been added to the RLC interface for PDCP
* remove blocking write from pdcp and rlc write_sdu() interface
  * all writes into queues need to be non-blocking
  * if Tx queues are overflowing, SDUs are dropped above PDCP, not RLC
* log warning if RLC still needs to drop SDUs
  * this case should be avoided with the monitoring mechanism
4 years ago
Francisco Paisana 7c364070ee creation of task scheduler interface for classes/functions running outside the main control thread 4 years ago
Francisco Paisana 1a9c04bf2f use of task scheduler handle in pdcp 4 years ago
Francisco Paisana 4f5e65781f created task scheduler class to deal with timers, thread pool, multiqueue, internal tasks 4 years ago
Andre Puschmann 2749c870e3 rlc_am: refactor control test
* move both tests into own functions and call those in main()
* use common test header and macros
4 years ago
Andre Puschmann 58e255cb63 pdu_test: add unit test to verify correct packing of 3B PDU with Short BSR 4 years ago
Andre Puschmann 5589816690 pdu_test: fix PCAP output
API now requires to pass CC index
4 years ago
Francisco Paisana e550bf726d updated fsm to allow enter methods to receive event that caused them 4 years ago
Francisco Paisana 84f34bc736 changed to a label filtering approach for ctest 4 years ago
Francisco Paisana ebb8f18000 set some extra tests with the prefix "long_" 4 years ago
Andre Puschmann a3d7d4517c rlc_um: add dedicated unit test for the PDU packing bug
Here is the test output with the fix disabled:

13:47:42.679774 [RLC_UM_1] [D] MAC opportunity - 14 bytes
13:47:42.679784 [RLC_UM_1] [D] pdu_space=14, head_len=2
13:47:42.679790 [RLC_UM_1] [D]  adding new SDU segment - 10 bytes of 10 remaining
13:47:42.679834 [RLC_UM_1] [D]  Complete SDU scheduled for tx. Stack latency: 0 us
13:47:42.679909 [RLC_UM_1] [D] pdu_space=4, head_len=2
13:47:42.679922 [RLC_UM_1] [D]  adding new SDU segment - 0 bytes of 10 remaining
13:47:42.679928 [RLC_UM_1] [I]  Tx PDU SN=0 (14 B)
13:47:42.679974 [RLC_UM_1] [D]  vt_us = 1

The test checks the correct packing and of the two PDUs at the end.
4 years ago
Andre Puschmann df50dd7d3c rlc: extend RLC metrics
extend RLC metrics to count Rx/Tx PDUs/SDUs bytes/#
4 years ago
Andre Puschmann 48db31c5cf rlc_stress_test: fix random PDU dropping
the rand() was sometimes giving NaN so this case needs to be handled
and the PDU not dropped to have real zero drop-rate
4 years ago
Andre Puschmann fc3cd24177 rlc_um: fix counting of lost PDUs
* change try_push() return value to indicate whether the addition
  of the SDU to the tx queue was successful or not
* count lost PDUs
4 years ago