OSDN Git Service

ethernet: tehuti: use eth_hw_addr_set()
authorJakub Kicinski <kuba@kernel.org>
Tue, 19 Oct 2021 15:00:08 +0000 (08:00 -0700)
committerDavid S. Miller <davem@davemloft.net>
Wed, 20 Oct 2021 10:41:01 +0000 (11:41 +0100)
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.

Break the address up into an array on the stack, then call
eth_hw_addr_set().

Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/tehuti/tehuti.c

index 3e8a3fd..0775a55 100644 (file)
@@ -840,6 +840,7 @@ static int bdx_set_mac(struct net_device *ndev, void *p)
 static int bdx_read_mac(struct bdx_priv *priv)
 {
        u16 macAddress[3], i;
+       u8 addr[ETH_ALEN];
        ENTER;
 
        macAddress[2] = READ_REG(priv, regUNC_MAC0_A);
@@ -849,9 +850,10 @@ static int bdx_read_mac(struct bdx_priv *priv)
        macAddress[0] = READ_REG(priv, regUNC_MAC2_A);
        macAddress[0] = READ_REG(priv, regUNC_MAC2_A);
        for (i = 0; i < 3; i++) {
-               priv->ndev->dev_addr[i * 2 + 1] = macAddress[i];
-               priv->ndev->dev_addr[i * 2] = macAddress[i] >> 8;
+               addr[i * 2 + 1] = macAddress[i];
+               addr[i * 2] = macAddress[i] >> 8;
        }
+       eth_hw_addr_set(priv->ndev, addr);
        RET(0);
 }