iwlwifi: trigger dump on assert prior to setting the device up
authorShahar S Matityahu <shahar.s.matityahu@intel.com>
Thu, 22 Nov 2018 06:01:30 +0000 (08:01 +0200)
committerLuca Coelho <luciano.coelho@intel.com>
Tue, 29 Jan 2019 14:10:32 +0000 (16:10 +0200)
In the regular flow, when we receive an assert, ieee80211_reconfig is
called which reconfig the driver using iwl_mvm_mac_start.
iwl_mvm_mac_start is clearing the restart bit and does dump collection.

Prior to setting the device up, ieee80211_reconfig does not call
iwl_mvm_mac_start since there is nothing to reconfig and we miss the
dump collection of the assert.

solve it by checking the restart bit before we stop the device
and trigger a dump collection in case it is set.

note that we don't need to do it in the fmac case since in fmac
assert flow in iwl_fmac_nic_error we call iwl_fw_dbg_collect_desc
so we can be sure that there will a dump collection in
iwl_fmac_stop_device.

Signed-off-by: Shahar S Matityahu <shahar.s.matityahu@intel.com>
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
drivers/net/wireless/intel/iwlwifi/mvm/mvm.h

index ac526b4..12e9ecc 100644 (file)
@@ -1997,6 +1997,16 @@ static inline u32 iwl_mvm_flushable_queues(struct iwl_mvm *mvm)
 static inline void iwl_mvm_stop_device(struct iwl_mvm *mvm)
 {
        lockdep_assert_held(&mvm->mutex);
+       /* If IWL_MVM_STATUS_HW_RESTART_REQUESTED bit is set then we received
+        * an assert. Since we failed to bring the interface up, mac80211
+        * will not attempt to reconfig the device,
+        * which handles the dump collection in assert flow,
+        * so trigger dump collection here.
+        */
+       if (test_and_clear_bit(IWL_MVM_STATUS_HW_RESTART_REQUESTED,
+                              &mvm->status))
+               iwl_fw_dbg_collect_desc(&mvm->fwrt, &iwl_dump_desc_assert,
+                                       false, 0);
        /* calling this function without using dump_start/end since at this
         * point we already hold the op mode mutex
         */