From bb4131b33d532356365e0dae7225002cd6b56671 Mon Sep 17 00:00:00 2001 From: hbilel <haithem.bilel@alcatelonetouch.com> Date: Tue, 28 Mar 2017 19:59:52 +0200 Subject: [PATCH] RLC AM add fixes --- openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_retransmit.c | 8 ++++++++ openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_rx_list.c | 4 ++-- openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_status_report.c | 5 ++++- 3 files changed, 14 insertions(+), 3 deletions(-) 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 4cef19253a3..fc31d6e8b6c 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 @@ -1233,6 +1233,10 @@ mem_block_t * rlc_am_get_pdu_to_retransmit( { // TO DO : RLC Notification to RRC + ReEstablishment procedure tx_data_pdu_management->flags.max_retransmit = 1; + LOG_W(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[RLC AM MAX RETX=%d] SN %04d\n", + PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP), + tx_data_pdu_management->retx_count_next, + sn); } } else if (rlc_pP->nb_bytes_requested_by_mac >= 5) @@ -1273,6 +1277,10 @@ mem_block_t * rlc_am_get_pdu_to_retransmit( { // TO DO : RLC Notification to RRC + ReEstablishment procedure tx_data_pdu_management->flags.max_retransmit = 1; + LOG_W(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[RLC AM MAX RETX=%d] SN %04d\n", + PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP), + tx_data_pdu_management->retx_count_next, + sn); } } diff --git a/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_rx_list.c b/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_rx_list.c index 7b0d74c5d9e..33b86f7948e 100644 --- a/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_rx_list.c +++ b/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_rx_list.c @@ -261,7 +261,7 @@ mem_block_t * create_new_segment_from_pdu( RLC_AM_PDU_SET_E(*pdu_segment_header_p); } /* SN */ - (*pdu_segment_header_p) |= (pdu_new_segment_info_p->sn >> 8) ; + (*pdu_segment_header_p) |= ((pdu_new_segment_info_p->sn >> 8) & 0x3); *(pdu_segment_header_p + 1) = (pdu_new_segment_info_p->sn & 0xFF); pdu_segment_header_p += 2; @@ -272,7 +272,7 @@ mem_block_t * create_new_segment_from_pdu( RLC_AM_PDU_SET_LSF(*pdu_segment_header_p); } /* Store SO bytes */ - * (pdu_segment_header_p ) = (pdu_new_segment_info_p->so >> 8) & 0xFF; + * (pdu_segment_header_p ) |= ((pdu_new_segment_info_p->so >> 8) & 0x7F); * (pdu_segment_header_p + 1) = pdu_new_segment_info_p->so & 0xFF; if (num_li) { diff --git a/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_status_report.c b/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_status_report.c index 3a00946160b..b1f53586cb2 100644 --- a/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_status_report.c +++ b/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_status_report.c @@ -378,7 +378,10 @@ rlc_am_receive_process_control_pdu( break; } } - sn_cursor = (sn_cursor + 1) & RLC_AM_SN_MASK; + if (prev_nack_sn != nack_sn) { + /* do not increment sn_cursor in case of several informations for the same nack_sn */ + sn_cursor = (sn_cursor + 1) & RLC_AM_SN_MASK; + } } } -- GitLab