* Reizer, Eyal <eyalr@xxxxxx> [180522 13:28]: > Actually the below patch removing the call to wlcore_fw_sleep() avoids this error. > The downside is that the wl8 firmware remains fully active during supend, so we > Would need to find the root cause why the last call allowing the wilink8 firmware > To go into ELP mode during suspend is only completing on resume and not during > Suspend enter. > > diff --git a/drivers/net/wireless/ti/wlcore/main.c > b/drivers/net/wireless/ti/wlcore/main.c > index 4c297aa..8df1ae6 100644 > --- a/drivers/net/wireless/ti/wlcore/main.c > +++ b/drivers/net/wireless/ti/wlcore/main.c > @@ -1789,7 +1789,6 @@ static int wl1271_op_suspend(struct ieee80211_hw *hw, > goto out_sleep; > > out_sleep: > - pm_runtime_put_noidle(wl->dev); > mutex_unlock(&wl->mutex); > > if (ret < 0) { > @@ -1821,15 +1820,7 @@ static int wl1271_op_suspend(struct ieee80211_hw *hw, > */ > cancel_delayed_work(&wl->tx_watchdog_work); > > - /* > - * Use an immediate call for allowing the firmware to go into power > - * save during suspend. > - * Using a workque for this last write was only hapenning on resume > - * leaving the firmware with power save disabled during suspend, > - * while consuming full power during wowlan suspend. > - */ > - wlcore_fw_sleep(wl); > - > + pm_runtime_put_noidle(wl->dev); > return 0; > } OK try replacing the pm_runtime_put_noidle() above with just pm_runtime_put_sync(). The reason why I put noidle there was the wlcore_fw_sleep() call, with that gone put_sync should do the trick. Regards, Tony