1. 06 10月, 2010 4 次提交
  2. 25 9月, 2010 1 次提交
  3. 21 9月, 2010 1 次提交
  4. 17 9月, 2010 4 次提交
    • L
      ath9k: fix enabling ANI / tx monitor after bg scan · 48a6a468
      Luis R. Rodriguez 提交于
      ath9k's entire logic with SC_OP_SCANNING is incorrect due to the
      way mac80211 currently implements the scan complete callback and
      we handle it in ath9k. This patch removes the flag completely in
      preference for the SC_OP_OFFCHANNEL which is really what we wanted.
      
      The scanning flag was used to ensure we reset ANI to the old values
      when we go back to the home channel, but if we are offchannel we
      use some defaults. The flag was also used to re-enable the TX monitor.
      
      Without this patch we simply never re-enabled ANI and the TX monitor
      after going offchannel. This means that after one background
      scan we are prone to noise issues and if we had a TX hang we would
      not recover. To get this to work properly we must enable ANI after
      we have configured the beacon timers, otherwise hardware acts really
      oddly.
      
      This patch has stable fixes which apply down to [2.6.36+], there
      *may* be a to fix this on older kernels but requires a bit of
      work since this patch relies on the new mac80211 flag
      IEEE80211_CONF_OFFCHANNEL which was introduced as of 2.6.36.
      
      Cc: stable@kernel.org
      Cc: Paul Stewart <pstew@google.com>
      Cc: Amod Bodas <amod.bodas@atheros.com>
      Signed-off-by: NLuis R. Rodriguez <lrodriguez@atheros.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      48a6a468
    • L
      ath9k: fix regression on beacon loss after bgscan · 52b8ac92
      Luis R. Rodriguez 提交于
      When we return to the home channel we were never reseting our beacon
      timers, this was casued by the fact that the scanning flag was still
      on even after we returned to our home channel. There are also other
      reasons why we would get a reset and if we are not off channel
      we always need to resynch our beacon timers, because a reset will
      clear them.
      
      This bug is a regression introduced on 2.6.36. The order of the
      changes are as follows:
      
      5ee08656 - Sat Jul 31 - ath9k: prevent calibration during off-channel activity
      a0daa0e7 - Tue Jul 27 - Revert "mac80211: fix sw scan bracketing"
      543708be - Fri Jun 18 - mac80211: fix sw scan bracketing
      
      mcgrof@tux ~/linux-2.6-allstable (git::master)$ git describe \
              --contains 5ee08656
      v2.6.36-rc1~43^2~34^2~22
      
      mcgrof@tux ~/linux-2.6-allstable (git::master)$ git describe \
              --contains a0daa0e7
      v2.6.36-rc1~571^2~64^2~13
      
      mcgrof@tux ~/linux-2.6-allstable (git::master)$ git describe \
              --contains 543708be
      v2.6.36-rc1~571^2~107^2~187
      
      So 5ee08656 would have worked if a0daa0e7 was not committed but
      it was so this means 5ee08656 was broken since it assumed that
      when we were in the channel change routine the scan flag would
      be lifted. As it turns out the scan flag will be set when we
      are already on the home channel.
      
      For more details refer to:
      
      http://code.google.com/p/chromium-os/issues/detail?id=5715
      
      These issues will need to be considered for our solution on
      reshifting the scan complete callback location on mac80211 on
      current development kernel work.
      
      This patch has stable fixes which apply down to [2.6.36+]
      
      Cc: stable@kernel.org
      Cc: Paul Stewart <pstew@google.com>
      Cc: Amod Bodas <amod.bodas@atheros.com>
      Signed-off-by: NLuis R. Rodriguez <lrodriguez@atheros.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      52b8ac92
    • L
      ath9k: fix power save race conditions · 8ab2cd09
      Luis R. Rodriguez 提交于
      ath9k has a race on putting the chip into network sleep and
      having registers read from hardware. The race occurs because
      although ath9k_ps_restore() locks its own callers it makes use
      of some variables which get altered in the driver at different
      code paths. The variables are the ps_enabled and ps_flags.
      
      This is easily reprodicible in large network environments when
      roaming with the wpa_supplicant simple bgscan. You'd get some
      0xdeadbeef read out on certain registers such as:
      
      ath: timeout (100000 us) on reg 0x806c: 0xdeadbeef & 0x01f00000 != 0x00000000
      ath: RX failed to go idle in 10 ms RXSM=0xdeadbeef
      
      ath: timeout (100000 us) on reg 0x7000: 0xdeadbeef & 0x00000003 != 0x00000000
      ath: Chip reset failed
      
      The fix is to protect the ath9k_config(hw, IEEE80211_CONF_CHANGE_PS)
      calls with a spin_lock_irqsave() which will disable contendors for
      these variables from interrupt context, timers, re-entry from mac80211
      on the same callback, and most importantly from ath9k_ps_restore()
      which is the only call which will put the device into network sleep.
      
      There are quite a few threads and bug reports on these a few of them are:
      
      https://bugs.launchpad.net/ubuntu/karmic/+source/linux/+bug/407040
      http://code.google.com/p/chromium-os/issues/detail?id=5709
      http://code.google.com/p/chromium-os/issues/detail?id=5943
      
      Stable fixes apply to [2.6.32+]
      
      Cc: stable@kernel.org
      Cc: Paul Stewart <pstew@google.com>
      Cc: Amod Bodas <amod.bodas@atheros.com>
      Signed-off-by: NLuis R. Rodriguez <lrodriguez@atheros.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      8ab2cd09
    • B
      ath9k: Use common ath key management functions · 040e539e
      Bruno Randolf 提交于
      Use key management functions which have been moved to ath/key.c and remove
      ath9k copies of these functions and other now unused definitions.
      Signed-off-by: NBruno Randolf <br1@einfach.org>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      040e539e
  5. 15 9月, 2010 2 次提交
  6. 17 8月, 2010 3 次提交
  7. 05 8月, 2010 3 次提交
    • F
      ath9k_hw: clean up per-channel calibration data · 20bd2a09
      Felix Fietkau 提交于
      The noise floor history buffer is currently not kept per channel, which
      can lead to problems when changing channels from a clean channel to a
      noisy one. Also when switching from HT20 to HT40, the noise floor
      history buffer is full of measurements, but none of them contain data
      for the extension channel, which it needs quite a bit of time to recover
      from.
      
      This patch puts all the per-channel calibration data into a single data
      structure, and gives the the driver control over whether that is used
      per-channel or even not used for some channels.
      
      For ath9k_htc, I decided to keep this per-channel in order to avoid
      creating regressions.
      
      For ath9k, the data is kept only for the operating channel, which saves
      some space. ath9k_hw takes care of wiping old data when the operating
      channel or its channel flags change.
      Signed-off-by: NFelix Fietkau <nbd@openwrt.org>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      20bd2a09
    • F
      ath9k: prevent calibration during off-channel activity · 5ee08656
      Felix Fietkau 提交于
      Previously the software scan callback was used to indicate to the hardware,
      when it was safe to calibrate. This didn't really work properly, because it
      depends on a specific order of software scan callbacks vs. channel changes.
      Also, software scans are not the only thing that triggers off-channel
      activity, so it's better to use the newly added indication from mac80211 for
      this and not use the software scan callback for anything calibration related.
      
      This fixes at least some of the invalid noise floor readings that I've seen
      in AP mode on AR9160
      Signed-off-by: NFelix Fietkau <nbd@openwrt.org>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      5ee08656
    • F
      ath9k: fix a crash in the PA predistortion apply function · ddfef792
      Felix Fietkau 提交于
      When updating the PAPRD table in hardware, PAPRD itself needs to be
      disabled first, otherwise the hardware can throw a data bus error,
      which upsets at least some platforms.
      Signed-off-by: NFelix Fietkau <nbd@openwrt.org>
      Acked-by: NLuis R. Rodriguez <lrodriguez@atheros.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      ddfef792
  8. 29 7月, 2010 1 次提交
  9. 21 7月, 2010 1 次提交
  10. 15 7月, 2010 2 次提交
  11. 03 7月, 2010 1 次提交
  12. 25 6月, 2010 2 次提交
  13. 24 6月, 2010 2 次提交
    • V
      ath9k: Fix bug in starting ani · 6c3118e2
      Vasanthakumar Thiagarajan 提交于
      There are few places where ANI is started without checking
      if it is right to start. This might lead to a case where ani
      timer would be left undeleted and cause improper memory acccess
      during module unload. This bug is clearly exposed with
      paprd support where the driver detects tx hang and does a
      chip reset. During this reset ani is (re)started without checking
      if it needs to be started. This would leave a timer scheduled
      even after all the resources are freed and cause a panic.
      
      This patch introduces a bit in sc_flags to indicate if ani
      needs to be started in sw_scan_start() and ath_reset().
      This would fix the following panic. This issue is easily seen
      with ar9003 + paprd.
      
       BUG: unable to handle kernel paging request at 0000000000003f38
      [<ffffffff81075391>] ? __queue_work+0x41/0x50
      [<ffffffff8106afaa>] run_timer_softirq+0x17a/0x370
      [<ffffffff81088be8>] ? tick_dev_program_event+0x48/0x110
      [<ffffffff81061f69>] __do_softirq+0xb9/0x1f0
      [<ffffffff810ba060>] ? handle_IRQ_event+0x50/0x160
      [<ffffffff8100af5c>] call_softirq+0x1c/0x30
      [<ffffffff8100c9f5>] do_softirq+0x65/0xa0
      [<ffffffff81061e25>] irq_exit+0x85/0x90
      [<ffffffff8155e095>] do_IRQ+0x75/0xf0
      [<ffffffff815570d3>] ret_from_intr+0x0/0x11
      <EOI>
      [<ffffffff812fd67b>] ? acpi_idle_enter_simple+0xe4/0x119
      [<ffffffff812fd674>] ? acpi_idle_enter_simple+0xdd/0x119
      [<ffffffff81441c87>] cpuidle_idle_call+0xa7/0x140
      [<ffffffff81008da3>] cpu_idle+0xb3/0x110
      [<ffffffff81550722>] start_secondary+0x1ee/0x1f5
      Signed-off-by: NVasanthakumar Thiagarajan <vasanth@atheros.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      6c3118e2
    • V
      ath9k: Add a module parameter to disable led blinking. · 9a75c2ff
      Vivek Natarajan 提交于
      Some vendors require the LED to be ON always irrespective of any
      radio activity. Introducing a module parameter to disable blinking,
      so that one can choose between always on or led blink during
      activity.
      Signed-off-by: NVivek Natarajan <vnatarajan@atheros.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      9a75c2ff
  14. 15 6月, 2010 6 次提交
    • F
      ath9k_hw: remove ATH9K_CAP_TXPOW · 9cc3271f
      Felix Fietkau 提交于
      replace calls that read this capability with accesses to ath9k_hw's
      regulatory data.
      Signed-off-by: NFelix Fietkau <nbd@openwrt.org>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      9cc3271f
    • F
      9f42c2b6
    • F
      ath9k: make ath_get_hal_qnum static · ebe297c3
      Felix Fietkau 提交于
      Signed-off-by: NFelix Fietkau <nbd@openwrt.org>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      ebe297c3
    • F
      1d2231e2
    • L
      ath9k: add new ANI implementation for AR9003 · e36b27af
      Luis R. Rodriguez 提交于
      This adds support for ANI for AR9003. The implementation for
      ANI for AR9003 is slightly different than the one used for
      the older chipset families. It can technically be used for
      the older families as well but this is not yet fully tested
      so we only enable the new ANI for the AR5008, AR9001 and AR9002
      families with a module parameter, force_new_ani.
      
      The old ANI implementation is left intact.
      
      Details of the new ANI implemention:
      
        * ANI adjustment logic is now table driven so that each ANI level
          setting is parameterized. This makes adjustments much more
          deterministic than the old procedure based logic and allows
          adjustments to be made incrementally to several parameters per
          level.
      
        * ANI register settings are now relative to INI values; so ANI
          param zero level == INI value. Appropriate floor and ceiling
          values are obeyed when adjustments are combined with INI values.
      
        * ANI processing is done once per second rather that every 100ms.
          The poll interval is now a set upon hardware initialization and
          can be picked up by the core driver.
      
        * OFDM error and CCK error processing are made in a round robin
          fashion rather than allowing all OFDM adjustments to be made
          before CCK adjustments.
      
        * ANI adjusts MRC CCK off in the presence of high CCK errors
      
        * When adjusting spur immunity (SI) and OFDM weak signal detection,
          ANI now sets register values for the extension channel too
      
        * When adjusting FIR step (ST), ANI now sets register for FIR step
          low too
      
        * FIR step adjustments now allow for an extra level of immunity for
          extremely noisy environments
      
        * The old Noise immunity setting (NI), which changes coarse low, size
          desired, etc have been removed. Changing these settings could affect
          up RIFS RX as well.
      
        * CCK weak signal adjustment is no longer used
      
        * ANI no longer enables phy error interrupts; in all cases phy hw
          counting registers are used instead
      
        * The phy error count (overflow) interrupts are also no longer used
          for ANI adjustments. All ANI adjustments are made via the polling
          routine and no adjustments are possible in the ISR context anymore
      
        * A history settings buffer is now correctly used for each channel;
          channel settings are initialized with the defaults but later
          changes are restored when returning back to that channel
      
        * When scanning, ANI is disabled settings are returned to (INI) defaults.
      
        * OFDM phy error thresholds are now 400 & 1000 (errors/second units) for
          low/high water marks, providing increased stability/hysteresis when
          changing levels.
      
        * Similarly CCK phy error thresholds are now 300 & 600 (errors/second)
      Signed-off-by: NLuis R. Rodriguez <lrodriguez@atheros.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      e36b27af
    • J
      mac80211: allow drivers to sleep in ampdu_action · 85ad181e
      Johannes Berg 提交于
      Allow drivers to sleep, and indicate this in
      the documentation. ath9k has some locking I
      don't understand, so keep it safe and disable
      BHs in it, all other drivers look fine with
      the context change.
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      85ad181e
  15. 04 6月, 2010 2 次提交
  16. 03 6月, 2010 2 次提交
  17. 25 5月, 2010 1 次提交
  18. 24 5月, 2010 1 次提交
    • L
      Revert "ath9k: Group Key fix for VAPs" · a69eee49
      Linus Torvalds 提交于
      This reverts commit 03ceedea, since it
      breaks resume from suspend-to-ram on Rafael's Acer Ferrari One.
      NetworkManager thinks everything is ok, but it can't connect to the AP
      to get an IP address after the resume.
      
      In fact, it even breaks resume for non-ath9k chipsets: reverting it also
      fixes Rafael's Toshiba Protege R500 with the iwlagn driver.  As Johannes
      says:
      
        "Indeed, this patch needs to be reverted. That mac80211 change is wrong
         and completely unnecessary."
      Reported-and-requested-by: NRafael J. Wysocki <rjw@sisk.pl>
      Acked-by: NJohannes Berg <johannes@sipsolutions.net>
      Cc: Daniel Yingqiang Ma <yma.cool@gmail.com>
      Cc: John W. Linville <linville@tuxdriver.com>
      Cc: David Miller <davem@davemloft.net>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      a69eee49
  19. 29 4月, 2010 1 次提交