32 Commits (1ce928ab2e443feac9a09945a16516fb674f08cf)

Author SHA1 Message Date
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 1a9c04bf2f use of task scheduler handle in pdcp 4 years ago
Francisco Paisana f0874b780b add radio_base/null classes 4 years ago
Francisco Paisana 30ae2226c1 common interface for stack multiqueue tasks, background tasks and timers 5 years ago
Francisco Paisana 8aa44928e9 fix 5g compilation errors 5 years ago
Xavier Arteaga e832769ae6 Updated copyright 5 years ago
Pedro Alvarez 96c82b3fc6 Moved PDCP configs to pdcp_config.h. Added `as_security_cfg_t` structure to hold access stratum keys.
Refactored PDCP, RRC and USIM accordingly.
5 years ago
Andre Puschmann 9e113f8b27 pdcp: allow to configure security for rx/tx seperately
previously PDCP security (integrity and ciphering) could only
be enabled for both Rx and Tx at the same time.

this, however, caused an issue during the conformance testing in which,
in TC_8_2_1_1() for example, the eNB sends a SecModeCommand and a
RRC Reconfiguration in the same MAC TB. In this case, the eNB
needs to be able to enable DL security right after sending the SecModeCmd
in order to send the RRCReconfig encrypted. However, enabling UL security needs
to be postponed until after the SecModeComplete is received.

This patch allows to enable PDCP security for rx/tx independently if
that is needed. The default way is like before, enabling it for tx/rx at
the same time.
5 years ago
Pedro Alvarez b841859220 Moved pdcp test functionality to a common header. Fixed linking issue in 5GNR PDCP 5 years ago
Pedro Alvarez 41e911fd76 Replaced PRIu32 for %u in pdcp_nr_entity 5 years ago
Pedro Alvarez e1cdd51eba Clang-formated before pull request 5 years ago
Pedro Alvarez 61958af70b Timer removes itself from the map upon expiration 5 years ago
Pedro Alvarez 47a918d680 Split PDCP NR tests into multiple files 5 years ago
Pedro Alvarez 972d44be23 Remove printfs in test. PDCP seems to be notifing correctly the RLC when discard happens. 5 years ago
Pedro Alvarez e68956bcf6 Adding discard timer timeout to PDCP config. 5 years ago
Pedro Alvarez 2e7ddef038 Continue to add discard_sdu to RLC interfaces. 5 years ago
Pedro Alvarez 15613465cf Moving some initialization from init function to constructor in the PDCP entities. 5 years ago
Andre Puschmann 2d126371f6 adopt PDCP NR to use new timer class 5 years ago
Pedro Alvarez 9998b3e857 Small white space fix and clang-format on pdcp_nr_test.h 5 years ago
Pedro Alvarez 347e10d967 Adding test for reception of duplicate packets. 5 years ago
Pedro Alvarez 6265325e20 Starting to change test to also run the clock. 5 years ago
Pedro Alvarez 8511fca940 Clang-formated to prepare for PR 5 years ago
Pedro Alvarez d3a07fdd38 Added check for overflow at RX. Adding more tests. 5 years ago
Pedro Alvarez eb1470621a Added function to generate vector of PDUs 5 years ago
Pedro Alvarez ed24544a63 Added debug print for out of order, wraparound and duplicate RX PDUs. Adding a helper function to help generate a vector of test PDUs 5 years ago
Pedro Alvarez a191eb6606 Fixed up some PDCP tx tests. 5 years ago
Pedro Alvarez 62230c6ab9 Starting to have overflow protection in PDCP NR tx 5 years ago
Pedro Alvarez 1d56fa6308 Improved speed of tests for COUNT wraparound, by setting the PDCP initial state. 5 years ago
Pedro Alvarez cb0466bce7 Starting to change the expected pdus name. 5 years ago
Pedro Alvarez 49e0e3a24a Added helper function to generate expected PDUs 5 years ago
Pedro Alvarez 727436ec0b Added helper function to compare two packets. Making generic function to test out of order packets. 5 years ago
Pedro Alvarez 977238a79c Added pdcp_nr_test.h to reduce boiler code in the pdcp_nr_test.cc 5 years ago