[IPV6]: Use the {DEFINE|REF}_PROTO_INUSE infrastructure
Trivial patch to make "tcpv6,udpv6,udplitev6,rawv6" protocols uses the fast "inuse sockets" infrastructure Each protocol use then a static percpu var, instead of a dynamic one. This saves some ram and some cpu cycles Signed-off-by: Eric Dumazet <dada1@cosmosbay.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
47a31a6ffc
commit
c5a432f1a1
@@ -1144,6 +1144,8 @@ static int rawv6_init_sk(struct sock *sk)
|
|||||||
return(0);
|
return(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DEFINE_PROTO_INUSE(rawv6)
|
||||||
|
|
||||||
struct proto rawv6_prot = {
|
struct proto rawv6_prot = {
|
||||||
.name = "RAWv6",
|
.name = "RAWv6",
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
@@ -1166,6 +1168,7 @@ struct proto rawv6_prot = {
|
|||||||
.compat_setsockopt = compat_rawv6_setsockopt,
|
.compat_setsockopt = compat_rawv6_setsockopt,
|
||||||
.compat_getsockopt = compat_rawv6_getsockopt,
|
.compat_getsockopt = compat_rawv6_getsockopt,
|
||||||
#endif
|
#endif
|
||||||
|
REF_PROTO_INUSE(rawv6)
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef CONFIG_PROC_FS
|
#ifdef CONFIG_PROC_FS
|
||||||
|
@@ -2107,6 +2107,8 @@ void tcp6_proc_exit(void)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
DEFINE_PROTO_INUSE(tcpv6)
|
||||||
|
|
||||||
struct proto tcpv6_prot = {
|
struct proto tcpv6_prot = {
|
||||||
.name = "TCPv6",
|
.name = "TCPv6",
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
@@ -2141,6 +2143,7 @@ struct proto tcpv6_prot = {
|
|||||||
.compat_setsockopt = compat_tcp_setsockopt,
|
.compat_setsockopt = compat_tcp_setsockopt,
|
||||||
.compat_getsockopt = compat_tcp_getsockopt,
|
.compat_getsockopt = compat_tcp_getsockopt,
|
||||||
#endif
|
#endif
|
||||||
|
REF_PROTO_INUSE(tcpv6)
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct inet6_protocol tcpv6_protocol = {
|
static struct inet6_protocol tcpv6_protocol = {
|
||||||
|
@@ -970,6 +970,8 @@ void udp6_proc_exit(void) {
|
|||||||
|
|
||||||
/* ------------------------------------------------------------------------ */
|
/* ------------------------------------------------------------------------ */
|
||||||
|
|
||||||
|
DEFINE_PROTO_INUSE(udpv6)
|
||||||
|
|
||||||
struct proto udpv6_prot = {
|
struct proto udpv6_prot = {
|
||||||
.name = "UDPv6",
|
.name = "UDPv6",
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
@@ -991,6 +993,7 @@ struct proto udpv6_prot = {
|
|||||||
.compat_setsockopt = compat_udpv6_setsockopt,
|
.compat_setsockopt = compat_udpv6_setsockopt,
|
||||||
.compat_getsockopt = compat_udpv6_getsockopt,
|
.compat_getsockopt = compat_udpv6_getsockopt,
|
||||||
#endif
|
#endif
|
||||||
|
REF_PROTO_INUSE(udpv6)
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct inet_protosw udpv6_protosw = {
|
static struct inet_protosw udpv6_protosw = {
|
||||||
|
@@ -40,6 +40,8 @@ static int udplite_v6_get_port(struct sock *sk, unsigned short snum)
|
|||||||
return udplite_get_port(sk, snum, ipv6_rcv_saddr_equal);
|
return udplite_get_port(sk, snum, ipv6_rcv_saddr_equal);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DEFINE_PROTO_INUSE(udplitev6)
|
||||||
|
|
||||||
struct proto udplitev6_prot = {
|
struct proto udplitev6_prot = {
|
||||||
.name = "UDPLITEv6",
|
.name = "UDPLITEv6",
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
@@ -62,6 +64,7 @@ struct proto udplitev6_prot = {
|
|||||||
.compat_setsockopt = compat_udpv6_setsockopt,
|
.compat_setsockopt = compat_udpv6_setsockopt,
|
||||||
.compat_getsockopt = compat_udpv6_getsockopt,
|
.compat_getsockopt = compat_udpv6_getsockopt,
|
||||||
#endif
|
#endif
|
||||||
|
REF_PROTO_INUSE(udplitev6)
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct inet_protosw udplite6_protosw = {
|
static struct inet_protosw udplite6_protosw = {
|
||||||
|
Reference in New Issue
Block a user