From 27af057e4e536124a1ef564cf8fa94f4e1dd6d2c Mon Sep 17 00:00:00 2001 From: lstewart Date: Sat, 28 May 2011 07:23:26 +0000 Subject: [PATCH] MFC r216753,217221: Add a new sack hint to track the most recent and highest sacked sequence number. This will be used by the incoming Enhanced RTT Khelp module. Sponsored by: FreeBSD Foundation Submitted by: David Hayes Reviewed by: bz and others (as part of a larger patch) git-svn-id: svn://svn.freebsd.org/base/stable/8@222407 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f --- sys/netinet/tcp_input.c | 1 + sys/netinet/tcp_sack.c | 1 + sys/netinet/tcp_var.h | 2 +- 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/sys/netinet/tcp_input.c b/sys/netinet/tcp_input.c index ae7ffb288..d84362e91 100644 --- a/sys/netinet/tcp_input.c +++ b/sys/netinet/tcp_input.c @@ -1365,6 +1365,7 @@ tcp_do_segment(struct mbuf *m, struct tcphdr *th, struct socket *so, short ostate = 0; #endif thflags = th->th_flags; + tp->sackhint.last_sack_ack = 0; /* * If this is either a state-changing packet or current state isn't diff --git a/sys/netinet/tcp_sack.c b/sys/netinet/tcp_sack.c index 47d44ec16..4134034b3 100644 --- a/sys/netinet/tcp_sack.c +++ b/sys/netinet/tcp_sack.c @@ -425,6 +425,7 @@ tcp_sack_doack(struct tcpcb *tp, struct tcpopt *to, tcp_seq th_ack) * are received. */ sblkp = &sack_blocks[num_sack_blks - 1]; /* Last SACK block */ + tp->sackhint.last_sack_ack = sblkp->end; if (SEQ_LT(tp->snd_fack, sblkp->start)) { /* * The highest SACK block is beyond fack. Append new SACK diff --git a/sys/netinet/tcp_var.h b/sys/netinet/tcp_var.h index c56465b9e..9c5013506 100644 --- a/sys/netinet/tcp_var.h +++ b/sys/netinet/tcp_var.h @@ -70,8 +70,8 @@ struct sackhole { struct sackhint { struct sackhole *nexthole; int sack_bytes_rexmit; + tcp_seq last_sack_ack; /* Most recent/largest sacked ack */ - int ispare; /* explicit pad for 64bit alignment */ uint64_t _pad[2]; /* 1 sacked_bytes, 1 TBD */ }; -- 2.45.0