aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexander Bondar <alexander.bondar@intel.com>2013-05-27 06:49:03 -0400
committerJohannes Berg <johannes.berg@intel.com>2013-06-05 03:06:07 -0400
commit5ec42ecf497f9c5e55fbe57e894efc5ce91c47cd (patch)
tree7d98dbdf4d579ba4c607deaa64251531c72f3aa6
parent4bf881f5d55c2bb704771287613c8807ef181b3c (diff)
iwlwifi: mvm: enable PM always in unassociated mode
In unassociated BSS STA mode FW verifies both power save and power management flags to decide on switching power off. The driver currently sets power management flag according to mac80211 decision. As result, in unassociated mode power management flag is down and power consumption is high. Change power management enablement. When unassociated in BPS and LP power save modes enable power management regardless of mac80211 decision. Rely on mac80211 decision if associated. Add power management state update during associated/disassociated modes transitions. Signed-off-by: Alexander Bondar <alexander.bondar@intel.com> Reviewed-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com> Signed-off-by: Johannes Berg <johannes.berg@intel.com>
-rw-r--r--drivers/net/wireless/iwlwifi/mvm/mac80211.c3
-rw-r--r--drivers/net/wireless/iwlwifi/mvm/power.c2
2 files changed, 5 insertions, 0 deletions
diff --git a/drivers/net/wireless/iwlwifi/mvm/mac80211.c b/drivers/net/wireless/iwlwifi/mvm/mac80211.c
index c13559b4b4fd..f2976901b1d5 100644
--- a/drivers/net/wireless/iwlwifi/mvm/mac80211.c
+++ b/drivers/net/wireless/iwlwifi/mvm/mac80211.c
@@ -763,6 +763,9 @@ static void iwl_mvm_bss_info_changed_station(struct iwl_mvm *mvm,
763 if (ret) 763 if (ret)
764 IWL_ERR(mvm, "failed to update quotas\n"); 764 IWL_ERR(mvm, "failed to update quotas\n");
765 } 765 }
766 ret = iwl_mvm_power_update_mode(mvm, vif);
767 if (ret)
768 IWL_ERR(mvm, "failed to update power mode\n");
766 } else if (changes & BSS_CHANGED_DTIM_PERIOD) { 769 } else if (changes & BSS_CHANGED_DTIM_PERIOD) {
767 /* 770 /*
768 * We received a beacon _after_ association so 771 * We received a beacon _after_ association so
diff --git a/drivers/net/wireless/iwlwifi/mvm/power.c b/drivers/net/wireless/iwlwifi/mvm/power.c
index 6cb98ce96ac4..3760a33ca3a4 100644
--- a/drivers/net/wireless/iwlwifi/mvm/power.c
+++ b/drivers/net/wireless/iwlwifi/mvm/power.c
@@ -168,6 +168,8 @@ void iwl_mvm_power_build_cmd(struct iwl_mvm *mvm, struct ieee80211_vif *vif,
168 return; 168 return;
169 169
170 cmd->flags |= cpu_to_le16(POWER_FLAGS_POWER_SAVE_ENA_MSK); 170 cmd->flags |= cpu_to_le16(POWER_FLAGS_POWER_SAVE_ENA_MSK);
171 if (!vif->bss_conf.assoc)
172 cmd->flags |= cpu_to_le16(POWER_FLAGS_POWER_MANAGEMENT_ENA_MSK);
171 173
172#ifdef CONFIG_IWLWIFI_DEBUGFS 174#ifdef CONFIG_IWLWIFI_DEBUGFS
173 if (mvmvif->dbgfs_pm.mask & MVM_DEBUGFS_PM_DISABLE_POWER_OFF && 175 if (mvmvif->dbgfs_pm.mask & MVM_DEBUGFS_PM_DISABLE_POWER_OFF &&