rlc_am: count every segment retx as a full retx for this SN

previously we were only counting retx if we retx the start of a segment.
this could lead to unwanted behaviour, i.e., not counting retx
correctly and thus not triggering the maxretx attempt, if the receive
always sends NACKs with a SO_start.

The RLC spec is not clear on how this should be handled correctly but
IMHO using an integer number of retx is reasonable, even for segments
that might be retransmitted more often.

The alternative of using a fractional retx counter that may be increamented
proportional to the segment size that is retx is another alternative
but considered too complex to implement (and test correctly).
This commit is contained in:
Andre Puschmann 2021-04-07 20:39:02 +02:00
parent c74661ae95
commit 0fdcea2924
1 changed files with 1 additions and 5 deletions

View File

@ -849,11 +849,7 @@ int rlc_am_lte::rlc_am_lte_tx::build_segment(uint8_t* payload, uint32_t nof_byte
retx_queue.front().so_start = retx.so_end;
}
// increment counter for retx of first segment
if (retx.so_start == 0) {
tx_window[retx.sn].retx_count++;
}
tx_window[retx.sn].retx_count++;
check_sn_reached_max_retx(retx.sn);
// Write header and pdu