Solaris and Linux (since 2.4.20) have allowed three settings for
ECN for some time.
- Totally disabled
- Enabled for incoming TCP connections if requested, but not
requested by outgoing TCP connections (Linux default) * Enabled for incoming TCP connections if requested and requested by outgoing TCP connections
Mac OS X has had independent knobs for incoming and outgoing
ECN support since 10.5. As of OS X, 10.11, Apple claims that
ECN is enabled by default, though it not clear whether that
is for both incoming and outgoing connections.
This patch changes the FreeBSD net.inet.tcp.ecn.enable knob
from binary off/on to a three way setting to match Linux
and Solaris. The values were chosen to match Linux.
0 - Totally disabled 1 - Enabled for both incoming and outgoing 2 - Enabled for incoming if requested, and outgoing connections do not request ECN
with 2 being the new default. For hosts currently running with
net.inet.tcp.ecn.enable=1, there should be no change in
behavior.