diff options
author | Eric Dumazet <dada1@cosmosbay.com> | 2008-11-24 00:42:23 +0100 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2008-11-24 00:42:23 +0100 |
commit | 04f258ce7f085dd69422fa01d41c8f0194a0e270 (patch) | |
tree | 948bf0a108717265df6228bcac2126ec423cb988 /net | |
parent | Merge branch 'for-david' of git://git.kernel.org/pub/scm/linux/kernel/git/chr... (diff) | |
download | linux-04f258ce7f085dd69422fa01d41c8f0194a0e270.tar.xz linux-04f258ce7f085dd69422fa01d41c8f0194a0e270.zip |
net: some optimizations in af_inet
1) Use eq_net() in inet_netns_ok() to speedup socket creation if
!CONFIG_NET_NS
2) Reorder the tests about inet_ehash_secret generation (once only)
Use the unlikely() macro when testing if inet_ehash_secret already
generated.
Signed-off-by: Eric Dumazet <dada1@cosmosbay.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net')
-rw-r--r-- | net/ipv4/af_inet.c | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/net/ipv4/af_inet.c b/net/ipv4/af_inet.c index b1462e8c64cf..fe03048c130d 100644 --- a/net/ipv4/af_inet.c +++ b/net/ipv4/af_inet.c @@ -245,7 +245,7 @@ static inline int inet_netns_ok(struct net *net, int protocol) int hash; struct net_protocol *ipprot; - if (net == &init_net) + if (net_eq(net, &init_net)) return 1; hash = protocol & (MAX_INET_PROTOS - 1); @@ -272,10 +272,9 @@ static int inet_create(struct net *net, struct socket *sock, int protocol) int try_loading_module = 0; int err; - if (sock->type != SOCK_RAW && - sock->type != SOCK_DGRAM && - !inet_ehash_secret) - build_ehash_secret(); + if (unlikely(!inet_ehash_secret)) + if (sock->type != SOCK_RAW && sock->type != SOCK_DGRAM) + build_ehash_secret(); sock->state = SS_UNCONNECTED; |