From 8ec53ed9af1f7baa8f359bfd0286c59dbc7bdb41 Mon Sep 17 00:00:00 2001 From: Jakub Kicinski Date: Fri, 15 Oct 2021 15:16:41 -0700 Subject: [PATCH] ethernet: adaptec: use eth_hw_addr_set() 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. Read the address into an array on the stack, then call eth_hw_addr_set(). Signed-off-by: Jakub Kicinski Signed-off-by: David S. Miller --- drivers/net/ethernet/adaptec/starfire.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/net/ethernet/adaptec/starfire.c b/drivers/net/ethernet/adaptec/starfire.c index 16b6b83f670b..c6982f7caf9b 100644 --- a/drivers/net/ethernet/adaptec/starfire.c +++ b/drivers/net/ethernet/adaptec/starfire.c @@ -641,6 +641,7 @@ static int starfire_init_one(struct pci_dev *pdev, struct netdev_private *np; int i, irq, chip_idx = ent->driver_data; struct net_device *dev; + u8 addr[ETH_ALEN]; long ioaddr; void __iomem *base; int drv_flags, io_size; @@ -696,7 +697,8 @@ static int starfire_init_one(struct pci_dev *pdev, /* Serial EEPROM reads are hidden by the hardware. */ for (i = 0; i < 6; i++) - dev->dev_addr[i] = readb(base + EEPROMCtrl + 20 - i); + addr[i] = readb(base + EEPROMCtrl + 20 - i); + eth_hw_addr_set(dev, addr); #if ! defined(final_version) /* Dump the EEPROM contents during development. */ if (debug > 4)