If timestamps are enabled, the actions does by a retransmission timeout were rolled back,
when they should not. We need to make sure the incoming packet advances the SND.UNA.
To do this, remove the incorrect upfront check and extend the check in the fast path to
handle also the case of timestamps.
This addresses the recently observed panics with the message: sent too much.
Any specific reason to write the or statement as two separate if clauses?
I believe in other parts we do it ((true & x & y & z) | (false & a & b &c )) - as multiline checks;
I don't like them both get executed "always", so at the very least, an "else" just before the 2nd if would be good.
The logic looks ok to me.