lib,rlc_am_nr: support also NACK ranges without SO_start/end. Fix for NACK ranges of sizee == 1

master
Pedro Alvarez 3 years ago
parent 6d8357bee9
commit e01bbb8f79

@ -833,16 +833,18 @@ void rlc_am_nr_tx::handle_control_pdu(uint8_t* payload, uint32_t nof_bytes)
range_sn++) { range_sn++) {
rlc_status_nack_t nack = {}; rlc_status_nack_t nack = {};
nack.nack_sn = range_sn; nack.nack_sn = range_sn;
if (range_sn == status.nacks[nack_idx].nack_sn) { if (status.nacks[nack_idx].has_so) {
// First SN if (range_sn == status.nacks[nack_idx].nack_sn) {
nack.has_so = true; // First SN
nack.so_start = status.nacks[nack_idx].so_start; nack.has_so = true;
nack.so_end = so_end_of_sdu; nack.so_start = status.nacks[nack_idx].so_start;
} else if (range_sn == (status.nacks[nack_idx].nack_sn + status.nacks[nack_idx].nack_range - 1)) { nack.so_end = so_end_of_sdu;
// Last SN } else if (range_sn == (status.nacks[nack_idx].nack_sn + status.nacks[nack_idx].nack_range - 1)) {
nack.has_so = true; // Last SN
nack.so_start = 0; nack.has_so = true;
nack.so_end = status.nacks[nack_idx].so_end; // This might be first+last item at the same time, so don't change so_start here
nack.so_end = status.nacks[nack_idx].so_end;
}
} }
handle_nack(nack, retx_sn_set); handle_nack(nack, retx_sn_set);
} }

Loading…
Cancel
Save