From 084e2b111bb9c809fd53563e3b5ef1ea3bef08ad Mon Sep 17 00:00:00 2001 From: Mark Cave-Ayland Date: Fri, 15 Dec 2017 18:41:53 +0000 Subject: ne2000: use inline net_crc32() and bitshift instead of compute_mcast_idx() This makes it much easier to compare the multicast CRC calculation endian and bitshift against the Linux driver implementation. Signed-off-by: Mark Cave-Ayland Signed-off-by: Jason Wang --- hw/net/ne2000.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'hw/net/ne2000.c') diff --git a/hw/net/ne2000.c b/hw/net/ne2000.c index 6874c8c6b9..687ef84aac 100644 --- a/hw/net/ne2000.c +++ b/hw/net/ne2000.c @@ -23,6 +23,8 @@ */ #include "qemu/osdep.h" #include "hw/pci/pci.h" +#include "net/net.h" +#include "net/eth.h" #include "ne2000.h" #include "hw/loader.h" #include "sysemu/sysemu.h" @@ -199,7 +201,7 @@ ssize_t ne2000_receive(NetClientState *nc, const uint8_t *buf, size_t size_) /* multicast */ if (!(s->rxcr & 0x08)) return size; - mcast_idx = compute_mcast_idx(buf); + mcast_idx = net_crc32(buf, ETH_ALEN) >> 26; if (!(s->mult[mcast_idx >> 3] & (1 << (mcast_idx & 7)))) return size; } else if (s->mem[0] == buf[0] && -- cgit v1.2.3