1
linux/net/ipv6
Herbert Xu f83ef8c0b5 [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>
2006-06-30 14:12:10 -07:00
..
netfilter [NETLINK]: Encapsulate eff_cap usage within security framework. 2006-06-29 16:57:55 -07:00
addrconf.c [IPV6] ADDRCONF: Fix default source address selection without CONFIG_IPV6_PRIVACY 2006-06-23 02:07:24 -07:00
af_inet6.c [IPV6]: Added GSO support for TCPv6 2006-06-30 14:12:10 -07:00
ah6.c [IPSEC] proto: Move transport mode input path into xfrm_mode_transport 2006-06-17 21:28:41 -07:00
anycast.c [IPV6]: Nearly complete kzalloc cleanup for net/ipv6 2006-03-20 23:01:32 -08:00
datagram.c [PATCH] capable/capability.h (net/) 2006-01-11 18:42:14 -08:00
esp6.c [IPSEC] proto: Move transport mode input path into xfrm_mode_transport 2006-06-17 21:28:41 -07:00
exthdrs_core.c [SELINUX]: Fix ipv6_skip_exthdr() invocation causing OOPS. 2005-04-24 20:16:19 -07:00
exthdrs.c [IPV6]: Added GSO support for TCPv6 2006-06-30 14:12:06 -07:00
icmp.c [PATCH] for_each_possible_cpu: network codes 2006-04-11 06:18:31 -07:00
inet6_connection_sock.c [IPV6]: Added GSO support for TCPv6 2006-06-30 14:12:10 -07:00
inet6_hashtables.c [IPV6]: Deinline few large functions in inet6 code 2006-04-09 22:48:59 -07:00
ip6_fib.c [IPV6]: ROUTE: Eliminate lock for default route pointer. 2006-03-20 17:00:26 -08:00
ip6_flowlabel.c [IPV6]: Nearly complete kzalloc cleanup for net/ipv6 2006-03-20 23:01:32 -08:00
ip6_input.c [IPV6]: Remove redundant length check on input 2006-06-30 14:12:04 -07:00
ip6_output.c [IPV6]: Added GSO support for TCPv6 2006-06-30 14:12:10 -07:00
ip6_tunnel.c [INET]: Move no-tunnel ICMP error to tunnel4/tunnel6 2006-04-09 22:25:25 -07:00
ipcomp6.c [NET]: Clean up skb_linearize 2006-06-17 21:30:16 -07:00
ipv6_sockglue.c [IPV6]: Added GSO support for TCPv6 2006-06-30 14:12:06 -07:00
ipv6_syms.c [NET]: Identation & other cleanups related to compat_[gs]etsockopt cset 2006-03-20 22:48:35 -08:00
Kconfig [IPSEC] xfrm: Abstract out encapsulation modes 2006-06-17 21:28:39 -07:00
Makefile [IPSEC] xfrm: Abstract out encapsulation modes 2006-06-17 21:28:39 -07:00
mcast.c [IPV6]: Nearly complete kzalloc cleanup for net/ipv6 2006-03-20 23:01:32 -08:00
ndisc.c [IPV6]: ROUTE: Add accept_ra_rt_info_max_plen sysctl. 2006-03-20 17:07:03 -08:00
netfilter.c [NETFILTER]: Fix build with CONFIG_NETFILTER=y/m on IA64 2006-04-09 22:25:49 -07:00
proc.c [PATCH] for_each_possible_cpu: network codes 2006-04-11 06:18:31 -07:00
protocol.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
raw.c [IPV6]: Nearly complete kzalloc cleanup for net/ipv6 2006-03-20 23:01:32 -08:00
reassembly.c [IPv6] reassembly: Always compute hash under the fragment lock. 2006-04-11 17:21:05 -07:00
route.c [PATCH] spin/rwlock init cleanups 2006-06-27 17:32:39 -07:00
sit.c [INET]: Use port unreachable instead of proto for tunnels 2006-04-09 22:25:29 -07:00
sysctl_net_ipv6.c [NET]: Fix sparse warnings 2005-08-29 16:01:32 -07:00
tcp_ipv6.c [IPV6]: Added GSO support for TCPv6 2006-06-30 14:12:10 -07:00
tunnel6.c [INET]: Move no-tunnel ICMP error to tunnel4/tunnel6 2006-04-09 22:25:25 -07:00
udp.c [NET]: Identation & other cleanups related to compat_[gs]etsockopt cset 2006-03-20 22:48:35 -08:00
xfrm6_input.c [IPSEC] xfrm: Abstract out encapsulation modes 2006-06-17 21:28:39 -07:00
xfrm6_mode_transport.c [IPSEC] proto: Move transport mode input path into xfrm_mode_transport 2006-06-17 21:28:41 -07:00
xfrm6_mode_tunnel.c [IPSEC] xfrm: Abstract out encapsulation modes 2006-06-17 21:28:39 -07:00
xfrm6_output.c [IPSEC]: Handle GSO packets 2006-06-23 02:07:38 -07:00
xfrm6_policy.c [IPSEC] xfrm: Undo afinfo lock proliferation 2006-06-17 21:28:37 -07:00
xfrm6_state.c [IPSEC] xfrm: Undo afinfo lock proliferation 2006-06-17 21:28:37 -07:00
xfrm6_tunnel.c [IPSEC]: Kill unused decap state argument 2006-04-01 00:52:46 -08:00