linux-stable/net
Benjamin LaHaise 4947d3ef8d [NET]: Speed up __alloc_skb()
From: Benjamin LaHaise <bcrl@kvack.org>

In __alloc_skb(), the use of skb_shinfo() which casts a u8 * to the 
shared info structure results in gcc being forced to do a reload of the 
pointer since it has no information on possible aliasing.  Fix this by 
using a pointer to refer to skb_shared_info.

By initializing skb_shared_info sequentially, the write combining buffers 
can reduce the number of memory transactions to a single write.  Reorder 
the initialization in __alloc_skb() to match the structure definition.  
There is also an alignment issue on 64 bit systems with skb_shared_info 
by converting nr_frags to a short everything packs up nicely.

Also, pass the slab cache pointer according to the fclone flag instead 
of using two almost identical function calls.

This raises bw_unix performance up to a peak of 707KB/s when combined 
with the spinlock patch.  It should help other networking protocols, too.

Signed-off-by: David S. Miller <davem@davemloft.net>
2006-01-03 14:06:50 -08:00
..
802 [NET]: kfree cleanup 2005-11-08 09:41:34 -08:00
8021q [VLAN]: Add two missing checks to vlan_ioctl_handler() 2005-12-21 18:39:49 -08:00
appletalk [NET]: move struct proto_ops to const 2006-01-03 13:11:15 -08:00
atm [NET]: move struct proto_ops to const 2006-01-03 13:11:15 -08:00
ax25 [NET]: move struct proto_ops to const 2006-01-03 13:11:15 -08:00
bluetooth [NET]: move struct proto_ops to const 2006-01-03 13:11:15 -08:00
bridge [INET_SOCK]: Move struct inet_sock & helper functions to net/inet_sock.h 2006-01-03 13:11:21 -08:00
core [NET]: Speed up __alloc_skb() 2006-01-03 14:06:50 -08:00
dccp [INET_SOCK]: Move struct inet_sock & helper functions to net/inet_sock.h 2006-01-03 13:11:21 -08:00
decnet [SOCK]: Introduce sk_receive_skb 2006-01-03 13:11:19 -08:00
econet [INET_SOCK]: Move struct inet_sock & helper functions to net/inet_sock.h 2006-01-03 13:11:21 -08:00
ethernet [NET]: kfree cleanup 2005-11-08 09:41:34 -08:00
ieee80211 [PATCH] ieee80211_crypt_tkip depends on NET_RADIO 2005-12-12 23:59:28 -05:00
ipv4 [INET_SOCK]: Move struct inet_sock & helper functions to net/inet_sock.h 2006-01-03 13:11:21 -08:00
ipv6 [INET_SOCK]: Move struct inet_sock & helper functions to net/inet_sock.h 2006-01-03 13:11:21 -08:00
ipx [NET]: move struct proto_ops to const 2006-01-03 13:11:15 -08:00
irda [NET]: move struct proto_ops to const 2006-01-03 13:11:15 -08:00
key [NET]: move struct proto_ops to const 2006-01-03 13:11:15 -08:00
lapb [NET]: Kill skb->list 2005-08-29 15:31:14 -07:00
llc [NET]: move struct proto_ops to const 2006-01-03 13:11:15 -08:00
netfilter [NETFILTER]: Wait for untracked references in nf_conntrack module unload 2005-12-05 13:36:50 -08:00
netlink [NET]: move struct proto_ops to const 2006-01-03 13:11:15 -08:00
netrom [NET]: move struct proto_ops to const 2006-01-03 13:11:15 -08:00
packet [NET]: move struct proto_ops to const 2006-01-03 13:11:15 -08:00
rose [NET]: kfree cleanup 2005-11-08 09:41:34 -08:00
rxrpc [NET]: Detect hardware rx checksum faults correctly 2005-11-10 13:01:24 -08:00
sched [INET_SOCK]: Move struct inet_sock & helper functions to net/inet_sock.h 2006-01-03 13:11:21 -08:00
sctp [INET_SOCK]: Move struct inet_sock & helper functions to net/inet_sock.h 2006-01-03 13:11:21 -08:00
sunrpc [NET]: move struct proto_ops to const 2006-01-03 13:11:15 -08:00
unix [NET]: move struct proto_ops to const 2006-01-03 13:11:15 -08:00
wanrouter [NET]: move struct proto_ops to const 2006-01-03 13:11:15 -08:00
x25 [NET]: move struct proto_ops to const 2006-01-03 13:11:15 -08:00
xfrm [LSM-IPSec]: Security association restriction. 2006-01-03 13:10:24 -08: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 [NETFILTER]: link 'netfilter' before ipv4 2005-11-14 15:25:59 -08:00
nonet.c [NET]: Fix sock_init() return value. 2006-01-03 13:11:17 -08:00
socket.c [NET]: restructure sock_aio_{read,write} / sock_{readv,writev} 2006-01-03 13:11:18 -08:00
sysctl_net.c [NET]: Fix "sysctl_net.c:36: error: 'core_table' undeclared here" 2005-10-03 14:16:34 -07:00
TUNABLE Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00