This page describes the RX header that is prepended to each received frame.
RX frame format
When a frame is received (via DMA), it has one of the two following structures:
Type 1 |
Bytes |
0-29 |
30-36 |
37-... |
4 last bytes |
Contents |
RX header |
PLCP header |
payload |
FCS |
Type 2 |
Bytes |
0-29 |
30/31 |
32-38 |
39-... |
4 last bytes |
Contents |
RX header |
padding |
PLCP header |
payload |
FCS |
The type 2 frame contains two pad bytes in order to align the IP header to a 4-byte boundary. This is done by the microcode for QoS and 4-address ("WDS") frames.
FIXME: review this: [When receiving via PIO, the RX header has to be built manually by receiving 20 bytes from the PIO queue and storing them into the 30 byte area starting at offset 2, the length is not sent explicitly.]
RX header format
The RX header consists of 16-bit values in little endian. The following table lists the meaning of each such value.
Index |
Meaning |
0 |
frame length, not including the RX header length |
1 |
unused padding |
2 |
PHY RX Status 0 |
3 |
PHY RX Status 1 |
4 |
PHY RX Status 2 |
5 |
PHY RX Status 3 |
6 |
MAC RX Status (low 16 bits) |
7 |
MAC RX Status (high 16 bits) |
8 |
MAC time (time of first MAC symbol plus PHY delay) |
9 |
RX Channel |
PHY RX Status 0
Mask |
Meaning |
0xF000 |
N PHY: bitmask of used antennas |
0x4000 |
legacy PHY gain control |
0x0200 |
PLCP header integrity check failed |
0x0100 |
PCLP violation |
0x0080 |
received with short preamble |
0x0040 |
CRS lost during CCK reception (CCK only) |
0x0020 |
G PHY: RX antenna, N PHY: received in upper sideband |
0x0010 |
unsupported rate received |
0x000C |
clip count adjustment steps done by the AGC (N PHY) |
0x0003 |
frame type, 0: CCK, 1: OFDM, 2: pre-N, 3: std-N (not valid with A PHY) |
PHY RX Status 1
Mask |
Meaning |
Meaning (N PHY) |
0xFF00 |
signal quality |
Power 0 |
0x00FF |
JSSI |
Power 1 |
PHY RX Status 2
Mask |
Meaning |
0xC000 |
LNA gain |
0x3C00 |
PNA gain |
0x03FF |
F offset (?) |
Mask |
Meaning (N PHY) |
0xFF00 |
spatial conditioning quality |
0x00F0 |
antenna 1 signal quality |
0x000F |
antenna 0 signal quality |
0x00FF |
B-PHY signal quality (when frametype is CCK) |
PHY RX Status 3
Mask |
Meaning |
0x1800 |
DIG gain |
0x0400 |
TR state |
Mask |
Meaning (N PHY) |
0xF000 |
mixed-mode preamble rate field |
0x0FFF |
mixed-mode preamble length |
MAC RX Status
Mask |
Meaning |
0x01000000 |
PHY RXST (RX status) valid |
0x00100000 |
TKIP MIC error |
0x00080000 |
TKIP MIC attempted |
0x00060000 |
Aggregation type (values could be: 1: first, 0: intermediate, 2: last, 3: in-one?) |
0x00010000 |
A-MSDU mask |
0x00008000 |
beacon sent flag (?) |
0x000007E0 |
key index |
0x00000010 |
decrypt error (frame data is decrypted but probably with the wrong key or ICV failed; data will most likely be mangled) |
0x00000008 |
decryption attempted |
0x00000004 |
pad bytes present (Type 2 used) |
0x00000002 |
response frame transmitted?? |
0x00000001 |
FCS error |
RX Channel
Mask |
Meaning |
|
0x1000 |
40 MHz |
taken from Current Channel SHM for revision 11/13 (N/LP PHY); |
0x0800 |
5 GHz |
|
0x07F8 |
Channel ID |
|
0x0007 |
PHY type |