Robert Falkenberg
489259dc78
lib,rlc_am_nr: extend status PDU struct with self-contained packed size info
...
This change refactors the rlc_am_nr_status_pdu_t from a simple
container into a class with integrated counter of the packed size.
As this depends on the SN length, the SN length must be passed
via constructor.
3 years ago
Pedro Alvarez
9d0bbc45b3
lib,rlc_am_nr: added debug window function
3 years ago
Robert Falkenberg
d8cb4ec700
lib,rlc_am_nr: detect gaps in sequence of received SDU segments
...
This is required for checks such as
"there is at least one missing byte segment [...] before
the last byte of all received segments of this SDU"
3 years ago
Robert Falkenberg
7e13cd0712
lib,rlc_am_nr: rename get_tx_window_size() to get_tx_window_utilization()
3 years ago
Pedro Alvarez
12f440145d
lib,rlc_am_nr: changed build_retx_pdu_without_segmentation to pass retx
...
info by copy. This is to avoid accidently using retx info by reference
after pop'ing the retx from the queue.
3 years ago
Pedro Alvarez
1d1e6dd832
lib,rlc_am_nr: added pollBYTE support and a unit test for it
3 years ago
Pedro Alvarez
eaa8fff6a0
lib,rlc_am_nr: Passing bool to get_pdu_poll() to differentiate the
...
behaviour between RETX and non-RETX PDUs.
3 years ago
Robert Falkenberg
5bb6cdec1e
lib,rlc_am_nr: use std:vector for nacks in rlc_am_nr_status_pdu_t
...
- Also create tx_status a member to avoid frequent allocations
for each created PDU.
- Remove unused member nack_range from rlc_am_nr_status_pdu_t.
3 years ago
Robert Falkenberg
80e23624f8
lib,rlc_am_nr: extract function am_window_size()
3 years ago
Robert Falkenberg
47c1845cdc
lib,rlc_am_nr: add pdu_retx_queue_base, rlc_ringbuffer_base as interfaces
...
that are independent from templated capacity.
3 years ago
Robert Falkenberg
11ac8c2529
lib,rlc_am_nr: add support for 18-bit SNs
...
and first bunch of corresponding unit tests
3 years ago
Robert Falkenberg
bb7339910f
rlc: separate types of rlc_amd_retx_t for LTE and NR
3 years ago
Robert Falkenberg
511ad9ed25
rlc, nr: Increment retx_count for segments
3 years ago
Robert Falkenberg
034aa6a6d4
rlc, nr: inform upper layer when max retransmissions is exceeded
3 years ago
Robert Falkenberg
95ebc06ec1
rlc: implement SDU discard for AM+UM in NR+LTE
...
- Implemented in common base classes
- Added locking
3 years ago
Robert Falkenberg
9b44d13471
rlc, nr: notify PDCP about fully acked SDUs
3 years ago
Pedro Alvarez
c8d15135c6
lib,rlc_am_nr: addressing reveier comments:
...
* made some methods const
* changed from TESTASSERT to TESTASSERT_EQ
* fix up comment
* removed superfulous if
* used typedef for list of segments received
* added unit test for is_retx_required()
* added unit test for malformed status PDU
3 years ago
Pedro Alvarez
634c9ea3af
lib,rlc_am_nr: starting to order segments to be able to receive them out-of-order
3 years ago
Pedro Alvarez
832d650574
lib,rlc_am_nr: remove unused variables. Fixed up some comments.
3 years ago
Pedro Alvarez
9bb3b1f18f
lib,rlc_am_nr: remove unused code after re-factor
3 years ago
Pedro Alvarez
5e8b7b5ebe
lib,rlc_am_nr: re-factored code for retx'ing with and without segmentation.
3 years ago
Pedro Alvarez
65d5df8b6e
lib,rlc_am_nr: Continue to add functionality to provide segments of retx'es. Started to add function to re-segment already existing SDU segment
3 years ago
Pedro Alvarez
e4a72de342
lib,rlc_am_nr: refactored build_pdu helpers to receive the payload pointer for consistency. Added function to segment retx. Added some comments to build PDU helper functions.
3 years ago
Pedro Alvarez
b1a33a07a1
lib,rlc_am_nr: starting to add test for segmenting retx. Changed sdu under segmentation to only hold the SN. The actual SDU already exists in the pdu stored in the tx_window.
3 years ago
Pedro Alvarez
b0581ae5ae
lib,rlc_am_nr: removed ugly hack to get last element of list. Renamed current_sdu to sdu_under_segmentation.
3 years ago
Pedro Alvarez
bd8c7f7c57
lib,rlc_am_nr: added max_hdr and min_hdr variables, that are configured based on SN length. Replaced magic numbers with said variables.
3 years ago
Pedro Alvarez
f60259afb9
lib,rlc_am_nr: fixed multiple typos and deleted useless comments
3 years ago
Pedro Alvarez
9e6b852834
lib,rlc_am_nr: Added handle_full_sdu() and handle_segment_sdu() functions. Reduced duplicate code in handling SDU segments.
3 years ago
Pedro Alvarez
8afea13d9a
lib,rlc_am_nr: added initial logic to support receiving PDU segments.
3 years ago
Pedro Alvarez
aae1d9ad10
lib,rlc_am_nr: changed rlc_amd_nr_tx_sdu to use std::list to store
...
segment infomation. Segment infomation incluses, SO and payload length.
3 years ago
Pedro Alvarez
76c33c78a9
lib,rlc_am_nr: starting to add test for segmentation. Starting to add functions for creating new segments and segment continuation.
3 years ago
Pedro Alvarez
3e5b064a08
lib,rlc_am_nr: starting to add build_sdu_segment() function.
...
Also adding write_header function that receives as argument uint8_t* so
we can write the header straight to the payload.
3 years ago
Pedro Alvarez
b425316936
lib,rlc_am_nr: fixed tx_mod_base_nr(). Added unit test for inside_tx_window().
3 years ago
Pedro Alvarez
ab8577ff43
lib,rlc_am_nr: switched back to unsigned rx_mod_base. Removed if that is always true.
3 years ago
Pedro Alvarez
fea7828d3e
lib,rlc_am_nr: added struct to hold state variables. This is consistent
...
with TX and makes it easier to make getter/setters.
3 years ago
Pedro Alvarez
bca9ef2454
lib,rlc_am_nr: made mod_nr configurable
3 years ago
Pedro Alvarez
665aea599c
lib,rlc_am_nr: made sure that the return of rx_mod_base and tx_mod_base is signed by changing from a macro to an class method.
3 years ago
Pedro Alvarez
7460a9db69
lib,rlc_am_nr: check whether we exced nof_bytes in retx. changed build_retx_pdu API to receive unique_byte_buffer by ref.
3 years ago
Pedro Alvarez
47340f37a2
lib,rlc_am_nr: fix TS version in comments
3 years ago
Pedro Alvarez
b497d773ce
lib,rlc_am_nr: Fixed some metrics calculation. Added more precise metrics checking to unit tests
3 years ago
Pedro Alvarez
b794593469
lib,rlc_am_nr: added processing of ACKs from status report
3 years ago
Pedro Alvarez
ec93cc7238
rlc_am_nr: added logic to retx NACK'ed PDU.
3 years ago
Pedro Alvarez
473a45aae0
rlc_am_nr: fix buffer status calculation for retxs
3 years ago
Pedro Alvarez
4c02407d3e
Change the update of rx_next and rx_highest_status.
3 years ago
Pedro Alvarez
3f000f0472
Adding t_reassembly to RLC AM NR
3 years ago
Pedro Alvarez
9e4631ee24
Added NR specific config struct for RLC AM. Added status prohibit timer.
3 years ago
Pedro Alvarez
8ff545c423
Added RLC AM NR config structure. Added helpers to create RLC AM NR configs. Made it possible to create RLC AM NR entites in rlc.cc
3 years ago
Pedro Alvarez
8ae4d379aa
RLC AM NR: Added some logging functions to better debug the state and the received headers. Added initial handling of data pdu. Updating rx_next and rx_status_highest now.
3 years ago
Pedro Alvarez
2d29e4005c
Starting to generate RLC NR status report.
...
Starting to check if status pdu generation is correct.
3 years ago
Pedro Alvarez
123ac16653
rlc_am_nr: fixed issue with pointers from rx entity to tx entity
3 years ago