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.
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.
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
* 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>
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()
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.