1. 08 10月, 2009 5 次提交
  2. 29 9月, 2009 1 次提交
    • R
      iwlwifi: fix 3945 ucode info retrieval after failure · b7a79404
      Reinette Chatre 提交于
      When hardware or uCode problem occurs driver captures significant
      information from device to enable debugging. The format of this information
      is different between 3945 and 4965 and later devices, yet currently the
      3945 uses the 4965 and later format. Fix this by adding a new library call
      that is initialized to the correct formatting routine based on device.
      
      This moves the iwlagn event and error log handling back to iwl-agn.c to
      make it part of iwlagn module.
      
      Also remove the 3945 sysfs file that triggers dump of event log - there is
      already a debugfs file that can do it for all drivers.
      Signed-off-by: NReinette Chatre <reinette.chatre@intel.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      b7a79404
  3. 23 9月, 2009 1 次提交
  4. 15 9月, 2009 1 次提交
  5. 01 9月, 2009 2 次提交
  6. 29 8月, 2009 5 次提交
  7. 20 8月, 2009 8 次提交
  8. 14 8月, 2009 9 次提交
    • J
      iwlwifi: automatically adjust sleep level · e312c24c
      Johannes Berg 提交于
      Depending on required latency requested by pm_qos (via mac80211)
      we can automatically adjust the sleep state. Also, mac80211 has
      a user-visible dynamic sleep feature where we are supposed to
      stay awake after sending/receiving frames to better receive
      response frames to our packets, this can be integrated into the
      sleep command.
      
      Currently, and this patch doesn't change that yet, we default
      to using sleep level 1 if PS is enabled. With a module parameter
      to iwlcore, automatic adjustment to changing network latency
      requirements can be enabled -- this isn't yet the default due
      to requiring more testing.
      
      The goal is to enable automatic adjustment and then go into the
      deepest possible sleep state possible depending on the networking
      latency requirements.
      
      This patch does, however, enable IEEE80211_HW_SUPPORTS_DYNAMIC_PS
      to avoid the double-timer (one in software and one in the device)
      when transmitting -- the exact timeout may be ignored but that is
      not of big concern.
      
      Note also that we keep the hard-coded power indices around for
      thermal throttling -- the specification of that calls for using
      the specified power levels. Those can also be selected in debugfs
      to allow easier testing of such parameters.
      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>
      e312c24c
    • W
      iwlwifi: display correct critical temperature infomation · d91b1ba3
      Wey-Yi Guy 提交于
      Do not send CT KILL config command twice and correct critical
      temperature informatiom in dmesg
      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>
      d91b1ba3
    • R
      iwlwifi: fix missing EXPORT_SYMBOL · 450ccb36
      Reinette Chatre 提交于
      When compiling without CONFIG_IWLWIFI_DEBUGFS there is a missing
      iwl_update_stats symbol. This is fixed by making this function an inline in
      the case when CONFIG_IWLWIFI_DEBUGFS is not set due to the hot path in
      which it is used.
      Signed-off-by: NReinette Chatre <reinette.chatre@intel.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      450ccb36
    • J
      iwlwifi: refactor some thermal throttle code · 3ad3b92a
      Johannes Berg 提交于
      Some of the thermal throttle data structures and code
      are really very intermingled with the sleep (power)
      control code. They really do belong together in a way
      since the thermal throttle code uses powersaving to
      achieve its goal, but it's making it hard to work on
      the powersave code. Split this up to make that easier.
      I've also changed the antenna defines to an enum and
      used the same enum for RX and TX.
      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>
      3ad3b92a
    • R
      iwlwifi: revert uCode Alive notification with timeout · c03ea162
      Reinette Chatre 提交于
      commit "iwlwifi: uCode Alive notification with timeout" introduced a more
      reliable mechanism for ucode loading. Unfortunately we hit a problem with
      it frequently enough to make a 4965 unusable. The problem can be seen in
      debug log below. What this code attempts is to set runtime ucode up to
      load, start a timer to wait for the alive response from runtime ucode, and
      if it times out it tries again. As can be seen below we receive the alive
      response and wake the waiting task _before_ the tasks starts waiting. The
      task thus times out as the alive response is not received while it is
      waiting for it and it restarts the device. This starts the cycle all over
      again.
      
      [29739.000819] ieee80211 phy0: U iwl_mac_start enter
      [29739.005751] ieee80211 phy0: U iwl_prepare_card_hw iwl_prepare_card_hw enter
      [29739.012798] ieee80211 phy0: U iwl_set_hw_ready hardware ready
      [29739.057200] ieee80211 phy0: U iwl4965_load_bsm Begin load bsm
      [29739.063366] ieee80211 phy0: U iwl4965_verify_bsm Begin verify bsm
      [29739.072485] ieee80211 phy0: U iwl4965_verify_bsm BSM bootstrap uCode image OK
      [29739.079671] ieee80211 phy0: U iwl4965_load_bsm BSM write complete, poll 0 iterations
      [29739.257019] ieee80211 phy0: I iwl_rx_reply_alive Alive ucode status 0x00000001 revision 0x1 0x9
      [29739.260964] ieee80211 phy0: I iwl_rx_reply_alive Initialization Alive received.
      [29739.260964] ieee80211 phy0: U __iwl_up iwlagn is coming up
      [29739.278571] ieee80211 phy0: U iwl_mac_start Start UP work done.
      [29739.284509] ieee80211 phy0: U iwlcore_verify_inst_sparse ucode inst image size is 788
      [29739.292432] ieee80211 phy0: U iwlcore_verify_inst_sparse ucode inst image size is 10312
      [29739.302004] ieee80211 phy0: U iwl_verify_ucode Initialize uCode is good in inst SRAM
      [29739.309746] ieee80211 phy0: U iwl4965_hw_get_temperature Running temperature calibration
      [29739.317833] ieee80211 phy0: U iwl4965_hw_get_temperature Calib values R[1-3]: -36 13522 -13496 R4: -2726
      [29739.327337] ieee80211 phy0: U iwl4965_hw_get_temperature Calibrated temperature: 310K, 37C
      [29739.335598] ieee80211 phy0: U iwl4965_init_alive_start Initialization Alive received.
      [29739.343477] ieee80211 phy0: U iwl4965_set_ucode_ptrs Runtime uCode pointers are set.
      [29739.351283] ieee80211 phy0: I iwl_rx_reply_alive Alive ucode status 0x00000001 revision 0x1 0x0
      [29739.355210] ieee80211 phy0: I iwl_rx_reply_alive Runtime Alive received.
      [29739.366731] iwlagn 0000:03:00.0: Runtime uCode already alive? Waiting for alive anyway
      [29743.284110] iwlagn 0000:03:00.0: START_ALIVE timeout after 4000ms.
      [29743.290337] ieee80211 phy0: U iwl_mac_add_interface enter: type 2
      [29744.364089] iwlagn 0000:03:00.0: Runtime timeout after 5000ms
      [29744.370882] ieee80211 phy0: U iwl_alive_start Runtime Alive received.
      [29744.377347] ieee80211 phy0: U iwlcore_verify_inst_sparse ucode inst image size is 788
      [29744.385287] ieee80211 phy0: U iwlcore_verify_inst_sparse ucode inst image size is 10312
      [29744.393397] ieee80211 phy0: U iwlcore_verify_inst_sparse ucode inst image size is 94720
      [29744.415835] ieee80211 phy0: U iwl_verify_ucode Runtime uCode is good in inst SRAM
      Signed-off-by: NReinette Chatre <reinette.chatre@intel.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      c03ea162
    • W
      iwlwifi: Traffic type and counter for debugFs · 22fdf3c9
      Wey-Yi Guy 提交于
      Break down the traffic type and counter for both Tx and Rx.
      Enhance the tx_statistics and rx_statistics debugfs function and move
      to /sys/kernel/debug/ieee80211/phy0/iwlagn/debug directory to help
      better debugging both driver and uCode related problems.
      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>
      22fdf3c9
    • W
      iwlwifi: new debugging feature for dumping data traffic · 20594eb0
      Wey-Yi Guy 提交于
      The traffic buffer will only beallocated and used if either bit 23
      (IWL_DX_TX) or bit 24 (IWL_DL_RX) of "debug" is set;
      example: "debug=0x800000" - log tx data traffic
               "debug=0x1000000" - log rx data traffic
               "debug=0x1800000" - log both tx and rx traffic
      
      The traffic log will store the beginning portion (64 bytes)  of the
      latest 256 of tx and rx packets in the round-robbin buffer for
      debugging,
      user can examine the log through debugfs file.
      
      How to display the current logged tx/rx traffic and txfifo and rxfifo
      read/write point:
      "cat traffic_log" in /sys/kernel/debug/ieee80211/phy0/iwlagn/debug
      directory
      
      By echo "0" to traffic_log file will empty the traffic log buffer and
      reset both tx and rx taffic log index to 0.
      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>
      20594eb0
    • W
      iwlwifi: name changed from "fat" to "ht40" · 7aafef1c
      Wey-Yi Guy 提交于
      Rename "fat" to "ht40"
      The term "fat channel" is deprecated in favor of "HT40"
      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>
      7aafef1c
    • R
      iwlwifi: re-introduce per device debugging · 3d816c77
      Reinette Chatre 提交于
      Commit "iwlwifi: make debug level more user friendly" cleaned up the
      debug level handling. In doing so it created a single global debug
      level for all devices. Some setups do consits of more that one iwlwifi
      device and in these setups there is a requirement that debug levels
      should be unique per device.
      
      We now re-introduce the per device debugging while maintaining the
      cleanup effort of the previous patch.
      
      The maintain the global debug level and now introduce a per-device debug
      level that will be used if it (the per-device debug level) is set. The
      per-device debug level can be controlled via the debug_level sysfs file
      while the global debug level is controlled by the debug module parameter.
      Signed-off-by: NReinette Chatre <reinette.chatre@intel.com>
      Acked-by: NTomas Winkler <tomas.winkler@intel.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      3d816c77
  9. 05 8月, 2009 2 次提交
  10. 04 8月, 2009 1 次提交
    • L
      cfg80211: fix regression on beacon world roaming feature · 37184244
      Luis R. Rodriguez 提交于
      A regression was added through patch a4ed90d6:
      
      "cfg80211: respect API on orig_flags on channel for beacon hint"
      
      We did indeed respect _orig flags but the intention was not clearly
      stated in the commit log. This patch fixes firmware issues picked
      up by iwlwifi when we lift passive scan of beaconing restrictions
      on channels its EEPROM has been configured to always enable.
      
      By doing so though we also disallowed beacon hints on devices
      registering their wiphy with custom world regulatory domains
      enabled, this happens to be currently ath5k, ath9k and ar9170.
      The passive scan and beacon restrictions on those devices would
      never be lifted even if we did find a beacon and the hardware did
      support such enhancements when world roaming.
      
      Since Johannes indicates iwlwifi firmware cannot be changed to
      allow beacon hinting we set up a flag now to specifically allow
      drivers to disable beacon hints for devices which cannot use them.
      
      We enable the flag on iwlwifi to disable beacon hints and by default
      enable it for all other drivers. It should be noted beacon hints lift
      passive scan flags and beacon restrictions when we receive a beacon from
      an AP on any 5 GHz non-DFS channels, and channels 12-14 on the 2.4 GHz
      band. We don't bother with channels 1-11 as those channels are allowed
      world wide.
      
      This should fix world roaming for ath5k, ath9k and ar9170, thereby
      improving scan time when we receive the first beacon from any AP,
      and also enabling beaconing operation (AP/IBSS/Mesh) on cards which
      would otherwise not be allowed to do so. Drivers not using custom
      regulatory stuff (wiphy_apply_custom_regulatory()) were not affected
      by this as the orig_flags for the channels would have been cleared
      upon wiphy registration.
      
      I tested this with a world roaming ath5k card.
      
      Cc: Jouni Malinen <jouni.malinen@atheros.com>
      Signed-off-by: NLuis R. Rodriguez <lrodriguez@atheros.com>
      Reviewed-by: NJohannes Berg <johannes@sipsolutions.net>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      37184244
  11. 30 7月, 2009 2 次提交
  12. 28 7月, 2009 3 次提交
    • J
      iwlwifi: fix up command sending · c2acea8e
      Johannes Berg 提交于
      The current command sending in iwlwifi is a bit of a mess:
       1) there is a struct, iwl_cmd, that contains both driver
          and device data in a single packed structure -- this
          is very confusing
       2) the on-stack data and the command metadata share a
          structure by embedding the latter in the former, which
          is also rather confusing because it leads to weird
          unions and similarly odd constructs
       3) each txq always has enough space for 256 commands,
          even if only 32 end up being used
      
      This patch fixes these things:
       1) rename iwl_cmd to iwl_device_cmd and keep track of
          command metadata and device command separately, in
          two arrays in each tx queue
       2) remove the 'meta' member from iwl_host_cmd and only
          put in the required members
       3) allocate the cmd/meta arrays separately instead of
          embedding them into the txq structure
      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>
      c2acea8e
    • 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
    • W
      iwlwifi: critical temperature enter/exit condition · 672639de
      Wey-Yi Guy 提交于
      If advance thermal throttling is used the driver need to pass both
      "enter" and "exit" temperature to uCode.
      
      Using different critical temperature threshold for legacy and advance
      thermal throttling management based on the type of thermal throttling
      method is used except 1000.
      For 1000, it use advance thermal throttling critical temperature
      threshold, but with legacy thermal management implementation until ucode
      has the necessary implementations in place.
      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>
      672639de