aboutsummaryrefslogtreecommitdiff
path: root/sys/netinet/tcp_var.h
diff options
context:
space:
mode:
authorRichard Scheffenegger <rscheff@FreeBSD.org>2020-08-13 16:30:09 +0000
committerRichard Scheffenegger <rscheff@FreeBSD.org>2020-08-13 16:30:09 +0000
commitf359d6ebbcced08a13060c07168856ffe6c9f734 (patch)
tree5a392046b07ebc753b3357e5288dd5b719a2c653 /sys/netinet/tcp_var.h
parent958a094323005f8ddd4013b037ffd6cbbd5e61ad (diff)
downloadsrc-f359d6ebbcced08a13060c07168856ffe6c9f734.tar.gz
src-f359d6ebbcced08a13060c07168856ffe6c9f734.zip
Improve SACK support code for RFC6675 and PRR
Adding proper accounting of sacked_bytes and (per-ACK) delivered data to the SACK scoreboard. This will allow more aspects of RFC6675 to be implemented as well as Proportional Rate Reduction (RFC6937). Prior to this change, the pipe calculation controlled with net.inet.tcp.rfc6675_pipe was also susceptible to incorrect results when more than 3 (or 4) holes in the sequence space were present, which can no longer all fit into a single ACK's SACK option. Reviewed by: kbowling, rgrimes (mentor) Approved by: rgrimes (mentor, blanket) MFC after: 3 weeks Sponsored by: NetApp, Inc. Differential Revision: https://reviews.freebsd.org/D18624
Notes
Notes: svn path=/head/; revision=364195
Diffstat (limited to 'sys/netinet/tcp_var.h')
-rw-r--r--sys/netinet/tcp_var.h8
1 files changed, 4 insertions, 4 deletions
diff --git a/sys/netinet/tcp_var.h b/sys/netinet/tcp_var.h
index c1fb25853836..d79ac73525d9 100644
--- a/sys/netinet/tcp_var.h
+++ b/sys/netinet/tcp_var.h
@@ -105,12 +105,12 @@ struct sackhole {
struct sackhint {
struct sackhole *nexthole;
- int sack_bytes_rexmit;
+ int32_t sack_bytes_rexmit;
tcp_seq last_sack_ack; /* Most recent/largest sacked ack */
- int ispare; /* explicit pad for 64bit alignment */
- int sacked_bytes; /*
- * Total sacked bytes reported by the
+ int32_t delivered_data; /* Newly acked data from last SACK */
+
+ int32_t sacked_bytes; /* Total sacked bytes reported by the
* receiver via sack option
*/
uint32_t _pad1[1]; /* TBD */