svn commit: r273063 - head/sys/netinet

Sean Bruno sbruno at FreeBSD.org
Mon Oct 13 21:06:22 UTC 2014


Author: sbruno
Date: Mon Oct 13 21:06:21 2014
New Revision: 273063
URL: https://svnweb.freebsd.org/changeset/base/273063

Log:
  Handle small file case with regards to plpmtud blackhole detection.
  
  Submitted by:	Mikhail <mp at lenta.ru>
  MFC after:	2 weeks
  Relnotes:	yes

Modified:
  head/sys/netinet/tcp_timer.c

Modified: head/sys/netinet/tcp_timer.c
==============================================================================
--- head/sys/netinet/tcp_timer.c	Mon Oct 13 21:05:29 2014	(r273062)
+++ head/sys/netinet/tcp_timer.c	Mon Oct 13 21:06:21 2014	(r273063)
@@ -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;


More information about the svn-src-head mailing list