diff options
author | Wey-Yi Guy <wey-yi.w.guy@intel.com> | 2009-08-07 18:41:47 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2009-08-14 09:13:49 -0400 |
commit | 3a780d25428a0a391a8ba6c888cf4e89ac3fdbb1 (patch) | |
tree | 582df70a3253fff3164e94052900d75af55c5d96 /drivers/net/wireless/iwlwifi/iwl-power.c | |
parent | ee9f29894fc3819c1bd639fc3a886326bb809266 (diff) |
iwlwifi: handle the case when set power fail
Modify the power update function, when driver fail to set the power, it
should not continue move forward and try to change the rx chain
configuration.
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/iwlwifi/iwl-power.c')
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-power.c | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-power.c b/drivers/net/wireless/iwlwifi/iwl-power.c index bd97a0da1cd5..9e8916d15ecf 100644 --- a/drivers/net/wireless/iwlwifi/iwl-power.c +++ b/drivers/net/wireless/iwlwifi/iwl-power.c | |||
@@ -282,18 +282,21 @@ int iwl_power_update_mode(struct iwl_priv *priv, bool force) | |||
282 | cmd.flags |= IWL_POWER_FAST_PD; | 282 | cmd.flags |= IWL_POWER_FAST_PD; |
283 | 283 | ||
284 | ret = iwl_set_power(priv, &cmd); | 284 | ret = iwl_set_power(priv, &cmd); |
285 | 285 | if (!ret) { | |
286 | if (final_mode == IWL_POWER_MODE_CAM) | 286 | if (final_mode == IWL_POWER_MODE_CAM) |
287 | clear_bit(STATUS_POWER_PMI, &priv->status); | 287 | clear_bit(STATUS_POWER_PMI, &priv->status); |
288 | 288 | ||
289 | if (priv->cfg->ops->lib->update_chain_flags && update_chains) | 289 | if (priv->cfg->ops->lib->update_chain_flags && |
290 | priv->cfg->ops->lib->update_chain_flags(priv); | 290 | update_chains) |
291 | else | 291 | priv->cfg->ops->lib->update_chain_flags(priv); |
292 | IWL_DEBUG_POWER(priv, "Cannot update the power, chain noise " | 292 | else |
293 | IWL_DEBUG_POWER(priv, | ||
294 | "Cannot update the power, chain noise " | ||
293 | "calibration running: %d\n", | 295 | "calibration running: %d\n", |
294 | priv->chain_noise_data.state); | 296 | priv->chain_noise_data.state); |
295 | if (!ret) | ||
296 | setting->power_mode = final_mode; | 297 | setting->power_mode = final_mode; |
298 | } else | ||
299 | IWL_ERR(priv, "set power fail, ret = %d", ret); | ||
297 | } | 300 | } |
298 | 301 | ||
299 | return ret; | 302 | return ret; |