addr [0] &= 0xfe;       /* clear multicast bit */
        addr [0] |= 0x02;       /* set local assignment bit (IEEE802) */
 }
+
+/**
+ * compare_ether_addr - Compare two Ethernet addresses
+ * @addr1: Pointer to a six-byte array containing the Ethernet address
+ * @addr2 Pointer other six-byte array containing the Ethernet address
+ *
+ * Compare two ethernet addresses, returns 0 if equal
+ */
+static inline unsigned compare_ether_addr(const u8 *_a, const u8 *_b)
+{
+       const u16 *a = (const u16 *) _a;
+       const u16 *b = (const u16 *) _b;
+
+       BUILD_BUG_ON(ETH_ALEN != 6);
+       return ((a[0] ^ b[0]) | (a[1] ^ b[1]) | (a[2] ^ b[2])) != 0;
+}
 #endif /* __KERNEL__ */
 
 #endif /* _LINUX_ETHERDEVICE_H */
 
        return 0;
 }
 
-static inline unsigned int compare_eth_addr(const unsigned char *__a, const unsigned char *__b)
-{
-       const unsigned short *dest = (unsigned short *) __a;
-       const unsigned short *devaddr = (unsigned short *) __b;
-       unsigned int res;
-
-       BUILD_BUG_ON(ETH_ALEN != 6);
-       res = ((dest[0] ^ devaddr[0]) |
-              (dest[1] ^ devaddr[1]) |
-              (dest[2] ^ devaddr[2])) != 0;
-
-       return res;
-}
 
 /*
  *     Determine the packet's protocol ID. The rule here is that we 
        eth = eth_hdr(skb);
        
        if (*eth->h_dest&1) {
-               if (!compare_eth_addr(eth->h_dest, dev->broadcast))
+               if (!compare_ether_addr(eth->h_dest, dev->broadcast))
                        skb->pkt_type = PACKET_BROADCAST;
                else
                        skb->pkt_type = PACKET_MULTICAST;
         */
         
        else if(1 /*dev->flags&IFF_PROMISC*/) {
-               if (unlikely(compare_eth_addr(eth->h_dest, dev->dev_addr)))
+               if (unlikely(compare_ether_addr(eth->h_dest, dev->dev_addr)))
                        skb->pkt_type = PACKET_OTHERHOST;
        }