linux_dsm_epyc7002/drivers/net/wireless/iwlwifi
Emmanuel Grumbach 7439046d97 iwlwifi: don't access the HW when it is not available
When we kill the radio with the RF kill button we could access
the HW after having stopped the APM which would result in the
warning below.

The flow goes like this:
* RF kill
	iwlwifi notifies the stack which stops the driver
	fw sends CARD_STATE_NOTIFICATION
* iwl_trans_pcie_stop_device stops the APM
* the tasklet runs and calls to iwl_rx_handle
* iwl_rx_handle calls iwl_rx_queue_restock
* iwl_rx_queue_restock tries to access the HW...

[255908.543823] ------------[ cut here ]------------
[255908.543843] WARNING: at drivers/net/wireless/iwlwifi/iwl-io.c:150 iwl_grab_nic_access+0x79/0xb0 [iwlwifi]()
[255908.543849] Hardware name: Latitude E6410
[255908.543852] Timeout waiting for hardware access (CSR_GP_CNTRL 0x000003d8)
[255908.543856] Modules linked in: iwlmvm iwlwifi mac80211 [...]
[255908.543935] Pid: 0, comm: swapper Tainted: G        W   3.1.0 #1
[255908.543939] Call Trace:
[255908.543950]  [<c1046e42>] warn_slowpath_common+0x72/0xa0
[255908.543980]  [<c1046f13>] warn_slowpath_fmt+0x33/0x40
[255908.543992]  [<fa4bb3b9>] iwl_grab_nic_access+0x79/0xb0 [iwlwifi]
[255908.544004]  [<fa4bb9eb>] iwl_write_direct32+0x2b/0xa0 [iwlwifi]
[255908.544018]  [<fa4c0ff9>] iwl_rx_queue_update_write_ptr+0x89/0x1d0 [iwlwifi]
[255908.544054]  [<fa4c1250>] iwlagn_rx_queue_restock+0x110/0x140 [iwlwifi]
[255908.544067]  [<fa4c234d>] iwl_irq_tasklet+0x82d/0xf40 [iwlwifi]
[255908.544096]  [<c104e11e>] tasklet_action+0xbe/0x100
[255908.544102]  [<c104d91e>] __do_softirq+0xae/0x1f0
[255908.544227] ---[ end trace d150f49345d85009 ]---

Prevent this.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Reviewed-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
2012-09-10 19:13:20 +02:00
..
dvm iwlwifi: report A-MPDU status 2012-09-05 16:17:53 +02:00
pcie iwlwifi: don't access the HW when it is not available 2012-09-10 19:13:20 +02:00
iwl-agn-hw.h iwlwifi: move OTP defines 2012-04-23 14:30:01 -07:00
iwl-config.h iwlwifi: set correct 32 bit boost register value 2012-07-09 14:55:30 +02:00
iwl-csr.h iwlwifi: configure the SKU in the HW 2012-06-06 13:22:30 +02:00
iwl-debug.c iwlwifi: fix debug message level 2012-06-29 14:28:59 +02:00
iwl-debug.h iwlwifi: refactor EEPROM reading/parsing 2012-06-06 13:24:19 +02:00
iwl-devtrace.c iwlwifi: implement dynamic opmode loading 2012-06-05 15:32:13 -04:00
iwl-devtrace.h iwlwifi: reduce overhead if tracing disabled 2012-09-05 16:17:57 +02:00
iwl-drv.c iwlwifi: rework the iwlwifi debugfs structure 2012-07-26 08:59:28 +02:00
iwl-drv.h iwlwifi: s/iwl_ucode_callback/iwl_req_fw_callback 2012-07-26 08:53:22 +02:00
iwl-eeprom-parse.c iwlwifi: fix 11n_disable EEPROM refactoring regression 2012-06-20 08:41:26 +02:00
iwl-eeprom-parse.h iwlwifi: remove radio_config from eeprom_data 2012-09-05 16:18:01 +02:00
iwl-eeprom-read.c iwlwifi: refactor EEPROM reading/parsing 2012-06-06 13:24:19 +02:00
iwl-eeprom-read.h iwlwifi: refactor EEPROM reading/parsing 2012-06-06 13:24:19 +02:00
iwl-fh.h iwlwifi: print more info when a queue is stuck 2012-06-13 09:01:02 +02:00
iwl-fw-file.h iwlwifi: remove uCode alternatives mechanism 2012-04-16 14:34:44 -07:00
iwl-fw.h iwlwifi: include net/mac80211.h to avoid compiler error 2012-04-23 14:21:53 -07:00
iwl-io.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2012-07-24 13:34:56 -07:00
iwl-io.h iwlwifi: iwl_{read,write}_targ_mem_words takes dwords 2012-06-13 09:01:01 +02:00
iwl-modparams.h iwlwifi: remove the iwl_shared reference 2012-05-08 21:53:44 -04:00
iwl-notif-wait.c iwlwifi: don't disable interrupt in iwl_abort_notification_waits 2012-06-18 10:46:37 +02:00
iwl-notif-wait.h iwlwifi: extend notification wait 2012-04-09 16:37:15 -04:00
iwl-op-mode.h iwlwifi: rework the iwlwifi debugfs structure 2012-07-26 08:59:28 +02:00
iwl-prph.h Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2012-06-12 21:59:18 -07:00
iwl-test.c iwlwifi: iwl_{read,write}_targ_mem_words takes dwords 2012-06-13 09:01:01 +02:00
iwl-test.h iwlwifi: decouple testmode and iwl-test 2012-06-11 11:41:18 +02:00
iwl-testmode.h iwlwifi: refactor testmode 2012-06-11 11:37:21 +02:00
iwl-trans.h iwlwifi: get the correct HCMD in the response handler 2012-07-26 09:03:21 +02:00
Kconfig iwlwifi: implement dynamic opmode loading 2012-06-05 15:32:13 -04:00
Makefile iwlwifi: Fix Makefile build order for built-in driver 2012-06-13 09:01:05 +02:00