Looks good, thanks. Ethan
On Mon, Apr 16, 2012 at 17:18, Ben Pfaff <b...@nicira.com> wrote: > Signed-off-by: Ben Pfaff <b...@nicira.com> > --- > lib/hash.c | 17 +++++++++-------- > 1 files changed, 9 insertions(+), 8 deletions(-) > > diff --git a/lib/hash.c b/lib/hash.c > index b3d9156..a77da7d 100644 > --- a/lib/hash.c > +++ b/lib/hash.c > @@ -16,6 +16,7 @@ > #include <config.h> > #include "hash.h" > #include <string.h> > +#include "unaligned.h" > > /* Returns the hash of the 'n' 32-bit words at 'p', starting from 'basis'. > * 'p' must be properly aligned. */ > @@ -76,21 +77,21 @@ hash_bytes(const void *p_, size_t n, uint32_t basis) > { > const uint8_t *p = p_; > uint32_t a, b, c; > - uint32_t tmp[3]; > > a = b = c = 0xdeadbeef + n + basis; > > - while (n >= sizeof tmp) { > - memcpy(tmp, p, sizeof tmp); > - a += tmp[0]; > - b += tmp[1]; > - c += tmp[2]; > + while (n >= 12) { > + a += get_unaligned_u32((uint32_t *) p); > + b += get_unaligned_u32((uint32_t *) (p + 4)); > + c += get_unaligned_u32((uint32_t *) (p + 8)); > hash_mix(&a, &b, &c); > - n -= sizeof tmp; > - p += sizeof tmp; > + n -= 12; > + p += 12; > } > > if (n) { > + uint32_t tmp[3]; > + > tmp[0] = tmp[1] = tmp[2] = 0; > memcpy(tmp, p, n); > a += tmp[0]; > -- > 1.7.9 > > _______________________________________________ > dev mailing list > dev@openvswitch.org > http://openvswitch.org/mailman/listinfo/dev _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev