1. 14 8月, 2009 10 次提交
    • W
      iwlwifi: fix legacy thermal throttling power index · ee9f2989
      Wey-Yi Guy 提交于
      For legacy thermal throttling, set the new Thermal Throttling
      state and change power index when thermal throttling manager detects
      temperature changed. The current implementation sets the state to the
      previous Thermal Throttling state, which causes system to enter wrong
      power index. The worse case, it will trying to set the
      lower power index when device reach critical temperature, it will cuase
      issue for both system and the device.
      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>
      ee9f2989
    • W
      iwlwifi: fix thermal throttling locking problem · a28027cd
      Wey-Yi Guy 提交于
      Move all the thermal throttling functions to background task to make
      sure do not change power and rx chain in interrupt handler.
      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>
      a28027cd
    • 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: Display sensitivity and chain noise information · 5225935b
      Wey-Yi Guy 提交于
      Display sensitivity and chain noise data to help understand the current
      environment and RF condition.
      
      The data is feeded by statistics notification and Beacon from uCode;
      then used by sensitivity calibration and chain noise calibration to
      determine how DSP should react to the environment changes
      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>
      5225935b
    • W
      iwlwifi: uCode statistics notification counter · e8fe59ae
      Wey-Yi Guy 提交于
      Display statistics notification information
      The information break down into
          uCode_tx_stats
          uCode_rx_stats
          uCode_general_stats
      and can be found in /sys/kernel/debug/ieee80211/phy0/iwlagn/debug
      directory
      
      The statistic information display in debugFs is based on the last
      statistics notification from uCode; it might not reflect the current
      uCode activity. Using "watch" command to monitor the uCode
      activity should give up-to-date statistics provided by uCode.
      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>
      e8fe59ae
    • W
      iwlwifi: tx/rx queue pointer information · 141b03e0
      Wey-Yi Guy 提交于
      Adding debugfs function to show current TxFifo/RxFifo read/write
      pointer, plus the current tx queue status (wake/stop) for both real and
      virtual queue.
      This is part of debug feature set to help debugging driver/uCode.
      
      use tx_queue and rx_queue in
      /sys/kernel/debug/ieee80211/phy0/iwlagn/debug directory to show the
      current read/write pointer for both TxFifo and RxFifo queue
      Signed-off-by: NWey-Yi Guy <wey-yi.w.guy@intel.com>
      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>
      141b03e0
    • 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
  2. 05 8月, 2009 6 次提交
  3. 04 8月, 2009 3 次提交
    • R
      iwlagn: do not send key clear commands when rfkill enabled · 99f1b015
      Reinette Chatre 提交于
      Do all key clearing except sending sommands to device when rfkill
      enabled. When rfkill enabled the interface is brought down and will
      be brought back up correctly after rfkill is enabled again.
      
      Same change is not needed for iwl3945 as it ignores return code when
      sending key clearing command to device.
      
      This fixes http://bugzilla.kernel.org/show_bug.cgi?id=13742Signed-off-by: NReinette Chatre <reinette.chatre@intel.com>
      Tested-by: NFrans Pop <elendil@planet.nl>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      99f1b015
    • J
      drivers/net/wireless/iwlwifi: introduce missing kfree · c37457e6
      Julia Lawall 提交于
      Move orthogonal error handling code up before a kzalloc, so that it
      doesn't have to free the allocated data.
      
      The semantic match that finds the problem is as follows:
      (http://www.emn.fr/x-info/coccinelle/)
      
      // <smpl>
      @r exists@
      local idexpression x;
      statement S;
      expression E;
      identifier f,f1,l;
      position p1,p2;
      expression *ptr != NULL;
      @@
      
      x@p1 = \(kmalloc\|kzalloc\|kcalloc\)(...);
      ...
      if (x == NULL) S
      <... when != x
           when != if (...) { <+...x...+> }
      (
      x->f1 = E
      |
       (x->f1 == NULL || ...)
      |
       f(...,x->f1,...)
      )
      ...>
      (
       return \(0\|<+...x...+>\|ptr\);
      |
       return@p2 ...;
      )
      
      @script:python@
      p1 << r.p1;
      p2 << r.p2;
      @@
      
      print "* file: %s kmalloc %s return %s" % (p1[0].file,p1[0].line,p2[0].line)
      // </smpl>
      Signed-off-by: NJulia Lawall <julia@diku.dk>
      Acked-by: NZhu Yi <yi.zhu@intel.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      c37457e6
    • 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
  4. 30 7月, 2009 3 次提交
  5. 28 7月, 2009 13 次提交
  6. 25 7月, 2009 5 次提交
    • W
      iwlwifi: change iwl_enable/disable_interrupts to "inline" · 30a12a8f
      Wey-Yi Guy 提交于
      iwl_enable_interrupts is being called inside the interrupt,
      change from function call to inline
      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>
      30a12a8f
    • R
      iwlwifi: inform user about rfkill state changes · 4c423a2b
      Reinette Chatre 提交于
      rfkill state changes are mostly available through debug messages.
      These are significant enough to always make user aware of so
      we turn them into warnings.
      
      Also insert a missing newline in some rfkill related debug message.
      Signed-off-by: NReinette Chatre <reinette.chatre@intel.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      4c423a2b
    • R
      iwlwifi: clarify hardware error message · 58dba728
      Reinette Chatre 提交于
      When a hardware error is detected we need to be clear about that
      and not create impression that the microcode is able to deal
      with it.
      Signed-off-by: NReinette Chatre <reinette.chatre@intel.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      58dba728
    • R
      iwlwifi: make debug level more user friendly · a562a9dd
      Reinette Chatre 提交于
      * Deprecate the "debug50" module parameter used to obtain
        5000 series and up debugging. Replace it with "debug" module
        parameter to match with original driver and be consistent
        between them. The "debug50" module parameter can still be used,
        except that the module parameter is not writable in keeping
        with its previous state. We currently just mark it as "deprecated"
        and do not have it in the feature-removal-schedule. Some more
        cleanup of module parameters needs to be done and can then be
        entered together.
      
      * Only make "debug" module parameters visible if the driver
        is compiled with CONFIG_IWLWIFI_DEBUG. This will eliminate
        a lot of confusion where users think they have set debug flags
        but yet cannot see any debug output.
      
      * Make module parameters writable. This eliminates the need for the
        "debug_level" sysfs file, which can now also be deprecated and
        added to feature-removal-schedule. This file is in significant
        use though with many iwlwifi documents and text referring users
        to it. We can thus not take its removal lightly and keep it around.
      
      With iwlcore shared between iwlagn and iwl3945 we really do not need
      debug module parameters for each but can instead have one debug
      module parameter for the iwlcore module. The same issue is here as
      with the sysfs file - a lot of iwlwifi documentation and text (like
      bug reports) rely on iwlagn and iwl3945 having this module parameter,
      so changing this to a module parameter of iwlcore will have significant
      impact and we do not do this for that reason.
      
      One consequence of this patch is that if a user is running a system
      with both 3945 and later hardware then the setting of the one module
      parameter will affect the value of the other. The likelihood of this
      seems low - and even if this setup is present it does not seem like an
      issue for both modules to run with the same debug level.
      Signed-off-by: NReinette Chatre <reinette.chatre@intel.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      a562a9dd
    • W
      iwlwifi: uCode Alive notification with timeout · 34a66de6
      Wey-Yi Guy 提交于
      Wait for REPLY_ALIVE notification from init and runtime uCode.
      based on the type of REPLY_ALIVE, different status bit will be set to
      wake up the queue:
      STATUS_INIT_UCODE_ALIVE for init uCode
      STATUS_RT_UCODE_ALIVE for runtime uCode.
      
      If timeout, attempt to download the failing uCode image again. This can
      only be done for the init ucode images of all iwlagn devices and the
      runtime ucode image of the 5000 series and up. If there is a problem
      with the 4965 runtime ucode coming up we restart the interface and thus
      trigger a new download of the init ucode also.
      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>
      34a66de6