On Mon, Aug 08, 2011 at 07:32:37PM -0700, Guy, Wey-Yi wrote:
> On Mon, 2011-08-08 at 19:53 -0700, Devin J. Pohly wrote:
> > From: Wey-Yi Guy <wey-yi.w....@intel.com>
> > 
> > commit f35291082294ca6737953bbe4e9491ede04ab822 upstream.
> > 
> > 5000 series has issue supporting power save idle mode:
> > commit      9dc2153315650eae220898668b6aa56a25c130be
> > 
> > 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: sta...@kernel.org #2.6.39, #3.0.0
> > Reported-by: Devin J. Pohly <djpohly+...@gmail.com>
> > Signed-off-by: Wey-Yi Guy <wey-yi.w....@intel.com>
> > Signed-off-by: John W. Linville <linvi...@tuxdriver.com>
> > Signed-off-by: Devin J. Pohly <djpohly+...@gmail.com>
> > ---
> >  drivers/net/wireless/iwlwifi/iwl-5000.c  |    1 +
> >  drivers/net/wireless/iwlwifi/iwl-core.h  |    2 ++
> >  drivers/net/wireless/iwlwifi/iwl-power.c |    3 ++-
> >  3 files changed, 5 insertions(+), 1 deletions(-)
> > 
> > diff --git a/drivers/net/wireless/iwlwifi/iwl-5000.c 
> > b/drivers/net/wireless/iwlwifi/iwl-5000.c
> > index e816c27..f1c3f49 100644
> > --- a/drivers/net/wireless/iwlwifi/iwl-5000.c
> > +++ b/drivers/net/wireless/iwlwifi/iwl-5000.c
> > @@ -421,6 +421,7 @@ static struct iwl_base_params iwl5000_base_params = {
> >     .chain_noise_scale = 1000,
> >     .wd_timeout = IWL_LONG_WD_TIMEOUT,
> >     .max_event_log_size = 512,
> > +   .no_idle_support = true,
> >  };
> >  static struct iwl_ht_params iwl5000_ht_params = {
> >     .ht_greenfield_support = true,
> > diff --git a/drivers/net/wireless/iwlwifi/iwl-core.h 
> > b/drivers/net/wireless/iwlwifi/iwl-core.h
> > index a54d416..b76996a 100644
> > --- a/drivers/net/wireless/iwlwifi/iwl-core.h
> > +++ b/drivers/net/wireless/iwlwifi/iwl-core.h
> > @@ -195,6 +195,7 @@ struct iwl_mod_params {
> >   * @temperature_kelvin: temperature report by uCode in kelvin
> >   * @max_event_log_size: size of event log buffer size for ucode event 
> > logging
> >   * @shadow_reg_enable: HW shadhow register bit
> > + * @no_idle_support: do not support idle mode
> >   */
> >  struct iwl_base_params {
> >     int eeprom_size;
> > @@ -216,6 +217,7 @@ struct iwl_base_params {
> >     bool temperature_kelvin;
> >     u32 max_event_log_size;
> >     const bool shadow_reg_enable;
> > +   const bool no_idle_support;
> >  };
> >  /*
> >   * @advanced_bt_coexist: support advanced bt coexist
> > diff --git a/drivers/net/wireless/iwlwifi/iwl-power.c 
> > b/drivers/net/wireless/iwlwifi/iwl-power.c
> > index 595c930..4a05a6a 100644
> > --- a/drivers/net/wireless/iwlwifi/iwl-power.c
> > +++ b/drivers/net/wireless/iwlwifi/iwl-power.c
> > @@ -355,7 +355,8 @@ static void iwl_power_build_cmd(struct iwl_priv *priv,
> >  
> >     dtimper = priv->hw->conf.ps_dtim_period ?: 1;
> >  
> > -   if (priv->hw->conf.flags & IEEE80211_CONF_IDLE)
> > +   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);
> >     else if (iwl_tt_is_low_power_state(priv)) {
> >             /* in thermal throttling low power state */
> 
> Thank you very much Devin.
> Greg, is this works for you?

Yes it does, thanks, now queued up.

greg k-h

_______________________________________________
stable mailing list
stable@linux.kernel.org
http://linux.kernel.org/mailman/listinfo/stable

Reply via email to