tcp: provide skb->hash to synack packets
authorEric Dumazet <edumazet@google.com>
Tue, 15 Sep 2015 22:24:20 +0000 (15:24 -0700)
committerDavid S. Miller <davem@davemloft.net>
Fri, 18 Sep 2015 04:01:04 +0000 (21:01 -0700)
commit58d607d3e52f2b15902f58a1161da9fb3b0f6d47
tree1949d88eb7d541878079ddafa607c31017099349
parentbbe8373138a1fe92160a18418e7298b4c0128ff1
tcp: provide skb->hash to synack packets

In commit b73c3d0e4f0e ("net: Save TX flow hash in sock and set in skbuf
on xmit"), Tom provided a l4 hash to most outgoing TCP packets.

We'd like to provide one as well for SYNACK packets, so that all packets
of a given flow share same txhash, to later enable bonding driver to
also use skb->hash to perform slave selection.

Note that a SYNACK retransmit shuffles the tx hash, as Tom did
in commit 265f94ff54d62 ("net: Recompute sk_txhash on negative routing
advice") for established sockets.

This has nice effect making TCP flows resilient to some kind of black
holes, even at connection establish phase.

Signed-off-by: Eric Dumazet <edumazet@google.com>
Cc: Tom Herbert <tom@herbertland.com>
Cc: Mahesh Bandewar <maheshb@google.com>
Acked-by: Tom Herbert <tom@herbertland.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/linux/tcp.h
include/net/sock.h
net/ipv4/tcp_input.c
net/ipv4/tcp_ipv4.c
net/ipv4/tcp_output.c
net/ipv6/tcp_ipv6.c