wlcore: Fix timout errors after recovery
After enabling runtime PM, if we force hardware reset multiple times with: # echo 1 > /sys/kernel/debug/ieee80211/phy0/wlcore/start_recovery We will after few tries get the following error: wlcore: ERROR timeout waiting for the hardware to complete initialization And then wlcore is unable to reconnect until after the wlcore related modules are reloaded. Let's fix this by moving pm_runtime_put() earlier before we restart the hardware. And let's use the sync version to make sure we're done before we restart. Note that we still will get -EBUSY warning from wl12xx_sdio_set_power() but let's fix that separately once we know exactly why we get the warning. Reported-by: Eyal Reizer <eyalr@ti.com> Signed-off-by: Tony Lindgren <tony@atomide.com> Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
This commit is contained in:
Родитель
3ebbabea42
Коммит
db68052bdf
|
@ -977,6 +977,7 @@ static void wl1271_recovery_work(struct work_struct *work)
|
|||
}
|
||||
|
||||
wlcore_op_stop_locked(wl);
|
||||
pm_runtime_put_sync(wl->dev);
|
||||
|
||||
ieee80211_restart_hw(wl->hw);
|
||||
|
||||
|
@ -986,8 +987,6 @@ static void wl1271_recovery_work(struct work_struct *work)
|
|||
*/
|
||||
wlcore_wake_queues(wl, WLCORE_QUEUE_STOP_REASON_FW_RESTART);
|
||||
|
||||
pm_runtime_put(wl->dev);
|
||||
|
||||
out_unlock:
|
||||
wl->watchdog_recovery = false;
|
||||
clear_bit(WL1271_FLAG_RECOVERY_IN_PROGRESS, &wl->flags);
|
||||
|
|
Загрузка…
Ссылка в новой задаче