diff --git a/openair2/LAYER2/nr_rlc/nr_rlc_entity_am.c b/openair2/LAYER2/nr_rlc/nr_rlc_entity_am.c index c2d41cedb4..91985393cb 100644 --- a/openair2/LAYER2/nr_rlc/nr_rlc_entity_am.c +++ b/openair2/LAYER2/nr_rlc/nr_rlc_entity_am.c @@ -1638,7 +1638,10 @@ static int generate_tx_pdu(nr_rlc_entity_am_t *entity, char *buffer, int size) entity->common.bstatus.tx_size -= pdu_size; /* assign SN to SDU */ - sdu->sdu->sn = entity->tx_next; + if (sdu->sdu->sn == -1) { + sdu->sdu->sn = entity->tx_next; + entity->tx_next = (entity->tx_next + 1) % entity->sn_modulus; + } /* segment if necessary */ if (pdu_size > size) { @@ -1656,10 +1659,6 @@ static int generate_tx_pdu(nr_rlc_entity_am_t *entity, char *buffer, int size) + next_sdu->size; } - /* update tx_next if the SDU segment is the last */ - if (sdu->is_last) - entity->tx_next = (entity->tx_next + 1) % entity->sn_modulus; - /* put SDU/SDU segment in the wait list */ /* speedup: check end of wait list, probably the new sdu comes after */ if (entity->wait_end == NULL