diff options
author | Emmanuel Grumbach <emmanuel.grumbach@intel.com> | 2017-08-31 11:52:30 +0300 |
---|---|---|
committer | Luca Coelho <luciano.coelho@intel.com> | 2017-10-06 14:57:21 +0300 |
commit | 528a542aa6654a9ec03830cc75142cc94276739e (patch) | |
tree | 7ac52b731445fd6f2148a33e7e7638aeb5262ffa /drivers/net/wireless/intel/iwlwifi/mvm/utils.c | |
parent | d7b9bb69c9b3accbd199b51b28d95d08f37049cd (diff) | |
download | linux-528a542aa6654a9ec03830cc75142cc94276739e.tar.gz linux-528a542aa6654a9ec03830cc75142cc94276739e.tar.bz2 linux-528a542aa6654a9ec03830cc75142cc94276739e.zip |
iwlwifi: mvm: support firmware debug trigger on frame reorder timeout
The trigger that collects data when a frame is released
because of the timer of the reordering buffer was not
implemented for 9000 devices.
Fix this.
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
Diffstat (limited to 'drivers/net/wireless/intel/iwlwifi/mvm/utils.c')
-rw-r--r-- | drivers/net/wireless/intel/iwlwifi/mvm/utils.c | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/utils.c b/drivers/net/wireless/intel/iwlwifi/mvm/utils.c index 328035640669..2da1b088ac01 100644 --- a/drivers/net/wireless/intel/iwlwifi/mvm/utils.c +++ b/drivers/net/wireless/intel/iwlwifi/mvm/utils.c @@ -1368,6 +1368,31 @@ void iwl_mvm_inactivity_check(struct iwl_mvm *mvm) rcu_read_unlock(); } +void iwl_mvm_event_frame_timeout_callback(struct iwl_mvm *mvm, + struct ieee80211_vif *vif, + const struct ieee80211_sta *sta, + u16 tid) +{ + struct iwl_fw_dbg_trigger_tlv *trig; + struct iwl_fw_dbg_trigger_ba *ba_trig; + + if (!iwl_fw_dbg_trigger_enabled(mvm->fw, FW_DBG_TRIGGER_BA)) + return; + + trig = iwl_fw_dbg_get_trigger(mvm->fw, FW_DBG_TRIGGER_BA); + ba_trig = (void *)trig->data; + if (!iwl_fw_dbg_trigger_check_stop(&mvm->fwrt, + ieee80211_vif_to_wdev(vif), trig)) + return; + + if (!(le16_to_cpu(ba_trig->frame_timeout) & BIT(tid))) + return; + + iwl_fw_dbg_collect_trig(&mvm->fwrt, trig, + "Frame from %pM timed out, tid %d", + sta->addr, tid); +} + void iwl_mvm_get_sync_time(struct iwl_mvm *mvm, u32 *gp2, u64 *boottime) { bool ps_disabled; |