diff options
Diffstat (limited to 'sys/netinet/tcp_input.c')
-rw-r--r-- | sys/netinet/tcp_input.c | 12 |
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; |