diff options
Diffstat (limited to 'net/bridge/br_stp.c')
| -rw-r--r-- | net/bridge/br_stp.c | 29 | 
1 files changed, 14 insertions, 15 deletions
diff --git a/net/bridge/br_stp.c b/net/bridge/br_stp.c index ad0a3f7cf6c..dd147d78a58 100644 --- a/net/bridge/br_stp.c +++ b/net/bridge/br_stp.c @@ -399,25 +399,24 @@ void br_port_state_selection(struct net_bridge *br)  	struct net_bridge_port *p;  	unsigned int liveports = 0; -	/* Don't change port states if userspace is handling STP */ -	if (br->stp_enabled == BR_USER_STP) -		return; -  	list_for_each_entry(p, &br->port_list, list) {  		if (p->state == BR_STATE_DISABLED)  			continue; -		if (p->port_no == br->root_port) { -			p->config_pending = 0; -			p->topology_change_ack = 0; -			br_make_forwarding(p); -		} else if (br_is_designated_port(p)) { -			del_timer(&p->message_age_timer); -			br_make_forwarding(p); -		} else { -			p->config_pending = 0; -			p->topology_change_ack = 0; -			br_make_blocking(p); +		/* Don't change port states if userspace is handling STP */ +		if (br->stp_enabled != BR_USER_STP) { +			if (p->port_no == br->root_port) { +				p->config_pending = 0; +				p->topology_change_ack = 0; +				br_make_forwarding(p); +			} else if (br_is_designated_port(p)) { +				del_timer(&p->message_age_timer); +				br_make_forwarding(p); +			} else { +				p->config_pending = 0; +				p->topology_change_ack = 0; +				br_make_blocking(p); +			}  		}  		if (p->state == BR_STATE_FORWARDING)  |