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