AR9130/AR9160 radar detection

The AR9130/AR9160 radar reports include much more information than the previous generation.

The PHY error length is now (at least) three bytes, with the following information (for a frame 'n' bytes in length):

  • optional FFT payloads, if the pulse is long enough
  • byte n-3: Pulse length in the primary channel
  • byte n-2: Pulse length in the extension channel
  • byte n-1: flags

Flags contains:

  • 0x01: Pulse in primary channel
  • 0x02: Pulse in extension channel
  • 0x04: “Early extension event” found (TBD: more explanation)

The stronger of the RSSIs in the primary and extension channel should be used.

An optional FFT report is available for frames which meet a certain set of parameters. This is primarily designed to assist in chirp detection, where a radar pulse moves in frequency over time. These pulses are normally detected as long pulses (45-90 uS).

Each FFT sample corresponds to a 3.2uS window (40MHz/80MHz clock) or 2.9uS window (44MHz/88MHz clock).

HT20:

Byte Bit field Description
0 [3:0]: bin -28 {bitmap, quantized magnitude[2:0]}
[7:4]: bin -27 {bitmap, quantized magnitude[2:0]}
1 [3:0]: bin -26 {bitmap, quantized magnitude[2:0]}
[7:4]: bin -25 {bitmap, quantized magnitude[2:0]}
2 - 25 …
26 [3:0]: bin 24 {bitmap, quantized magnitude[2:0]}
[7:4]: bin 25 {bitmap, quantized magnitude[2:0]}
27 [3:0]: bin 26 {bitmap, quantized magnitude[2:0]}
[7:4]: bin 27 {bitmap, quantized magnitude[2:0]}
28 [7:0]: all bins {max_magnitude[1:0], bitmap_weight[5:0]}
29 [7:0]: all bins max_magnitude[9:2]
30 [7:0]: all bins {max_index[5:0], max_magnitude[11:10]}

Dynamic HT40 mode (regardless of whether the received data frames are HT20 or HT40; this is the mode the PHY is in):

Byte Bitfield Description
0 [3:0]: bin -64 {bitmap, quantized magnitude[2:0]}
[7:4]: bin -63 {bitmap, quantized magnitude[2:0]}
1 [3:0]: bin -62 {bitmap, quantized magnitude[2:0]}
[7:4]: bin -61 {bitmap, quantized magnitude[2:0]}
2 - 61 …
62 [3:0]: bin 60 {bitmap, quantized magnitude[2:0]}
[7:4]: bin 61 {bitmap, quantized magnitude[2:0]}
63 [3:0]: bin 62 {bitmap, quantized magnitude[2:0]}
[7:4]: bin 63 {bitmap, quantized magnitude[2:0]}
64 [7:0]: lower bins {max_magnitude[1:0], bitmap_weight[5:0]}
65 [7:0]: lower bins max_magnitude[9:2]
66 [7:0]: lower bins {max_index[5:0], max_magnitude[11:10]}
67 [7:0]: upper bins {max_magnitude[1:0], bitmap_weight[5:0]}
68 [7:0]: upper bins max_magnitude[9:2]
69 [7:0]: upper bins {max_index[5:0], max_magnitude[11:10]}

The radar FFT analysis provides a variety of information:

  • The max_magnitude is calculated, as the value of |I| + |Q|
  • the FFT bin index of the max_magnitude field is populated in max_index
  • for each bin, if the magitude is greater than a pre-programmed threshold (TODO: document this register field), the bit in the bitmap field is set;
  • the quantized magnitude is then calculated for all bins, calculated as floor(bin power * 8 / max_magnitude)
  • The FFT report data may be truncated if the incoming signal level drops before an FFT is completed. Thus, don't trust that the FFT data will be complete.
  • There are some known BB hangs with DFS on the AR9130/AR9160. The BB hang code in the ath_hal should detect it as a DFS BB hang and reset things. (TODO: check whether the chip needs to be “fixed” by going into another operational mode and bcak again, rather than just a straight reset.)
  • There are some corruption issues, where the MAC mis-classifies the larger PHY error frames as data frames and re-aligns some portion of the payload. This only affects frames with FFT payloads and not the short PHY error frames (3 bytes.)
  • dev/ath_hal_4/radardetection/ar9001.txt
  • Last modified: 2012/12/28 05:28
  • by AdrianChadd