Search Linux Wireless

[PATCH 00/10] ANI for ath5k

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is ANI for ath5k. I have looked ath both the HAL and ath9k sources, while
implementing this, so the basic algorithm is the same. A notable difference is
that i do everything in a tasklet, while ath9k and HAL do larger parts in the
interrupt handler. Also i have only one routine for raising immunity, while
ath9k/HAL have separate triggers for CCK and OFDM errors.

Notes/Questions:

- HAL and ath9k use ANI status per channel. This might be useful if we often
  change channel, but this is not the case, as far as i can see. Any other
  reason for that?

- HAL and ath9k use only different 2 values in a 5 value array of noise
  immunity levels (making it essentially an on/off setting) while there are 5
  levels mentioned in the ANI documents. I guess there must be a reason for
  this - No?

- Why is CCK weak signal detection never used (neither turned on or off)?

- There is some confusion which initial values to use. The HAL uses all 0 and
  ofdm weak signal detection enabled. ath9k has all 0 for AP mode (including
  ofdm weak sig off), while using ofdm weak sig on and a spur level of 7 for
  STA mode.

- Also there is some inconsistency about which parameters to control in AP
  mode: ath9k only use spur and firstep in 2GHz bands and no ANI control at all
  in 5GHz!? the HAL uses noise and spur in both bands, but no fir control. for
  now, i use noise, spur and fir in AP mode.

- In some situations it is good to be able to manually control sesitivity (e.g.
  tuning long-distance links; not trusting the ANI algo in general ;)), so i
  would like to export ANI controls to userspace. Right now this is possible
  thru debugfs, but this is just for testing. How should the ANI settings be
  controlled properly? iw? configs? sysfs? What's the interface of choice
  nowadays?

TODO / Ideas:

- Improve beacon averaging algorithm for IBSS: Maybe we should keep track of
  the average RSSI on a per-node basis and use the minimum of those in order
  not to loose far away nodes? The other option would be to limit the
  parameters we control similar to AP mode.
 
- Older HW (srev < 0x59) use rx filter and reports phy errors as they appear in
  the rx descriptors. All is in place for this to work, but i never saw the
  "right" errors (OFDM and CCK timing), even though i'm pretty sure i should get
  them. This needs to be tested and debugged more, but i have to focus on newer
  hardware now.

- Maybe we could compare the "busy time" to the "listen time" and this way
  recognize if we have many false detects (- this is how i originally found out
  that i need to work on ANI).

I hope that this will solve thruput problems! For me it nearly doubled thruput
in a noisy 2Ghz band. :)

bruno

---

Bruno Randolf (10):
      ath5k: remove static calibration interval variable
      ath5k: remove the use of SWI interrupt
      ath5k: optimize ath5k_hw_calibration_poll
      ath5k: move ath5k_hw_calibration_poll to base.c
      ath5k: keep beacon RSSI average
      ath5k: initialize default noise floor
      ath5k: simplify MIB counters
      ath5k: update phy errors codes
      ath5k: add capability flag for phyerror counters
      ath5k: Adaptive Noise Immunity (ANI) Implementation


 drivers/net/wireless/ath/ath5k/Makefile |    1 
 drivers/net/wireless/ath/ath5k/ani.c    |  741 +++++++++++++++++++++++++++++++
 drivers/net/wireless/ath/ath5k/ani.h    |  104 ++++
 drivers/net/wireless/ath/ath5k/ath5k.h  |   68 ++-
 drivers/net/wireless/ath/ath5k/attach.c |    2 
 drivers/net/wireless/ath/ath5k/base.c   |   97 +++-
 drivers/net/wireless/ath/ath5k/base.h   |   20 +
 drivers/net/wireless/ath/ath5k/caps.c   |    6 
 drivers/net/wireless/ath/ath5k/debug.c  |  170 +++++++
 drivers/net/wireless/ath/ath5k/debug.h  |    2 
 drivers/net/wireless/ath/ath5k/desc.c   |    1 
 drivers/net/wireless/ath/ath5k/desc.h   |   35 +
 drivers/net/wireless/ath/ath5k/pcu.c    |   40 +-
 drivers/net/wireless/ath/ath5k/phy.c    |   22 -
 drivers/net/wireless/ath/ath5k/reg.h    |   36 +-
 15 files changed, 1237 insertions(+), 108 deletions(-)
 create mode 100644 drivers/net/wireless/ath/ath5k/ani.c
 create mode 100644 drivers/net/wireless/ath/ath5k/ani.h

-- 
Signature
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]
  Powered by Linux