mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-13 16:47:05 +07:00
iwlwifi: mvm: re-enable ps when monitor interfaces are removed
If a monitor interface is added and then removed, we don't reset the mvm->ps_disabled flag, so we never re-enable power saving. Fix that and rearrange the code a bit. Additionally, fix a small indentation mistake in the iwl_mvm_power_set_pm() function declaration. Signed-off-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
228670b2e6
commit
b1873300e1
@ -776,6 +776,7 @@ static void iwl_mvm_restart_cleanup(struct iwl_mvm *mvm)
|
||||
iwl_trans_stop_device(mvm->trans);
|
||||
|
||||
mvm->scan_status = IWL_MVM_SCAN_NONE;
|
||||
mvm->ps_disabled = false;
|
||||
|
||||
/* just in case one was running */
|
||||
ieee80211_remain_on_channel_expired(mvm->hw);
|
||||
|
@ -566,9 +566,8 @@ static void iwl_mvm_power_iterator(void *_data, u8 *mac,
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
iwl_mvm_power_set_pm(struct iwl_mvm *mvm,
|
||||
struct iwl_power_vifs *vifs)
|
||||
static void iwl_mvm_power_set_pm(struct iwl_mvm *mvm,
|
||||
struct iwl_power_vifs *vifs)
|
||||
{
|
||||
struct iwl_mvm_vif *bss_mvmvif = NULL;
|
||||
struct iwl_mvm_vif *p2p_mvmvif = NULL;
|
||||
@ -830,7 +829,7 @@ int iwl_mvm_power_update_mac(struct iwl_mvm *mvm)
|
||||
struct iwl_power_vifs vifs = {
|
||||
.mvm = mvm,
|
||||
};
|
||||
bool ba_enable;
|
||||
bool ba_enable, disable_ps;
|
||||
int ret;
|
||||
|
||||
lockdep_assert_held(&mvm->mutex);
|
||||
@ -838,16 +837,19 @@ int iwl_mvm_power_update_mac(struct iwl_mvm *mvm)
|
||||
iwl_mvm_power_set_pm(mvm, &vifs);
|
||||
|
||||
/* disable PS if CAM */
|
||||
if (iwlmvm_mod_params.power_scheme == IWL_POWER_SCHEME_CAM) {
|
||||
mvm->ps_disabled = true;
|
||||
} else {
|
||||
/* don't update device power state unless we add / remove monitor */
|
||||
if (vifs.monitor_vif) {
|
||||
if (vifs.monitor_active)
|
||||
mvm->ps_disabled = true;
|
||||
ret = iwl_mvm_power_update_device(mvm);
|
||||
if (ret)
|
||||
return ret;
|
||||
disable_ps = (iwlmvm_mod_params.power_scheme == IWL_POWER_SCHEME_CAM);
|
||||
/* ...or if there is an active monitor vif */
|
||||
disable_ps |= (vifs.monitor_vif && vifs.monitor_active);
|
||||
|
||||
/* update device power state if it has changed */
|
||||
if (mvm->ps_disabled != disable_ps) {
|
||||
bool old_ps_disabled = mvm->ps_disabled;
|
||||
|
||||
mvm->ps_disabled = disable_ps;
|
||||
ret = iwl_mvm_power_update_device(mvm);
|
||||
if (ret) {
|
||||
mvm->ps_disabled = old_ps_disabled;
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user