From aecd4ac8f266df483d3fd2a5168a4217f88d2f5a Mon Sep 17 00:00:00 2001 From: Kavitha Velayutham Date: Tue, 22 Jan 2019 18:25:47 +0530 Subject: [PATCH] [RAMEN9610-12700][Common] wlbt: Mac Randomization Fixes Mac randomization Fixes and optimization Change-Id: I26d6dea2162c202cd962abcc6fadb3b54b6950a1 SCSC-Bug-Id: SSB-48540 Signed-off-by: Kavitha Velayutham --- drivers/net/wireless/scsc/cfg80211_ops.c | 25 ++++++++-------------- drivers/net/wireless/scsc/nl80211_vendor.c | 22 +++++++++++++++---- 2 files changed, 27 insertions(+), 20 deletions(-) diff --git a/drivers/net/wireless/scsc/cfg80211_ops.c b/drivers/net/wireless/scsc/cfg80211_ops.c index 67d67c4f8cdb..afdb61aab91a 100755 --- a/drivers/net/wireless/scsc/cfg80211_ops.c +++ b/drivers/net/wireless/scsc/cfg80211_ops.c @@ -552,27 +552,20 @@ int slsi_scan(struct wiphy *wiphy, struct net_device *dev, #ifdef CONFIG_SCSC_WLAN_ENABLE_MAC_RANDOMISATION #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0)) - if (request->flags & NL80211_SCAN_FLAG_RANDOM_ADDR) { - memcpy(sdev->scan_mac_addr, request->mac_addr, ETH_ALEN); - r = slsi_set_mac_randomisation_mask(sdev, request->mac_addr_mask); - if (!r) - sdev->scan_addr_set = 1; - } else -#endif - if (scan_type == FAPI_SCANTYPE_GSCAN && sdev->scan_addr_set == 1) { - memset(mac_addr_mask, 0xFF, ETH_ALEN); - for (i = 3; i < ETH_ALEN; i++) - mac_addr_mask[i] = 0x00; - slsi_set_mac_randomisation_mask(sdev, mac_addr_mask); - } else { + if (request->flags & NL80211_SCAN_FLAG_RANDOM_ADDR) { + memcpy(sdev->scan_mac_addr, request->mac_addr, ETH_ALEN); + r = slsi_set_mac_randomisation_mask(sdev, request->mac_addr_mask); + if (!r) + sdev->scan_addr_set = 1; + } else +#endif if (sdev->scan_addr_set) { memset(mac_addr_mask, 0xFF, ETH_ALEN); r = slsi_set_mac_randomisation_mask(sdev, mac_addr_mask); - if (!r) - sdev->scan_addr_set = 0; + sdev->scan_addr_set = 0; } - } #endif + r = slsi_mlme_add_scan(sdev, dev, scan_type, diff --git a/drivers/net/wireless/scsc/nl80211_vendor.c b/drivers/net/wireless/scsc/nl80211_vendor.c index 753dd0c8cc52..e2655e6c8d17 100755 --- a/drivers/net/wireless/scsc/nl80211_vendor.c +++ b/drivers/net/wireless/scsc/nl80211_vendor.c @@ -1090,6 +1090,9 @@ static int slsi_gscan_add_mlme(struct slsi_dev *sdev, struct slsi_nl_gscan_param struct net_device *dev; int ret = 0; int i; +#ifdef CONFIG_SCSC_WLAN_ENABLE_MAC_RANDOMISATION + u8 mac_addr_mask[ETH_ALEN] = {0xFF}; +#endif dev = slsi_gscan_get_netdev(sdev); @@ -1124,6 +1127,19 @@ static int slsi_gscan_add_mlme(struct slsi_dev *sdev, struct slsi_nl_gscan_param if (sdev->epno_active) report_mode |= FAPI_REPORTMODE_NO_BATCH; +#ifdef CONFIG_SCSC_WLAN_ENABLE_MAC_RANDOMISATION + if (sdev->scan_addr_set == 1) { + memset(mac_addr_mask, 0xFF, ETH_ALEN); + for (i = 3; i < ETH_ALEN; i++) + mac_addr_mask[i] = 0x00; + ret = slsi_set_mac_randomisation_mask(sdev, mac_addr_mask); + if (ret) + sdev->scan_addr_set = 0; + } else { + memset(mac_addr_mask, 0xFF, ETH_ALEN); + slsi_set_mac_randomisation_mask(sdev, mac_addr_mask); + } +#endif ret = slsi_mlme_add_scan(sdev, dev, FAPI_SCANTYPE_GSCAN, @@ -2986,6 +3002,8 @@ static int slsi_gscan_set_oui(struct wiphy *wiphy, case SLSI_NL_ATTRIBUTE_PNO_RANDOM_MAC_OUI: { memcpy(&scan_oui, nla_data(attr), 3); + memcpy(sdev->scan_mac_addr, scan_oui, 6); + sdev->scan_addr_set = 1; break; } default: @@ -2994,10 +3012,6 @@ static int slsi_gscan_set_oui(struct wiphy *wiphy, break; } } - - memcpy(sdev->scan_mac_addr, scan_oui, 6); - sdev->scan_addr_set = 1; - SLSI_MUTEX_UNLOCK(ndev_vif->scan_mutex); #endif return ret; -- 2.20.1