diff options
author | sbruno <sbruno@FreeBSD.org> | 2014-10-13 21:06:21 +0000 |
---|---|---|
committer | sbruno <sbruno@FreeBSD.org> | 2014-10-13 21:06:21 +0000 |
commit | aa538f658e0ab77010e35cf60a57e1c3cd8008be (patch) | |
tree | 9b5ccc28ac1c72697d0cdb42ca9958374c7d2531 | |
parent | f6a34b917295f203cc20e01b5987ac11d2013f88 (diff) | |
download | FreeBSD-src-aa538f658e0ab77010e35cf60a57e1c3cd8008be.zip FreeBSD-src-aa538f658e0ab77010e35cf60a57e1c3cd8008be.tar.gz |
Handle small file case with regards to plpmtud blackhole detection.
Submitted by: Mikhail <mp@lenta.ru>
MFC after: 2 weeks
Relnotes: yes
-rw-r--r-- | sys/netinet/tcp_timer.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/sys/netinet/tcp_timer.c b/sys/netinet/tcp_timer.c index 62a9b6d..3702a2e 100644 --- a/sys/netinet/tcp_timer.c +++ b/sys/netinet/tcp_timer.c @@ -693,7 +693,15 @@ tcp_timer_rexmt(void * xtp) TCPT_RANGESET(tp->t_rxtcur, rexmt, tp->t_rttmin, TCPTV_REXMTMAX); - if (V_tcp_pmtud_blackhole_detect && (tp->t_state == TCPS_ESTABLISHED)) { + /* + * We enter the path for PLMTUD if connection is established or, if + * connection is FIN_WAIT_1 status, reason for the last is that if + * amount of data we send is very small, we could send it in couple of + * packets and process straight to FIN. In that case we won't catch + * ESTABLISHED state. + */ + if (V_tcp_pmtud_blackhole_detect && (((tp->t_state == TCPS_ESTABLISHED)) + || (tp->t_state == TCPS_FIN_WAIT_1))) { int optlen; #ifdef INET6 int isipv6; |