mirror of
https://github.com/torvalds/linux.git
synced 2024-12-11 21:52:04 +00:00
iwlwifi: mvm: allow keeping connections in d3_test
Keeping connection can be useful also when testing d3 using the debugfs file (d3_test). Save the vif to keep connection on, and consider it when iterating over the interfaces. Signed-off-by: Eliad Peller <eliad@wizery.com> Reviewed-by: Luciano Coelho <luciano.coelho@intel.com> Reviewed-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
This commit is contained in:
parent
b87c2179a7
commit
78c9df66c8
@ -1807,6 +1807,10 @@ static int __iwl_mvm_resume(struct iwl_mvm *mvm, bool test)
|
|||||||
iwl_mvm_read_d3_sram(mvm);
|
iwl_mvm_read_d3_sram(mvm);
|
||||||
|
|
||||||
keep = iwl_mvm_query_wakeup_reasons(mvm, vif);
|
keep = iwl_mvm_query_wakeup_reasons(mvm, vif);
|
||||||
|
#ifdef CONFIG_IWLWIFI_DEBUGFS
|
||||||
|
if (keep)
|
||||||
|
mvm->keep_vif = vif;
|
||||||
|
#endif
|
||||||
/* has unlocked the mutex, so skip that */
|
/* has unlocked the mutex, so skip that */
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
@ -1863,6 +1867,7 @@ static int iwl_mvm_d3_test_open(struct inode *inode, struct file *file)
|
|||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
mvm->d3_test_active = true;
|
mvm->d3_test_active = true;
|
||||||
|
mvm->keep_vif = NULL;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1891,6 +1896,10 @@ static ssize_t iwl_mvm_d3_test_read(struct file *file, char __user *user_buf,
|
|||||||
static void iwl_mvm_d3_test_disconn_work_iter(void *_data, u8 *mac,
|
static void iwl_mvm_d3_test_disconn_work_iter(void *_data, u8 *mac,
|
||||||
struct ieee80211_vif *vif)
|
struct ieee80211_vif *vif)
|
||||||
{
|
{
|
||||||
|
/* skip the one we keep connection on */
|
||||||
|
if (_data == vif)
|
||||||
|
return;
|
||||||
|
|
||||||
if (vif->type == NL80211_IFTYPE_STATION)
|
if (vif->type == NL80211_IFTYPE_STATION)
|
||||||
ieee80211_connection_loss(vif);
|
ieee80211_connection_loss(vif);
|
||||||
}
|
}
|
||||||
@ -1917,7 +1926,7 @@ static int iwl_mvm_d3_test_release(struct inode *inode, struct file *file)
|
|||||||
|
|
||||||
ieee80211_iterate_active_interfaces_atomic(
|
ieee80211_iterate_active_interfaces_atomic(
|
||||||
mvm->hw, IEEE80211_IFACE_ITER_NORMAL,
|
mvm->hw, IEEE80211_IFACE_ITER_NORMAL,
|
||||||
iwl_mvm_d3_test_disconn_work_iter, NULL);
|
iwl_mvm_d3_test_disconn_work_iter, mvm->keep_vif);
|
||||||
|
|
||||||
ieee80211_wake_queues(mvm->hw);
|
ieee80211_wake_queues(mvm->hw);
|
||||||
|
|
||||||
|
@ -531,6 +531,7 @@ struct iwl_mvm {
|
|||||||
bool store_d3_resume_sram;
|
bool store_d3_resume_sram;
|
||||||
void *d3_resume_sram;
|
void *d3_resume_sram;
|
||||||
u32 d3_test_pme_ptr;
|
u32 d3_test_pme_ptr;
|
||||||
|
struct ieee80211_vif *keep_vif;
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user