1. 02 6月, 2011 2 次提交
  2. 20 5月, 2011 4 次提交
  3. 11 5月, 2011 1 次提交
  4. 27 4月, 2011 1 次提交
  5. 20 4月, 2011 1 次提交
    • R
      ath9k: Fix beacon generation on foreign channel · 8e22ad32
      Rajkumar Manoharan 提交于
      While leaving the oper channel, beacon generation is stopped
      by mac80211 and beacon slots are marked as inactive.
      During the scan, ath9k configures beacon timers
      based on IEEE80211_CONF_OFFCHANNEL which inturn generates
      beacon alert even though bslot is inactive.
      
      ath9k fails to disable beacon alert while moving to offchannel
      if none of the beacon slot is active. This is causing beacon
      transmission on foreign channel. This patch enables swba
      based on active bslots.
      
      This issue was reported with two vifs (AP+STA) and triggered
      scan in STA vif in unassociated state.
      Signed-off-by: NRajkumar Manoharan <rmanoharan@atheros.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      8e22ad32
  6. 15 4月, 2011 1 次提交
  7. 13 4月, 2011 1 次提交
  8. 08 4月, 2011 4 次提交
  9. 31 3月, 2011 3 次提交
    • F
      ath9k: fix stuck beacon detection · c944daf4
      Felix Fietkau 提交于
      Stuck beacon detection is supposed to trigger when 9 consecutive beacons
      could not be sent by the hardware. When the driver runs only one active
      AP mode interface, it still configures the hardware beacon timer for
      4 (ATH_BCBUF) beacon slots slots, which causes stuck beacon detection
      to be reset if ath9k_hw_stoptxdma clears the stuck frames between
      SWBA intervals.
      Fix this by not resetting the missed beacon count for empty slots and
      multiplying the threshold not by the maximum number of beacon slots
      but by the configured number of beacon interfaces.
      Signed-off-by: NFelix Fietkau <nbd@openwrt.org>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      c944daf4
    • F
      ath9k: trigger nfcal only after multiple missed beacons in AP mode · 87c510fe
      Felix Fietkau 提交于
      Single missed (i.e. not transmitted) beacons in AP mode are not very rare
      and not necessarily an indicator of strong interference, so only trigger
      noise floor recalibration when multiple consecutive beacons could not
      be transmitted.
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      87c510fe
    • F
      ath9k: fix beacon timer handling issues · dd347f2f
      Felix Fietkau 提交于
      AP mode beacon timers in ath9k are configured in milliseconds, which breaks
      when increasing ATH_BCBUF to 8 instead of 4 (due to rounding errors).
      Since the hardware timers are actually configured in microseconds, it's
      better to let the driver use that unit directly.
      
      To be able to do that, the beacon interval parameter abuse for passing
      certain flags needs to be removed. This is easy to do, because those flags
      are completely unnecessary anyway. ATH9K_BEACON_ENA is ignored,
      ATH9K_BEACON_RESET_TSF can be replaced with calling ath9k_hw_reset_tsf
      from the driver directly.
      Signed-off-by: NFelix Fietkau <nbd@openwrt.org>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      dd347f2f
  10. 15 3月, 2011 1 次提交
    • F
      ath9k: improve reliability of beacon transmission and stuck beacon handling · efff395e
      Felix Fietkau 提交于
      ath9k calls ath9k_hw_stoptxdma every time it sends a beacon, however there
      is not much point in doing that if the previous beacon and mcast traffic
      went out properly. On AR9380, calling that function too often can result
      in an increase of stuck beacons due to differences in the handling of the
      queue enable/disable functionality.
      
      With this patch, the queue will only be explicitly stopped if the previous
      data frames were not sent successfully. With the beacon code being the
      only remaining user of ath9k_hw_stoptxdma, this function can be simplified
      in order to remove the now pointless attempts at waiting for transmission
      completion, which would never happen at this point due to the different
      method of tx scheduling of the beacon queue.
      Signed-off-by: NFelix Fietkau <nbd@openwrt.org>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      efff395e
  11. 15 2月, 2011 1 次提交
  12. 10 2月, 2011 1 次提交
  13. 08 2月, 2011 1 次提交
  14. 29 1月, 2011 2 次提交
  15. 22 1月, 2011 1 次提交
  16. 20 1月, 2011 1 次提交
  17. 05 1月, 2011 1 次提交
  18. 08 12月, 2010 2 次提交
  19. 01 12月, 2010 1 次提交
  20. 18 11月, 2010 1 次提交
  21. 16 11月, 2010 1 次提交
    • F
      ath9k: rework tx queue selection and fix queue stopping/waking · 066dae93
      Felix Fietkau 提交于
      The current ath9k tx queue handling code showed a few issues that could
      lead to locking issues, tx stalls due to stopped queues, and maybe even
      DMA issues.
      
      The main source of these issues is that in some places the queue is
      selected via skb queue mapping in places where this mapping may no
      longer be valid. One such place is when data frames are transmitted via
      the CAB queue (for powersave buffered frames). This is made even worse
      by a lookup WMM AC values from the assigned tx queue (which is
      undefined for the CAB queue).
      
      This messed up the pending frame counting, which in turn caused issues
      with queues getting stopped, but not woken again.
      
      To fix these issues, this patch removes an unnecessary abstraction
      separating a driver internal queue number from the skb queue number
      (not to be confused with the hardware queue number).
      
      It seems that this abstraction may have been necessary because of tx
      queue preinitialization from the initvals. This patch avoids breakage
      here by pushing the software <-> hardware queue mapping to the function
      that assigns the tx queues and redefining the WMM AC definitions to
      match the numbers used by mac80211 (also affects ath9k_htc).
      
      To ensure consistency wrt. pending frame count tracking, these counters
      are moved to the ath_txq struct, updated with the txq lock held, but
      only where the tx queue selected by the skb queue map actually matches
      the tx queue used by the driver for the frame.
      Signed-off-by: NFelix Fietkau <nbd@openwrt.org>
      Reported-by: NBjörn Smedman <bjorn.smedman@venatech.se>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      066dae93
  22. 10 11月, 2010 1 次提交
    • F
      ath9k_hw: optimize interrupt mask changes · 4df3071e
      Felix Fietkau 提交于
      OProfile showed that ath9k was spending way too much time in
      ath9k_hw_set_interrupts. Since most of the interrupt mask changes only
      need to globally enable/disable interrupts, it makes sense to split
      this part into separate functions, replacing all calls to
      ath9k_hw_set_interrupts(ah, 0) with ath9k_hw_disable_interrupts(ah).
      
      ath9k_hw_set_interrupts(ah, ah->imask) only gets changed to
      ath9k_hw_enable_interrupts(ah), whenever ah->imask was not changed
      since the point where interrupts were disabled.
      Signed-off-by: NFelix Fietkau <nbd@openwrt.org>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      4df3071e
  23. 26 10月, 2010 1 次提交
  24. 16 10月, 2010 2 次提交
  25. 17 8月, 2010 2 次提交
    • F
      ath9k: use AP beacon miss as a trigger for fast recalibration · 70cf1533
      Felix Fietkau 提交于
      When beacons get stuck in AP mode, the most likely cause is interference.
      Such interference can often go on for a while, and too many consecutive
      beacon misses can lead to connected clients getting dropped.
      
      Since connected clients might not be subjected to the same interference
      if that happens to be very local, the AP should try to deal with it as
      good as it can. One way to do this is to trigger an NF calibration with
      automatic baseband update right after the beacon miss. In my tests with
      very strong interference, this allowed the AP to continue transmitting
      beacons after only 2-3 misses, which allows a normal client to stay
      connected.
      
      With some of the newer - really sensitive - chips, the maximum noise
      floor limit is very low, which can be problematic during very strong
      interference. To avoid an endless loop of stuck beacons -> nfcal ->
      periodic calibration -> stuck beacons, the beacon miss event also sets
      a flag, which allows the calibration code to bypass the chip specific
      maximum NF value. This flag is automatically cleared, as soon as the
      first NF median goes back below the limits for all chains.
      
      In my tests, this allowed an ath9k AP to survive very strong interference
      (measured NF: -68, or sometimes even higher) without losing connectivity
      to its clients. Even under these conditions, I was able to transmit
      several mbits/s through the interface.
      Signed-off-by: NFelix Fietkau <nbd@openwrt.org>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      70cf1533
    • F
      ath9k: add a separate debug level for stuck beacons · 6252fcb9
      Felix Fietkau 提交于
      Stuck beacons are a useful indicator for debugging various PHY
      issues such as calibration. Putting them on the same debug level
      as the other beacon stuff makes it hard to spot them in huge amounts
      of spam.
      Signed-off-by: NFelix Fietkau <nbd@openwrt.org>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      6252fcb9
  26. 15 6月, 2010 1 次提交
  27. 25 5月, 2010 1 次提交