aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/iwlwifi
diff options
context:
space:
mode:
authorAlexander Bondar <alexander.bondar@intel.com>2013-03-05 05:54:00 -0500
committerJohannes Berg <johannes.berg@intel.com>2013-04-03 16:49:16 -0400
commit9a6130485ec929a97eaef3f55aa40055a9c6b2b3 (patch)
treecb2b5184c02a59ca71438e9a09c83f94a77b843e /drivers/net/wireless/iwlwifi
parent7c1bf93fb299b739d2ca145b7f2a129c8d7a84c1 (diff)
iwlwifi: mvm: always send power table command
The driver distinguishes between power management and device's power down enablement. Power management enablement depends both on driver's module power parameters and mac80211 decision. The device's power down depends only on driver's module power parameters. Change the driver to always send Power Table command to enable or disable both power management and device's power down. 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>
Diffstat (limited to 'drivers/net/wireless/iwlwifi')
-rw-r--r--drivers/net/wireless/iwlwifi/mvm/power.c26
1 files changed, 12 insertions, 14 deletions
diff --git a/drivers/net/wireless/iwlwifi/mvm/power.c b/drivers/net/wireless/iwlwifi/mvm/power.c
index f66694c617e6..0c0771361951 100644
--- a/drivers/net/wireless/iwlwifi/mvm/power.c
+++ b/drivers/net/wireless/iwlwifi/mvm/power.c
@@ -86,12 +86,16 @@ static void iwl_mvm_power_build_cmd(struct iwl_mvm *mvm,
86 int keep_alive; 86 int keep_alive;
87 bool radar_detect = false; 87 bool radar_detect = false;
88 88
89 if ((!vif->bss_conf.ps) || 89 if ((iwlmvm_mod_params.power_scheme == IWL_POWER_SCHEME_CAM) ||
90 (iwlmvm_mod_params.power_scheme == IWL_POWER_SCHEME_CAM)) 90 !iwlwifi_mod_params.power_save)
91 return; 91 return;
92 92
93 cmd->flags |= cpu_to_le16(POWER_FLAGS_POWER_MANAGEMENT_ENA_MSK | 93 cmd->flags |= cpu_to_le16(POWER_FLAGS_POWER_SAVE_ENA_MSK);
94 POWER_FLAGS_POWER_SAVE_ENA_MSK); 94
95 if (!vif->bss_conf.ps)
96 return;
97
98 cmd->flags |= cpu_to_le16(POWER_FLAGS_POWER_MANAGEMENT_ENA_MSK);
95 99
96 dtimper = hw->conf.ps_dtim_period ?: 1; 100 dtimper = hw->conf.ps_dtim_period ?: 1;
97 101
@@ -132,11 +136,6 @@ int iwl_mvm_power_update_mode(struct iwl_mvm *mvm, struct ieee80211_vif *vif)
132{ 136{
133 struct iwl_powertable_cmd cmd = {}; 137 struct iwl_powertable_cmd cmd = {};
134 138
135 if (!iwlwifi_mod_params.power_save) {
136 IWL_DEBUG_POWER(mvm, "Power management is not allowed\n");
137 return 0;
138 }
139
140 if (vif->type != NL80211_IFTYPE_STATION || vif->p2p) 139 if (vif->type != NL80211_IFTYPE_STATION || vif->p2p)
141 return 0; 140 return 0;
142 141
@@ -165,14 +164,13 @@ int iwl_mvm_power_disable(struct iwl_mvm *mvm, struct ieee80211_vif *vif)
165{ 164{
166 struct iwl_powertable_cmd cmd = {}; 165 struct iwl_powertable_cmd cmd = {};
167 166
168 if (!iwlwifi_mod_params.power_save) {
169 IWL_DEBUG_POWER(mvm, "Power management is not allowed\n");
170 return 0;
171 }
172
173 if (vif->type != NL80211_IFTYPE_STATION || vif->p2p) 167 if (vif->type != NL80211_IFTYPE_STATION || vif->p2p)
174 return 0; 168 return 0;
175 169
170 if ((iwlmvm_mod_params.power_scheme != IWL_POWER_SCHEME_CAM) &&
171 iwlwifi_mod_params.power_save)
172 cmd.flags |= cpu_to_le16(POWER_FLAGS_POWER_SAVE_ENA_MSK);
173
176 IWL_DEBUG_POWER(mvm, 174 IWL_DEBUG_POWER(mvm,
177 "Sending power table command power level %d, flags = 0x%X\n", 175 "Sending power table command power level %d, flags = 0x%X\n",
178 iwlmvm_mod_params.power_scheme, le16_to_cpu(cmd.flags)); 176 iwlmvm_mod_params.power_scheme, le16_to_cpu(cmd.flags));