diff --git a/src/vnet/CMakeLists.txt b/src/vnet/CMakeLists.txt
index 395f958..5de06da 100644
--- a/src/vnet/CMakeLists.txt
+++ b/src/vnet/CMakeLists.txt
@@ -888,7 +888,7 @@
   hash/hash.c
   hash/cli.c
   hash/crc32_5tuple.c
-  hash/crc32_handoff_eth.c
+  hash/handoff_eth.c
 )
 
 list(APPEND VNET_HEADERS
diff --git a/src/vnet/handoff.c b/src/vnet/handoff.c
index 15cfd60..5d4ef6f 100644
--- a/src/vnet/handoff.c
+++ b/src/vnet/handoff.c
@@ -229,7 +229,7 @@
 	    return VNET_API_ERROR_UNIMPLEMENTED;
 
 	  d->hash_fn = vnet_hash_function_from_name (
-	    "handoff_eth_sym_crc32c", VNET_HASH_FN_TYPE_ETHERNET);
+	    "handoff-eth-sym", VNET_HASH_FN_TYPE_ETHERNET);
 	}
       else
 	{
@@ -238,7 +238,7 @@
 	      vnet_hash_default_function (VNET_HASH_FN_TYPE_ETHERNET);
 	  else
 	    d->hash_fn = vnet_hash_function_from_name (
-	      "handoff_eth_crc32c", VNET_HASH_FN_TYPE_ETHERNET);
+	      "handoff-eth", VNET_HASH_FN_TYPE_ETHERNET);
 	}
     }
 
diff --git a/src/vnet/hash/crc32_handoff_eth.c b/src/vnet/hash/handoff_eth.c
similarity index 87%
rename from src/vnet/hash/crc32_handoff_eth.c
rename to src/vnet/hash/handoff_eth.c
index 13fc12c..dc8db2a 100644
--- a/src/vnet/hash/crc32_handoff_eth.c
+++ b/src/vnet/hash/handoff_eth.c
@@ -20,6 +20,17 @@
 #include <vnet/ip/ip6_packet.h>
 #include <vnet/mpls/packet.h>
 #include <vppinfra/crc32.h>
+#include <vppinfra/xxhash.h>
+
+always_inline u32
+ho_hash (u64 key)
+{
+#ifdef clib_crc32c_uses_intrinsics
+  return clib_crc32c ((u8 *) &key, sizeof (key));
+#else
+  return clib_xxhash (key);
+#endif
+}
 
 static inline u64
 ipv4_get_key (ip4_header_t * ip)
@@ -235,7 +246,7 @@
 }
 
 void
-handoff_eth_crc32c_func (void **p, u32 *hash, u32 n_packets)
+handoff_eth_func (void **p, u32 *hash, u32 n_packets)
 {
   u32 n_left_from = n_packets;
 
@@ -253,10 +264,10 @@
       key[2] = eth_get_key ((ethernet_header_t *) p[2]);
       key[3] = eth_get_key ((ethernet_header_t *) p[3]);
 
-      hash[0] = clib_crc32c ((u8 *) &key[0], sizeof (key[0]));
-      hash[1] = clib_crc32c ((u8 *) &key[1], sizeof (key[1]));
-      hash[2] = clib_crc32c ((u8 *) &key[2], sizeof (key[2]));
-      hash[3] = clib_crc32c ((u8 *) &key[3], sizeof (key[3]));
+      hash[0] = ho_hash (key[0]);
+      hash[1] = ho_hash (key[1]);
+      hash[2] = ho_hash (key[2]);
+      hash[3] = ho_hash (key[3]);
 
       hash += 4;
       n_left_from -= 4;
@@ -268,7 +279,7 @@
       u64 key;
 
       key = eth_get_key ((ethernet_header_t *) p[0]);
-      hash[0] = clib_crc32c ((u8 *) &key, sizeof (key));
+      hash[0] = ho_hash (key);
 
       hash += 1;
       n_left_from -= 1;
@@ -276,15 +287,15 @@
     }
 }
 
-VNET_REGISTER_HASH_FUNCTION (handoff_eth_crc32c, static) = {
-  .name = "handoff-eth-crc32c",
+VNET_REGISTER_HASH_FUNCTION (handoff_eth, static) = {
+  .name = "handoff-eth",
   .description = "Ethernet/IPv4/IPv6/MPLS headers",
   .priority = 2,
-  .function[VNET_HASH_FN_TYPE_ETHERNET] = handoff_eth_crc32c_func,
+  .function[VNET_HASH_FN_TYPE_ETHERNET] = handoff_eth_func,
 };
 
 void
-handoff_eth_sym_crc32c_func (void **p, u32 *hash, u32 n_packets)
+handoff_eth_sym_func (void **p, u32 *hash, u32 n_packets)
 {
   u32 n_left_from = n_packets;
 
@@ -302,10 +313,10 @@
       key[2] = eth_get_sym_key ((ethernet_header_t *) p[2]);
       key[3] = eth_get_sym_key ((ethernet_header_t *) p[3]);
 
-      hash[0] = clib_crc32c ((u8 *) &key[0], sizeof (key[0]));
-      hash[1] = clib_crc32c ((u8 *) &key[1], sizeof (key[1]));
-      hash[2] = clib_crc32c ((u8 *) &key[2], sizeof (key[2]));
-      hash[3] = clib_crc32c ((u8 *) &key[3], sizeof (key[3]));
+      hash[0] = ho_hash (key[0]);
+      hash[1] = ho_hash (key[1]);
+      hash[2] = ho_hash (key[2]);
+      hash[3] = ho_hash (key[3]);
 
       hash += 4;
       n_left_from -= 4;
@@ -317,7 +328,7 @@
       u64 key;
 
       key = eth_get_sym_key ((ethernet_header_t *) p[0]);
-      hash[0] = clib_crc32c ((u8 *) &key, sizeof (key));
+      hash[0] = ho_hash (key);
 
       hash += 1;
       n_left_from -= 1;
@@ -325,11 +336,11 @@
     }
 }
 
-VNET_REGISTER_HASH_FUNCTION (handoff_eth_sym_crc32c, static) = {
-  .name = "handoff-eth-sym-crc32c",
+VNET_REGISTER_HASH_FUNCTION (handoff_eth_sym, static) = {
+  .name = "handoff-eth-sym",
   .description = "Ethernet/IPv4/IPv6/MPLS headers Symmetric",
   .priority = 1,
-  .function[VNET_HASH_FN_TYPE_ETHERNET] = handoff_eth_sym_crc32c_func,
+  .function[VNET_HASH_FN_TYPE_ETHERNET] = handoff_eth_sym_func,
 };
 
 /*
