1. 08 Jul, 2011 2 commits
  2. 14 Apr, 2011 1 commit
  3. 12 Apr, 2011 1 commit
  4. 11 Mar, 2011 1 commit
  5. 07 Mar, 2011 1 commit
  6. 21 Jan, 2011 2 commits
  7. 16 Dec, 2010 1 commit
    • Bruno Randolf's avatar
      ath5k: Fix survey · f15a4bb2
      Bruno Randolf authored
      
      
      The old survey implementation was broken and returned nonsense data.
      
      Clear cycle counters and survey data on reset. Since the cycle counters easily
      overflow it's better to keep a local version of collected survey data (in ms
      resolution, instead of clockrate) and update this every time survey is
      retrieved. If survey is retrieved often enough to avoid cycle counter overflows
      this works fine, otherwise we could update survey more often, like ath9k does.
      Still only the survey for the current channel is kept.
      Signed-off-by: default avatarBruno Randolf <br1@einfach.org>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      f15a4bb2
  8. 02 Dec, 2010 2 commits
  9. 05 Oct, 2010 2 commits
  10. 21 Sep, 2010 3 commits
  11. 14 Jul, 2010 2 commits
    • Bruno Randolf's avatar
      ath5k: clean up rxlink handling · b3f194e5
      Bruno Randolf authored
      
      
      There were a few places where the sc->rxlink pointer was set to NULL "just in
      case". This helps nothing - quite to the contrary it is problematic since it
      can create self-linked rx descriptors in the middle of the list of receive
      buffers.
      
      Here is an example how this could happen (thanks Bob!):
      
      cpu 0:                                      cpu 1:
      
      ath5k_rx_stop
                                                  ath5k_tasklet_rx
      sc->rxlink = NULL;   /* just in case */
                                                    // following doesn't link used
                                                    // buffer to prev.
                                                    ath5k_rxbuf_setup()
      
      In the case of ath5k_rx_stop() and ath5k_stop_locked() buffers/descriptors are
      not changed so rxlink should not be changed as well.
      
      In ath5k_intr() we seem to  try to work around a hardware bug, as the comment
      (which is copied 1:1 from the HAL) suggests. I don't see how this could help.
      Also the HAL does not set rxlink in this case (So where does this code come
      from? It has been there since the first import of ath5k). Changed to just
      increment a statistics counter.
      
      After this patch rxlink is only set to NULL before we initialize rx descriptors
      and updated when the descriptors are linked together.
      Signed-off-by: default avatarBruno Randolf <br1@einfach.org>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      b3f194e5
    • Bob Copeland's avatar
      ath5k: move reset to mac80211 workqueue · 5faaff74
      Bob Copeland authored
      
      
      We currently trigger a reset via a tasklet when certain error
      conditions are detected so that the card will (eventually)
      restart.  Unfortunately this makes locking complicated since
      reset can also be called in process context (e.g. for channel
      change).  Currently nothing protects against concurrent resets,
      which can be the source of corruption bugs.
      
      Reset takes too long to spinlock the whole thing, so this
      patch moves deferred resets into the mac80211 workqueue to
      enable use of sc->lock mutex.
      Signed-off-by: default avatarBob Copeland <me@bobcopeland.com>
      Acked-by: default avatarBruno Randolf <br1@einfach.org>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      5faaff74
  12. 14 Apr, 2010 1 commit
    • Bruno Randolf's avatar
      ath5k: treat RXORN as non-fatal · 87d77c4e
      Bruno Randolf authored
      
      
      We get RXORN interrupts when all receive buffers are full. This is not
      necessarily a fatal situation. It can also happen when the bus is busy or the
      CPU is not fast enough to process all frames.
      
      Older chipsets apparently need a reset to come out of this situration, but on
      newer chips we can treat RXORN like RX, as going thru a full reset does more
      harm than good, there.
      
      The exact chip revisions which need a reset are unknown - this guess
      AR5K_SREV_AR5212 ("venice") is copied from the HAL.
      
      Inspired by openwrt 413-rxorn.patch:
      "treat rxorn like rx, reset after rxorn seems to do more harm than good"
      Signed-off-by: default avatarBruno Randolf <br1@einfach.org>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      87d77c4e
  13. 07 Apr, 2010 1 commit
    • Bruno Randolf's avatar
      ath5k: Adaptive Noise Immunity (ANI) Implementation · 2111ac0d
      Bruno Randolf authored
      
      
      This is an Adaptive Noise Imunity (ANI) implementation for ath5k. I have looked
      at both ath9k and HAL sources (they are nearly the same), and even though i
      have implemented some things differently, the basic algorithm is practically
      the same, for now. I hope that this can serve as a clean start to improve the
      algorithm later.
      
      This also adds a possibility to manually control ANI settings, right now only
      thru a debugfs file:
        * set lowest sensitivity (=highest noise immunity):
      	echo sens-low > /sys/kernel/debug/ath5k/phy0/ani
        * set highest sensitivity (=lowest noise immunity):
      	echo sens-high > /sys/kernel/debug/ath5k/phy0/ani
        * automatically control immunity (default):
      	echo ani-on > /sys/kernel/debug/ath5k/phy0/ani
        * to see the parameters in use and watch them change:
      	cat /sys/kernel/debug/ath5k/phy0/ani
      
      Manually setting sensitivity will turn the automatic control off. You can also
      control each of the five immunity parameters (noise immunity, spur immunity,
      firstep, ofdm weak signal detection, cck weak signal detection) manually thru
      the debugfs file.
      
      This is tested on AR5414 and nearly doubles the thruput in a noisy 2GHz band.
      Signed-off-by: default avatarBruno Randolf <br1@einfach.org>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      2111ac0d
  14. 31 Mar, 2010 2 commits
  15. 10 Mar, 2010 2 commits
  16. 08 Feb, 2010 1 commit
  17. 04 Dec, 2009 2 commits
  18. 11 Nov, 2009 1 commit
  19. 07 Oct, 2009 2 commits
  20. 20 Aug, 2009 1 commit
  21. 14 Aug, 2009 2 commits
  22. 10 Jul, 2009 2 commits
    • Bob Copeland's avatar
      ath5k: rework beacon configuration · 21800491
      Bob Copeland authored
      
      
      Using the enable_beacon flag allows some simplifications and fixes
      some corner cases in beacon handling.  This change adds a state
      variable for beaconing in ath5k_beacon_config and handles both
      enabling and disabling, thus eliminating the need for
      ath5k_beacon_disable.  We also now configure the beacon when any
      of the beacon parameters change, so ath5k_beacon_reconfig is no
      longer needed (its mmiowb gets moved to ath5k_beacon_config).
      Finally, by locking around the whole config function, we don't
      need to worry about clearing the interrupt mask register before
      installing the new mask.
      
      The upshot is this correctly disables beaconing when the interfaces
      are taken down, it fixes a potential restarting of beaconing
      when ath5k_reset() is called, and ensures that updates to the
      beacon interval take effect immediately.
      Signed-off-by: default avatarBob Copeland <me@bobcopeland.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      21800491
    • Bob Copeland's avatar
      ath5k: send buffered frames after the beacon · cec8db23
      Bob Copeland authored
      
      
      Enable the "Content" After Beacon queue and utilize it to send
      any buffered frames for power-saving clients.
      Signed-off-by: default avatarBob Copeland <me@bobcopeland.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      cec8db23
  23. 10 Jun, 2009 2 commits
  24. 22 Apr, 2009 2 commits
  25. 27 Mar, 2009 1 commit
    • Bob Copeland's avatar
      ath5k: warn and correct rate for unknown hw rate indexes · b7266047
      Bob Copeland authored
      
      
      ath5k sets up a mapping table from the hardware rate index to
      the rate index used by mac80211; however, we have seen some
      received frames with incorrect rate indexes.  Such frames
      normally get dropped with a warning in __ieee80211_rx(),
      but it doesn't include enough information to track down the
      error.
      
      This patch adds a warning to hw_to_driver_rix for any lookups
      that result in a rate index of -1, then returns a valid rate so
      the frame can be processed.
      
      Changes-licensed-under: 3-Clause-BSD
      Signed-off-by: default avatarBob Copeland <me@bobcopeland.com>
      Cc: stable@kernel.org
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      b7266047