mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-13 05:54:23 +08:00
[TCP]: Extend reordering detection to cover CA_Loss partially
This implements more accurately what is stated in sacktag's overall comment: "Both of these heuristics are not used in Loss state, when we cannot account for retransmits accurately." When CA_Loss state is entered, the state changer ensures that undo_marker is only set if no TCPCB_RETRANS skbs were found, thus having non-zero undo_marker in CA_Loss basically tells that the R-bits still accurately reflect the current state of TCP. Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@helsinki.fi> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
b9d86585dc
commit
f577111302
@ -1511,7 +1511,8 @@ tcp_sacktag_write_queue(struct sock *sk, struct sk_buff *ack_skb, u32 prior_snd_
|
||||
|
||||
tcp_verify_left_out(tp);
|
||||
|
||||
if ((reord < tp->fackets_out) && icsk->icsk_ca_state != TCP_CA_Loss &&
|
||||
if ((reord < tp->fackets_out) &&
|
||||
((icsk->icsk_ca_state != TCP_CA_Loss) || tp->undo_marker) &&
|
||||
(!tp->frto_highmark || after(tp->snd_una, tp->frto_highmark)))
|
||||
tcp_update_reordering(sk, tp->fackets_out - reord, 0);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user