Commit Graph

55 Commits

Author SHA1 Message Date
Codebot 38a520b3c2 Merge branch 'next' into agpl_next 2022-07-24 21:12:22 +00:00
Pedro Alvarez e4207b177f lib,rlc_am_lte: added fix for full tx window with wraparround 2022-07-21 11:26:30 +01:00
Pedro Alvarez b001d6c10e lib,rlc_am_lte: fix checkers for the TX window full 2022-07-21 11:26:30 +01:00
Codebot ac06cf7453 Merge branch 'next' into agpl_next 2022-06-12 21:12:20 +00:00
Robert Falkenberg fccfd5e140 lib,rlc_am_{lte,nr}: fix/add tx_window overrun protection
This commit fixes as bug causing a crash of the eNB in case
of many pending RETX and the reception of a trimmed PDU.
The following sequence leads to a crash:
- RETX queue contains many PDUs for RETX
- Receive trimmed PDU containing a trimmed subset of NACKs
- RETX queue is cleared and re-populated with a trimmed subset
- After all RETX (/!\ trimmed subset) is done, continue TX new PDUs
- tx_window blows up
- tx_window overflows if another status PDU is not received in time
- Overflow overwrites oldest element in tx_window
- Handling of next status PDU fails due to missing elements in tx_window

Related PR #4029
2022-06-06 11:26:57 +02:00
Codebot 4d2b5b8eda Adding AGPL copyright to new files 2022-04-29 07:28:44 +00:00
Codebot 9211ad7d51 Merge branch 'next' into agpl_next 2022-04-29 07:28:41 +00:00
Pedro Alvarez ee06a8893b lib,rlc_am_nr: fix wrong full sdu queue check 2022-04-26 22:01:47 +02:00
Codebot 123f766935 Merge branch 'next' into agpl_next 2022-04-26 08:28:16 +00: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 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
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
Andre Puschmann aaceb029eb rlc_am_lte: fix wrong fmt string 2022-01-19 12:26:18 +01:00
Pedro Alvarez 9bd368e0a9 lib,rlc: changed back status and header logging helpers to log directly. Make sure RB name is automatically logged. 2022-01-18 11:53:37 +00:00
Pedro Alvarez b53da22eb1 lib,rlc: changed return of string helper functions from char* to std::string to avoid UB 2022-01-18 11:53:37 +00:00
Pedro Alvarez b46c5423f0 lib,rlc: make sure TM rb name is initialized. changed rlc_um_lte to use new logging macros 2022-01-18 11:53:37 +00:00
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. 2022-01-18 11:53:37 +00: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
Codebot 21525935ab Merge branch 'next' into agpl_next
# Conflicts:
#	srsue/hdr/phy/ue_lte_phy_base.h
#	srsue/hdr/phy/ue_nr_phy_base.h
2021-12-19 23:12:24 +01:00
Pedro Alvarez 57fc2470ad lib,rlc_am_lte: added some debug logging to t-PollRetranmission expiry and re-arming. 2021-12-09 11:30:59 +00:00
Pedro Alvarez ee4bf85209 lib,rlc_am_lte: check segment's polling requirements after updating the RETX queue. This makes sure that if the RETX and TX queues are empty after the last segment, polling is requested and the t-PollRetransmission is restarted 2021-12-09 11:30:59 +00:00
Codebot e0734e584d Merge branch 'next' into agpl_next
# Conflicts:
#	lib/include/srsran/rrc/nr/rrc_nr_cfg_utils.h
#	lib/src/rrc/CMakeLists.txt
#	lib/src/rrc/nr/rrc_nr_cfg_utils.cc
2021-11-21 23:12:38 +01:00
Codebot 3a9014802d Merge branch 'next' into agpl_next
# Conflicts:
#	srsenb/hdr/stack/rrc/nr/rrc_config_nr.h
#	srsenb/hdr/stack/rrc/rrc_nr.h
#	srsenb/src/stack/mac/nr/sched_nr_signalling.cc
#	srsenb/test/rrc/rrc_nr_test.cc
2021-11-14 23:12:22 +01: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 aef87d5366 rlc_am_nr: Change rlc_am_base to use unique_ptr to hold rx/tx entities 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
Pedro Alvarez 54be15e7a6 Moved write pdu to rlc_am_base::rlc_am_base_rx 2021-11-12 22:41:37 +00:00
Pedro Alvarez 476f9e1156 Changed logger initialization in RLC AM entities 2021-11-12 22:41:37 +00:00
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.
2021-11-12 22:41:37 +00:00
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.
2021-11-12 22:41:37 +00:00
Pedro Alvarez 2bb249bf09 Moved RLC AM LTE and NR packing functions to their own file. 2021-11-04 16:12:07 +00:00
Pedro Alvarez f93d428e49 Moved RLC AM data structures to their own file 2021-11-04 16:12:07 +00:00
Codebot 1cd26af06b Merge branch 'next' into agpl_next 2021-10-28 13:01:49 +02:00
Francisco 7ad1ad800e lte,enb,rlc: atomically compute DL buffer state and update the scheduler in the eNB 2021-10-26 21:44:59 +02:00
Codebot 2cda208936 Merge branch 'next' into agpl_next 2021-10-26 10:32:37 +02:00
Ismael Gomez 80c48a8b01 rlc: protect access to tx_enabled 2021-10-21 21:31:21 +02:00
Francisco d60950d0f3 lte,enb,rlc: change new_tx and prio_tx variable names to snake_case and ensure they are zero initialized 2021-10-21 09:31:03 +01:00
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 2021-10-21 09:31:03 +01:00
Francisco 4a58c10f30 lte,enb,rlc: compute and forward to scheduler the number of bytes pending for retx and status pdu in RLC AM bearer 2021-10-21 09:31:03 +01:00
Codebot 8c3332f894 Merge branch 'next' into agpl_next
# Conflicts:
#	srsenb/hdr/stack/upper/pdcp_nr.h
#	srsenb/hdr/stack/upper/rlc_nr.h
#	srsenb/src/stack/upper/pdcp_nr.cc
#	srsenb/src/stack/upper/rlc_nr.cc
2021-10-03 23:13:30 +02:00
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.
2021-09-27 13:26:21 +02:00
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.
2021-09-27 11:35:42 +02:00
Codebot ecd0580b9e Merge branch 'next' into agpl_next 2021-09-26 23:12:44 +02:00
faluco d009160ba6 Fix data race in the metrics of the rlc. 2021-09-17 11:34:28 +02:00
Codebot 635d0bc6e9 Merge branch 'next' into agpl_next 2021-08-08 23:12:19 +02:00
Andre Puschmann 7726acad41 rlc_am_lte: fix counting of retx of entire PDUs and PDU segments
this patch fixes a bug discovered in a real network where the DL CQI of a
user degraded repidly in very short time. A relativly big RLC PDU that
was still sent with the good CQI in a big grant now needs to be split
across many tiny segments because the CQI degraded so much.

The retx couting for each transmitted segment caused the retx counter to
reach maxRetx quickly.

With this patch we do not increment the retx counter for each transmitted
PDU or segment of a PDU but instead only increment the counter when
a given SN is added to the retx queue. This can happen either:
a) if the SN is negativly acknowledged and was not already on the retx queue,
b) no new data is available for tx and a SN is selected for retx.

This is in accordance with TS 36.322 which handles retx counting in section
5.2.1 according to the above description.
2021-08-04 13:06:38 +02:00
Codebot 516951c41c Merge branch 'next' into agpl_next
# Conflicts:
#	lib/include/srsran/interfaces/rrc_nr_interface_types.h
#	lib/include/srsran/phy/enb/enb_dl_nr.h
#	test/phy/nr_dl_flood.cc
2021-07-11 23:12:20 +02:00
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.
2021-07-06 12:50:48 +02:00