Kernel - Enable the TCP inflight limiter by default, but with generous values.
commitd66b98ebb623f903e93cd6590d34fc87135a4561
authorMatthew Dillon <dillon@apollo.backplane.com>
Wed, 9 Sep 2009 16:34:13 +0000 (9 09:34 -0700)
committerMatthew Dillon <dillon@apollo.backplane.com>
Wed, 9 Sep 2009 16:34:13 +0000 (9 09:34 -0700)
treef7ba9fdb250f25ae66655367a20b9263cbdaa56e
parent58a264c4a67f08bde7423fce75e26eaaa1f91363
Kernel - Enable the TCP inflight limiter by default, but with generous values.

The inflight limiter is now turned on by default, but with generous values
which should allow maximal bandwidth.  In particular, the slop defaults to
50 (5 packets), meaning that the TCP connection will allow up to N+5 packets
in-flight instead of just N, where N is the number of packets calculated
for the bandwidth-delay product of the connection.

The reason for doing this is that the limiter is the only mechanism we
have which seems to do a really good job preventing receiver RX rings
on network interfaces from getting blown out.  Even though GigE/10GigE
is supposed to flow control it looks like either it doesn't actually
do it or Open Source drivers do not properly enable it.  Large packet
bursts appear to be able to blow out the receiver's rx ring.

People using the limiter to reduce bottlenecks on slower WAN connections
should set the slop to 20 (2 packets).
sys/netinet/tcp_subr.c