android_kernel_motorola_sm6225/drivers/net/wireless/wl1251
David Gnedt e7332a4144 wl1251: fix queue stopping/waking for TX path
The queue stopping/waking functionality was broken in a way that could
cause the TX to stall if the right circumstances are met.

The problem was caused by tx_work, which is scheduled on each TX operation.
If the firmware buffer is full, tx_work does nothing. In combinition with
stopped queues or non-continues transfers, tx_work is never scheduled again.
Moreover the low watermark introduced by
9df86e2e70 never takes effect because of some
old code.

Solve this by scheduling tx_work every time tx_queue is non-empty and
firmware buffer is freed on tx_complete.

This also solves a possible but unlikely case: If less frames than the high
watermark are queued, but more than firmware buffer can hold. This results
in queues staying awake but the only scheduled tx_work doesn't transfer all
frames, so the remaining frames are stuck in the queue until more frames
get queued and tx_work is scheduled again.

Signed-off-by: David Gnedt <david.gnedt@davizone.at>
Acked-by: Kalle Valo <kvalo@adurom.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2011-02-03 16:42:44 -05:00
..
acx.c
acx.h Fix spelling mistakes in comments 2011-01-03 13:51:58 +01:00
boot.c wl1251: remove unnecessary import 2010-12-22 15:43:26 -05:00
boot.h
cmd.c
cmd.h
debugfs.c
debugfs.h
event.c
event.h
init.c
init.h
io.c
io.h
Kconfig
main.c wl1251: add power callback to wl1251_if_operations 2010-11-15 13:27:00 -05:00
Makefile
ps.c
ps.h
reg.h
rx.c cfg80211: Extend channel to frequency mapping for 802.11j 2011-01-21 15:34:17 -05:00
rx.h
sdio.c wl1251: wl12xx_get_platform_data() returns an ERR_PTR 2010-12-20 14:49:49 -05:00
spi.c wl1251: add power callback to wl1251_if_operations 2010-11-15 13:27:00 -05:00
spi.h
tx.c wl1251: fix queue stopping/waking for TX path 2011-02-03 16:42:44 -05:00
tx.h
wl12xx_80211.h
wl1251.h Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2011-01-13 10:05:56 -08:00