]> git.baikalelectronics.ru Git - kernel.git/commit
rt2x00: Move watchdog work to kernel work_queue
authorIvo van Doorn <ivdoorn@gmail.com>
Mon, 11 Oct 2010 13:37:47 +0000 (15:37 +0200)
committerJohn W. Linville <linville@tuxdriver.com>
Mon, 11 Oct 2010 19:04:25 +0000 (15:04 -0400)
commit589c51e639ba8af36cfc84eefd3174f07a81f02f
tree14d1d3a4b6c78756a526cc2f11e1af5e31d7aad1
parenta85c5ded5e7a5dcd036aa9c7cd320210c9203caa
rt2x00: Move watchdog work to kernel work_queue

The watchdog function must run on a work_queue
which is independent of any other work inside rt2x00.

The main reasons, being that a broken work on the mac80211
work_queue can otherwise prevent the watchdog to run (while
in fact the watchdog could fix the issue). And on the other
hand because the watchdog relies on the completion of the
completion handlers for RX/TX which for the USB case, occur
on the mac80211 workqueue.

This fixes some "Queue %d failed to flush" errors, which were
caused by the watchdog function waiting on the completion
handler which was scheduled to run right after the watchdog.

Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com>
Acked-by: Helmut Schaa <helmut.schaa@googlemail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/rt2x00/rt2x00.h
drivers/net/wireless/rt2x00/rt2x00link.c