Support for RFC3168 ECN by various hardware and drivers is
a very mixed bag.
Some hardware TSO will properly mask out the CWR bit (for 3168 ECN)
on all but the first segment.
Some hardware make not mask the CWR bit at all, while other
documents indicate it may remain set on the initial and middle
packets, but not the last.
Further, some drivers expect the hardware to indicate if "proper"
ECN support exists for TSO and will discard the transmission
entirely, when encountering the CWR bit but no hardware TSO+ECN
support.
To add to the complexity, the upcoming AccECN change does NOT
require any specific support to flag out certain header flags
between first, middle or last packet in a TSO chain. Thus working
with currently broken TSO (where the Flags are simply copied over),
but not working with the few hardware currenly working properly
(masking the CWR flag in all but the first packet).
In order to deal with all that different behaviours in a sensible
manner, bypassing TSO entirely when CWR is encountered appears
to be the only viable option for now.
MFC after: 2 weeks