Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f3529108 authored by Wey-Yi Guy's avatar Wey-Yi Guy Committed by John W. Linville
Browse files

iwlagn: 5000 do not support idle mode

5000 series has issue supporting power save idle mode:

commit	9dc21533

iwlwifi: always support idle mode for agn devices

For agn devices, always support idle mode which help power
consumption in idle unassociated state.

the above changes cause 5000 become not stable when power management is "on"

http://bugzilla.intellinuxwireless.org/show_bug.cgi?id=2312



Cc: stable@kernel.org #2.6.39, #3.0.0
Reported-by: default avatarDevin J Pohly <djpohly+iwl@gmail.com>
Signed-off-by: default avatarWey-Yi Guy <wey-yi.w.guy@intel.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 00898a47
Loading
Loading
Loading
Loading
+1 −0
Original line number Original line Diff line number Diff line
@@ -365,6 +365,7 @@ static struct iwl_base_params iwl5000_base_params = {
	.chain_noise_scale = 1000,
	.chain_noise_scale = 1000,
	.wd_timeout = IWL_LONG_WD_TIMEOUT,
	.wd_timeout = IWL_LONG_WD_TIMEOUT,
	.max_event_log_size = 512,
	.max_event_log_size = 512,
	.no_idle_support = true,
};
};
static struct iwl_ht_params iwl5000_ht_params = {
static struct iwl_ht_params iwl5000_ht_params = {
	.ht_greenfield_support = true,
	.ht_greenfield_support = true,
+2 −0
Original line number Original line Diff line number Diff line
@@ -135,6 +135,7 @@ struct iwl_mod_params {
 * @temperature_kelvin: temperature report by uCode in kelvin
 * @temperature_kelvin: temperature report by uCode in kelvin
 * @max_event_log_size: size of event log buffer size for ucode event logging
 * @max_event_log_size: size of event log buffer size for ucode event logging
 * @shadow_reg_enable: HW shadhow register bit
 * @shadow_reg_enable: HW shadhow register bit
 * @no_idle_support: do not support idle mode
 */
 */
struct iwl_base_params {
struct iwl_base_params {
	int eeprom_size;
	int eeprom_size;
@@ -156,6 +157,7 @@ struct iwl_base_params {
	bool temperature_kelvin;
	bool temperature_kelvin;
	u32 max_event_log_size;
	u32 max_event_log_size;
	const bool shadow_reg_enable;
	const bool shadow_reg_enable;
	const bool no_idle_support;
};
};
/*
/*
 * @advanced_bt_coexist: support advanced bt coexist
 * @advanced_bt_coexist: support advanced bt coexist
+2 −1
Original line number Original line Diff line number Diff line
@@ -349,7 +349,8 @@ static void iwl_power_build_cmd(struct iwl_priv *priv,


	if (priv->wowlan)
	if (priv->wowlan)
		iwl_static_sleep_cmd(priv, cmd, IWL_POWER_INDEX_5, dtimper);
		iwl_static_sleep_cmd(priv, cmd, IWL_POWER_INDEX_5, dtimper);
	else if (priv->hw->conf.flags & IEEE80211_CONF_IDLE)
	else if (!priv->cfg->base_params->no_idle_support &&
		 priv->hw->conf.flags & IEEE80211_CONF_IDLE)
		iwl_static_sleep_cmd(priv, cmd, IWL_POWER_INDEX_5, 20);
		iwl_static_sleep_cmd(priv, cmd, IWL_POWER_INDEX_5, 20);
	else if (iwl_tt_is_low_power_state(priv)) {
	else if (iwl_tt_is_low_power_state(priv)) {
		/* in thermal throttling low power state */
		/* in thermal throttling low power state */