net: tcp: add flag for ca to indicate that ECN is required
authorDaniel Borkmann <dborkman@redhat.com>
Fri, 26 Sep 2014 20:37:33 +0000 (22:37 +0200)
committerDavid S. Miller <davem@davemloft.net>
Mon, 29 Sep 2014 04:13:10 +0000 (00:13 -0400)
commit30e502a34b8b21fae2c789da102bd9f6e99fef83
tree6a56bc051b629e3c0914c3a519d201f357e79ada
parent55d8694fa82c9b5858ae5a78a210353961f908f9
net: tcp: add flag for ca to indicate that ECN is required

This patch adds a flag to TCP congestion algorithms that allows
for requesting to mark IPv4/IPv6 sockets with transport as ECN
capable, that is, ECT(0), when required by a congestion algorithm.

It is currently used and needed in DataCenter TCP (DCTCP), as it
requires both peers to assert ECT on all IP packets sent - it
uses ECN feedback (i.e. CE, Congestion Encountered information)
from switches inside the data center to derive feedback to the
end hosts.

Therefore, simply add a new flag to icsk_ca_ops. Note that DCTCP's
algorithm/behaviour slightly diverges from RFC3168, therefore this
is only (!) enabled iff the assigned congestion control ops module
has requested this. By that, we can tightly couple this logic really
only to the provided congestion control ops.

Joint work with Florian Westphal and Glenn Judd.

Signed-off-by: Daniel Borkmann <dborkman@redhat.com>
Signed-off-by: Florian Westphal <fw@strlen.de>
Signed-off-by: Glenn Judd <glenn.judd@morganstanley.com>
Acked-by: Stephen Hemminger <stephen@networkplumber.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/net/tcp.h
net/ipv4/tcp_input.c
net/ipv4/tcp_output.c