1. 05 1月, 2011 1 次提交
  2. 08 12月, 2010 3 次提交
  3. 03 12月, 2010 1 次提交
  4. 01 12月, 2010 1 次提交
  5. 25 11月, 2010 1 次提交
  6. 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
  7. 08 10月, 2010 1 次提交
  8. 07 10月, 2010 1 次提交
  9. 15 9月, 2010 1 次提交
  10. 01 9月, 2010 1 次提交
  11. 16 6月, 2010 1 次提交
  12. 15 6月, 2010 2 次提交
  13. 28 4月, 2010 1 次提交
  14. 17 4月, 2010 10 次提交
  15. 07 4月, 2010 1 次提交
    • P
      ath9k: remove ah->mask_reg, it's never used properly · 152d530d
      Pavel Roskin 提交于
      ah->mask_reg was used to hold different data throughout the driver.
      ath9k_hw_init_interrupt_masks() used it to save the value written to
      AR_IMR.  ath9k_hw_set_interrupts() used it to hold the interrupt mask as
      defined in enum ath9k_int.  Those masks differ in many bits.
      
      Use ah->imask instead of ah->mask_reg in ath9k_hw_set_interrupts() and
      ath9k_hw_updatetxtriglevel().  That's what the code was meant to do.
      ah->imask is initialized in ath9k_start(), so we don't need to
      initialize it from ah->mask_reg.
      
      Once it's done, ah->mask_reg becomes write-only, so it's replaced with a
      local variable in ath9k_hw_init_interrupt_masks().
      Signed-off-by: NPavel Roskin <proski@gnu.org>
      Reported-by: NJulia Lawall <julia@diku.dk>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      152d530d
  16. 01 4月, 2010 2 次提交
  17. 24 3月, 2010 1 次提交
  18. 10 3月, 2010 1 次提交
  19. 22 12月, 2009 1 次提交
  20. 29 11月, 2009 2 次提交
    • L
      ath9k: Fix maximum tx fifo settings for single stream devices · f4709fdf
      Luis R. Rodriguez 提交于
      Atheros single stream AR9285 and AR9271 have half the PCU TX FIFO
      buffer size of that of dual stream devices. Dual stream devices
      have a max PCU TX FIFO size of 8 KB while single stream devices
      have 4 KB. Single stream devices have an issue though and require
      hardware only to use half of the amount of its capable PCU TX FIFO
      size, 2 KB and this requires a change in software.
      
      Technically a change would not have been required (except for frame
      burst considerations of 128 bytes) if these devices would have been
      able to use the full 4 KB of the PCU TX FIFO size but our systems
      engineers recommend 2 KB to be used only. We enforce this through
      software by reducing the max frame triggger level to 2 KB.
      
      Fixing the max frame trigger level should then have a few benefits:
      
        * The PER will now be adjusted as designed for underruns when the
          max trigger level is reached. This should help alleviate the
          bus as the rate control algorithm chooses a slower rate which
          should ensure frames are transmitted properly under high system
          bus load.
      
        * The poll we use on our TX queues should now trigger and work
          as designed for single stream devices. The hardware passes
          data from each TX queue on the PCU TX FIFO queue respecting each
          queue's priority. The new trigger level ensures this seeding of
          the PCU TX FIFO queue occurs as designed which could mean avoiding
          false resets and actually reseting hw correctly when a TX queue
          is indeed stuck.
      
        * Some undocumented / unsupported behaviour could have been triggered
          when the max trigger level level was being set to 4 KB on single
          stream devices. Its not clear what this issue was to me yet.
      
      Cc: Kyungwan Nam <kyungwan.nam@atheros.com>
      Cc: Bennyam Malavazi <bennyam.malavazi@atheros.com>
      Cc: Stephen Chen <stephen.chen@atheros.com>
      Cc: Shan Palanisamy <shan.palanisamy@atheros.com>
      Cc: Paul Shaw <paul.shaw@atheros.com>
      Signed-off-by: NVasanthakumar Thiagarajan <vasanth@atheros.com>
      Signed-off-by: NLuis R. Rodriguez <lrodriguez@atheros.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      f4709fdf
    • L
      ath9k: fix processing of TX PS null data frames · e7824a50
      Luis R. Rodriguez 提交于
      When mac80211 was telling us to go into Powersave we listened
      and immediately turned RX off. This meant hardware would not
      see the ACKs from the AP we're associated with and hardware
      we'd end up retransmiting the null data frame in a loop
      helplessly.
      
      Fix this by keeping track of the transmitted nullfunc frames
      and only when we are sure the AP has sent back an ACK do we
      go ahead and shut RX off.
      Signed-off-by: NVasanthakumar Thiagarajan <vasanth@atheros.com>
      Signed-off-by: NVivek Natarajan <Vivek.Natarajan@atheros.com>
      Signed-off-by: NLuis R. Rodriguez <lrodriguez@atheros.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      e7824a50
  21. 08 10月, 2009 6 次提交