linux/net
Arnaldo Carvalho de Melo 8feaf0c0a5 [INET]: Generalise tcp_tw_bucket, aka TIME_WAIT sockets
This paves the way to generalise the rest of the sock ID lookup
routines and saves some bytes in TCPv4 TIME_WAIT sockets on distro
kernels (where IPv6 is always built as a module):

[root@qemu ~]# grep tw_sock /proc/slabinfo
tw_sock_TCPv6  0  0  128  31  1
tw_sock_TCP    0  0   96  41  1
[root@qemu ~]#

Now if a protocol wants to use the TIME_WAIT generic infrastructure it
only has to set the sk_prot->twsk_obj_size field with the size of its
inet_timewait_sock derived sock and proto_register will create
sk_prot->twsk_slab, for now its only for INET sockets, but we can
introduce timewait_sock later if some non INET transport protocolo
wants to use this stuff.

Next changesets will take advantage of this new infrastructure to
generalise even more TCP code.

[acme@toy net-2.6.14]$ grep built-in /tmp/before.size /tmp/after.size
/tmp/before.size: 188646   11764    5068  205478   322a6 net/ipv4/built-in.o
/tmp/after.size:  188144   11764    5068  204976   320b0 net/ipv4/built-in.o
[acme@toy net-2.6.14]$

Tested with both IPv4 & IPv6 (::1 (localhost) & ::ffff:172.20.0.1
(qemu host)).

Signed-off-by: Arnaldo Carvalho de Melo <acme@ghostprotocols.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
2005-08-29 15:42:13 -07:00
..
802 [NET]: Kill skb->real_dev 2005-08-29 15:32:25 -07:00
8021q [NET]: Kill skb->real_dev 2005-08-29 15:32:25 -07:00
appletalk [TCP]: Move the tcp sock states to net/tcp_states.h 2005-08-29 15:41:54 -07:00
atm [NET]: Kill skb->list 2005-08-29 15:31:14 -07:00
ax25 [TCP]: Move the tcp sock states to net/tcp_states.h 2005-08-29 15:41:54 -07:00
bluetooth [Bluetooth] Add direction and timestamp to stack internal events 2005-08-06 12:36:54 +02:00
bridge [NETLINK]: Add properly module refcounting for kernel netlink sockets. 2005-08-29 15:35:08 -07:00
core [INET]: Generalise tcp_tw_bucket, aka TIME_WAIT sockets 2005-08-29 15:42:13 -07:00
decnet [TCP]: Move the tcp sock states to net/tcp_states.h 2005-08-29 15:41:54 -07:00
econet [NET]: Kill skb->real_dev 2005-08-29 15:32:25 -07:00
ethernet [NET]: Remove explicit initializations of skb->input_dev 2005-08-29 15:33:26 -07:00
ipv4 [INET]: Generalise tcp_tw_bucket, aka TIME_WAIT sockets 2005-08-29 15:42:13 -07:00
ipv6 [INET]: Generalise tcp_tw_bucket, aka TIME_WAIT sockets 2005-08-29 15:42:13 -07:00
ipx [TCP]: Move the tcp sock states to net/tcp_states.h 2005-08-29 15:41:54 -07:00
irda [TCP]: Move the tcp sock states to net/tcp_states.h 2005-08-29 15:41:54 -07:00
key [IPSEC]: Add XFRM_STATE_NOPMTUDISC flag 2005-06-20 13:21:43 -07:00
lapb [NET]: Kill skb->list 2005-08-29 15:31:14 -07:00
llc [TCP]: Move the tcp sock states to net/tcp_states.h 2005-08-29 15:41:54 -07:00
netfilter [NETFILTER]: cleanup nfnetlink_check_attributes() 2005-08-29 15:40:06 -07:00
netlink [NETLINK]: Add properly module refcounting for kernel netlink sockets. 2005-08-29 15:35:08 -07:00
netrom [TCP]: Move the tcp sock states to net/tcp_states.h 2005-08-29 15:41:54 -07:00
packet [NET]: Kill skb->real_dev 2005-08-29 15:32:25 -07:00
rose [TCP]: Move the tcp sock states to net/tcp_states.h 2005-08-29 15:41:54 -07:00
rxrpc [PATCH] Cleanup patch for process freezing 2005-06-25 17:10:13 -07:00
sched [NET]: Kill skb->tc_classid 2005-08-29 15:31:18 -07:00
sctp [TCP]: Move the tcp sock states to net/tcp_states.h 2005-08-29 15:41:54 -07:00
sunrpc [TCP]: Move the tcp sock states to net/tcp_states.h 2005-08-29 15:41:54 -07:00
unix [TCP]: Move the tcp sock states to net/tcp_states.h 2005-08-29 15:41:54 -07:00
wanrouter [TCP]: Move the tcp sock states to net/tcp_states.h 2005-08-29 15:41:54 -07:00
x25 [TCP]: Move the tcp sock states to net/tcp_states.h 2005-08-29 15:41:54 -07:00
xfrm [NETLINK]: Add properly module refcounting for kernel netlink sockets. 2005-08-29 15:35:08 -07:00
compat.c [NET]: Fix memory leak in sys_{send,recv}msg() w/compat 2005-08-09 15:29:19 -07:00
Kconfig [NETFITLER]: Add nfnetlink layer. 2005-08-29 15:31:29 -07:00
Makefile [NETFITLER]: Add nfnetlink layer. 2005-08-29 15:31:29 -07:00
nonet.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
socket.c [NET]: dont use strlen() but the result from a prior sprintf() 2005-06-22 14:32:51 -07:00
sysctl_net.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
TUNABLE Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00