ethernet: use eth_hw_addr_set() in unmaintained drivers

Commit 406f42fa0d ("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>
This commit is contained in:
Jakub Kicinski
2021-10-15 14:53:04 -07:00
committed by David S. Miller
parent 0e9e7598c6
commit 4abd7cffc0
21 changed files with 99 additions and 53 deletions

View File

@@ -348,13 +348,15 @@ static void ks8842_reset_hw(struct ks8842_adapter *adapter)
ks8842_write16(adapter, 32, 0x1, REG_SW_ID_AND_ENABLE);
}
static void ks8842_read_mac_addr(struct ks8842_adapter *adapter, u8 *dest)
static void ks8842_init_mac_addr(struct ks8842_adapter *adapter)
{
u8 addr[ETH_ALEN];
int i;
u16 mac;
for (i = 0; i < ETH_ALEN; i++)
dest[ETH_ALEN - i - 1] = ks8842_read8(adapter, 2, REG_MARL + i);
addr[ETH_ALEN - i - 1] = ks8842_read8(adapter, 2, REG_MARL + i);
eth_hw_addr_set(adapter->netdev, addr);
if (adapter->conf_flags & MICREL_KS884X) {
/*
@@ -1195,7 +1197,7 @@ static int ks8842_probe(struct platform_device *pdev)
}
if (i == netdev->addr_len) {
ks8842_read_mac_addr(adapter, netdev->dev_addr);
ks8842_init_mac_addr(adapter);
if (!is_valid_ether_addr(netdev->dev_addr))
eth_hw_addr_random(netdev);

View File

@@ -165,6 +165,7 @@ static void ks8851_read_mac_addr(struct net_device *dev)
{
struct ks8851_net *ks = netdev_priv(dev);
unsigned long flags;
u8 addr[ETH_ALEN];
u16 reg;
int i;
@@ -172,9 +173,10 @@ static void ks8851_read_mac_addr(struct net_device *dev)
for (i = 0; i < ETH_ALEN; i += 2) {
reg = ks8851_rdreg16(ks, KS_MAR(i));
dev->dev_addr[i] = reg >> 8;
dev->dev_addr[i + 1] = reg & 0xff;
addr[i] = reg >> 8;
addr[i + 1] = reg & 0xff;
}
eth_hw_addr_set(dev, addr);
ks8851_unlock(ks, &flags);
}

View File

@@ -7007,9 +7007,12 @@ static int pcidev_init(struct pci_dev *pdev, const struct pci_device_id *id)
if (MAIN_PORT == i)
eth_hw_addr_set(dev, hw_priv->hw.override_addr);
else {
eth_hw_addr_set(dev, sw->other_addr);
u8 addr[ETH_ALEN];
ether_addr_copy(addr, sw->other_addr);
if (ether_addr_equal(sw->other_addr, hw->override_addr))
dev->dev_addr[5] += port->first_port;
addr[5] += port->first_port;
eth_hw_addr_set(dev, addr);
}
dev->netdev_ops = &netdev_ops;