One thing that puzzles me is that the congestion window (tp->snd_cwnd) is not reduced immediately when TCP_CA_CWR state is entered.
Instead, ca->cwnd_cnt is updated with the intended reduction (line 580)
The actual CWND reduction is done on the per-ACK processing (line 446). I get the impression that this will slow down the congestion window reduction and that the slow start can overshoot more ?
I realize that it is quite likely that I misunderstand the code here
I am looking at the code for TCP Prague at https://github.com/L4STeam/linux/blob/testing/net/ipv4/tcp_prague.c
One thing that puzzles me is that the congestion window (tp->snd_cwnd) is not reduced immediately when TCP_CA_CWR state is entered. Instead, ca->cwnd_cnt is updated with the intended reduction (line 580)
The actual CWND reduction is done on the per-ACK processing (line 446). I get the impression that this will slow down the congestion window reduction and that the slow start can overshoot more ?
I realize that it is quite likely that I misunderstand the code here