From 8cf23c4620d30657aef087cb9889329be2511914 Mon Sep 17 00:00:00 2001 From: Jake Day Date: Wed, 18 Oct 2017 11:24:20 -0400 Subject: [PATCH] fix issues with getting and storing mac addresses --- .../net/wireless/marvell/mwifiex/cfg80211.c | 14 +++++--------- kernel/drivers/net/wireless/marvell/mwifiex/main.h | 1 - kernel/drivers/net/wireless/marvell/mwifiex/scan.c | 3 ++- 3 files changed, 7 insertions(+), 11 deletions(-) diff --git a/kernel/drivers/net/wireless/marvell/mwifiex/cfg80211.c b/kernel/drivers/net/wireless/marvell/mwifiex/cfg80211.c index 3d1ab200a..4160551eb 100644 --- a/kernel/drivers/net/wireless/marvell/mwifiex/cfg80211.c +++ b/kernel/drivers/net/wireless/marvell/mwifiex/cfg80211.c @@ -2506,6 +2506,7 @@ mwifiex_cfg80211_scan(struct wiphy *wiphy, struct ieee80211_channel *chan; struct ieee_types_header *ie; struct mwifiex_user_scan_cfg *user_scan_cfg; + u8 mac_addr[ETH_ALEN]; mwifiex_dbg(priv->adapter, CMD, "info: received scan request on %s\n", dev->name); @@ -2532,15 +2533,10 @@ mwifiex_cfg80211_scan(struct wiphy *wiphy, priv->scan_request = request; if (request->flags & NL80211_SCAN_FLAG_RANDOM_ADDR) { - ether_addr_copy(priv->random_mac, request->mac_addr); - for (i = 0; i < ETH_ALEN; i++) { - priv->random_mac[i] &= request->mac_addr_mask[i]; - priv->random_mac[i] |= get_random_int() & - ~(request->mac_addr_mask[i]); - } - ether_addr_copy(user_scan_cfg->random_mac, priv->random_mac); - } else { - eth_zero_addr(priv->random_mac); + get_random_mask_addr(mac_addr, request->mac_addr, + request->mac_addr_mask); + ether_addr_copy(request->mac_addr, mac_addr); + ether_addr_copy(user_scan_cfg->random_mac, mac_addr); } user_scan_cfg->num_ssids = request->n_ssids; diff --git a/kernel/drivers/net/wireless/marvell/mwifiex/main.h b/kernel/drivers/net/wireless/marvell/mwifiex/main.h index a76bd797e..a34de8582 100644 --- a/kernel/drivers/net/wireless/marvell/mwifiex/main.h +++ b/kernel/drivers/net/wireless/marvell/mwifiex/main.h @@ -680,7 +680,6 @@ struct mwifiex_private { struct mwifiex_user_scan_chan hidden_chan[MWIFIEX_USER_SCAN_CHAN_MAX]; u8 assoc_resp_ht_param; bool ht_param_present; - u8 random_mac[ETH_ALEN]; }; diff --git a/kernel/drivers/net/wireless/marvell/mwifiex/scan.c b/kernel/drivers/net/wireless/marvell/mwifiex/scan.c index c9d41ed77..cddf4122a 100644 --- a/kernel/drivers/net/wireless/marvell/mwifiex/scan.c +++ b/kernel/drivers/net/wireless/marvell/mwifiex/scan.c @@ -1948,7 +1948,8 @@ mwifiex_active_scan_req_for_passive_chan(struct mwifiex_private *priv) adapter->active_scan_triggered = true; if (priv->scan_request->flags & NL80211_SCAN_FLAG_RANDOM_ADDR) - ether_addr_copy(user_scan_cfg->random_mac, priv->random_mac); + ether_addr_copy(user_scan_cfg->random_mac, + priv->scan_request->mac_addr); user_scan_cfg->num_ssids = priv->scan_request->n_ssids; user_scan_cfg->ssid_list = priv->scan_request->ssids;