43 lines
1.3 KiB
Diff
43 lines
1.3 KiB
Diff
Silently ignore repetitive scheduling of recovery work and commands
|
|
being passed to the bus when the HW is not available. This can happen
|
|
many times during recovery and slow it down. It also spams the kernel
|
|
logs.
|
|
|
|
Signed-off-by: Arik Nemtsov <arik@wizery.com>
|
|
Signed-off-by: Eliad Peller <eliad@wizery.com>
|
|
|
|
---
|
|
drivers/net/wireless/ti/wlcore/cmd.c | 4 ++--
|
|
drivers/net/wireless/ti/wlcore/main.c | 5 +++--
|
|
2 files changed, 5 insertions(+), 4 deletions(-)
|
|
|
|
--- a/drivers/net/wireless/ti/wlcore/cmd.c
|
|
+++ b/drivers/net/wireless/ti/wlcore/cmd.c
|
|
@@ -60,8 +60,8 @@ static int __wlcore_cmd_send(struct wl12
|
|
u16 status;
|
|
u16 poll_count = 0;
|
|
|
|
- if (WARN_ON(wl->state == WLCORE_STATE_RESTARTING &&
|
|
- id != CMD_STOP_FWLOGGER))
|
|
+ if (unlikely(wl->state == WLCORE_STATE_RESTARTING &&
|
|
+ id != CMD_STOP_FWLOGGER))
|
|
return -EIO;
|
|
|
|
cmd = buf;
|
|
--- a/drivers/net/wireless/ti/wlcore/main.c
|
|
+++ b/drivers/net/wireless/ti/wlcore/main.c
|
|
@@ -782,10 +782,11 @@ out:
|
|
|
|
void wl12xx_queue_recovery_work(struct wl1271 *wl)
|
|
{
|
|
- WARN_ON(!test_bit(WL1271_FLAG_INTENDED_FW_RECOVERY, &wl->flags));
|
|
-
|
|
/* Avoid a recursive recovery */
|
|
if (wl->state == WLCORE_STATE_ON) {
|
|
+ WARN_ON(!test_bit(WL1271_FLAG_INTENDED_FW_RECOVERY,
|
|
+ &wl->flags));
|
|
+
|
|
wl->state = WLCORE_STATE_RESTARTING;
|
|
set_bit(WL1271_FLAG_RECOVERY_IN_PROGRESS, &wl->flags);
|
|
wl1271_ps_elp_wakeup(wl);
|