[XFRM]: Simplify xfrm_spi_hash

It can use __xfrm{4,6}_addr_hash().

Signed-off-by: David S. Miller <[EMAIL PROTECTED]>
---
 net/xfrm/xfrm_state.c |   27 ++++++---------------------
 1 files changed, 6 insertions(+), 21 deletions(-)

diff --git a/net/xfrm/xfrm_state.c b/net/xfrm/xfrm_state.c
index 9b3ab5c..3e8485a 100644
--- a/net/xfrm/xfrm_state.c
+++ b/net/xfrm/xfrm_state.c
@@ -86,35 +86,20 @@ static inline unsigned int xfrm_dst_hash
        return __xfrm_dst_hash(addr, reqid, family, xfrm_state_hmask);
 }
 
-static inline unsigned int __xfrm4_spi_hash(xfrm_address_t *addr, u32 spi, u8 
proto,
-                                           unsigned int hmask)
-{
-       unsigned int h;
-       h = ntohl(addr->a4^spi^proto);
-       h = (h ^ (h>>10) ^ (h>>20)) & hmask;
-       return h;
-}
-
-static inline unsigned int __xfrm6_spi_hash(xfrm_address_t *addr, u32 spi, u8 
proto,
-                                           unsigned int hmask)
-{
-       unsigned int h;
-       h = ntohl(addr->a6[2]^addr->a6[3]^spi^proto);
-       h = (h ^ (h>>10) ^ (h>>20)) & hmask;
-       return h;
-}
-
 static inline unsigned int
 __xfrm_spi_hash(xfrm_address_t *addr, u32 spi, u8 proto, unsigned short family,
                unsigned int hmask)
 {
+       unsigned int h = spi ^ proto;
        switch (family) {
        case AF_INET:
-               return __xfrm4_spi_hash(addr, spi, proto, hmask);
+               h ^= __xfrm4_addr_hash(addr);
+               break;
        case AF_INET6:
-               return __xfrm6_spi_hash(addr, spi, proto, hmask);
+               h ^= __xfrm6_addr_hash(addr);
+               break;
        }
-       return 0;       /*XXX*/
+       return (h ^ (h >> 10) ^ (h >> 20)) & hmask;
 }
 
 static inline unsigned int
-- 
1.4.2.rc2.g3e042

-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to