summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authorlstewart <lstewart@FreeBSD.org>2010-12-28 03:27:20 +0000
committerlstewart <lstewart@FreeBSD.org>2010-12-28 03:27:20 +0000
commit04373a011b12b5180ebb8a0de8062748f92f8c9c (patch)
tree6d62c0d3f39dba74044c3db50a95d31a5f5eb953 /sys
parent425155a6c9325e7a77cf2aa9c5a4eb57b003b722 (diff)
downloadFreeBSD-src-04373a011b12b5180ebb8a0de8062748f92f8c9c.zip
FreeBSD-src-04373a011b12b5180ebb8a0de8062748f92f8c9c.tar.gz
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 <dahayes at swin edu au> Reviewed by: bz and others (as part of a larger patch) MFC after: 3 months
Diffstat (limited to 'sys')
-rw-r--r--sys/netinet/tcp_sack.c1
-rw-r--r--sys/netinet/tcp_var.h1
2 files changed, 2 insertions, 0 deletions
diff --git a/sys/netinet/tcp_sack.c b/sys/netinet/tcp_sack.c
index 47d44ec..4134034 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 a37d306..3305b1a 100644
--- a/sys/netinet/tcp_var.h
+++ b/sys/netinet/tcp_var.h
@@ -70,6 +70,7 @@ 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 */
OpenPOWER on IntegriCloud