1. 30 8月, 2011 5 次提交
  2. 11 6月, 2011 1 次提交
  3. 08 4月, 2011 1 次提交
  4. 08 10月, 2010 1 次提交
  5. 06 10月, 2010 1 次提交
    • W
      iwlagn: reduce redundant parameter definitions · 7cb1b088
      Wey-Yi Guy 提交于
      move paramater definitions to a device paramater structure only
      leaving the device name, which antennas are used and what firmware
      file to use in the iwl_cfg structure.  this will not completely
      remove the redundancies but greatly reduce them for devices that
      only vary by name or antennas.  the parameters that are more
      likely to change within a given device family are left in iwl_cfg.
      also separate bt param structure added to help reduce more.
      Signed-off-by: NJay Sternberg <jay.e.sternberg@intel.com>
      Signed-off-by: NWey-Yi Guy <wey-yi.w.guy@intel.com>
      7cb1b088
  6. 27 8月, 2010 1 次提交
  7. 25 8月, 2010 1 次提交
  8. 11 5月, 2010 1 次提交
  9. 03 4月, 2010 1 次提交
  10. 30 3月, 2010 1 次提交
    • T
      include cleanup: Update gfp.h and slab.h includes to prepare for breaking... · 5a0e3ad6
      Tejun Heo 提交于
      include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h
      
      percpu.h is included by sched.h and module.h and thus ends up being
      included when building most .c files.  percpu.h includes slab.h which
      in turn includes gfp.h making everything defined by the two files
      universally available and complicating inclusion dependencies.
      
      percpu.h -> slab.h dependency is about to be removed.  Prepare for
      this change by updating users of gfp and slab facilities include those
      headers directly instead of assuming availability.  As this conversion
      needs to touch large number of source files, the following script is
      used as the basis of conversion.
      
        http://userweb.kernel.org/~tj/misc/slabh-sweep.py
      
      The script does the followings.
      
      * Scan files for gfp and slab usages and update includes such that
        only the necessary includes are there.  ie. if only gfp is used,
        gfp.h, if slab is used, slab.h.
      
      * When the script inserts a new include, it looks at the include
        blocks and try to put the new include such that its order conforms
        to its surrounding.  It's put in the include block which contains
        core kernel includes, in the same order that the rest are ordered -
        alphabetical, Christmas tree, rev-Xmas-tree or at the end if there
        doesn't seem to be any matching order.
      
      * If the script can't find a place to put a new include (mostly
        because the file doesn't have fitting include block), it prints out
        an error message indicating which .h file needs to be added to the
        file.
      
      The conversion was done in the following steps.
      
      1. The initial automatic conversion of all .c files updated slightly
         over 4000 files, deleting around 700 includes and adding ~480 gfp.h
         and ~3000 slab.h inclusions.  The script emitted errors for ~400
         files.
      
      2. Each error was manually checked.  Some didn't need the inclusion,
         some needed manual addition while adding it to implementation .h or
         embedding .c file was more appropriate for others.  This step added
         inclusions to around 150 files.
      
      3. The script was run again and the output was compared to the edits
         from #2 to make sure no file was left behind.
      
      4. Several build tests were done and a couple of problems were fixed.
         e.g. lib/decompress_*.c used malloc/free() wrappers around slab
         APIs requiring slab.h to be added manually.
      
      5. The script was run on all .h files but without automatically
         editing them as sprinkling gfp.h and slab.h inclusions around .h
         files could easily lead to inclusion dependency hell.  Most gfp.h
         inclusion directives were ignored as stuff from gfp.h was usually
         wildly available and often used in preprocessor macros.  Each
         slab.h inclusion directive was examined and added manually as
         necessary.
      
      6. percpu.h was updated not to include slab.h.
      
      7. Build test were done on the following configurations and failures
         were fixed.  CONFIG_GCOV_KERNEL was turned off for all tests (as my
         distributed build env didn't work with gcov compiles) and a few
         more options had to be turned off depending on archs to make things
         build (like ipr on powerpc/64 which failed due to missing writeq).
      
         * x86 and x86_64 UP and SMP allmodconfig and a custom test config.
         * powerpc and powerpc64 SMP allmodconfig
         * sparc and sparc64 SMP allmodconfig
         * ia64 SMP allmodconfig
         * s390 SMP allmodconfig
         * alpha SMP allmodconfig
         * um on x86_64 SMP allmodconfig
      
      8. percpu.h modifications were reverted so that it could be applied as
         a separate patch and serve as bisection point.
      
      Given the fact that I had only a couple of failures from tests on step
      6, I'm fairly confident about the coverage of this conversion patch.
      If there is a breakage, it's likely to be something in one of the arch
      headers which should be easily discoverable easily on most builds of
      the specific arch.
      Signed-off-by: NTejun Heo <tj@kernel.org>
      Guess-its-ok-by: NChristoph Lameter <cl@linux-foundation.org>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: Lee Schermerhorn <Lee.Schermerhorn@hp.com>
      5a0e3ad6
  11. 26 3月, 2010 1 次提交
  12. 30 1月, 2010 2 次提交
  13. 27 1月, 2010 1 次提交
  14. 20 1月, 2010 1 次提交
  15. 19 11月, 2009 1 次提交
  16. 28 10月, 2009 3 次提交
  17. 08 10月, 2009 2 次提交
    • W
      iwlwifi: reliable entering of critical temperature state · 7812b167
      Wey-Yi Guy 提交于
      When uCode detects critical temperature it should send "card state
      notification" interrupt to driver and then shut itself down to prevent
      overheating. There is a race condition where uCode shuts down before it
      can deliver the interrupt to driver.
      Additional method provided here for driver to enter CT_KILL state based
      on temperature reading.
      
      How it works:
      Method 1:
      If driver receive "card state notification" interrupt from uCode; it
      enters "CT_KILL" state immediately
      
      Method 2:
      If the last temperature report by Card reach Critical temperature,
      driver will send "statistic notification" request to uCode to verify the
      temperature reading, if driver can not get reply from uCode within
      300ms, driver will enter CT_KILL state automatically.
      
      Method 3:
      If the last temperature report by Card did not reach Critical
      temperature, but uCode already shut down due to critical temperature.
      All the host commands send to uCode will not get process by uCode;
      when command queue reach the limit, driver will check the last reported
      temperature reading, if it is within pre-defined margin, enter "CT_KILL"
      state immediately. In this case, when uCode ready to exit from "CT_KILL" state,
      driver need to restart the adapter in order to reset all the queues and
      resume normal operation.
      
      One additional issue being address here, when system is in CT_KILL
      state, both tx and rx already stopped, but driver still can send host
      command to uCode, it will flood the command queue since card was not
      responding; adding STATUS_CT_KILL flag to reject enqueue host commands
      to uCode if it is in CT_KILL state, when uCode is ready to come out of
      CT_KILL, driver will clear  the STATUS_CT_KILL bit and allow enqueue the host
      commands to uCode to recover from CT_KILL state.
      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>
      7812b167
    • J
      iwlwifi: support idle for 6000 series hw · 78f5fb7f
      Johannes Berg 提交于
      Using powersave while idle saves a lot of power, but
      we've had problems with this on some cards (5150 has
      been reported to be problematic). However, on the new
      6000 series we're seeing no problems, so for now let
      that hardware benefit from idle mode, we can look at
      the problems with other hardware one by one and then
      enable those once we figure out the problems.
      Signed-off-by: NJohannes Berg <johannes@sipsolutions.net>
      Signed-off-by: NReinette Chatre <reinette.chatre@intel.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      78f5fb7f
  18. 23 9月, 2009 1 次提交
  19. 15 9月, 2009 1 次提交
  20. 01 9月, 2009 2 次提交
  21. 14 8月, 2009 6 次提交
  22. 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
  23. 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
  24. 28 3月, 2009 1 次提交