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,6 +833,7 @@ 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 (status.nacks[nack_idx].has_so) {
if (range_sn == status.nacks[nack_idx].nack_sn) { if (range_sn == status.nacks[nack_idx].nack_sn) {
// First SN // First SN
nack.has_so = true; nack.has_so = true;
@ -841,9 +842,10 @@ void rlc_am_nr_tx::handle_control_pdu(uint8_t* payload, uint32_t nof_bytes)
} else if (range_sn == (status.nacks[nack_idx].nack_sn + status.nacks[nack_idx].nack_range - 1)) { } else if (range_sn == (status.nacks[nack_idx].nack_sn + status.nacks[nack_idx].nack_range - 1)) {
// Last SN // Last SN
nack.has_so = true; nack.has_so = true;
nack.so_start = 0; // 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; nack.so_end = status.nacks[nack_idx].so_end;
} }
}
handle_nack(nack, retx_sn_set); handle_nack(nack, retx_sn_set);
} }
} else { } else {

Loading…
Cancel
Save