Atheros HAL: Ambient Noise Immunity (ANI)

| Driver | HAL | Supported Hardware |

Overview

Ambient Noise Immunity (ANI) is a software driven method for controlling radio sensitivity in the face of noise sources. It tunes various parameters based on OFDM/CCK errors and beacon RSSI levels.

Details

The patent document provides a good overview to the operation of the ANI code in FreeBSD. The AR5212 implementation is almost verbatim from the ANI patent.

ANI attempts to work around a noisy, unpredictable environment. Given that there are a variety of noise sources - other stations, spread spectrum sources, non-802.11 devices (eg video bridges) and 2.4ghz devices (eg microwaves), ANI attempts to set various packet and signal detection thresholds to minimise errors.

The inputs to ANI are:

The variables being modified by ANI are:

ANI debugging

The athstats tool in src/tools/tools/ath/athstats provides live ANI statistics. Try 'anistats -o ani 1'.

Known issues

What could be done in the future

Currently these parameters are programmed into ANI and raised/lowered to a very strict set of values in a strict order. It may be a good project to instead modify these values along a continuum, track what affect they have on error rates, signal TX/RX error rates, channel busy conditions, etc, and then choose optimal values based on that.

There's currently very limited debugging and inspection tools for ANI. It would be nice to have some more tools.

The ANI API supports the concept of manually controlled ANI - ie, instead of the parameters being dynamically changed over time, they are changed via an ioctl() API. It would be a good mini-project to implement this in the ath(4) driver and ath_hal(4) layer.

dev/ath_hal(4)/AutomaticNoiseImmunity (last edited 2012-09-29 05:54:02 by AdrianChadd)