diff --git a/drivers/net/phy/phy.c b/drivers/net/phy/phy.c index 0433fcd009438b65aee19afed77eed75f0bd9e3c..20cc82c781370ec5fb2a1e27652c3e7e0769c862 100644 --- a/drivers/net/phy/phy.c +++ b/drivers/net/phy/phy.c @@ -729,6 +729,12 @@ static void phy_change(struct work_struct *work) if (err) goto irq_enable_err; + /* Stop timer and run the state queue now. The work function for + * state_queue will start the timer up again. + */ + del_timer(&phydev->phy_timer); + schedule_work(&phydev->state_queue); + return; irq_enable_err: