diff options
author | Sean Bruno <sbruno@FreeBSD.org> | 2014-10-13 21:06:21 +0000 |
---|---|---|
committer | Sean Bruno <sbruno@FreeBSD.org> | 2014-10-13 21:06:21 +0000 |
commit | 882ac53ed7ba31847423ef9ae7edee134b05cf47 (patch) | |
tree | 9b5ccc28ac1c72697d0cdb42ca9958374c7d2531 | |
parent | 0f3e3bc526628b6b15c427ff5930e40275a7fd4b (diff) | |
download | src-882ac53ed7ba31847423ef9ae7edee134b05cf47.tar.gz src-882ac53ed7ba31847423ef9ae7edee134b05cf47.zip |
Handle small file case with regards to plpmtud blackhole detection.
Submitted by: Mikhail <mp@lenta.ru>
MFC after: 2 weeks
Relnotes: yes
Notes
Notes:
svn path=/head/; revision=273063
-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 62a9b6d17871..3702a2e7b696 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; |