MFC r249809:

 When doing RFC3042 limited transmit on the first on second
 duplicate ACK make sure we actually have new data to send.
 This prevents us from sending unneccessary pure ACKs.

 Reported by:	Matt Miller <matt@matthewjmiller.net>
MFC r249317:

 Fix a race condition on tcp listen socket teardown with pending
 connections in the accept queue and contiguous new incoming SYNs.

 Compared to the original submitters patch I've moved the test
 next to the SYN handling to have it together in a logical unit
 and reworded the comment explaining the issue.

 Submitted by:	Matt Miller <matt@matthewjmiller.net>
 Submitted by:	Juan Mojica <jmojica@gmail.com>
 Reviewed by:	Matt Miller (changes)
 Tested by:	pho
MFC r226447:

 Remove the ss_fltsz and ss_fltsz_local sysctl's which have
 long been superseded by the RFC3390 initial CWND sizing.

 Also remove the remnants of TCP_METRICS_CWND which used the
 TCP hostcache to set the initial CWND in a non-RFC compliant
 way.

MFC r242249:

 Adjust the initial default CWND upon connection establishment to the
 new and increased values specified by RFC5681 Section 3.1.

 The even larger initial CWND per RFC3390, if enabled, is not affected.

MFC r242250:

 When SYN or SYN/ACK had to be retransmitted RFC5681 requires us to
 reduce the initial CWND to one segment.  This reduction got lost
 some time ago due to a change in initialization ordering.

 Additionally in tcp_timer_rexmt() avoid entering fast recovery when
 we're still in TCPS_SYN_SENT state.

MFC r242255:

 Allow arbitrary MSS sizes and don't mind about the cluster size anymore.
 We've got more cluster sizes for quite some time now and the orginally
 imposed limits and the previously codified thoughts on efficiency gains
 are no longer true.
MFC r242266:

 Increase the initial CWND to 10 segments as defined in IETF TCPM
 draft-ietf-tcpm-initcwnd-05. It explains why the increased initial
 window improves the overall performance of many web services without
 risking congestion collapse.

 As long as it remains a draft it is placed under a sysctl marking it
 as experimental:
  net.inet.tcp.experimental.initcwnd10 = 1
 When it becomes an official RFC soon the sysctl will be changed to
 the RFC number and moved to net.inet.tcp.

 This implementation differs from the RFC draft in that it is a bit
 more conservative in the case of packet loss on SYN or SYN|ACK because
 we haven't reduced the default RTO to 1 second yet.  Also the restart
 window isn't yet increased as allowed.  Both will be adjusted with
 upcoming changes.

 Is is enabled by default.  In Linux it is enabled since kernel 3.0.
MFC r242253:

 Simplify implementation of net.inet.tcp.reass.maxsegments and
 net.inet.tcp.reass.cursegments.

MFC r242254:

 Change the syncache count reporting the current number of entries
 from an unprotected u_int that reports garbage on SMP to a function
 based sysctl obtaining the current value from UMA.

 Also read back the actual cache_limit after page size rounding by UMA.
 PR:		kern/165879

MFC r244680:

 Fix sysctl_handle_int() usage. Either arg1 or arg2 should be supplied,
 and arg2 doesn't pass size of arg1.

MFC r246208:

 uma_zone_set_max() directly returns the rounded effective zone
 limit.  Use the return value directly instead of doing a second
 uma_zone_set_max() step.