From: Ben Pfaff Date: Mon, 9 Apr 2012 21:33:56 +0000 (-0700) Subject: mac-learning: Speed up mac_table_hash(). X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=18e89129873f9dbdcdaa3cee909c1690da008e8d;p=openvswitch mac-learning: Speed up mac_table_hash(). Signed-off-by: Ben Pfaff --- diff --git a/lib/mac-learning.c b/lib/mac-learning.c index e0618c2e..68fc6214 100644 --- a/lib/mac-learning.c +++ b/lib/mac-learning.c @@ -28,6 +28,7 @@ #include "poll-loop.h" #include "tag.h" #include "timeval.h" +#include "unaligned.h" #include "util.h" #include "vlan-bitmap.h" #include "vlog.h" @@ -49,7 +50,9 @@ static uint32_t mac_table_hash(const struct mac_learning *ml, const uint8_t mac[ETH_ADDR_LEN], uint16_t vlan) { - return hash_bytes(mac, ETH_ADDR_LEN, vlan ^ ml->secret); + unsigned int mac1 = get_unaligned_u32((uint32_t *) mac); + unsigned int mac2 = get_unaligned_u16((uint16_t *) (mac + 4)); + return hash_3words(mac1, mac2 | (vlan << 16), ml->secret); } static struct mac_entry *