linux_dsm_epyc7002/drivers/net/wireless/intel/iwlwifi
Golan Ben Ami 2b18824a5d iwlwifi: pcie: set STATUS_RFKILL immediately after interrupt
Currently, when getting a RFKILL interrupt, the transport enters a flow
in which it stops the device, disables other interrupts, etc. After
stopping the device, the transport resets the hw, and sleeps. During
the sleep, a context switch occurs and host commands are sent by upper
layers (e.g. mvm) to the fw. This is possible since the op_mode layer
and the transport layer hold different mutexes.

Since the STATUS_RFKILL bit isn't set, the transport layer doesn't
recognize that RFKILL was toggled on, and no commands can actually be
sent, so it enqueues the command to the tx queue and sets a timer on
the queue.

After switching context back to stopping the device, STATUS_RFKILL is
set, and then the transport can't send the command to the fw.
This eventually results in a queue hang.

Fix this by setting STATUS_RFKILL immediately when
the interrupt is fired.

Signed-off-by: Golan Ben-Ami <golan.ben.ami@intel.com>
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
2017-02-08 17:54:21 +02:00
..
dvm iwlwifi: dvm: don't call << operator with a negative value 2017-02-08 17:54:20 +02:00
mvm iwlwifi: mvm: don't call << operator with a negative value 2017-02-08 17:54:21 +02:00
pcie iwlwifi: pcie: set STATUS_RFKILL immediately after interrupt 2017-02-08 17:54:21 +02:00
iwl-1000.c iwlwifi: make configuration structs smaller 2016-05-10 22:34:06 +03:00
iwl-2000.c iwlwifi: make configuration structs smaller 2016-05-10 22:34:06 +03:00
iwl-5000.c iwlwifi: make configuration structs smaller 2016-05-10 22:34:06 +03:00
iwl-6000.c iwlwifi: fix MODULE_FIRMWARE for 6030 2017-01-26 09:38:58 +02:00
iwl-7000.c iwlwifi: mvm: bump max API to 28 2017-01-26 09:38:55 +02:00
iwl-8000.c iwlwifi: mvm: bump max API to 28 2017-01-26 09:38:55 +02:00
iwl-9000.c iwlwifi: mvm: bump max API to 28 2017-01-26 09:38:55 +02:00
iwl-a000.c iwlwifi: support two phys for a000 devices 2017-02-06 19:19:26 +02:00
iwl-agn-hw.h
iwl-config.h iwlwifi: support two phys for a000 devices 2017-02-06 19:19:26 +02:00
iwl-csr.h iwlwifi: support two phys for a000 devices 2017-02-06 19:19:26 +02:00
iwl-debug.c
iwl-debug.h iwlwifi: add missing type declaration 2016-07-12 14:51:57 +03:00
iwl-devtrace-data.h iwlwifi: pcie: build an A-MSDU using TSO core 2015-12-20 23:27:37 +02:00
iwl-devtrace-io.h iwlwifi: centralize 64 bit HW registers write 2016-07-06 10:22:08 +03:00
iwl-devtrace-iwlwifi.h iwlwifi: mvm: adapt the firmware assert log to new firmware 2016-03-09 21:05:16 +02:00
iwl-devtrace-msg.h
iwl-devtrace-ucode.h
iwl-devtrace.c iwlwifi: don't export trace points that are used in iwlwifi only 2016-09-19 10:09:41 +03:00
iwl-devtrace.h iwlwifi: tracing: decouple from mac80211 2016-07-06 10:08:56 +03:00
iwl-drv.c iwlwifi: remove unnecessary cfg element in iwl_drv 2017-02-06 19:19:25 +02:00
iwl-drv.h iwlwifi: remove unnecessary argument to iwl_drv_start() 2017-02-06 19:19:25 +02:00
iwl-eeprom-parse.c iwlwifi: advertise maximal MPDU length when Rx MQ is supported 2016-07-01 16:51:22 +03:00
iwl-eeprom-parse.h iwlwifi: decouple PCIe transport from mac80211 2016-07-06 10:09:56 +03:00
iwl-eeprom-read.c
iwl-eeprom-read.h
iwl-fh.h iwlwifi: change byte count table for a000 devices 2016-09-16 09:10:22 +03:00
iwl-fw-error-dump.h iwlwifi: Reserve iwl_fw_error_dump_type enum 2016-07-06 02:07:48 +03:00
iwl-fw-file.h iwlwifi: enlarge number of ucode sections 2017-01-26 09:38:57 +02:00
iwl-fw.h iwlwifi: enlarge number of ucode sections 2017-01-26 09:38:57 +02:00
iwl-io.c iwlwifi: fix semicolon.cocci warnings 2016-09-15 19:32:59 +03:00
iwl-io.h iwlwifi: centralize 64 bit HW registers write 2016-07-06 10:22:08 +03:00
iwl-modparams.h iwlwifi: decouple PCIe transport from mac80211 2016-07-06 10:09:56 +03:00
iwl-notif-wait.c iwlwifi: move to wide ID for all commands 2016-09-19 10:09:39 +03:00
iwl-notif-wait.h
iwl-nvm-parse.c iwlwifi: move BIOS MCC retrieval to common code 2016-09-19 10:09:37 +03:00
iwl-nvm-parse.h iwlwifi: move BIOS MCC retrieval to common code 2016-09-19 10:09:37 +03:00
iwl-op-mode.h
iwl-phy-db.c iwlwifi: mvm: set HCMD_NAME for PHY_DB as well 2016-09-19 11:29:33 +03:00
iwl-phy-db.h iwlwifi: mvm: remove redundant alloc_ctx parameter 2016-05-10 22:34:03 +03:00
iwl-prph.h iwlwifi: pcie: remove dead code 2016-08-30 14:16:43 +03:00
iwl-scd.h
iwl-trans.c iwlwifi: migrate to devm_* API 2016-09-19 10:09:42 +03:00
iwl-trans.h iwlwifi: move to wide ID for all commands 2016-09-19 10:09:39 +03:00
Kconfig iwlwifi: make RTPM depend on EXPERT 2017-02-08 17:54:20 +02:00
Makefile Makefile: drop -D__CHECK_ENDIAN__ from cflags 2016-12-16 00:13:43 +02:00