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
e6d976d115
lib,rlc_am_nr: fixed stack smashing bug that happened when too many NACKs were present in the status report
3 years ago
Pedro Alvarez
ddbd857867
lib,rlc_am_nr: make sure that the RB name is logged when logging the header and status PDUs in NR
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
38e4c47f34
lib,rlc_am_nr: added current SO to keep track of the SO for the next RETX.
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
9bd368e0a9
lib,rlc: changed back status and header logging helpers to log directly. Make sure RB name is automatically logged.
3 years ago
Pedro Alvarez
b53da22eb1
lib,rlc: changed return of string helper functions from char* to std::string to avoid UB
3 years ago
Pedro Alvarez
e157806db2
lib,rlc_am_lte: removed RB_NAME macro. changed status and data pdu logging helpers to return C strings. Using new logging macros to make sure that RB name is included when logging status and amd pdus.
3 years ago
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.
3 years ago
Pedro Alvarez
b687072815
lib,rlc: added rb_name and logger to rlc_common. Added macros to help making sure bearer name is always included to the log to rlc_common.h. Started using said macros in TM, UM and AM entities.
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
5532c514ba
lib,rlc_am_nr: added logging macros to make sure that the RB name is allways logged.
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
90ed04afd1
Fix unitialized header warning on rlc_amd_tx_pdu for ARM.
3 years ago
Pedro Alvarez
dface7e4af
lib,rlc_am_nr: make sure header is initialized.
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
e3b95ef131
lib,rlc_am_nr: remove unused structure
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
63657ddfe6
Moved retx queue to rlc_am_data_structs, to enable it being re-used in RLC AM NR
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
37f8dba4ac
Make sure rlc_am_nr_header_t is initialized.
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
Andre Puschmann
1bec07a64a
rlc_um_nr: fix starting/stopping of reassemble timer
3 years ago
Pedro Alvarez
f99d6bc224
lib,rlc: changed get_bearer() to get_lcid().
3 years ago
Pedro Alvarez
3b150e26cb
rlc_am_nr: Changed header_t to HeaderType typename in RLC data structs.
...
Fix issue in clear_pdcp_sdu()
3 years ago
Pedro Alvarez
123ac16653
rlc_am_nr: fixed issue with pointers from rx entity to tx entity
3 years ago
Pedro Alvarez
f99e841421
Changed using a rlc_am_lte and rlc_am_nr entity, to a single rlc_am entity.
3 years ago
Pedro Alvarez
eefedcfccd
rlc_am_nr: renamed rlc_am_base to just rlc_am
3 years ago
Pedro Alvarez
aef87d5366
rlc_am_nr: Change rlc_am_base to use unique_ptr to hold rx/tx entities
3 years ago
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
3 years ago
Pedro Alvarez
54be15e7a6
Moved write pdu to rlc_am_base::rlc_am_base_rx
3 years ago
Pedro Alvarez
476f9e1156
Changed logger initialization in RLC AM entities
3 years ago
Pedro Alvarez
022c51493b
Refactored RLC AM NR/LTE Rx and Tx entities to use a rlc_am_base_rx/tx class.
...
This was done to make it easier to share entity specific code between LTE and NR.
This removes the previously used templates.
3 years ago
Pedro Alvarez
b15f63f32f
Added an RLC AM base class to avoid code duplication in the RLC AM NR entity.
...
This class is based on a template that receives as argument the
rlc_am_*_tx/rx entities, so that those are different for LTE and NR.
Moved code from rlc_am_lte/nr entities so that they use the new base class.
3 years ago
Pedro Alvarez
d528d8af4c
Added initial skeleton for RLC AM NR entity
3 years ago
Pedro Alvarez
2bb249bf09
Moved RLC AM LTE and NR packing functions to their own file.
3 years ago
Pedro Alvarez
f93d428e49
Moved RLC AM data structures to their own file
3 years ago
Carlo Galiotto
d95c31d2de
rlc,rrc,nr: fix rlc bearer string diplayed in logs
...
Signed-off-by: Carlo Galiotto <carlo@srs.io>
3 years ago
Francisco
7ad1ad800e
lte,enb,rlc: atomically compute DL buffer state and update the scheduler in the eNB
3 years ago
Ismael Gomez
80c48a8b01
rlc: protect access to tx_enabled
3 years ago
Francisco
7aa5f731ce
lte,enb,rlc: push to scheduler pending prioritized bytes both in case of RLC timer expiry or in case of new buffer state detection
3 years ago
Francisco
4a58c10f30
lte,enb,rlc: compute and forward to scheduler the number of bytes pending for retx and status pdu in RLC AM bearer
3 years ago
faluco
fa351cd285
Rename functions that contain the unsafe word to nolock.
...
The term "unsafe" does not clearly state that the function is not locking the shared date and it sounds "dangerous", so use a more explicit term.
3 years ago
Andre Puschmann
59e1bca3f5
rlc_am_lte: fix potential crash when attempting to resize tx queue
...
under some circumstances it could happen that the RLC is configured
when SDUs are already being written to the queue. The resize
operation of the underlying container would fail in this case.
Make sure to empty the queue before doing the resize.
3 years ago
faluco
7b079fe289
Fix a data race in rlc TM metrics.
3 years ago
faluco
edb7342aef
Fix data race in rlc UM metrics.
3 years ago
faluco
d009160ba6
Fix data race in the metrics of the rlc.
3 years ago
Francisco Paisana
f518861ebc
fix location of support/ folder. Created macros for ASSERT_EQ and ASSERT_NEQ
3 years ago
Francisco Paisana
599fc978a5
improvement of srsran_assert design, with specializations to enable/disable assertions based on compile flags other than ASSERTS_ENABLED. Creation of the support/ folder
3 years ago
Andre Puschmann
1c3a03cb2b
rlc: fix memleak in queue_rx_pdu
...
* alternative to #3141
* use byte_buffer as queue element
3 years ago
Andre Puschmann
4379c20eb9
rlc_am_lte: avoid locking of Rx mutex twice when generating status PDU
...
call reset_status(), which now is an private method directly when
building a status PDU. No need for the Tx side to call Rx again.
3 years ago
Andre Puschmann
53a7dc78ee
rlc_am_lte: replace do_status boolean with atomic
...
the do_status is queried from the Tx code frequently. To reduce
chances to delay the execution because the RLC Rx side is currently
holding the mutex we can use an atomic.
3 years ago
Pedro Alvarez
171d5727be
Moved lib RLC into it's own folder
3 years ago