diff options
author | Arik Nemtsov <arik@wizery.com> | 2012-03-03 15:18:00 -0500 |
---|---|---|
committer | Luciano Coelho <coelho@ti.com> | 2012-03-08 07:25:18 -0500 |
commit | 55df5afb13718cda49128fa5985556df91d07765 (patch) | |
tree | bb6c9279e12b90af623ba6ea4b17ea85f679e251 /drivers/net/wireless/wl12xx/scan.c | |
parent | 8ccd16e6cb17a1e961617cc67798bbb222e4cd13 (diff) |
wl12xx: implement SW Tx watchdog
Track freed FW blocks during Tx. If no blocks were freed during a
predefined timeout, initiate a HW recovery. This helps in situations
when the FW watchdog fails.
Don't trigger recovery during activities that can temporarily stop
Tx. This includes:
- scanning
- buffering packets for sleeping stations (AP role)
- ROC on any role
Signed-off-by: Arik Nemtsov <arik@wizery.com>
Signed-off-by: Eliad Peller <eliad@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
Diffstat (limited to 'drivers/net/wireless/wl12xx/scan.c')
-rw-r--r-- | drivers/net/wireless/wl12xx/scan.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/net/wireless/wl12xx/scan.c b/drivers/net/wireless/wl12xx/scan.c index e43a6b2c1d91..fcba055ef196 100644 --- a/drivers/net/wireless/wl12xx/scan.c +++ b/drivers/net/wireless/wl12xx/scan.c | |||
@@ -55,6 +55,12 @@ void wl1271_scan_complete_work(struct work_struct *work) | |||
55 | vif = wl->scan_vif; | 55 | vif = wl->scan_vif; |
56 | wlvif = wl12xx_vif_to_data(vif); | 56 | wlvif = wl12xx_vif_to_data(vif); |
57 | 57 | ||
58 | /* | ||
59 | * Rearm the tx watchdog just before idling scan. This | ||
60 | * prevents just-finished scans from triggering the watchdog | ||
61 | */ | ||
62 | wl12xx_rearm_tx_watchdog_locked(wl); | ||
63 | |||
58 | wl->scan.state = WL1271_SCAN_STATE_IDLE; | 64 | wl->scan.state = WL1271_SCAN_STATE_IDLE; |
59 | memset(wl->scan.scanned_ch, 0, sizeof(wl->scan.scanned_ch)); | 65 | memset(wl->scan.scanned_ch, 0, sizeof(wl->scan.scanned_ch)); |
60 | wl->scan.req = NULL; | 66 | wl->scan.req = NULL; |