Improve PRR initial transmission timing

Reviewed By:	tuexen, #transport
MFC after:	3 days
Sponsored by:	NetApp, Inc.
Differential Revision:	https://reviews.freebsd.org/D28953
This commit is contained in:
Richard Scheffenegger 2021-02-28 15:46:38 +01:00
parent d01032736c
commit e9071000c9

View File

@ -2589,7 +2589,7 @@ tcp_do_segment(struct mbuf *m, struct tcphdr *th, struct socket *so,
pipe = (tp->snd_nxt - tp->snd_fack) +
tp->sackhint.sack_bytes_rexmit;
tp->sackhint.prr_delivered += del_data;
if (pipe > tp->snd_ssthresh) {
if (pipe >= tp->snd_ssthresh) {
if (tp->sackhint.recover_fs == 0)
tp->sackhint.recover_fs =
imax(1, tp->snd_nxt - tp->snd_una);
@ -2689,7 +2689,8 @@ tcp_do_segment(struct mbuf *m, struct tcphdr *th, struct socket *so,
* snd_ssthresh is already updated by
* cc_cong_signal.
*/
tp->sackhint.prr_delivered = 0;
tp->sackhint.prr_delivered =
tp->sackhint.sacked_bytes;
tp->sackhint.sack_bytes_rexmit = 0;
tp->sackhint.recover_fs = max(1,
tp->snd_nxt - tp->snd_una);
@ -3964,7 +3965,7 @@ tcp_prr_partialack(struct tcpcb *tp, struct tcphdr *th)
/*
* Proportional Rate Reduction
*/
if (pipe > tp->snd_ssthresh) {
if (pipe >= tp->snd_ssthresh) {
if (tp->sackhint.recover_fs == 0)
tp->sackhint.recover_fs =
imax(1, tp->snd_nxt - tp->snd_una);