linux/drivers/net/wireless
Emmanuel Grumbach 23e76d1a51 iwlwifi: pcie: don't panic on host commands in iwldvm
None of the devices supported by iwldvm have support for
shadow registers. This means that we wake the NIC
when we increment the write pointer on Tx ring.
This happened even before my bad commit mentionned below.
Since my commit below, we wake up the NIC when we put a
host command on the ring regardless of shadow register
support. This means that in iwldvm (when the NIC doesn't
support shadow register), we wake up the NIC twice:

pcie_enqueue_hcmd:
	wake up the NIC
	iwl_pcie_txq_inc_wr_ptr:
		wake up the NIC - no shadow reg support

Since waking up the NIC means that we need to acquire a
spinlock, this obviously leads to a recursive spinlock
and hence a freeze.

Fixes: b943949105 ("iwlwifi: pcie: keep the NIC awake when commands are in flight")
Reported-by: Janusz Dziedzic <janusz.dziedzic@gmail.com>
Reviewed-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
2014-01-20 12:32:06 +02:00
..
ath Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless 2013-12-06 09:50:45 -05:00
b43 Merge branch 'for-linus-dma-masks' of git://git.linaro.org/people/rmk/linux-arm 2013-11-14 07:55:21 +09:00
b43legacy Merge branch 'for-linus-dma-masks' of git://git.linaro.org/people/rmk/linux-arm 2013-11-14 07:55:21 +09:00
brcm80211 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless 2013-12-06 09:50:45 -05:00
cw1200 wireless: cw1200: Use consistent internal locking conventions 2013-12-05 14:54:47 -05:00
hostap net:drivers/net: Miscellaneous conversions to ETH_ALEN 2013-10-02 17:04:45 -04:00
ipw2x00 wireless: ipw2100: remove unnecessary pci_set_drvdata() 2013-12-05 14:56:31 -05:00
iwlegacy iwl3945: do not print RFKILL message 2013-12-05 14:54:44 -05:00
iwlwifi iwlwifi: pcie: don't panic on host commands in iwldvm 2014-01-20 12:32:06 +02:00
libertas wireless: libertas: remove unnecessary spi_set_drvdata() 2013-12-05 14:56:37 -05:00
libertas_tf
mwifiex Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless 2013-12-06 09:50:45 -05:00
orinoco Merge git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next 2013-10-07 15:40:44 -04:00
p54 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless 2013-11-04 14:45:14 -05:00
prism54 wireless: prism54: remove unnecessary pci_set_drvdata() 2013-12-05 14:56:33 -05:00
rt2x00 wireless: rt2x00: remove unnecessary pci_set_drvdata() 2013-12-05 14:56:35 -05:00
rtl818x rtl8187: Increase RX queue depth 2013-12-05 14:54:53 -05:00
rtlwifi rtlwifi: rtl8188ee: Fix typo in code 2013-12-05 14:56:40 -05:00
ti wl1251: return -ENOMEM if kzalloc fails 2013-12-05 14:54:32 -05:00
zd1211rw tree-wide: use reinit_completion instead of INIT_COMPLETION 2013-11-15 09:32:21 +09:00
adm8211.c wireless: adm8211: remove unnecessary pci_set_drvdata() 2013-09-26 15:13:42 -04:00
adm8211.h
airo_cs.c
airo.c wireless: airo: remove unnecessary pci_set_drvdata() 2013-09-26 15:13:42 -04:00
airo.h
at76c50x-usb.c
at76c50x-usb.h
atmel_cs.c
atmel_pci.c
atmel.c Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next into for-davem 2013-11-04 14:51:28 -05:00
atmel.h
Kconfig
mac80211_hwsim.c Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless 2013-12-06 09:50:45 -05:00
mac80211_hwsim.h
Makefile
mwl8k.c wireless: mwl8k: remove unnecessary pci_set_drvdata() 2013-09-26 15:13:44 -04:00
ray_cs.c
ray_cs.h
rayctl.h
rndis_wlan.c
wl3501_cs.c
wl3501.h
zd1201.c Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless 2013-08-28 10:36:09 -04:00
zd1201.h