#include <linux/bitops.h>
 #include <net/ieee80211.h>
+#include <linux/etherdevice.h>
 
 #include "assoc.h"
 #include "join.h"
        /* If we're given and 'any' BSSID, try associating based on SSID */
 
        if (test_bit(ASSOC_FLAG_BSSID, &assoc_req->flags)) {
-               if (memcmp(bssid_any, assoc_req->bssid, ETH_ALEN)
-                   && memcmp(bssid_off, assoc_req->bssid, ETH_ALEN)) {
+               if (compare_ether_addr(bssid_any, assoc_req->bssid)
+                   && compare_ether_addr(bssid_off, assoc_req->bssid)) {
                        ret = assoc_helper_bssid(priv, assoc_req);
                        done = 1;
                        if (ret) {
 
        /* But don't use 'any' SSID if there's a valid locked BSSID to use */
        if (test_bit(ASSOC_FLAG_BSSID, &assoc_req->flags)) {
-               if (memcmp(&assoc_req->bssid, bssid_any, ETH_ALEN)
-                   && memcmp(&assoc_req->bssid, bssid_off, ETH_ALEN))
+               if (compare_ether_addr(assoc_req->bssid, bssid_any)
+                   && compare_ether_addr(assoc_req->bssid, bssid_off))
                        find_any_ssid = 0;
        }
 
 
         */
        mutex_lock(&adapter->lock);
        list_for_each_entry (iter_bss, &adapter->network_list, list) {
-               if (memcmp(iter_bss->bssid, bssid, ETH_ALEN))
+               if (compare_ether_addr(iter_bss->bssid, bssid))
                        continue; /* bssid doesn't match */
                switch (mode) {
                case IW_MODE_INFRA:
 
                if (libertas_SSID_cmp(&iter_bss->ssid, ssid) != 0)
                        continue; /* ssid doesn't match */
-               if (bssid && memcmp(iter_bss->bssid, bssid, ETH_ALEN) != 0)
+               if (bssid && compare_ether_addr(iter_bss->bssid, bssid) != 0)
                        continue; /* bssid doesn't match */
 
                switch (mode) {