net: use eth_hw_addr_random() and reset addr_assign_type
Use eth_hw_addr_random() instead of calling random_ether_addr() to set addr_assign_type correctly to NET_ADDR_RANDOM. Reset the state to NET_ADDR_PERM as soon as the MAC get changed via .ndo_set_mac_address. v2: adapt to renamed eth_hw_addr_random() Signed-off-by: Danny Kukawka <danny.kukawka@bisect.de> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:

committed by
David S. Miller

parent
f2cedb63df
commit
7ce5d22219
@@ -171,6 +171,7 @@ static int br_set_mac_address(struct net_device *dev, void *p)
|
||||
|
||||
spin_lock_bh(&br->lock);
|
||||
if (compare_ether_addr(dev->dev_addr, addr->sa_data)) {
|
||||
dev->addr_assign_type &= ~NET_ADDR_RANDOM;
|
||||
memcpy(dev->dev_addr, addr->sa_data, ETH_ALEN);
|
||||
br_fdb_change_mac_address(br, addr->sa_data);
|
||||
br_stp_change_bridge_id(br, addr->sa_data);
|
||||
@@ -334,7 +335,7 @@ void br_dev_setup(struct net_device *dev)
|
||||
{
|
||||
struct net_bridge *br = netdev_priv(dev);
|
||||
|
||||
random_ether_addr(dev->dev_addr);
|
||||
eth_hw_addr_random(dev);
|
||||
ether_setup(dev);
|
||||
|
||||
dev->netdev_ops = &br_netdev_ops;
|
||||
|
Reference in New Issue
Block a user