linux/drivers/net/wireless/ipw2x00
Stanislav Yakovlev dd44731989 ipw2200: Fix race condition in the command completion acknowledge
Driver incorrectly validates command completion: instead of waiting
for a command to be acknowledged it continues execution.  Most of the
time driver gets acknowledge of the command completion in a tasklet
before it executes the next one. But sometimes it sends the next
command before it gets acknowledge for the previous one. In such a
case one of the following error messages appear in the log:

Failed to send SYSTEM_CONFIG: Already sending a command.
Failed to send ASSOCIATE: Already sending a command.
Failed to send TX_POWER: Already sending a command.

After that you need to reload the driver to get it working again.

This bug occurs during roaming (reported by Sam Varshavchik)
https://bugzilla.redhat.com/show_bug.cgi?id=738508
and machine booting (reported by Tom Gundersen and Mads Kiilerich)
https://bugs.archlinux.org/task/28097
https://bugzilla.redhat.com/show_bug.cgi?id=802106

This patch doesn't fix the delay issue during firmware load.
But at least device now works as usual after boot.

Cc: stable@kernel.org
Signed-off-by: Stanislav Yakovlev <stas.yakovlev@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2012-04-23 14:57:49 -04:00
..
ipw2100.c Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next into for-davem 2012-03-09 14:57:30 -05:00
ipw2100.h wireless/ipw2x00: use system_wq instead of dedicated workqueues 2011-01-26 12:12:50 +01:00
ipw2200.c ipw2200: Fix race condition in the command completion acknowledge 2012-04-23 14:57:49 -04:00
ipw2200.h net/wireless: ipw2x00: remove unused definitions for regulatory domain 2012-03-12 14:19:37 -04:00
Kconfig
libipw_geo.c
libipw_module.c drivers/net: Remove alloc_etherdev error messages 2012-01-31 16:20:48 -05:00
libipw_rx.c net: Fix typo in ipw2x00/libipw_rx.c 2012-02-06 14:50:38 -05:00
libipw_tx.c ipw2x00: comment typo fix encryptiong to encryption 2011-09-15 14:20:31 +02:00
libipw_wx.c ipw2x00: remove reset_port functionality 2012-01-04 14:30:46 -05:00
libipw.h ipw2x00: remove reset_port functionality 2012-01-04 14:30:46 -05:00
Makefile