linux/drivers/net/wireless/intel/iwlwifi/mvm
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
..
binding.c iwlwifi: mvm: memset binding before setting values 2017-04-25 23:06:51 +03:00
coex.c iwlwifi: mvm: change when the BT_COEX is sent 2017-06-29 13:26:25 +03:00
constants.h iwlwifi: mvm: support old method of NVM parsing 2017-06-02 14:07:46 +03:00
d3.c iwlwifi: unify external & internal modparam names 2017-06-29 13:26:25 +03:00
debugfs-vif.c iwlwifi: mvm: use scnprintf() instead of snprintf() 2017-06-23 00:13:00 +03:00
debugfs.c iwlwifi: mvm: update rx statistics cmd api 2017-06-29 21:02:47 +03:00
debugfs.h
fw-api-coex.h iwlwifi: mvm: fix a bunch of kernel-doc warnings 2017-06-29 13:26:24 +03:00
fw-api-d3.h iwlwifi: mvm: fix a bunch of kernel-doc warnings 2017-06-29 13:26:24 +03:00
fw-api-mac.h iwlwifi: mvm: fix a bunch of kernel-doc warnings 2017-06-29 13:26:24 +03:00
fw-api-power.h iwlwifi: mvm: refactor geo init 2017-06-29 13:26:23 +03:00
fw-api-rs.h iwlwifi: mvm: fix a bunch of kernel-doc warnings 2017-06-29 13:26:24 +03:00
fw-api-rx.h iwlwifi: mvm: fix a bunch of kernel-doc warnings 2017-06-29 13:26:24 +03:00
fw-api-scan.h iwlwifi: mvm: fix a bunch of kernel-doc warnings 2017-06-29 13:26:24 +03:00
fw-api-sta.h iwlwifi: mvm: fix a bunch of kernel-doc warnings 2017-06-29 13:26:24 +03:00
fw-api-stats.h iwlwifi: mvm: update rx statistics cmd api 2017-06-29 21:02:47 +03:00
fw-api-tof.h iwlwifi: mvm: fix a bunch of kernel-doc warnings 2017-06-29 13:26:24 +03:00
fw-api-tx.h iwlwifi: mvm: support multi tid ba notif 2017-06-29 13:26:25 +03:00
fw-api.h iwlwifi: mvm: update rx statistics cmd api 2017-06-29 21:02:47 +03:00
fw-dbg.c iwlwifi: mvm: reset the fw_dump_desc pointer after ASSERT 2017-06-23 12:09:13 +03:00
fw-dbg.h iwlwifi: create new subdirectory for FW interaction 2017-06-29 13:26:27 +03:00
fw.c iwlwifi: mvm: remove version 2 of paging command 2017-06-29 13:26:27 +03:00
led.c iwlwifi: mvm: support init flow debugging 2017-06-05 23:29:32 +03:00
mac80211.c iwlwifi: mvm: defer setting IWL_MVM_STATUS_IN_HW_RESTART 2017-07-21 12:26:39 +03:00
mac-ctxt.c iwlwifi: mvm: fix mac80211's hw_queue in DQA mode 2017-06-29 20:39:01 +03:00
Makefile Makefile: drop -D__CHECK_ENDIAN__ from cflags 2016-12-16 00:13:43 +02:00
mvm.h iwlwifi: mvm: defer setting IWL_MVM_STATUS_IN_HW_RESTART 2017-07-21 12:26:39 +03:00
nvm.c iwlwifi: mvm: print base HW address during init 2017-06-23 12:20:16 +03:00
offloading.c
ops.c iwlwifi: mvm: defer setting IWL_MVM_STATUS_IN_HW_RESTART 2017-07-21 12:26:39 +03:00
phy-ctxt.c iwlwifi: mvm: use proper CDB check in PHY context modify 2017-06-29 13:26:25 +03:00
power.c iwlwifi: mvm: cleanup incorrect and redundant define 2017-02-03 16:26:39 +02:00
quota.c iwlwifi: mvm: support setting minimum quota from debugfs 2016-02-01 16:40:23 +02:00
rs.c iwlwifi: mvm: support aggs of 64 frames in A000 family 2017-06-29 13:26:25 +03:00
rs.h iwlwifi: mvm: support aggs of 64 frames in A000 family 2017-06-29 13:26:25 +03:00
rx.c iwlwifi: mvm: update rx statistics cmd api 2017-06-29 21:02:47 +03:00
rxmq.c More iwlwifi patches for 4.13 2017-06-28 18:55:55 +03:00
scan.c iwlwifi: unify external & internal modparam names 2017-06-29 13:26:25 +03:00
sf.c iwlwifi: mvm: prepare for station count change 2017-04-19 22:20:51 +03:00
sta.c iwlwifi: mvm: handle IBSS probe_queue in a few missing places 2017-07-21 12:26:39 +03:00
sta.h iwlwifi: mvm: support aggregations on A000 HW 2017-06-23 00:13:02 +03:00
tdls.c iwlwifi: mvm: use schedule_delayed_work() 2017-06-05 23:34:26 +03:00
testmode.h
time-event.c iwlwifi: move notification wait into fw/ 2017-06-29 13:26:27 +03:00
time-event.h iwlwifi: mvm: extend time event duration 2016-03-07 13:34:16 +02:00
tof.c iwlwifi: mvm: support init flow debugging 2017-06-05 23:29:32 +03:00
tof.h
tt.c First batch of iwlwifi driver patches 4.13 2017-06-12 19:29:39 +03:00
tx.c iwlwifi: mvm: quietly accept non-sta disassoc frames 2017-06-29 21:02:50 +03:00
utils.c iwlwifi: pcie: wait longer after device reset 2017-06-29 21:02:51 +03:00