Normally, the bridge just chooses the smallest mac address as the
bridge id and mac address of bridge device. But if the administrator
has explictly set the interface address then don't change it.
Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
        spin_lock_bh(&br->lock);
        memcpy(dev->dev_addr, addr->sa_data, ETH_ALEN);
        br_stp_change_bridge_id(br, addr->sa_data);
+       br->flags |= BR_SET_MAC_ADDR;
        spin_unlock_bh(&br->lock);
 
        return 0;
 
        struct hlist_head               hash[BR_HASH_SIZE];
        struct list_head                age_list;
        unsigned long                   feature_mask;
+       unsigned long                   flags;
+#define BR_SET_MAC_ADDR                0x00000001
 
        /* STP */
        bridge_id                       designated_root;
 
        const unsigned char *addr = br_mac_zero;
        struct net_bridge_port *p;
 
+       /* user has chosen a value so keep it */
+       if (br->flags & BR_SET_MAC_ADDR)
+               return;
+
        list_for_each_entry(p, &br->port_list, list) {
                if (addr == br_mac_zero ||
                    memcmp(p->dev->dev_addr, addr, ETH_ALEN) < 0)