iwlwifi: fix power index handling
authorAmit Beka <amit.beka@intel.com>
Thu, 3 May 2012 21:22:04 +0000 (14:22 -0700)
committerJohn W. Linville <linville@tuxdriver.com>
Tue, 15 May 2012 21:27:53 +0000 (17:27 -0400)
The power index that the user gives as module parameter
in in range 1-5, but we need to decrease it in order
to create an array index out of it (0-4) for the power
table command.

Signed-off-by: Amit Beka <amit.beka@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/iwlwifi/iwl-power.c

index 8352265..544ddf1 100644 (file)
@@ -253,6 +253,8 @@ static void iwl_static_sleep_cmd(struct iwl_priv *priv,
 
        IWL_DEBUG_POWER(priv, "numSkipDtim = %u, dtimPeriod = %d\n",
                        skip, period);
+       /* The power level here is 0-4 (used as array index), but user expects
+       to see 1-5 (according to spec). */
        IWL_DEBUG_POWER(priv, "Sleep command for index %d\n", lvl + 1);
 }
 
@@ -308,10 +310,12 @@ static void iwl_power_build_cmd(struct iwl_priv *priv,
                                     priv->power_data.debug_sleep_level_override,
                                     dtimper);
        else {
+               /* Note that the user parameter is 1-5 (according to spec),
+               but we pass 0-4 because it acts as an array index. */
                if (iwlwifi_mod_params.power_level > IWL_POWER_INDEX_1 &&
-                   iwlwifi_mod_params.power_level <= IWL_POWER_INDEX_5)
+                   iwlwifi_mod_params.power_level <= IWL_POWER_NUM)
                        iwl_static_sleep_cmd(priv, cmd,
-                               iwlwifi_mod_params.power_level, dtimper);
+                               iwlwifi_mod_params.power_level - 1, dtimper);
                else
                        iwl_static_sleep_cmd(priv, cmd,
                                IWL_POWER_INDEX_1, dtimper);