The branch main has been updated by rscheff:

URL: 
https://cgit.FreeBSD.org/src/commit/?id=0b0f8b359d0b94b09cfec35e5d5de01b23c7fbf1

commit 0b0f8b359d0b94b09cfec35e5d5de01b23c7fbf1
Author:     Richard Scheffenegger <rsch...@freebsd.org>
AuthorDate: 2021-03-01 15:25:46 +0000
Commit:     Richard Scheffenegger <rsch...@freebsd.org>
CommitDate: 2021-03-01 15:26:05 +0000

    calculate prr_out correctly when pipe < ssthresh
    
    Reviewed By:    #transport, tuexen
    MFC after:      3 days
    Sponsored by:   NetApp, Inc.
    Differential Revision:  https://reviews.freebsd.org/D28998
---
 sys/netinet/tcp_input.c | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

diff --git a/sys/netinet/tcp_input.c b/sys/netinet/tcp_input.c
index d802bc8f47ae..eda41d36ab88 100644
--- a/sys/netinet/tcp_input.c
+++ b/sys/netinet/tcp_input.c
@@ -2600,10 +2600,12 @@ tcp_do_segment(struct mbuf *m, struct tcphdr *th, 
struct socket *so,
                                                } else {
                                                        if 
(V_tcp_do_prr_conservative)
                                                                limit = 
tp->sackhint.prr_delivered -
-                                                                       
tp->sackhint.sack_bytes_rexmit;
+                                                                       
(tp->sackhint.sack_bytes_rexmit +
+                                                                       
(tp->snd_nxt - tp->snd_recover));
                                                        else
                                                                limit = 
imax(tp->sackhint.prr_delivered -
-                                                                           
tp->sackhint.sack_bytes_rexmit,
+                                                                           
(tp->sackhint.sack_bytes_rexmit +
+                                                                           
(tp->snd_nxt - tp->snd_recover)),
                                                                            
del_data) + maxseg;
                                                        snd_cnt = 
imin(tp->snd_ssthresh - pipe, limit);
                                                }
@@ -3976,10 +3978,12 @@ tcp_prr_partialack(struct tcpcb *tp, struct tcphdr *th)
        } else {
                if (V_tcp_do_prr_conservative)
                        limit = tp->sackhint.prr_delivered -
-                           tp->sackhint.sack_bytes_rexmit;
+                           (tp->sackhint.sack_bytes_rexmit +
+                           (tp->snd_nxt - tp->snd_recover));
                else
                        limit = imax(tp->sackhint.prr_delivered -
-                                   tp->sackhint.sack_bytes_rexmit,
+                                   (tp->sackhint.sack_bytes_rexmit +
+                                   (tp->snd_nxt - tp->snd_recover)),
                                    del_data) + maxseg;
                snd_cnt = imin((tp->snd_ssthresh - pipe), limit);
        }
_______________________________________________
dev-commits-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/dev-commits-src-all
To unsubscribe, send any mail to "dev-commits-src-all-unsubscr...@freebsd.org"

Reply via email to