linux/drivers/net/wireless/ath
Rajkumar Manoharan f6b4e4d476 ath9k: Fix locking issue during tx completion
The received tx status of aggregated frame without BlockAck may
cause deaf state in AR5416 cards. So the driver does a reset to
recover. When this happens, we release the pcu_lock before doing
a reset as ath_rest acquires pcu_lock. This is ugly and also not
atomic. Fixing this addresses the TX DMA failure also.

ath_tx_complete_aggr can be called from different paths which
takes different variants of spin_lock. This patch also addresses
the following warning.

WARNING: at kernel/timer.c:1011 del_timer_sync+0x4e/0x50()
Call Trace:
 <IRQ>  [<ffffffff8104be3a>] warn_slowpath_common+0x7a/0xb0
 [<ffffffff8104be85>] warn_slowpath_null+0x15/0x20
 [<ffffffff8105915e>] del_timer_sync+0x4e/0x50
 [<ffffffffa03726be>] ath_reset+0x3e/0x210 [ath9k]
 [<ffffffff8135cdaf>] ? _raw_spin_unlock_bh+0x1f/0x30
 [<ffffffffa037760a>] ath_tx_complete_aggr.isra.26+0x54a/0xa40 [ath9k]

Signed-off-by: Rajkumar Manoharan <rmanohar@qca.qualcomm.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2011-06-27 15:09:42 -04:00
..
ath5k ath5k: add missing ieee80211_free_hw() on unload in AHB code 2011-06-20 15:34:19 -04:00
ath9k ath9k: Fix locking issue during tx completion 2011-06-27 15:09:42 -04:00
carl9170 wireless: unify QoS control field definitions 2011-06-27 15:09:39 -04:00
ath.h ath9k: Add a debug entry to start/stop ANI 2011-06-01 15:36:29 -04:00
debug.c ath: Add and use ath_printk and ath_<level> 2010-12-07 16:34:39 -05:00
hw.c Merge ssh://master.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 into for-davem 2011-05-24 16:47:54 -04:00
Kconfig ar9170usb: purge obsolete driver 2011-04-07 15:24:37 -04:00
key.c ath9k: assign keycache slots to unencrypted stations 2011-04-19 15:38:06 -04:00
main.c ath: Add and use ath_printk and ath_<level> 2010-12-07 16:34:39 -05:00
Makefile ar9170usb: purge obsolete driver 2011-04-07 15:24:37 -04:00
reg.h ath9k_hw: move the cycle counter tracking to ath 2010-10-11 15:04:20 -04:00
regd_common.h ath: Add a missing world regulatory domain 0x6C 2011-04-14 15:35:14 -04:00
regd.c Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 into for-davem 2011-04-25 14:34:25 -04:00
regd.h ath: Add function to check if 4.9GHz channels are allowed 2011-01-28 15:44:26 -05:00