1. 14 12月, 2010 2 次提交
  2. 08 12月, 2010 5 次提交
  3. 01 12月, 2010 1 次提交
  4. 18 11月, 2010 1 次提交
  5. 17 11月, 2010 2 次提交
  6. 16 11月, 2010 3 次提交
    • A
      bitops: Provide generic sign_extend32 function · 7919a57b
      Andreas Herrmann 提交于
      This patch moves code out from wireless drivers where two different
      functions are defined in three code locations for the same purpose and
      provides a common function to sign extend a 32-bit value.
      Signed-off-by: NAndreas Herrmann <andreas.herrmann3@amd.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      7919a57b
    • 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
    • F
      ath9k_hw: extend ath9k_hw_set_txpowerlimit to test channel txpower · de40f316
      Felix Fietkau 提交于
      ath9k_hw_set_txpowerlimit gets an extra boolean parameter that - if set -
      causes the rate txpower table and the regulatory limit to be calculated
      and stored, without changing hardware registers.
      Signed-off-by: NFelix Fietkau <nbd@openwrt.org>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      de40f316
  7. 10 11月, 2010 1 次提交
  8. 09 11月, 2010 1 次提交
  9. 16 10月, 2010 1 次提交
  10. 12 10月, 2010 2 次提交
  11. 07 10月, 2010 7 次提交
  12. 06 10月, 2010 2 次提交
  13. 17 9月, 2010 1 次提交
  14. 15 9月, 2010 1 次提交
  15. 08 9月, 2010 3 次提交
  16. 17 8月, 2010 1 次提交
    • 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
  17. 05 8月, 2010 2 次提交
    • F
      ath9k_hw: fix a noise floor calibration related race condition · 4254bc1c
      Felix Fietkau 提交于
      On AR5008-AR9002, other forms of calibration must not be started while
      the noise floor calibration is running, as this can create invalid
      readings which were sometimes not even recoverable by any further
      calibration attempts.
      
      This patch also ensures that the result of noise floor measurements
      are processed faster and also allows the result of the initial
      calibration on reset to make it into the NF history buffer
      Signed-off-by: NFelix Fietkau <nbd@openwrt.org>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      4254bc1c
    • 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
  18. 13 7月, 2010 1 次提交
    • F
      ath9k: merge noisefloor load implementations · bbacee13
      Felix Fietkau 提交于
      AR5008+ and AR9003 currently use two separate implementations of the
      ath9k_hw_loadnf function. There are three main differences:
      
       - PHY registers for AR9003 are different
       - AR9003 always uses 3 chains, earlier versions are more selective
       - The AR9003 variant contains a fix for NF load timeouts
      
      This patch merges the two implementations into one, storing the
      register array in the ath_hw struct. The fix for NF load timeouts is
      not just relevant for AR9003, but also important for earlier hardware,
      so it's better to just keep one common implementation.
      Signed-off-by: NFelix Fietkau <nbd@openwrt.org>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      bbacee13
  19. 03 7月, 2010 2 次提交
  20. 30 6月, 2010 1 次提交