1. 14 8月, 2009 3 次提交
  2. 28 7月, 2009 2 次提交
    • W
      iwlwifi: Thermal Throttling Management - part 2 · 46f9381a
      Wey-Yi Guy 提交于
      Part 2 of Thermal Throttling Management -
      
      Thermal Throttling feature is used to put NIC into low power state when
      driver detect the Radio temperature reach pre-defined threshold
      
      Two Thermal Throttling Management Methods; this patch introduce the
      Advance Thermal Throttling:
      TI-0: system power index, no tx/rx restriction, HT enabled
      TI-1: power index 5, 1 spatial stream Tx, multiple spatial stream Rx, HT
      enabled
      TI-2: power index 5: 1 spatial stream Tx, 1 spatial stream Rx, HT
      disabled
      TI-CT-KILL: power index 5, no Tx, no Rx, HT disabled
      
      For advance Thermal Throttling, CT_KILL_ENTER threshold and CT_KILL_EXIT
      threshold are different; uCode will not stay awake until reach
      CT_KILL_EXIT threshold.
      Signed-off-by: NWey-Yi Guy <wey-yi.w.guy@intel.com>
      Signed-off-by: NReinette Chatre <reinette.chatre@intel.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      46f9381a
    • W
      iwlwifi: Thermal Throttling Management - Part 1 · 39b73fb1
      Wey-Yi Guy 提交于
      Part 1 of Thermal Throttling Management -
      
      Thermal Throttling feature is used to put NIC into low power state when
      driver detect the Radio temperature reach pre-defined threshold
      
      Two Thermal Throttling Management Methods; this patch introduce the
      Legacy Thermal Management:
         IWL_TI_0: normal temperature, system power state
         IWL_TI_1: high temperature detect, low power state
         IWL_TI_2: higher temperature detected, lower power state
         IWL_TI_CT_KILL: critical temperature detected, lowest power state
      
      Once get into CT_KILL state, uCode go into sleep, driver will stop all
      the active queues, then move to IWL_TI_CT_KILL state; also set up 5
      seconds timer to toggle CSR flag, uCode wake up upon CSR flag change,
      then measure the temperature.
      If temperature is above CT_KILL exit threshold, uCode go backto sleep;
      if temperature is below CT_KILL exit threshold, uCode send Card State
      Notification response with appropriate CT_KILL status flag, and uCode
      remain awake, Driver receive Card State Notification Response and update
      the card temperature to the CT_KILL exit threshold.
      Signed-off-by: NWey-Yi Guy <wey-yi.w.guy@intel.com>
      Signed-off-by: NReinette Chatre <reinette.chatre@intel.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      39b73fb1
  3. 12 5月, 2009 2 次提交
    • J
      iwlwifi: clean up PS code · 7af2c460
      Johannes Berg 提交于
      This removes all the dead code that tries to adjust the power
      saving level based on the system AC state (inacceptable policy
      in the kernel) or based on overtemp conditions (unused).
      
      Also, pass _all_ policy wrt. enabling PS to mac80211, since
      we do not use the power_disabled internally I now use that to
      mirror the mac80211 CONF_PS setting. When mac80211 turns off
      CONF_PS we follow suit. This means that the user power level
      (which can currently only be set from sysfs) is not touched
      for mac80211 powersave changes.
      
      This means no "association status" checks are necessary since
      mac80211 will not allow power save to be enabled when not
      associated.
      Signed-off-by: NJohannes Berg <johannes@sipsolutions.net>
      Acked-by: NMohamed Abbas <mohamed.abbas@intel.com>
      Signed-off-by: NReinette Chatre <reinette.chatre@intel.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      7af2c460
    • J
      iwlwifi: fix PS disable status race · f0f74a0e
      Johannes Berg 提交于
      iwlwifi internally needs to keep track of whether PS
      is enabled in the firmware or not. To do this, it keeps
      a bit in the status flags, called STATUS_POWER_PMI.
      
      The code to set this bit looks as follows:
      
      static int iwl_set_power(struct iwl_priv *priv, void *cmd)
      {
      	return iwl_send_cmd_pdu_async(priv, POWER_TABLE_CMD,
      				      sizeof(struct iwl_powertable_cmd),
      				      cmd, NULL);
      }
      
      int iwl_power_update_mode(...)
      {
      	[...]
      	if (final_mode != IWL_POWER_MODE_CAM)
      		set_bit(STATUS_POWER_PMI, &priv->status);
      
      	iwl_update_power_cmd(priv, &cmd, final_mode);
      	cmd.keep_alive_beacons = 0;
      
      	if (final_mode == IWL_POWER_INDEX_5)
      		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);
      	else
      		set_bit(STATUS_POWER_PMI, &priv->status);
      
      	if (priv->cfg->ops->lib->update_chain_flags && update_chains)
      		priv->cfg->ops->lib->update_chain_flags(priv);
      	[...]
      }
      
      Now, this bit really needs to track what the _firmware_
      thinks, not what the driver thinks. Therefore, there is
      a race condition here -- the driver sets the bit before
      it knows that the async command sent to the card in the
      iwl_set_power function has been processed. As a result,
      the call to update_chain_flags() may think that the card
      has been woken up (PMI bit cleared) while in reality it
      hasn't processed the async POWER_TABLE_CMD yet.
      
      This leads to bugs -- any commands the update_chain_flags
      function sends can get stuck and subsequent commands also
      fail.
      
      The fix is almost trivial: since there's no reason to send
      an async command here (in fact, there almost never should
      be since many mac80211 callbacks can sleep) just make the
      function wait for the card to process the command and then
      return and clear the PMI bit.
      Signed-off-by: NJohannes Berg <johannes@sipsolutions.net>
      Acked-by: NMohamed Abbas <mohamed.abbas@intel.com>
      Signed-off-by: NReinette Chatre <reinette.chatre@intel.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      f0f74a0e
  4. 28 3月, 2009 1 次提交
  5. 14 2月, 2009 1 次提交
  6. 10 2月, 2009 2 次提交
  7. 30 1月, 2009 3 次提交
  8. 13 12月, 2008 2 次提交
  9. 22 11月, 2008 1 次提交
  10. 01 11月, 2008 1 次提交
  11. 16 9月, 2008 1 次提交
  12. 12 9月, 2008 2 次提交
  13. 09 9月, 2008 2 次提交
  14. 18 8月, 2008 1 次提交
    • H
      removed unused #include <version.h> · 3eb75aac
      Huang Weiyi 提交于
      The drivers below do not use LINUX_VERSION_CODE nor KERNEL_VERSION.
        drivers/net/wireless/ath5k/base.c
        drivers/net/wireless/b43/main.c
        drivers/net/wireless/ipw2100.c
        drivers/net/wireless/ipw2200.c
        drivers/net/wireless/iwlwifi/iwl-3945.c
        drivers/net/wireless/iwlwifi/iwl-4965.c
        drivers/net/wireless/iwlwifi/iwl-5000.c
        drivers/net/wireless/iwlwifi/iwl-agn.c
        drivers/net/wireless/iwlwifi/iwl-core.c
        drivers/net/wireless/iwlwifi/iwl-eeprom.c
        drivers/net/wireless/iwlwifi/iwl-hcmd.c
        drivers/net/wireless/iwlwifi/iwl-power.c
        drivers/net/wireless/iwlwifi/iwl3945-base.c
      
      This patch removes the said #include <version.h>.
      Signed-off-by: NHuang Weiyi <weiyi.huang@gmail.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      3eb75aac
  15. 05 8月, 2008 2 次提交
  16. 08 5月, 2008 3 次提交