lib,rlc_am_nr: fix nack ranges with so

This commit is contained in:
Pedro Alvarez 2022-04-27 21:25:06 +01:00
parent 855ab8f7fd
commit c386d89577
2 changed files with 7 additions and 2 deletions

View File

@ -838,10 +838,14 @@ void rlc_am_nr_tx::handle_control_pdu(uint8_t* payload, uint32_t nof_bytes)
nack.nack_sn = range_sn;
if (range_sn == status.nacks[nack_idx].nack_sn) {
// First SN
nack.has_so = true;
nack.so_start = status.nacks[nack_idx].so_start;
nack.so_end = so_end_of_sdu;
} else if (range_sn == (status.nacks[nack_idx].nack_sn + status.nacks[nack_idx].nack_range - 1)) {
// Last SN
nack.so_end = status.nacks[nack_idx].so_end;
nack.has_so = true;
nack.so_start = 0;
nack.so_end = status.nacks[nack_idx].so_end;
}
handle_nack(nack, retx_sn_set);
}

View File

@ -2544,8 +2544,9 @@ int rx_nack_range_test(rlc_am_nr_sn_size_t sn_size)
nack.nack_sn = 1;
nack.has_nack_range = true;
nack.nack_range = 3;
nack.has_so = true;
nack.so_start = 2;
nack.so_end = 1;
nack.so_end = 0;
status.push_nack(nack);
byte_buffer_t status_pdu;
rlc_am_nr_write_status_pdu(status, sn_size, &status_pdu);