linux_dsm_epyc7002/drivers/net/wireless/intel/iwlwifi
Johannes Berg bf8b286f86 iwlwifi: mvm: defer setting IWL_MVM_STATUS_IN_HW_RESTART
A hardware/firmware error may happen at any point in time. In
particular, it might happen while mac80211 is in the middle of
a flow. We observed the following situation:
 * mac80211 is in authentication flow, in ieee80211_prep_connection()
 * iwlwifi firmware crashes, but no error can be reported at this
   precise point (mostly because the driver method is void, but even
   if it wasn't we'd just shift to a race condition)
 * mac80211 continues the flow, trying to add the AP station
 * iwlwifi has already set its internal restart flag, and so thinks
   that adding the station is part of the restart and already set up,
   so it uses the information that's supposed to already be in the
   struct

This can happen with any flow in mac80211 and with any information
we try to preserve across hardware restarts.

To fix this, only set a new HW_RESTART_REQUESTED flag and translate
that to IN_HW_RESTART once mac80211 actually starts the restart by
calling our start() method. As a consequence, any mac80211 flow in
progress at the time of the restart will properly finish (certainly
with errors), before the restart is attempted.

This fixes https://bugzilla.kernel.org/show_bug.cgi?id=195299.

Reported-by: djagoo <dev@djagoo.io>
Reported-by: Łukasz Siudut <lsiudut@gmail.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
2017-07-21 12:26:39 +03:00
..
cfg iwlwifi: bump MAX API for 8000/9000/A000 to 33 2017-06-29 21:09:58 +03:00
dvm iwlwifi: dvm: prevent an out of bounds access 2017-07-21 12:26:36 +03:00
fw iwlwifi: mvm: update rx statistics cmd api 2017-06-29 21:02:47 +03:00
mvm iwlwifi: mvm: defer setting IWL_MVM_STATUS_IN_HW_RESTART 2017-07-21 12:26:39 +03:00
pcie iwlwifi: missing error code in iwl_trans_pcie_alloc() 2017-07-21 12:26:38 +03:00
iwl-agn-hw.h
iwl-config.h iwlwifi: add the new a000_2ax series 2017-06-29 13:26:24 +03:00
iwl-context-info.h iwlwifi: pcie: add context information support 2017-04-11 15:19:34 +03:00
iwl-csr.h iwlwifi: pcie: fix 9000-series RF-kill interrupt propagation 2017-06-29 13:26:24 +03:00
iwl-debug.c
iwl-debug.h
iwl-devtrace-data.h iwlwifi: simplify data tracepoint 2017-06-23 11:57:20 +03:00
iwl-devtrace-io.h iwlwifi: pcie: add MSI-X interrupt tracing 2017-06-29 20:27:48 +03:00
iwl-devtrace-iwlwifi.h iwlwifi: fix TX tracing for non-linear SKBs 2017-06-23 11:57:48 +03: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: fix tracing when tx only is enabled 2017-07-21 12:26:38 +03:00
iwl-drv.c iwlwifi: create new subdirectory for FW interaction 2017-06-29 13:26:27 +03:00
iwl-drv.h iwlwifi: cleanup references to 8000 family in NVM code 2017-06-05 23:25:21 +03:00
iwl-eeprom-parse.c
iwl-eeprom-parse.h iwlwifi: remove useless iwl_free_nvm_data() function 2017-06-23 12:02:58 +03:00
iwl-eeprom-read.c
iwl-eeprom-read.h
iwl-fh.h iwlwifi: document transmit buffer bits better 2017-06-23 12:01:19 +03:00
iwl-io.c iwlwifi: add 9000 and A000 device families 2017-06-05 23:29:37 +03:00
iwl-io.h
iwl-modparams.h iwlwifi: unify external & internal modparam names 2017-06-29 13:26:25 +03:00
iwl-nvm-parse.c iwlwifi: mvm: print base HW address during init 2017-06-23 12:20:16 +03:00
iwl-nvm-parse.h iwlwifi: adjust NVM parsing APIs for new a000 method 2017-04-25 23:08:32 +03:00
iwl-op-mode.h
iwl-phy-db.c iwlwifi: mvm: add documentation for all command IDs 2017-06-29 13:26:24 +03:00
iwl-phy-db.h
iwl-prph.h iwlwifi: use bitfield.h for some registers 2017-06-23 00:13:00 +03:00
iwl-scd.h
iwl-trans.c iwlwifi: pcie: don't report RF-kill enabled while shutting down 2017-06-23 00:13:01 +03:00
iwl-trans.h iwlwifi: create new subdirectory for FW interaction 2017-06-29 13:26:27 +03:00
Kconfig iwlwifi: make RTPM depend on EXPERT 2017-02-08 17:54:20 +02:00
Makefile iwlwifi: move configuration into sub-directory 2017-06-29 13:26:27 +03:00