From 822abc763ef283cec91384b78c7c4c20cc60c00d Mon Sep 17 00:00:00 2001 From: Andre Puschmann Date: Wed, 24 Feb 2021 15:15:26 +0100 Subject: [PATCH] rlc_am_lte: when max retx is reached, remove SN from tx window this fixes an issue when the RLC bearer isn't reset from RRC. In this case, the RLC would retransmit the same PDU over and over again despite the max retx counter being reached. --- lib/src/upper/rlc_am_lte.cc | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lib/src/upper/rlc_am_lte.cc b/lib/src/upper/rlc_am_lte.cc index fd298068a..60863cefc 100644 --- a/lib/src/upper/rlc_am_lte.cc +++ b/lib/src/upper/rlc_am_lte.cc @@ -625,6 +625,12 @@ int rlc_am_lte::rlc_am_lte_tx::build_retx_pdu(uint8_t* payload, uint32_t nof_byt logger.warning("%s Signaling max number of reTx=%d for for SN=%d", RB_NAME, tx_window[retx.sn].retx_count, retx.sn); parent->rrc->max_retx_attempted(); parent->pdcp->notify_failure(parent->lcid, tx_window[retx.sn].pdcp_sns); + + // remove SN from Tx window, advance window + tx_window.remove_pdu(retx.sn); + vt_a = (vt_a + 1) % MOD; + vt_ms = (vt_ms + 1) % MOD; + return 0; } logger.info(payload,