kernel-ark/net
Ananda Raju e89e9cf539 [IPv4/IPv6]: UFO Scatter-gather approach
Attached is kernel patch for UDP Fragmentation Offload (UFO) feature.

1. This patch incorporate the review comments by Jeff Garzik.
2. Renamed USO as UFO (UDP Fragmentation Offload)
3. udp sendfile support with UFO

This patches uses scatter-gather feature of skb to generate large UDP
datagram. Below is a "how-to" on changes required in network device
driver to use the UFO interface.

UDP Fragmentation Offload (UFO) Interface:
-------------------------------------------
UFO is a feature wherein the Linux kernel network stack will offload the
IP fragmentation functionality of large UDP datagram to hardware. This
will reduce the overhead of stack in fragmenting the large UDP datagram to
MTU sized packets

1) Drivers indicate their capability of UFO using
dev->features |= NETIF_F_UFO | NETIF_F_HW_CSUM | NETIF_F_SG

NETIF_F_HW_CSUM is required for UFO over ipv6.

2) UFO packet will be submitted for transmission using driver xmit routine.
UFO packet will have a non-zero value for

"skb_shinfo(skb)->ufo_size"

skb_shinfo(skb)->ufo_size will indicate the length of data part in each IP
fragment going out of the adapter after IP fragmentation by hardware.

skb->data will contain MAC/IP/UDP header and skb_shinfo(skb)->frags[]
contains the data payload. The skb->ip_summed will be set to CHECKSUM_HW
indicating that hardware has to do checksum calculation. Hardware should
compute the UDP checksum of complete datagram and also ip header checksum of
each fragmented IP packet.

For IPV6 the UFO provides the fragment identification-id in
skb_shinfo(skb)->ip6_frag_id. The adapter should use this ID for generating
IPv6 fragments.

Signed-off-by: Ananda Raju <ananda.raju@neterion.com>
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> (forwarded)
Signed-off-by: Arnaldo Carvalho de Melo <acme@mandriva.com>
2005-10-28 16:30:00 -02:00
..
802 [TR]: Preserve RIF flag even for 2 byte RIF fields. 2005-10-25 21:31:38 -02:00
8021q [8021Q]: Add endian annotations. 2005-09-19 15:41:28 -07:00
appletalk [APPLETALK]: Fix broadcast bug. 2005-09-27 16:11:29 -07:00
atm [PATCH] gfp flags annotations - part 1 2005-10-08 15:00:57 -07:00
ax25 [AX.25]: Fix packet socket crash 2005-10-05 12:16:04 -07:00
bluetooth [Bluetooth] Update security filter for Extended Inquiry Response 2005-10-28 19:20:53 +02:00
bridge [NETFILTER]: Fix OOPSes on machines with discontiguous cpu numbering. 2005-10-13 14:41:23 -07:00
core [IPv4/IPv6]: UFO Scatter-gather approach 2005-10-28 16:30:00 -02:00
dccp [PATCH] gfp_t: net/* 2005-10-28 08:16:47 -07:00
decnet [DECNET]: Remove some redundant ifdeffed code 2005-10-25 23:49:29 -02:00
econet [IPV4]: Replace __in_dev_get with __in_dev_get_rcu/rtnl 2005-10-03 14:35:55 -07:00
ethernet [NET]: Fix reversed logic in eth_type_trans(). 2005-09-28 22:37:53 -07:00
ieee80211 [PATCH] ieee80211 build fix 2005-10-26 00:54:23 -04:00
ipv4 [IPv4/IPv6]: UFO Scatter-gather approach 2005-10-28 16:30:00 -02:00
ipv6 [IPv4/IPv6]: UFO Scatter-gather approach 2005-10-28 16:30:00 -02:00
ipx
irda [IPV4]: Replace __in_dev_get with __in_dev_get_rcu/rtnl 2005-10-03 14:35:55 -07:00
key [PATCH] gfp flags annotations - part 1 2005-10-08 15:00:57 -07:00
lapb
llc [PATCH] gfp flags annotations - part 1 2005-10-08 15:00:57 -07:00
netfilter [NETFILTER] nfnetlink: use highest bit of nfa_type to indicate nested TLV 2005-10-10 20:52:19 -07:00
netlink Merge master.kernel.org:/pub/scm/linux/kernel/git/acme/net-2.6.15 2005-10-28 08:50:37 -07:00
netrom [AX.25]: Fix packet socket crash 2005-10-05 12:16:04 -07:00
packet [NET]: Fix packet timestamping. 2005-10-03 13:57:23 -07:00
rose [AX.25]: Use constant instead of magic number 2005-10-26 01:14:09 -02:00
rxrpc [PATCH] gfp flags annotations - part 1 2005-10-08 15:00:57 -07:00
sched [NET]: Disable NET_SCH_CLK_CPU for SMP x86 hosts 2005-10-13 14:41:44 -07:00
sctp [NET]: Wider use of for_each_*cpu() 2005-10-25 23:54:01 -02:00
sunrpc RPC: Ensure that nobody can queue up new upcalls after rpc_close_pipes() 2005-10-27 22:12:46 -04:00
unix
wanrouter
x25
xfrm [IPSEC]: Kill obsolete get_mss function 2005-10-26 00:48:45 -02:00
compat.c [PATCH] Fix 32bit sendmsg() flaw 2005-09-08 08:14:11 -07:00
Kconfig [NETFILTER] move nfnetlink options to right location in kconfig menu 2005-09-17 00:41:21 -07:00
Makefile
nonet.c
socket.c [NET]: Fix module reference counts for loadable protocol modules 2005-09-27 15:23:38 -07:00
sysctl_net.c [NET]: Fix "sysctl_net.c:36: error: 'core_table' undeclared here" 2005-10-03 14:16:34 -07:00
TUNABLE