+++ /dev/null
-diff -rup linux-rb24/net/bridge/br_device.c linux-rb24bpatch/net/bridge/br_device.c
---- linux-rb24/net/bridge/br_device.c 2002-02-25 11:38:14.000000000 -0800
-+++ linux-rb24bpatch/net/bridge/br_device.c 2005-07-05 02:09:17.000000000 -0700
-@@ -121,6 +121,23 @@ static int br_dev_accept_fastpath(struct
- return -1;
- }
-
-+static int
-+br_set_mac_address(struct net_device *dev, void *addr)
-+{
-+ struct net_bridge *br = dev->priv;
-+ struct sockaddr *sa = (struct sockaddr *) addr;
-+
-+ write_lock_bh(&br->lock);
-+
-+ memcpy(br->preferred_id.addr, sa->sa_data, ETH_ALEN);
-+
-+ br_stp_recalculate_bridge_id(br);
-+
-+ write_unlock_bh(&br->lock);
-+
-+ return 0;
-+}
-+
- void br_dev_setup(struct net_device *dev)
- {
- memset(dev->dev_addr, 0, ETH_ALEN);
-@@ -133,5 +150,5 @@ void br_dev_setup(struct net_device *dev
- dev->stop = br_dev_stop;
- dev->accept_fastpath = br_dev_accept_fastpath;
- dev->tx_queue_len = 0;
-- dev->set_mac_address = NULL;
-+ dev->set_mac_address = br_set_mac_address;
- }
-diff -rup linux-rb24/net/bridge/br_private.h linux-rb24bpatch/net/bridge/br_private.h
---- linux-rb24/net/bridge/br_private.h 2004-08-07 16:26:06.000000000 -0700
-+++ linux-rb24bpatch/net/bridge/br_private.h 2005-07-05 02:12:56.000000000 -0700
-@@ -95,6 +95,7 @@ struct net_bridge
- int hello_time;
- int forward_delay;
- bridge_id bridge_id;
-+ bridge_id preferred_id;
- int bridge_max_age;
- int bridge_hello_time;
- int bridge_forward_delay;
-diff -rup linux-rb24/net/bridge/br_stp_if.c linux-rb24bpatch/net/bridge/br_stp_if.c
---- linux-rb24/net/bridge/br_stp_if.c 2001-04-19 08:38:50.000000000 -0700
-+++ linux-rb24bpatch/net/bridge/br_stp_if.c 2005-07-05 02:22:11.000000000 -0700
-@@ -162,6 +162,12 @@ void br_stp_recalculate_bridge_id(struct
-
- p = br->port_list;
- while (p != NULL) {
-+ /* match against preferred address first */
-+ if (memcmp(p->dev->dev_addr,br->preferred_id.addr,ETH_ALEN) == 0) {
-+ addr = p->dev->dev_addr;
-+ break;
-+ }
-+
- if (addr == br_mac_zero ||
- memcmp(p->dev->dev_addr, addr, ETH_ALEN) < 0)
- addr = p->dev->dev_addr;