diff options
author | Jakub Kicinski <kuba@kernel.org> | 2021-10-19 19:36:06 +0300 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2021-10-20 16:27:40 +0300 |
commit | 08bb7516e53038a9f6609f621024b047de4c2d3e (patch) | |
tree | 7ba488ff9ce43747d2b467379ffcae29f3cb08cd /net/mac802154 | |
parent | 659f4e02f15aa0ab61555717978219f87505ff5a (diff) | |
download | linux-08bb7516e53038a9f6609f621024b047de4c2d3e.tar.xz |
mac802154: use dev_addr_set() - manual
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.
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/mac802154')
-rw-r--r-- | net/mac802154/iface.c | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/net/mac802154/iface.c b/net/mac802154/iface.c index 3210dec64a6a..500ed1b81250 100644 --- a/net/mac802154/iface.c +++ b/net/mac802154/iface.c @@ -136,8 +136,7 @@ static int mac802154_wpan_mac_addr(struct net_device *dev, void *p) * wpan mac has been changed */ if (sdata->wpan_dev.lowpan_dev) - memcpy(sdata->wpan_dev.lowpan_dev->dev_addr, dev->dev_addr, - dev->addr_len); + dev_addr_set(sdata->wpan_dev.lowpan_dev, dev->dev_addr); return mac802154_wpan_update_llsec(dev); } @@ -615,6 +614,7 @@ ieee802154_if_add(struct ieee802154_local *local, const char *name, unsigned char name_assign_type, enum nl802154_iftype type, __le64 extended_addr) { + u8 addr[IEEE802154_EXTENDED_ADDR_LEN]; struct net_device *ndev = NULL; struct ieee802154_sub_if_data *sdata = NULL; int ret; @@ -638,11 +638,12 @@ ieee802154_if_add(struct ieee802154_local *local, const char *name, switch (type) { case NL802154_IFTYPE_NODE: ndev->type = ARPHRD_IEEE802154; - if (ieee802154_is_valid_extended_unicast_addr(extended_addr)) - ieee802154_le64_to_be64(ndev->dev_addr, &extended_addr); - else - memcpy(ndev->dev_addr, ndev->perm_addr, - IEEE802154_EXTENDED_ADDR_LEN); + if (ieee802154_is_valid_extended_unicast_addr(extended_addr)) { + ieee802154_le64_to_be64(addr, &extended_addr); + dev_addr_set(ndev, addr); + } else { + dev_addr_set(ndev, ndev->perm_addr); + } break; case NL802154_IFTYPE_MONITOR: ndev->type = ARPHRD_IEEE802154_MONITOR; |