From 7c652df820ad6cc646da1303699d8403054ae09e Mon Sep 17 00:00:00 2001 From: Cedric Roux Date: Sun, 20 Feb 2022 15:56:56 +0100 Subject: [PATCH 1/2] nr rlc: bugfix - so_end was used instead of sn_end --- openair2/LAYER2/nr_rlc/nr_rlc_entity_am.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openair2/LAYER2/nr_rlc/nr_rlc_entity_am.c b/openair2/LAYER2/nr_rlc/nr_rlc_entity_am.c index d7923e5490..aaa4faf58c 100644 --- a/openair2/LAYER2/nr_rlc/nr_rlc_entity_am.c +++ b/openair2/LAYER2/nr_rlc/nr_rlc_entity_am.c @@ -1044,7 +1044,7 @@ next_pdu: set_end_different_sdu: /* don't go more than rx_highest_status - 1 */ if (sn_compare_rx(entity, entity->rx_highest_status, cur->sn) <= 0) { - ret.so_end = (entity->rx_highest_status - 1 + entity->sn_modulus) % + ret.sn_end = (entity->rx_highest_status - 1 + entity->sn_modulus) % entity->sn_modulus; ret.so_end = 0xffff; return ret; From 78f0c8ff29796ee67cb53f88f4e8ae25c321011d Mon Sep 17 00:00:00 2001 From: Cedric Roux Date: Sun, 20 Feb 2022 16:00:54 +0100 Subject: [PATCH 2/2] nr rlc: harmonize computation of sn_count Functions generate_missing() and missing_size() had different computations of sn_count. Not sure if it is a problem or not, but let's do the same in both functions. Hopefully the computation is correct. --- openair2/LAYER2/nr_rlc/nr_rlc_entity_am.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/openair2/LAYER2/nr_rlc/nr_rlc_entity_am.c b/openair2/LAYER2/nr_rlc/nr_rlc_entity_am.c index aaa4faf58c..af8cb5715a 100644 --- a/openair2/LAYER2/nr_rlc/nr_rlc_entity_am.c +++ b/openair2/LAYER2/nr_rlc/nr_rlc_entity_am.c @@ -1305,9 +1305,8 @@ static int missing_size(nr_rlc_entity_am_t *entity, missing_data_t *m, missing_data_t m_nack; /* be careful to limit a range to 255 SNs, that is: cut if needed */ - sn_count = m->sn_end - m->sn_start + 1; - if (sn_count < 0) - sn_count += entity->sn_modulus; + sn_count = (m->sn_end - m->sn_start + entity->sn_modulus) + % entity->sn_modulus + 1; sn_start = m->sn_start;