Commit Graph

57 Commits

Author SHA1 Message Date
Robert Falkenberg 7e13cd0712 lib,rlc_am_nr: rename get_tx_window_size() to get_tx_window_utilization() 2022-03-21 15:23:21 +01:00
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.
2022-03-17 13:54:56 +00:00
Pedro Alvarez 1d1e6dd832 lib,rlc_am_nr: added pollBYTE support and a unit test for it 2022-03-17 13:54:56 +00:00
Pedro Alvarez eaa8fff6a0 lib,rlc_am_nr: Passing bool to get_pdu_poll() to differentiate the
behaviour between RETX and non-RETX PDUs.
2022-03-17 13:54:56 +00:00
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.
2022-03-16 10:57:28 +01:00
Robert Falkenberg 80e23624f8 lib,rlc_am_nr: extract function am_window_size() 2022-03-16 10:57:28 +01:00
Robert Falkenberg 47c1845cdc lib,rlc_am_nr: add pdu_retx_queue_base, rlc_ringbuffer_base as interfaces
that are independent from templated capacity.
2022-03-16 10:57:28 +01:00
Robert Falkenberg 11ac8c2529 lib,rlc_am_nr: add support for 18-bit SNs
and first bunch of corresponding unit tests
2022-03-16 10:57:28 +01:00
Robert Falkenberg bb7339910f rlc: separate types of rlc_amd_retx_t for LTE and NR 2022-03-09 08:28:46 +01:00
Robert Falkenberg 511ad9ed25 rlc, nr: Increment retx_count for segments 2022-02-28 16:37:44 +01:00
Robert Falkenberg 034aa6a6d4 rlc, nr: inform upper layer when max retransmissions is exceeded 2022-02-28 16:37:44 +01:00
Robert Falkenberg 95ebc06ec1 rlc: implement SDU discard for AM+UM in NR+LTE
- Implemented in common base classes
- Added locking
2022-02-23 11:18:31 +01:00
Robert Falkenberg 9b44d13471 rlc, nr: notify PDCP about fully acked SDUs 2022-02-23 10:57:21 +01:00
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
2022-02-16 13:23:32 +00:00
Pedro Alvarez 634c9ea3af lib,rlc_am_nr: starting to order segments to be able to receive them out-of-order 2022-02-16 13:23:32 +00:00
Pedro Alvarez 832d650574 lib,rlc_am_nr: remove unused variables. Fixed up some comments. 2022-02-16 13:23:32 +00:00
Pedro Alvarez 9bb3b1f18f lib,rlc_am_nr: remove unused code after re-factor 2022-02-16 13:23:32 +00:00
Pedro Alvarez 5e8b7b5ebe lib,rlc_am_nr: re-factored code for retx'ing with and without segmentation. 2022-02-16 13:23:32 +00:00
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 2022-02-16 13:23:32 +00:00
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. 2022-02-16 13:23:32 +00:00
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. 2022-02-16 13:23:32 +00:00
Pedro Alvarez b0581ae5ae lib,rlc_am_nr: removed ugly hack to get last element of list. Renamed current_sdu to sdu_under_segmentation. 2022-01-10 23:25:44 +00:00
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. 2022-01-10 23:25:44 +00:00
Pedro Alvarez f60259afb9 lib,rlc_am_nr: fixed multiple typos and deleted useless comments 2022-01-10 23:25:44 +00:00
Pedro Alvarez 9e6b852834 lib,rlc_am_nr: Added handle_full_sdu() and handle_segment_sdu() functions. Reduced duplicate code in handling SDU segments. 2022-01-10 23:25:44 +00:00
Pedro Alvarez 8afea13d9a lib,rlc_am_nr: added initial logic to support receiving PDU segments. 2022-01-10 23:25:44 +00:00
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.
2022-01-10 23:25:44 +00:00
Pedro Alvarez 76c33c78a9 lib,rlc_am_nr: starting to add test for segmentation. Starting to add functions for creating new segments and segment continuation. 2022-01-10 23:25:44 +00:00
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.
2022-01-10 23:25:44 +00:00
Pedro Alvarez b425316936 lib,rlc_am_nr: fixed tx_mod_base_nr(). Added unit test for inside_tx_window(). 2021-12-07 16:46:26 +00:00
Pedro Alvarez ab8577ff43 lib,rlc_am_nr: switched back to unsigned rx_mod_base. Removed if that is always true. 2021-12-07 16:46:26 +00:00
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.
2021-12-07 16:46:26 +00:00
Pedro Alvarez bca9ef2454 lib,rlc_am_nr: made mod_nr configurable 2021-12-07 16:46:26 +00:00
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. 2021-12-07 16:46:26 +00:00
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. 2021-11-22 17:42:52 +00:00
Pedro Alvarez 47340f37a2 lib,rlc_am_nr: fix TS version in comments 2021-11-22 17:42:52 +00:00
Pedro Alvarez b497d773ce lib,rlc_am_nr: Fixed some metrics calculation. Added more precise metrics checking to unit tests 2021-11-22 17:42:52 +00:00
Pedro Alvarez b794593469 lib,rlc_am_nr: added processing of ACKs from status report 2021-11-22 17:42:52 +00:00
Pedro Alvarez ec93cc7238 rlc_am_nr: added logic to retx NACK'ed PDU. 2021-11-22 17:42:52 +00:00
Pedro Alvarez 473a45aae0 rlc_am_nr: fix buffer status calculation for retxs 2021-11-22 17:42:52 +00:00
Pedro Alvarez 4c02407d3e Change the update of rx_next and rx_highest_status. 2021-11-22 17:42:52 +00:00
Pedro Alvarez 3f000f0472 Adding t_reassembly to RLC AM NR 2021-11-22 17:42:52 +00:00
Pedro Alvarez 9e4631ee24 Added NR specific config struct for RLC AM. Added status prohibit timer. 2021-11-17 10:50:35 +00:00
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 2021-11-17 10:50:35 +00:00
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. 2021-11-17 10:50:35 +00:00
Pedro Alvarez 2d29e4005c Starting to generate RLC NR status report.
Starting to check if status pdu generation is correct.
2021-11-17 10:50:35 +00:00
Pedro Alvarez 123ac16653 rlc_am_nr: fixed issue with pointers from rx entity to tx entity 2021-11-12 22:41:37 +00:00
Pedro Alvarez f99e841421 Changed using a rlc_am_lte and rlc_am_nr entity, to a single rlc_am entity. 2021-11-12 22:41:37 +00:00
Pedro Alvarez eefedcfccd rlc_am_nr: renamed rlc_am_base to just rlc_am 2021-11-12 22:41:37 +00:00
Pedro Alvarez debb4a0c6b Refactored RLC AM segment pool for re-use in both LTE and NR
Moved RLC AMD PDU definitions from rlc_am_lte.h to rlc_common.h to make them re-usable in both RLC LTE and RLC NR
2021-11-12 22:41:37 +00:00