diff options
author | ps <ps@FreeBSD.org> | 2004-06-23 21:04:37 +0000 |
---|---|---|
committer | ps <ps@FreeBSD.org> | 2004-06-23 21:04:37 +0000 |
commit | f5f3e8600b5cd41c8645b3a5d45e20092a8b9ee1 (patch) | |
tree | 37eceb1297375660ec2d161a79ee2ec7364248b3 /sys/netinet/tcp_timer.c | |
parent | 933faf5c3e0325440e1ef2edac115dd64ece174c (diff) | |
download | FreeBSD-src-f5f3e8600b5cd41c8645b3a5d45e20092a8b9ee1.zip FreeBSD-src-f5f3e8600b5cd41c8645b3a5d45e20092a8b9ee1.tar.gz |
Add support for TCP Selective Acknowledgements. The work for this
originated on RELENG_4 and was ported to -CURRENT.
The scoreboarding code was obtained from OpenBSD, and many
of the remaining changes were inspired by OpenBSD, but not
taken directly from there.
You can enable/disable sack using net.inet.tcp.do_sack. You can
also limit the number of sack holes that all senders can have in
the scoreboard with net.inet.tcp.sackhole_limit.
Reviewed by: gnn
Obtained from: Yahoo! (Mohan Srinivasan, Jayanth Vijayaraghavan)
Diffstat (limited to 'sys/netinet/tcp_timer.c')
-rw-r--r-- | sys/netinet/tcp_timer.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/sys/netinet/tcp_timer.c b/sys/netinet/tcp_timer.c index a23531f..44664ad 100644 --- a/sys/netinet/tcp_timer.c +++ b/sys/netinet/tcp_timer.c @@ -32,6 +32,7 @@ #include "opt_inet6.h" #include "opt_tcpdebug.h" +#include "opt_tcp_sack.h" #include <sys/param.h> #include <sys/kernel.h> @@ -217,6 +218,7 @@ tcp_timer_2msl(xtp) return; } INP_LOCK(inp); + tcp_free_sackholes(tp); if (callout_pending(tp->tt_2msl) || !callout_active(tp->tt_2msl)) { INP_UNLOCK(tp->t_inpcb); INP_INFO_WUNLOCK(&tcbinfo); @@ -497,6 +499,7 @@ tcp_timer_rexmt(xtp) return; } callout_deactivate(tp->tt_rexmt); + tcp_free_sackholes(tp); /* * Retransmission timer went off. Message has not * been acked within retransmit interval. Back off |