[IPV6]: Added GSO support for TCPv6
authorHerbert Xu <herbert@gondor.apana.org.au>
Fri, 30 Jun 2006 20:37:03 +0000 (13:37 -0700)
committerDavid S. Miller <davem@sunset.davemloft.net>
Fri, 30 Jun 2006 21:12:10 +0000 (14:12 -0700)
commitf83ef8c0b58dac17211a4c0b6df0e2b1bd6637b1
tree61661a587df97cb2a9f73b5d0d1cf30f09644051
parentbcd76111178ebccedd46a9b3eaff65c78e5a70af
[IPV6]: Added GSO support for TCPv6

This patch adds GSO support for IPv6 and TCPv6.  This is based on a patch
by Ananda Raju <Ananda.Raju@neterion.com>.  His original description is:

This patch enables TSO over IPv6. Currently Linux network stacks
restricts TSO over IPv6 by clearing of the NETIF_F_TSO bit from
"dev->features". This patch will remove this restriction.

This patch will introduce a new flag NETIF_F_TSO6 which will be used
to check whether device supports TSO over IPv6. If device support TSO
over IPv6 then we don't clear of NETIF_F_TSO and which will make the
TCP layer to create TSO packets. Any device supporting TSO over IPv6
will set NETIF_F_TSO6 flag in "dev->features" along with NETIF_F_TSO.

In case when user disables TSO using ethtool, NETIF_F_TSO will get
cleared from "dev->features". So even if we have NETIF_F_TSO6 we don't
get TSO packets created by TCP layer.

SKB_GSO_TCPV4 renamed to SKB_GSO_TCP to make it generic GSO packet.
SKB_GSO_UDPV4 renamed to SKB_GSO_UDP as UFO is not a IPv4 feature.
UFO is supported over IPv6 also

The following table shows there is significant improvement in
throughput with normal frames and CPU usage for both normal and jumbo.

--------------------------------------------------
|          |     1500        |      9600         |
|          ------------------|-------------------|
|          | thru     CPU    |  thru     CPU     |
--------------------------------------------------
| TSO OFF  | 2.00   5.5% id  |  5.66   20.0% id  |
--------------------------------------------------
| TSO ON   | 2.63   78.0 id  |  5.67   39.0% id  |
--------------------------------------------------

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/s2io.c
include/linux/netdevice.h
include/linux/skbuff.h
include/net/ip6_route.h
include/net/tcp_ecn.h
net/ipv4/ip_output.c
net/ipv6/af_inet6.c
net/ipv6/inet6_connection_sock.c
net/ipv6/ip6_output.c
net/ipv6/tcp_ipv6.c