diff --git a/net/dsa/port.c b/net/dsa/port.c index aac87ac989ede6ba27b73ec4476dbf9f6ab4f6fd..831d50d28d5990a6f1fdca377b7f0f7060c057ef 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;