Commit Graph

204 Commits

Author SHA1 Message Date
Pedro Alvarez 515f2099be lib,rlc_am_nr: added SN to get pdu poll function. Setting POLL_SN now. 2022-04-25 15:49:58 +01:00
Pedro Alvarez f93d699abc lib,rlc_am_nr: retransmit first un-acked SDU when t-Poll_retransmit
expires
2022-04-25 15:49:58 +01:00
Pedro Alvarez b3edced44a lib,rlc_am_nr: added t_poll_retransmit to tx entity 2022-04-25 15:49:58 +01:00
Robert Falkenberg c0546b8634 lib,rlc_am_nr: increase verbosity on invalid ACK 2022-04-25 12:19:37 +02:00
Robert Falkenberg 4028b26274 lib,rlc_am_nr: add info_state() 2022-04-25 12:19:37 +02:00
Robert Falkenberg d66c76b374 lib,rlc_am_nr: consider size of all pending retx in buffer state 2022-04-25 12:00:31 +02:00
Robert Falkenberg ced6cf6e40 lib,rlc_am_nr: consider SDU under segmentation in buffer state 2022-04-25 12:00:31 +02:00
Robert Falkenberg e0acb7b81c lib,rlc_am_nr: update buffer-state-related unit test 2022-04-25 12:00:31 +02:00
Pedro Alvarez 8a27cdf45a lib,rlc_am_nr: fix incorrectly stopping the t-StatusProhibit 2022-04-23 00:00:16 +01:00
Pedro Alvarez 63877ba209 lib,rlc_am_nr: make sure that tx_buffer_queue size is configurable 2022-04-22 22:05:03 +01:00
Robert Falkenberg d9d3bfde63 lib,rlc_am_nr: remove redundant function calls. 2022-04-21 06:54:43 +02:00
Robert Falkenberg 48dce0aab0 lib,rlc_am_nr: truncate status PDUs if necessary 2022-04-21 06:54:43 +02:00
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.
2022-04-21 06:54:43 +02:00
Robert Falkenberg fc38d4f4d9 lib,rlc_am_nr: consider offset when packing retx with segmentation 2022-04-20 12:17:52 +02:00
Robert Falkenberg 69231f000f lib,rlc_am_nr: don't enqueue segment retx if already pending for retx. 2022-04-20 12:17:52 +02:00
Robert Falkenberg 62558d94da lib,rlc_am_nr: fix segmented retx of non-contiguous segments 2022-04-20 12:17:52 +02:00
Pedro Alvarez 47caa60b45 lib,rlc_am_nr: fix up comment 2022-04-12 14:43:44 +01:00
Pedro Alvarez 2f1cf8ee11 lib,rlc_am_nr: make max retx configurable in AM stress test 2022-04-12 14:43:44 +01:00
Pedro Alvarez 4e2f7cf029 lib,rlc_am_nr: make sure that we RETX the segments if we get a NACK for an SDU that was already segmented 2022-04-12 14:43:44 +01:00
Pedro Alvarez 865dfe87e7 lib,rlc_am_nr: Added assert to check SO_start <= SO_end 2022-04-12 14:43:44 +01:00
Pedro Alvarez 7f7656e200 lib,rlc_am_nr: fix missing modulus 2022-04-12 14:43:44 +01:00
Pedro Alvarez b70e6284e6 lib,rlc_am_nr: added logging info to to handling NACKs 2022-04-12 14:43:44 +01:00
Pedro Alvarez 330513ae57 lib,rlc_am_nr: updating segment info when segmenting RETX 2022-04-12 14:43:44 +01:00
Pedro Alvarez 9d0bbc45b3 lib,rlc_am_nr: added debug window function 2022-04-12 14:43:44 +01:00
Pedro Alvarez 1aa13cee9e lib,rlc_am_nr: cleanup logging of configuration 2022-04-05 10:13:17 +01:00
Robert Falkenberg 1180d0f24d lib,rlc_am_nr: properly remove all fully received SDUs from rx window 2022-03-31 16:05:55 +02:00
Pedro Alvarez 9ecf66f313 lib,rlc_am_nr: make sure that handle control PDU correctly locks the mutex 2022-03-31 11:18:26 +01:00
Robert Falkenberg dd7bd351b3 lib,rlc_am_nr: fix pack/unpack of NACKs in status PDUs 2022-03-31 12:04:43 +02:00
Robert Falkenberg aabd22f493 lib,rlc_am_nr: cosmetic change in assert rx_highest_status 2022-03-30 17:16:21 +02:00
Robert Falkenberg 77ae5182a6 lib,rlc_am_nr: stop/restart reassembly timer for segmented SDUs with gaps 2022-03-30 17:16:21 +02:00
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"
2022-03-30 17:16:21 +02:00
Robert Falkenberg 51006bbab8 lib,rlc_am_nr: fix out-of-window assignment of rx_highest_status
Also add reminders for (not yet included) handling of
SDUs with segment gaps, i.e.
"...and there is at least one missing byte segment of the SDU
associated with [...] before the last byte of all received
segments of this SDU"
2022-03-30 17:16:21 +02:00
Robert Falkenberg 1d4f10fe0d lib,rlc_am_nr: fix search start point for update of rx_next 2022-03-30 17:16:21 +02:00
Pedro Alvarez 87a4656307 lib,rlc_am_nr: fix for transmitting invalid NACKs 2022-03-29 13:55:27 +01:00
Pedro Alvarez 9a0d7113bc lib,rlc_am_nr: fix checking the wrong SDU rx state on t-Reassembly expiry 2022-03-25 11:35:27 +00:00
Pedro Alvarez 8e06861113 lib,rlc_am_nr: fixup rx_next_highest when t-Reassembly exipres 2022-03-25 11:35:27 +00:00
Pedro Alvarez 46872a8c84 lib,rlc_am_nr: fix unprotected access to rx_window during timer expiration 2022-03-25 11:35:27 +00:00
Pedro Alvarez a15b4c039e lib,rlc_am_nr: fix state debugging info logging. Also log current TX/RX window size 2022-03-25 09:42:48 +00:00
Pedro Alvarez 0ada2adac7 lib,rlc_am_nr: minor fixes to address coments. Re-added comment, deleted useless assignement and fixed incorrect comment 2022-03-25 09:42:10 +00:00
Pedro Alvarez 6a1f6a35c1 lib,rlc_am_nr: fix loops for updating st.rx_highest_status and st.rx_next to be bounded by st.rx_next_highest, since rx_next_highest holds the value of the highest possible missing SDU. 2022-03-25 09:42:10 +00:00
Pedro Alvarez f4ff72bff8 lib,rlc_am_nr: fixes for setting the rx_highest_status incorrectly and incorrect status report generation. 2022-03-25 09:42:10 +00:00
Pedro Alvarez e6f42331ba lib,rlc_am_nr: fix race condition in handle data PDU. This was causing SDUs being removed from the rx_window, while the status report was geing generated. 2022-03-24 12:14:53 +00:00
Robert Falkenberg 329f3e519b lib,rlc_am_nr: reset do_status flag after sending status PDU
and extend unit test to fail when redundant status PDUs exist.
2022-03-19 07:07:42 +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 c023dba175 lib,rlc_am_nr: cleaned up some test names and some comments. 2022-03-17 13:54:56 +00:00
Pedro Alvarez b4814bfdc1 lib,rlc_am_nr: added test for polling bit set when retx queue is empty. Fixed lost PDU test now that we correctly set the polling bit. 2022-03-17 13:54:56 +00:00
Pedro Alvarez 47aea19bd3 lib,rlc_am_nr: added test for poll setting in RETXes 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 0cf052e31d lib,rlc_am_nr: replace hard-coded WINDOWS_SIZE 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 717132e0c3 lib,rlc_am_nr: fix access of unconfigured entity 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 b6d93577a0 rlc, nr: replace so_end by segment_length 2022-03-09 08:28:46 +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 4886dc8340 rlc, nr: NACK's so_end shall point to last missing byte
and not to first byte received again.
2022-03-09 08:28:46 +01:00
Robert Falkenberg f7515e98cf rlc, nr: add pack/unpack of nack_range in status PDUs 2022-03-01 15:31:35 +01:00
Robert Falkenberg b55f8ea624 rlc, nr: cosmetic changes 2022-02-28 16:37:44 +01:00
Robert Falkenberg 0fb6420e8b rlc, nr: avoid multi increments of SDU's retx_count within one status message 2022-02-28 16:37:44 +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
Pedro Alvarez 35146bcb71 lib,rlc_am_nr: fix shadowed variable in RLC RETXes 2022-02-23 17:01:48 +00:00
Robert Falkenberg c75b8d1708 rlc, nr: increment sequence numbers using modulus 'mod_nr' 2022-02-23 13:28:57 +01:00
Robert Falkenberg 42a8e957d4 rlc, nr: fix rlc_am_nr_tx::has_data() 2022-02-23 11:18:31 +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 e6d976d115 lib,rlc_am_nr: fixed stack smashing bug that happened when too many NACKs were present in the status report 2022-02-22 21:14:15 +00:00
Pedro Alvarez ddbd857867 lib,rlc_am_nr: make sure that the RB name is logged when logging the header and status PDUs in NR 2022-02-22 21:14:15 +00:00
Pedro Alvarez b399724717 lib,rlc_am_nr: fix wrong if checking if the grant was too small to generate a segment 2022-02-22 21:14:15 +00:00
Codebot 81061fd545 Merge branch 'next' into agpl_next 2022-02-20 23:12: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 c47be649f4 lib,rlc_am_nr: added assert to double check nof_bytes before memcopying into the payload on build_retx_pdu_without_segmentation() 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 4bbbc8ffde lib,rlc_am_nr: fixed incorrectly adding to many segments when receiving a status report with an SO. 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 b13d0ca84a lib,rlc_am_nr: fixed generation of status report when SOs are present. Starting to test retx of segments. 2022-02-16 13:23:32 +00:00
Pedro Alvarez 12e530a800 lib,rlc_am_nr: fix generation of status report when NACKs of lost SDU segments are present. 2022-02-16 13:23:32 +00:00
Pedro Alvarez 7206517846 lib,rlc_am_nr: starting to add unit test for retx'ing segments. Fixed issue in updating tx_next when segmenting the SDU. 2022-02-16 13:23:32 +00:00
Pedro Alvarez 38e4c47f34 lib,rlc_am_nr: added current SO to keep track of the SO for the next RETX. 2022-02-16 13:23:32 +00:00
Pedro Alvarez 5fa72b2b3d lib,rlc_am_nr: fix creation of retx segement from existing segment. 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
Codebot 9664aa3cf4 Merge branch 'next' into agpl_next
# Conflicts:
#	lib/include/srsran/phy/channel/ch_awgn.h
2022-01-23 23:12:27 +01:00
Pedro Alvarez 0f4b64f13f lib,rlc: added macros for hex logging that automatically add the rb_name. changed logging to use new macros in multiple places. 2022-01-18 11:53:37 +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 e9a47ef7b1 lib,rlc_am_nr: added assert to make sure we never write over nof_bytes 2022-01-10 23:25:44 +00:00
Pedro Alvarez 33735852a4 lib,rlc_am_nr: remove unecessary ternary operator. 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 19268281c8 lib,rlc_am_nr: reduced logging level of some messages to debug. 2022-01-10 23:25:44 +00:00
Pedro Alvarez 5532c514ba lib,rlc_am_nr: added logging macros to make sure that the RB name is allways logged. 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