OSDN Git Service

mac80211: use eth_hw_addr_set()
authorJakub Kicinski <kuba@kernel.org>
Tue, 19 Oct 2021 16:28:15 +0000 (09:28 -0700)
committerJohannes Berg <johannes.berg@intel.com>
Thu, 21 Oct 2021 14:46:49 +0000 (16:46 +0200)
Commit 406f42fa0d3c ("net-next: When a bond have a massive amount
of VLANs...") introduced a rbtree for faster Ethernet address look
up. To maintain netdev->dev_addr in this tree we need to make all
the writes to it got through appropriate helpers.

Convert mac80211 from memcpy(... ETH_ADDR) to eth_hw_addr_set():

  @@
  expression dev, np;
  @@
  - memcpy(dev->dev_addr, np, ETH_ALEN)
  + eth_hw_addr_set(dev, np)

Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Link: https://lore.kernel.org/r/20211019162816.1384077-1-kuba@kernel.org
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
net/mac80211/iface.c

index 691b983..9a2145c 100644 (file)
@@ -1137,9 +1137,7 @@ int ieee80211_do_open(struct wireless_dev *wdev, bool coming_up)
         * this interface, if it has the special null one.
         */
        if (dev && is_zero_ether_addr(dev->dev_addr)) {
-               memcpy(dev->dev_addr,
-                      local->hw.wiphy->perm_addr,
-                      ETH_ALEN);
+               eth_hw_addr_set(dev, local->hw.wiphy->perm_addr);
                memcpy(dev->perm_addr, dev->dev_addr, ETH_ALEN);
 
                if (!is_valid_ether_addr(dev->dev_addr)) {
@@ -1993,9 +1991,9 @@ int ieee80211_if_add(struct ieee80211_local *local, const char *name,
 
                ieee80211_assign_perm_addr(local, ndev->perm_addr, type);
                if (is_valid_ether_addr(params->macaddr))
-                       memcpy(ndev->dev_addr, params->macaddr, ETH_ALEN);
+                       eth_hw_addr_set(ndev, params->macaddr);
                else
-                       memcpy(ndev->dev_addr, ndev->perm_addr, ETH_ALEN);
+                       eth_hw_addr_set(ndev, ndev->perm_addr);
                SET_NETDEV_DEV(ndev, wiphy_dev(local->hw.wiphy));
 
                /* don't use IEEE80211_DEV_TO_SUB_IF -- it checks too much */