p->port_no = index;
        p->flags = BR_LEARNING | BR_FLOOD;
        br_init_port(p);
-       p->state = BR_STATE_DISABLED;
+       br_set_state(p, BR_STATE_DISABLED);
        br_stp_port_timer_init(p);
        br_multicast_add_port(p);
 
 
            (!netif_oper_up(p->dev) && state != BR_STATE_DISABLED))
                return -ENETDOWN;
 
-       p->state = state;
+       br_set_state(p, state);
        br_log_state(p);
        br_port_state_selection(p->br);
        return 0;
 
 
 /* br_stp.c */
 void br_log_state(const struct net_bridge_port *p);
+void br_set_state(struct net_bridge_port *p, unsigned int state);
 struct net_bridge_port *br_get_port(struct net_bridge *br, u16 port_no);
 void br_init_port(struct net_bridge_port *p);
 void br_become_designated_port(struct net_bridge_port *p);
 
                br_port_state_names[p->state]);
 }
 
+void br_set_state(struct net_bridge_port *p, unsigned int state)
+{
+       p->state = state;
+}
+
 /* called under bridge lock */
 struct net_bridge_port *br_get_port(struct net_bridge *br, u16 port_no)
 {
        br_notice(br, "port %u(%s) tried to become root port (blocked)",
                  (unsigned int) p->port_no, p->dev->name);
 
-       p->state = BR_STATE_LISTENING;
+       br_set_state(p, BR_STATE_LISTENING);
        br_log_state(p);
        br_ifinfo_notify(RTM_NEWLINK, p);
 
                    p->state == BR_STATE_LEARNING)
                        br_topology_change_detection(p->br);
 
-               p->state = BR_STATE_BLOCKING;
+               br_set_state(p, BR_STATE_BLOCKING);
                br_log_state(p);
                br_ifinfo_notify(RTM_NEWLINK, p);
 
                return;
 
        if (br->stp_enabled == BR_NO_STP || br->forward_delay == 0) {
-               p->state = BR_STATE_FORWARDING;
+               br_set_state(p, BR_STATE_FORWARDING);
                br_topology_change_detection(br);
                del_timer(&p->forward_delay_timer);
        } else if (br->stp_enabled == BR_KERNEL_STP)
-               p->state = BR_STATE_LISTENING;
+               br_set_state(p, BR_STATE_LISTENING);
        else
-               p->state = BR_STATE_LEARNING;
+               br_set_state(p, BR_STATE_LEARNING);
 
        br_multicast_enable_port(p);
        br_log_state(p);
 
 {
        p->port_id = br_make_port_id(p->priority, p->port_no);
        br_become_designated_port(p);
-       p->state = BR_STATE_BLOCKING;
+       br_set_state(p, BR_STATE_BLOCKING);
        p->topology_change_ack = 0;
        p->config_pending = 0;
 }
 
        wasroot = br_is_root_bridge(br);
        br_become_designated_port(p);
-       p->state = BR_STATE_DISABLED;
+       br_set_state(p, BR_STATE_DISABLED);
        p->topology_change_ack = 0;
        p->config_pending = 0;
 
 
                 (unsigned int) p->port_no, p->dev->name);
        spin_lock(&br->lock);
        if (p->state == BR_STATE_LISTENING) {
-               p->state = BR_STATE_LEARNING;
+               br_set_state(p, BR_STATE_LEARNING);
                mod_timer(&p->forward_delay_timer,
                          jiffies + br->forward_delay);
        } else if (p->state == BR_STATE_LEARNING) {
-               p->state = BR_STATE_FORWARDING;
+               br_set_state(p, BR_STATE_FORWARDING);
                if (br_is_designated_for_some_port(br))
                        br_topology_change_detection(br);
                netif_carrier_on(br->dev);