tcp: remove redundant code from tcp_mark_lost_retrans
Arnd Hannemann <hannemann@nets.rwth-aachen.de> noticed and was puzzled by the fact that !tcp_is_fack(tp) leads to early return near the beginning and the later on tcp_is_fack(tp) was still used in an if condition. The later check was a left-over from RFC3517 SACK stuff (== !tcp_is_fack(tp) behavior nowadays) as there wasn't clear way how to handle this particular check cheaply in the spirit of RFC3517 (using only SACK blocks, not holes + SACK blocks as with FACK). I sort of left it there as a reminder but since it's confusing other people just remove it and comment the missing-feature stuff instead. Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@helsinki.fi> Cc: Arnd Hannemann <hannemann@nets.rwth-aachen.de> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Родитель
02276f3c96
Коммит
d0af4160d1
|
@ -1178,10 +1178,18 @@ static void tcp_mark_lost_retrans(struct sock *sk)
|
|||
if (!(TCP_SKB_CB(skb)->sacked & TCPCB_SACKED_RETRANS))
|
||||
continue;
|
||||
|
||||
if (after(received_upto, ack_seq) &&
|
||||
(tcp_is_fack(tp) ||
|
||||
!before(received_upto,
|
||||
ack_seq + tp->reordering * tp->mss_cache))) {
|
||||
/* TODO: We would like to get rid of tcp_is_fack(tp) only
|
||||
* constraint here (see above) but figuring out that at
|
||||
* least tp->reordering SACK blocks reside between ack_seq
|
||||
* and received_upto is not easy task to do cheaply with
|
||||
* the available datastructures.
|
||||
*
|
||||
* Whether FACK should check here for tp->reordering segs
|
||||
* in-between one could argue for either way (it would be
|
||||
* rather simple to implement as we could count fack_count
|
||||
* during the walk and do tp->fackets_out - fack_count).
|
||||
*/
|
||||
if (after(received_upto, ack_seq)) {
|
||||
TCP_SKB_CB(skb)->sacked &= ~TCPCB_SACKED_RETRANS;
|
||||
tp->retrans_out -= tcp_skb_pcount(skb);
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче