From be5bbbd86ca31666af8fbbf66d78e575266d6543 Mon Sep 17 00:00:00 2001 From: Wu Jing <wu.jing@cn.fujitsu.com> Date: Sat, 8 Jun 2019 13:34:58 +0900 Subject: [PATCH] clear rlc-am data after retransmission 5 times when doing rrcconnectionreestablishment --- .../LAYER2/RLC/AM_v9.3.0/rlc_am_retransmit.c | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_retransmit.c b/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_retransmit.c index 2f001bdcfd8..4d34338ea98 100644 --- a/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_retransmit.c +++ b/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_retransmit.c @@ -806,6 +806,7 @@ mem_block_t * rlc_am_get_pdu_to_retransmit( rlc_sn_t sn = rlc_pP->vt_a; rlc_sn_t sn_end = rlc_pP->vt_s; mem_block_t* pdu_p = NULL; + mem_block_t* mb_p = NULL; rlc_am_tx_data_pdu_management_t* tx_data_pdu_management; //Assertion(eNB)_PRAN_DesignDocument_annex No.769 if((rlc_pP->retrans_num_pdus <= 0) || (rlc_pP->vt_a == rlc_pP->vt_s)) @@ -884,6 +885,18 @@ mem_block_t * rlc_am_get_pdu_to_retransmit( PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP), tx_data_pdu_management->retx_count_next, sn); + mb_p = rlc_pP->tx_data_pdu_buffer[sn % RLC_AM_WINDOW_SIZE].mem_block; + if(mb_p != NULL){ + free_mem_block(mb_p, __func__); + tx_data_pdu_management->mem_block = NULL; + tx_data_pdu_management->flags.retransmit = 0; + tx_data_pdu_management->flags.ack = 1; + tx_data_pdu_management->flags.transmitted = 0; + rlc_pP->retrans_num_bytes_to_retransmit -= tx_data_pdu_management->retx_payload_size; + tx_data_pdu_management->retx_payload_size = 0; + tx_data_pdu_management->num_holes = 0; + rlc_pP->retrans_num_pdus --; + } } } else if (rlc_pP->nb_bytes_requested_by_mac >= 5) @@ -938,6 +951,18 @@ mem_block_t * rlc_am_get_pdu_to_retransmit( PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP), tx_data_pdu_management->retx_count_next, sn); + mb_p = rlc_pP->tx_data_pdu_buffer[sn % RLC_AM_WINDOW_SIZE].mem_block; + if(mb_p != NULL){ + free_mem_block(mb_p, __func__); + tx_data_pdu_management->mem_block = NULL; + tx_data_pdu_management->flags.retransmit = 0; + tx_data_pdu_management->flags.ack = 1; + tx_data_pdu_management->flags.transmitted = 0; + rlc_pP->retrans_num_bytes_to_retransmit -= tx_data_pdu_management->retx_payload_size; + tx_data_pdu_management->retx_payload_size = 0; + tx_data_pdu_management->num_holes = 0; + rlc_pP->retrans_num_pdus --; + } } } -- GitLab