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 4cef19253a..fc31d6e8b6 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 7b0d74c5d9..33b86f7948 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 3a00946160..b1f53586cb 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