linux/drivers/net/wireless/wl1251
Grazvydas Ignotas 5f6722ee63 wl1251: fix elp_work race condition
While working on PS I've noticed elp_work is kicking rather often, and
sometimes the chip is put to sleep before 5ms delay expires. This
seems to happen because by the time wl1251_ps_elp_wakeup is called
elp_work might still be pending. After wakeup is done, the processing
may take some time, during which 5ms might expire and elp_work might
get scheduled. In this case, ss soon as 1st thread finishes work and
releases the mutex, elp_work will then put the device to sleep without
5ms delay. In addition 1st thread will queue additional elp_work
needlessly.

Fix this by cancelling work in wl1251_ps_elp_wakeup instead.

Signed-off-by: Grazvydas Ignotas <notasas@gmail.com>
Acked-by: Kalle Valo <kvalo@adurom.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2011-03-11 14:15:35 -05:00
..
Kconfig
Makefile
acx.c wl1251: implement connection quality monitoring 2011-02-03 16:44:42 -05:00
acx.h wl1251: implement connection quality monitoring 2011-02-03 16:44:42 -05:00
boot.c
boot.h
cmd.c
cmd.h
debugfs.c
debugfs.h
event.c wl1251: implement connection quality monitoring 2011-02-03 16:44:42 -05:00
event.h
init.c
init.h
io.c
io.h
main.c mac80211: make tx() operation return void 2011-02-25 15:32:34 -05:00
ps.c wl1251: fix elp_work race condition 2011-03-11 14:15:35 -05:00
ps.h
reg.h
rx.c mac80211: rename RX_FLAG_TSFT 2011-02-23 16:25:29 -05:00
rx.h
sdio.c
spi.c
spi.h
tx.c wl1251: fix 4-byte TX buffer alignment 2011-02-03 16:42:44 -05:00
tx.h
wl12xx_80211.h ieee80211: add IEEE80211_COUNTRY_STRING_LEN definition 2011-03-09 16:10:56 -05:00
wl1251.h wl1251: implement connection quality monitoring 2011-02-03 16:44:42 -05:00