The branch main has been updated by rscheff:

URL: 
https://cgit.FreeBSD.org/src/commit/?id=0533fab89e37caab886568df88d9f939e85eeb6c

commit 0533fab89e37caab886568df88d9f939e85eeb6c
Author:     Richard Scheffenegger <rsch...@freebsd.org>
AuthorDate: 2021-03-25 22:18:06 +0000
Commit:     Richard Scheffenegger <rsch...@freebsd.org>
CommitDate: 2021-03-25 22:23:48 +0000

    tcp: Perform simple fast retransmit when SACK Blocks are missing on SACK 
session
    
    MFC after: 2 weeks
    Reviewed By: #transport, rrs
    Sponsored by: NetApp, Inc.
    Differential Revision: https://reviews.freebsd.org/D28634
---
 sys/netinet/tcp_input.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/sys/netinet/tcp_input.c b/sys/netinet/tcp_input.c
index bdc0e872c36e..685a5e020c3b 100644
--- a/sys/netinet/tcp_input.c
+++ b/sys/netinet/tcp_input.c
@@ -2564,6 +2564,7 @@ tcp_do_segment(struct mbuf *m, struct tcphdr *th, struct 
socket *so,
                                 */
                                if (th->th_ack != tp->snd_una ||
                                    ((tp->t_flags & TF_SACK_PERMIT) &&
+                                   (to.to_flags & TOF_SACK) &&
                                    !sack_changed))
                                        break;
                                else if (!tcp_timer_active(tp, TT_REXMT))
@@ -2617,6 +2618,7 @@ tcp_do_segment(struct mbuf *m, struct tcphdr *th, struct 
socket *so,
                                                tp->snd_cwnd = imax(maxseg, 
tp->snd_nxt - tp->snd_recover +
                                                    
tp->sackhint.sack_bytes_rexmit + (snd_cnt * maxseg));
                                        } else if ((tp->t_flags & 
TF_SACK_PERMIT) &&
+                                           (to.to_flags & TOF_SACK) &&
                                            IN_FASTRECOVERY(tp->t_flags)) {
                                                int awnd;
 
@@ -2694,7 +2696,8 @@ enter_recovery:
                                                tp->sackhint.recover_fs = max(1,
                                                    tp->snd_nxt - tp->snd_una);
                                        }
-                                       if (tp->t_flags & TF_SACK_PERMIT) {
+                                       if ((tp->t_flags & TF_SACK_PERMIT) &&
+                                           (to.to_flags & TOF_SACK)) {
                                                TCPSTAT_INC(
                                                    tcps_sack_recovery_episode);
                                                tp->snd_recover = tp->snd_nxt;
_______________________________________________
dev-commits-src-main@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/dev-commits-src-main
To unsubscribe, send any mail to "dev-commits-src-main-unsubscr...@freebsd.org"

Reply via email to