Merge branch 'gso_send_check'
authorDavid S. Miller <davem@davemloft.net>
Fri, 26 Sep 2014 04:23:13 +0000 (00:23 -0400)
committerDavid S. Miller <davem@davemloft.net>
Fri, 26 Sep 2014 04:23:13 +0000 (00:23 -0400)
commit9fb426a642a166730a8c916cb38c5461dbc28ffb
treef51fe647dc1d833dedd68f7ed384d0634bc6c143
parent2fdbfea5735d3deb30a8782c57f7210cb034e69d
parent53e50398968d43338c4d932114e68bc099fc5fbd
Merge branch 'gso_send_check'

Tom Herbert says:

====================
net: Eliminate gso_send_check

gso_send_check presents a lot of complexity for what it is being used
for. It seems that there are only two cases where it might be effective:
TCP and UFO paths. In these cases, the gso_send_check function
initializes the TCP or UDP checksum respectively to the pseudo header
checksum so that the checksum computation is appropriately offloaded or
computed in the gso_segment functions. The gso_send_check functions
are only called from dev.c in skb_mac_gso_segment when ip_summed !=
CHECKSUM_PARTIAL (which seems very unlikely in TCP case). We can move
the logic of this into the respective gso_segment functions where the
checksum is initialized if ip_summed != CHECKSUM_PARTIAL.

With the above cases handled, gso_send_check is no longer needed, so
we can remove all uses of it and the fields in the offload callbacks.
With this change, ip_summed in the skb should be preserved though all
the layers of gso_segment calls.

In follow-on patches, we may be able to remove the check setup code in
tcp_gso_segment if we can guarantee that ip_summed will always be
CHECKSUM_PARTIAL (verify all paths and probably add an assert in
tcp_gro_segment).

Tested these patches by:
  - netperf TCP_STREAM test with GSO enabled
  - Forced ip_summed != CHECKSUM_PARTIAL with above
  - Ran UDP_RR with 10000 request size over GRE tunnel. This exercised
    UFO path.
====================

Signed-off-by: David S. Miller <davem@davemloft.net>