linux/net/ipv4
Michael Chan b0da853703 [NET]: Add ECN support for TSO
In the current TSO implementation, NETIF_F_TSO and ECN cannot be
turned on together in a TCP connection.  The problem is that most
hardware that supports TSO does not handle CWR correctly if it is set
in the TSO packet.  Correct handling requires CWR to be set in the
first packet only if it is set in the TSO header.

This patch adds the ability to turn on NETIF_F_TSO and ECN using
GSO if necessary to handle TSO packets with CWR set.  Hardware
that handles CWR correctly can turn on NETIF_F_TSO_ECN in the dev->
features flag.

All TSO packets with CWR set will have the SKB_GSO_TCPV4_ECN set.  If
the output device does not have the NETIF_F_TSO_ECN feature set, GSO
will split the packet up correctly with CWR only set in the first
segment.

With help from Herbert Xu <herbert@gondor.apana.org.au>.

Since ECN can always be enabled with TSO, the SOCK_NO_LARGESEND sock
flag is completely removed.

Signed-off-by: Michael Chan <mchan@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2006-06-29 16:58:08 -07:00
..
ipvs [PATCH] sem2mutex: misc static one-file mutexes 2006-03-26 08:56:55 -08:00
netfilter [NETLINK]: Encapsulate eff_cap usage within security framework. 2006-06-29 16:57:55 -07:00
Kconfig [TCP]: TCP Compound congestion control 2006-06-17 21:29:25 -07:00
Makefile [TCP]: TCP Probe congestion window tracing 2006-06-17 21:29:31 -07:00
af_inet.c [NET]: Added GSO header verification 2006-06-29 16:57:53 -07:00
ah4.c [IPSEC] proto: Move transport mode input path into xfrm_mode_transport 2006-06-17 21:28:41 -07:00
arp.c [IPV4]: Possible cleanups. 2006-04-14 15:00:20 -07:00
datagram.c [NET]: Fix sparse warnings 2005-08-29 16:01:32 -07:00
devinet.c [IPV4]: Possible cleanups. 2006-04-14 15:00:20 -07:00
esp4.c [IPSEC] proto: Move transport mode input path into xfrm_mode_transport 2006-06-17 21:28:41 -07:00
fib_frontend.c [NET]: Export ip_dev_find() 2006-06-17 20:37:28 -07:00
fib_hash.c [INET_SOCK]: Move struct inet_sock & helper functions to net/inet_sock.h 2006-01-03 13:11:21 -08:00
fib_lookup.h [IPV4]: Prepare FIB core for RCU. 2005-08-29 16:08:31 -07:00
fib_rules.c [IPV4]: Add fib rule netlink notifications 2006-03-23 01:16:06 -08:00
fib_semantics.c [NETLINK]: illegal use of pid in rtnetlink 2006-02-09 16:43:41 -08:00
fib_trie.c [FIB_TRIE]: Fix leaf freeing. 2006-04-09 22:25:23 -07:00
icmp.c [IPV4] icmp: Kill local 'ip' arg in icmp_redirect(). 2006-06-17 21:29:41 -07:00
igmp.c [IPV4] igmp: Fixup struct ip_mc_list::multiaddr type 2006-06-17 21:29:37 -07:00
inet_connection_sock.c [INET]: Fix typo in Arnaldo's connection sock compat fixups. 2006-03-20 22:52:32 -08:00
inet_diag.c [INET_DIAG]: Introduce sk_diag_fill 2006-01-09 14:56:56 -08:00
inet_hashtables.c [IPV4]: Possible cleanups. 2006-04-14 15:00:20 -07:00
inet_timewait_sock.c [TWSK]: Introduce struct timewait_sock_ops 2006-01-03 13:10:54 -08:00
inetpeer.c [NET]: Change some "if (x) BUG();" to "BUG_ON(x);" 2006-01-09 14:16:18 -08:00
ip_forward.c [IPV4]: Increment ipInHdrErrors when TTL expires. 2006-06-12 13:09:59 -07:00
ip_fragment.c [IPV4] ip_fragment: Always compute hash with ipfrag_lock held. 2006-04-09 22:43:55 -07:00
ip_gre.c [INET]: Use port unreachable instead of proto for tunnels 2006-04-09 22:25:29 -07:00
ip_input.c [IPV4]: Remove likely in ip_rcv_finish() 2006-05-06 18:11:39 -07:00
ip_options.c [IPV4]: ip_options_fragment() has no effect on fragmentation 2006-05-09 15:18:50 -07:00
ip_output.c [NET]: Merge TSO/UFO fields in sk_buff 2006-06-23 02:07:29 -07:00
ip_sockglue.c [NET]: Identation & other cleanups related to compat_[gs]etsockopt cset 2006-03-20 22:48:35 -08:00
ipcomp.c [NET]: Clean up skb_linearize 2006-06-17 21:30:16 -07:00
ipconfig.c [NET]: Convert RTNL to mutex. 2006-03-20 22:23:58 -08:00
ipip.c [INET]: Move no-tunnel ICMP error to tunnel4/tunnel6 2006-04-09 22:25:25 -07:00
ipmr.c [NET]: dev_put/dev_hold cleanup 2006-03-20 22:32:28 -08:00
multipath.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
multipath_drr.c [IPV4]: possible cleanups 2005-08-29 15:33:20 -07:00
multipath_random.c [IPV4]: Multipath modules need a license to prevent kernel tainting. 2005-06-13 14:29:06 -07:00
multipath_rr.c [IPV4]: Multipath modules need a license to prevent kernel tainting. 2005-06-13 14:29:06 -07:00
multipath_wrandom.c [IPV4] multipath_wrandom: Fix softirq-unsafe spin lock usage 2006-02-02 16:59:16 -08:00
netfilter.c [NETFILTER]: Add address family specific checksum helpers 2006-04-09 22:25:41 -07:00
proc.c [PATCH] for_each_possible_cpu: network codes 2006-04-11 06:18:31 -07:00
protocol.c [TCP]: Move the tcp sock states to net/tcp_states.h 2005-08-29 15:41:54 -07:00
raw.c [IPV4]: Right prototype of __raw_v4_lookup() 2006-06-17 21:29:39 -07:00
route.c [PATCH] Define __raw_get_cpu_var and use it 2006-06-25 10:01:01 -07:00
syncookies.c [ICSK]: Rename struct tcp_func to struct inet_connection_sock_af_ops 2006-01-03 13:10:38 -08:00
sysctl_net_ipv4.c [TCP]: Add tcp_slow_start_after_idle sysctl. 2006-06-17 21:30:53 -07:00
tcp.c [NET]: Added GSO header verification 2006-06-29 16:57:53 -07:00
tcp_bic.c [TCP]: Minimum congestion window consolidation. 2006-06-17 21:29:29 -07:00
tcp_compound.c [TCP]: Minimum congestion window consolidation. 2006-06-17 21:29:29 -07:00
tcp_cong.c [TCP]: Minimum congestion window consolidation. 2006-06-17 21:29:29 -07:00
tcp_cubic.c [TCP]: Minimum congestion window consolidation. 2006-06-17 21:29:29 -07:00
tcp_diag.c [TCP]: Export accept queue len of a TCP listening socket via rx_queue 2006-06-29 16:57:57 -07:00
tcp_highspeed.c [TCP]: Limited slow start for Highspeed TCP 2006-06-17 21:29:33 -07:00
tcp_htcp.c [TCP]: Minimum congestion window consolidation. 2006-06-17 21:29:29 -07:00
tcp_hybla.c [TCP]: fix congestion window update when using TSO deferal 2005-11-10 16:53:30 -08:00
tcp_input.c [NET]: Add ECN support for TSO 2006-06-29 16:58:08 -07:00
tcp_ipv4.c [TCP]: Export accept queue len of a TCP listening socket via rx_queue 2006-06-29 16:57:57 -07:00
tcp_lp.c [TCP]: TCP Low Priority congestion control 2006-06-17 21:29:21 -07:00
tcp_minisocks.c [NET]: Add ECN support for TSO 2006-06-29 16:58:08 -07:00
tcp_output.c [NET]: Add ECN support for TSO 2006-06-29 16:58:08 -07:00
tcp_probe.c [TCP]: Fix compile warning in tcp_probe.c 2006-06-17 21:29:35 -07:00
tcp_scalable.c [TCP]: add tcp_slow_start helper 2005-11-10 17:07:24 -08:00
tcp_timer.c [TCP]: MTU probing 2006-03-20 17:53:41 -08:00
tcp_vegas.c [TCP] tcp_vegas: Fix slow start 2006-01-04 13:59:32 -08:00
tcp_veno.c [TCP]: Minimum congestion window consolidation. 2006-06-17 21:29:29 -07:00
tcp_westwood.c [TCP] Westwood: reset RTT min after FRTO 2006-06-17 21:30:38 -07:00
tunnel4.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
xfrm4_input.c [IPSEC] xfrm: Abstract out encapsulation modes 2006-06-17 21:28:39 -07:00
xfrm4_mode_transport.c [IPSEC] proto: Move transport mode input path into xfrm_mode_transport 2006-06-17 21:28:41 -07:00
xfrm4_mode_tunnel.c [IPSEC] xfrm: Abstract out encapsulation modes 2006-06-17 21:28:39 -07:00
xfrm4_output.c [IPSEC]: Handle GSO packets 2006-06-23 02:07:38 -07:00
xfrm4_policy.c [IPSEC] xfrm: Undo afinfo lock proliferation 2006-06-17 21:28:37 -07:00
xfrm4_state.c [IPSEC] xfrm: Undo afinfo lock proliferation 2006-06-17 21:28:37 -07:00
xfrm4_tunnel.c [IPSEC]: Kill unused decap state argument 2006-04-01 00:52:46 -08:00