diff --git a/net/dsa/port.c b/net/dsa/port.c index aac87ac989ed..831d50d28d59 100644 --- a/net/dsa/port.c +++ b/net/dsa/port.c @@ -699,7 +699,9 @@ int dsa_port_bridge_flags(struct dsa_port *dp, if (learning == dp->learning) return 0; - if (dp->learning && !learning) + if ((dp->learning && !learning) && + (dp->stp_state == BR_STATE_LEARNING || + dp->stp_state == BR_STATE_FORWARDING)) dsa_port_fast_age(dp); dp->learning = learning;