summaryrefslogtreecommitdiffstats
path: root/sys/netinet/tcp_input.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/netinet/tcp_input.c')
-rw-r--r--sys/netinet/tcp_input.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/sys/netinet/tcp_input.c b/sys/netinet/tcp_input.c
index 3b70e99..b96b959 100644
--- a/sys/netinet/tcp_input.c
+++ b/sys/netinet/tcp_input.c
@@ -155,6 +155,12 @@ SYSCTL_INT(_net_inet_tcp_reass, OID_AUTO, overflows, CTLFLAG_RD,
&tcp_reass_overflows, 0,
"Global number of TCP Segment Reassembly Queue Overflows");
+static int tcp_sack_recovery_initburst = 3;
+SYSCTL_INT(_net_inet_tcp_sack, OID_AUTO,
+ initburst, CTLFLAG_RW,
+ &tcp_sack_recovery_initburst, 0,
+ "Initial Number of Rexmits when sack recovery is set up");
+
struct inpcbhead tcb;
#define tcb6 tcb /* for KAME src sync over BSD*'s */
struct inpcbinfo tcbinfo;
@@ -1980,9 +1986,9 @@ trimthenstep6:
tp->t_rtttime = 0;
if (tp->sack_enable) {
tcpstat.tcps_sack_recovery_episode++;
- tp->snd_cwnd =
- tp->t_maxseg *
- tp->t_dupacks;
+ tp->sack_newdata = tp->snd_nxt;
+ tp->snd_cwnd =
+ tp->t_maxseg * tcp_sack_recovery_initburst;
(void) tcp_output(tp);
tp->snd_cwnd +=
tp->snd_ssthresh;
OpenPOWER on IntegriCloud