iwlwifi: handle the case when set power fail
authorWey-Yi Guy <wey-yi.w.guy@intel.com>
Fri, 7 Aug 2009 22:41:47 +0000 (15:41 -0700)
committerJohn W. Linville <linville@tuxdriver.com>
Fri, 14 Aug 2009 13:13:49 +0000 (09:13 -0400)
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>
drivers/net/wireless/iwlwifi/iwl-power.c

index bd97a0da1cd59aa10a85fc275e773b10668b7bbd..9e8916d15ecf3b6059173ab7caf66d35efb0540d 100644 (file)
@@ -282,18 +282,21 @@ int iwl_power_update_mode(struct iwl_priv *priv, bool force)
                        cmd.flags |= IWL_POWER_FAST_PD;
 
                ret = iwl_set_power(priv, &cmd);
-
-               if (final_mode == IWL_POWER_MODE_CAM)
-                       clear_bit(STATUS_POWER_PMI, &priv->status);
-
-               if (priv->cfg->ops->lib->update_chain_flags && update_chains)
-                       priv->cfg->ops->lib->update_chain_flags(priv);
-               else
-                       IWL_DEBUG_POWER(priv, "Cannot update the power, chain noise "
+               if (!ret) {
+                       if (final_mode == IWL_POWER_MODE_CAM)
+                               clear_bit(STATUS_POWER_PMI, &priv->status);
+
+                       if (priv->cfg->ops->lib->update_chain_flags &&
+                           update_chains)
+                               priv->cfg->ops->lib->update_chain_flags(priv);
+                       else
+                               IWL_DEBUG_POWER(priv,
+                                       "Cannot update the power, chain noise "
                                        "calibration running: %d\n",
                                        priv->chain_noise_data.state);
-               if (!ret)
                        setting->power_mode = final_mode;
+               } else
+                       IWL_ERR(priv, "set power fail, ret = %d", ret);
        }
 
        return ret;