Francisco
be7e78da53
limit allocation of PDCP SDU+Timer buffer to DRB+RLC AM cases
2021-03-02 11:25:38 +01:00
Francisco
a3cb21d378
move undelivered_pdcp_sdus class methods to .cc file. Fixed the forwarding of pending PDCP SNs during S1 handover
2021-03-02 11:25:38 +01:00
Francisco
17fa79f24c
couple the pdcp discard timers and sdu buffer management into same subclass. Add asserts to ensure there is no ambiguity in the PDCP SN assignment and buffering. Extend the discard timer and pdcp sdu buffering to SN lengths above 12
2021-03-02 11:25:38 +01:00
Pedro Alvarez
4723dd0aa9
Converted undelivered sdus queue in the PDCP to use a vector.
...
This was done to improve the performance of the notify_delivery().
2021-03-02 11:25:38 +01:00
Francisco
766018f2b4
fix gcc compilation issue
2021-02-26 16:44:57 +01:00
Francisco
b329e25bbb
move ue phy interfaces to separate interfaces header file
2021-02-26 16:44:57 +01:00
Francisco
b8bd869d0f
move ue rlc interfaces to separate interfaces header file
2021-02-26 16:44:57 +01:00
Francisco
a988351f46
move ue pdcp interfaces to separate interfaces header file
2021-02-26 16:44:57 +01:00
Francisco
ea04104e8e
move ue gw interfaces to separate interfaces header file
2021-02-26 16:44:57 +01:00
Francisco
0b6b62324f
convert rlc am retx_queue to circular buffer
2021-02-24 21:19:15 +01:00
Francisco
138685399e
remove allocations from rlc_am_tx::handle_control_pdu
2021-02-24 12:06:34 +01:00
Francisco
9a6512f4e8
fix RLC AM undelivered PDCN SNs reset bug
2021-02-22 22:56:19 +01:00
Francisco
1ede82bb30
use circular array for buffered PDCP SNs in RLC AM to limit memory allocations
2021-02-22 22:56:19 +01:00
Francisco
2a65bf9636
fix undelivered PDCP SNs buffers in RLC AM to handle SN=-1 case
2021-02-22 22:56:19 +01:00
Francisco
bad2302e31
avoid the use of two arrays for managing buffered pdcp sns in RLC AM
2021-02-22 22:56:19 +01:00
Francisco
299634b319
use of vector to store undelivered PDCP SNs in RLC AM
2021-02-22 22:56:19 +01:00
Pedro Alvarez
d8f3878ce1
RLC failure to deliver notifications and discard timer limits to 1500ms ( #2368 )
...
* Added interfaces for the RLC to notify the PDCP of failure to transmit
SDU
* Limit discard timer to 1500ms, to avoid issues of lingering SDUs in the undeliverd_sdus_queue.
* Fix bug in early exit of notify_delivery and notify_failure
* fix compilation issue in rlc-pdcp notification
Co-authored-by: Francisco <francisco.paisana@softwareradiosystems.com>
2021-02-22 10:36:14 +00:00
Francisco
2f75abcc7a
fix failing rlc am test
2021-02-21 21:24:24 +01:00
Francisco
1d185fb152
use macro for rlc tx window size. refactor tx window clearing
2021-02-21 21:24:24 +01:00
Francisco
abe4f4c7eb
use tx_window to store the map of rlc sn to pdcp sns
2021-02-21 21:24:24 +01:00
Francisco
f86eb84876
conversion of RLC AM tx window from std::map to array
2021-02-21 21:24:24 +01:00
Francisco
047dd2a56d
use function helper for discard timer lookup and stopping in the PDCP
2021-02-21 12:50:32 +01:00
Francisco
82bb0a7d81
implementation of pdcp discard timers using a vector for efficiency
2021-02-21 12:50:32 +01:00
Andre Puschmann
40d7934267
rlc: call PDCP notify without holding Tx lock
...
move notify_info_vec as stack variable and unlock mutex
before calling PDCP notify
2021-02-21 11:03:44 +01:00
Francisco Paisana
cd8ee37f74
Use a reverse lookup to avoid iteration over a std::map ( #2363 )
...
* reuse vector capacity for pdcp sn notification
* use an extra lookup data structure to find PDCP SNs that an RLC SN contains
* fix rlc sn->pdcp sn lookup datastructure in rlc
* fix rlc failing test
2021-02-20 15:08:00 +01:00
Pedro Alvarez
6ecd6e273c
Make sure that the status report is sent in RLF and PDCP reestablishment triggered by Handover
2021-02-19 13:30:48 +00:00
Pedro Alvarez
33808a5cb8
Making sure that SNs don't wrap-around in PDCP with RLC AM.
2021-02-19 12:07:15 +00:00
Pedro Alvarez
0e828aeb4b
Remove unecessary mutex. PDCP metrics are accessed from the stack thread.
2021-02-19 02:55:17 +00:00
Pedro Alvarez
451c305790
Add mutex to isolate metrics_hub thread from the stack thread when
...
getting the metrics from the PDCP
2021-02-19 02:55:17 +00:00
Pedro Alvarez
8873b7c42f
Added computation for the metrics
2021-02-17 18:40:12 +00:00
Pedro Alvarez
d34aba8065
Added interfaces to get metrics from PDCP entities.
2021-02-17 18:40:12 +00:00
Pedro Alvarez
eb2f5b978f
Starting to add metrics to lib/upper/pdcp.cc
2021-02-17 18:40:12 +00:00
Pedro Alvarez
dd6a292d79
Added structure to hold PDCP metrics
2021-02-17 18:40:12 +00:00
Pedro Alvarez
e0542a4651
Fix issue in sending PDCP status PDU from the eNB due to non-existing LCID at the RLC.
2021-02-16 13:21:50 +00:00
Pedro Alvarez
b0fe302f8e
Added interfaces so the upper layers can trigger the PDCP status report. Added ability to the UE to send Status Report aftre reestablishment.
2021-02-16 13:21:50 +00:00
Pedro Alvarez
89a23cec7e
Added statusReportRequired to the PDCP entity config.
2021-02-16 13:21:50 +00:00
Pedro Alvarez
f89b644902
Added function to get control pdu type to the PDCP base class. Shorten logger name in PDCP Status report test.
2021-02-15 11:44:57 +00:00
Pedro Alvarez
9bc08af880
- Added ability to the PDCP LTE entity to send PDCP Status report.
...
- Added handling of PDCP status report to the PDCP LTE entity.
- Added test to the generation and handling of PDCP status report.
2021-02-15 11:44:57 +00:00
Pedro Alvarez
dd6d6f731d
Passing SN provided by upper layers to PDCP entity. Using it to calculate TX_COUNT if passed.
2021-02-12 11:57:36 +00:00
Pedro Alvarez
492ea2a5a8
Addressing reviewers comments to #2290 .
...
Removing unecessary \n for logs and changed log of PDCP info queue
capacity to debug to avoid log spam.
Changed log level for unhandled S1AP messages from error to warning
in EPC to avoid failing tests because of error message.
Changed usage of allocate_unique_buffer to make_unique_buffer()
2021-02-11 15:49:00 +00:00
Pedro Alvarez
fcaaf72187
Starting to add discard functionality to PDCP LTE entity.
...
This includes:
- Adding a queue (implemented with std::map) for undelivered PDUs.
This queue uses the SN used for TX as the key.
- Added discard timer that is started upon reception of the SDU. Upon
expiry of the timeout a discard callback removes undelivered PDUs
from the queue.
- Added the mechanisms to the notify_delivery to remove PDUs from the
undelivered queue when the PDU is ACK'ed.
- Added test case for both timer expiry and acknowledgment.
- Fix up the getter for buffered SDUs to return the undelivered SDUs
- Changed default PDCP discard timer, so AM has a discard timer by
default.
2021-02-11 15:49:00 +00:00
faluco
57f66febfc
Ported the RLC classes to srslog in the lib dir.
2021-02-11 14:37:27 +01:00
faluco
f424f2e113
- Upgraded PDCP classes in lib to use srslog.
...
- Update tests to new changes.
2021-02-11 14:37:27 +01:00
faluco
6359a2d948
- Upgrade the gtpu class in lib dir to srslog.
...
- Propagate old log elimination through all the dependencies of gtpu.
2021-02-11 14:37:27 +01:00
Pedro Alvarez
7b25eac47c
Fix race condition in rlc_am_stress test and other fixes related to this
...
test. The race condition was being cause by write_sdu being called
simultanously to read_pdu, which could cause the read_pdu to try to get
the SDU info before it had been written by the write_sdu.
Changes in this commit include:
- Make sure PDCP sn in included in RLC AM stress test.
- Stop handling control PDU when TX is not enabled in RLC AM.
- Fixed issue with length of the PDCP SN in rlc_stress_test.
- Moved the place were sdu info erase was called to avoid double calls to erase
- Tentative fix for race condition in rlc_am_stress test.
- Added function to print information about undelivered_sdu_info_queue
for debugging.
2021-02-05 12:24:50 +00:00
Pedro Alvarez
261c2b2e03
Removed limit to the undelivered SDUs info queue in RLC AM. Printing a warning if the queue is getting large instead.
2021-02-05 12:24:50 +00:00
Pedro Alvarez
24db20bcca
Removed some unused variables after changing method of tracking notifications. Removed rlc_am_notify_pdcp test file. Testing is now in rlc_am_test.cc
2021-02-05 12:24:50 +00:00
Pedro Alvarez
6c071a784c
Changed notification mechanisms to use map of acked SNs instead of acked bytes.
...
This was required due to an issue where bytes were counted twice when a
packet had been lost.
2021-02-05 12:24:50 +00:00
Pedro Alvarez
389cf4d943
Moved updating the notify info to it's own function.
2021-02-05 12:24:50 +00:00
Pedro Alvarez
de669d214a
Fix test header and queue_capacity check in RLC notifications.
...
Also, remove unecessary nullptr initializaion and fixup some newlines.
2021-02-05 12:24:50 +00:00