This Diff adds initial support for AccECN, per IETF draft
https://tools.ietf.org/html/draft-ietf-tcpm-accurate-ecn-16
Only the AccECN handshake and TCP header flags are supported,
no support for the AccECN option. This minimalistic
implementation is sufficient to support DCTCP while
dramatically cutting the number of ACKs.
To enable AccECN support, sysctl net.inet.tcp.ecn.enable
was extended to include the value 3 (active AccECN support),
and 4 (passive AccECN support), similar to the Linux AccECN
patch.
Both AccECN modes will negotiate actively or passively for
legacy ECN (RFC3168) support, similar to a setting of 1 or
2, respectively, as per the other ends capabilities.
The (3 bit) ACE field, comprised of AE (formerly Nonce Sum,
CWR and ECE, reflects back the lowest 3 bits of the received
packet counter with CE set.