A-MPDU status
- Bit Number
- 20
- Structure
- u32 reference number, u16 flags, u8 delimiter CRC value, u8 reserved
- Required Alignment
- 4 bytes
The presence of this field indicates that the frame was received as part of an a-MPDU.
The reference number is generated by the capture device and is the same across each subframe of an A-MPDU. Since the capture device might be capable of capturing multiple channels or data from multiple (concurrent) captures could be merged, the reference number is not guaranteed to be unique across different channels. As a result, applications should use the channel information together with the reference number to identify the subframes belonging to the same A-MPDU.
The following flags are defined:
0x0001 |
driver reports 0-length subframes |
0x0002 |
frame is 0-length subframe (valid only if 0x0001 is set) |
0x0004 |
last subframe is known (should be set for all subframes in an A-MPDU) |
0x0008 |
this frame is the last subframe |
0x0010 |
delimiter CRC error |
0x0020 |
delimiter CRC value known: the delimiter CRC value field is valid |
0xffc0 |
reserved |
Within an A-MPDU, the subframe index can be determined by the application so it is not included, but depending on the driver reporting this may miss 0-length subframes.
Antenna
- Bit Number
- 11
- Structure
- u8
- Unit
- antenna index
Unitless indication of the Rx/Tx antenna for this packet. The first antenna is antenna 0.
Antenna noise
- Bit Number
- 6
- Structure
- s8
- Unit
- dBm
RF noise power at the antenna. This field contains a single signed 8-bit value, which indicates the RF signal power at the antenna, in decibels difference from 1mW.
Antenna signal
- Bit Number
- 5
- Structure
- s8
- Unit
- dBm
RF signal power at the antenna. This field contains a single signed 8-bit value, which indicates the RF signal power at the antenna, in decibels difference from 1mW.
Channel
- Bit Number
- 3
- Structure
- u16 frequency, u16 flags
- Required Alignment
- 2
- Units
- MHz, bitmap
Tx/Rx frequency in MHz, followed by flags.
Currently, the following flags are defined:
Mask |
Meaning |
0x0010 |
Turbo Channel |
0x0020 |
CCK channel |
0x0040 |
OFDM channel |
0x0080 |
2 GHz spectrum channel |
0x0100 |
5 GHz spectrum channel |
0x0200 |
Only passive scan allowed |
0x0400 |
Dynamic CCK-OFDM channel |
0x0800 |
GFSK channel (FHSS PHY) |
FHSS
- Bit Number
- 4
- Structure
- u8 hop set, u8 hop pattern
- Units
- ??
The hop set and pattern for frequency-hopping radios.
Flags
- Bit Number
- 1
- Structure
- u8 flags
- Unit
- bitmap
Properties of transmitted and received frames.
Currently, the following flags are defined:
Mask |
Meaning |
0x01 |
sent/received during CFP |
0x02 |
sent/received with short preamble |
0x04 |
sent/received with WEP encryption |
0x08 |
sent/received with fragmentation |
0x10 |
frame includes FCS |
0x20 |
frame has padding between 802.11 header and payload (to 32-bit boundary) |
0x40 |
frame failed FCS check |
Currently unspecified but used:
Mask |
Meaning |
0x80 |
frame used short guard interval (HT) |
Lock quality
- Bit Number
- 7
- Structure
- u16
- Required Alignment
- 2
- Unit
- unitless
Quality of Barker code lock. Unitless. Monotonically nondecreasing with "better" lock strength. Called "Signal Quality" in datasheets. (Is there a standard way to measure this?)
MCS
- Bit Number
- 19
- Structure
- u8 known, u8 flags, u8 mcs
- Required Alignment
- 1
The mcs field indicates the MCS rate index as in IEEE_802.11n-2009
The known field indicates which information is known:
flag |
definition |
0x01 |
bandwidth |
0x02 |
MCS index known (in mcs part of the field) |
0x04 |
guard interval |
0x08 |
HT format |
0x10 |
FEC type |
0x20 |
STBC known |
0x40 |
Ness known (Number of extension spatial streams) |
0x80 |
Ness data - bit 1 (MSB) of Number of extension spatial streams |
The flags field is any combination of the following:
flag |
definition |
0x03 |
bandwidth - 0: 20, 1: 40, 2: 20L, 3: 20U |
0x04 |
guard interval - 0: long GI, 1: short GI |
0x08 |
HT format - 0: mixed, 1: greenfield |
0x10 |
FEC type - 0: BCC, 1: LDPC |
0x60 |
Number of STBC streams |
0x80 |
Ness - bit 0 (LSB) of Number of extension spatial streams |
RX flags
- Bit Number
- 14
- Structure
- u16
- Required Alignment
- 2
- Unit
- bitmap
Properties of received frames.
The following flags are currently defined:
mask |
meaning |
0x0001 |
reserved [was FCS failed but this is a regular flag] |
0x0002 |
PLCP CRC check failed |
0xfffc |
reserved for future expansion |
Notes
This field originates from NetBSD and is also used like this in Linux.
Use bit 0x40 in the flags field to indicate FCS CRC failed.
Reset to Radiotap Namespace
- Bit Number
not applicable, bit 29 in every it_present word
- Structure
- no contents
- Required Alignment
- N/A
This field is reserved in all namespaces and every it_present word, the standard radiotap namespace as well as all vendor namespaces. It is mutually exclusive with the Vendor Namespace field, setting both is undefined.
Upon interpreting this field, the interpreter shall reset its presence-bitmap index to 0 and its namespace to the default radiotap namespace, and change to the default radiotap namespace, before it interprets subsequent presence-bitmap words.
Rate
- Bit Number
- 2
- Structure
- u8
- Unit
- 500 Kbps
TX/RX data rate.
TSFT
- Bit Number
- 0
- Structure
- u64 mactime
- Required Alignment
- 8
- Unit
- microseconds
Value in microseconds of the MAC's 64-bit 802.11 Time Synchronization Function timer when the first bit of the MPDU arrived at the MAC. For received frames only.
TX attenuation
- Bit Number
- 8
- Structure
- u16
- Required Alignment
- 2
- Unit
- unitless
Transmit power expressed as unitless distance from max power set at factory calibration. 0 is max power. Monotonically nondecreasing with lower power levels.
VHT
- Bit Number
- 21
- Structure
- u16 known, u8 flags, u8 bandwidth, u8 mcs_nss[4], u8 coding, u8 group_id, u16 partial_aid
- Required Alignment
- 2
The known field indicates which information is known:
flag |
definition |
notes |
0x0001 |
STBC known |
In flags part of the field. |
0x0002 |
TXOP_PS_NOT_ALLOWED known |
In flags part of the field. |
0x0004 |
Guard interval |
In flags part of the field. |
0x0008 |
Short GI NSYM disambiguation known |
In flags part of the field. |
0x0010 |
LDPC extra OFDM symbol known |
In flags part of the field. |
0x0020 |
Beamformed known/applicable |
In flags part of the field. This flag should be set to zero for MU PPDUs. |
0x0040 |
Bandwidth known |
In bandwidth part of the field. |
0x0080 |
Group ID known |
In group_id part of the field. |
0x0100 |
Partial AID known/applicable |
In partial_aid part of the field. This flag should be set to zero for MU PPDUs. |
0xfe00 |
(unused) |
|
The flags field is any combination of the following:
flag |
definition |
notes |
0x01 |
STBC |
Space-time block coding. |
0x02 |
TXOP_PS_NOT_ALLOWED |
Valid only for AP transmitters. |
0x04 |
Guard interval. |
Set to 0 for long GI. |
0x08 |
Short GI NSYM disambiguation |
Valid only if short GI is used. |
0x10 |
LDPC Extra OFDM symbol |
Set to 1 if one or more users are using LDPC and the encoding process resulted in extra OFDM symbol(s). |
0x20 |
Beamformed |
Valid for SU PPDUs only. |
0xc0 |
(unused) |
|
The bandwidth field encodes the bandwidth:
bitmask |
definition |
notes |
0x1f |
Bandwidth |
|
0xe0 |
(unused) |
|
Note: for receive capture, the total bandwidth of the transmitter is not generally known, so the bandwidth will only be recorded as 20, 40, 80, or 160.
Note: for transmit injection, the sub-band choice for wide channels may be constrained by the current primary sub-band channels. IEEE 802.11 prohibits transmissions on sub-bands other than the designated sub-bands. For example, if the device is currently operating on the 40MHz channel pair {36, 40} with 36 designated as the primary 20MHz channel, the transmitter will naturally send 20MHz transmissions on channel 36, and may not be able to force a 20MHz transmission on channel 40.
Bandwidth values are:
value |
total bandwidth (MHz) |
sideband |
sideband index |
0 |
20 |
|
|
1 |
40 |
|
|
2 |
40 |
20L |
0 |
3 |
40 |
20U |
1 |
4 |
80 |
|
|
5 |
80 |
40L |
0 |
6 |
80 |
40U |
1 |
7 |
80 |
20LL |
0 |
8 |
80 |
20LU |
1 |
9 |
80 |
20UL |
2 |
10 |
80 |
20UU |
3 |
11 |
160 |
|
|
12 |
160 |
80L |
0 |
13 |
160 |
80U |
1 |
14 |
160 |
40LL |
0 |
15 |
160 |
40LU |
1 |
16 |
160 |
40UL |
2 |
17 |
160 |
40UU |
3 |
18 |
160 |
20LLL |
0 |
19 |
160 |
20LLU |
1 |
20 |
160 |
20LUL |
2 |
21 |
160 |
20LUU |
3 |
22 |
160 |
20ULL |
4 |
23 |
160 |
20ULU |
5 |
24 |
160 |
20UUL |
6 |
25 |
160 |
20UUU |
7 |
The four mcs_nss fields encode MCS and NSS for up to four users:
bitmask |
definition |
notes |
0x0f |
NSS |
Number of spatial streams, range 1-8. |
0xf0 |
MCS |
MCS rate index, range 0-9. |
If the NSS field for a user is zero, the user is not present and the MCS and coding (in the coding field) associated with that user are not valid. For SU PPDUs, only the first user will have a nonzero NSS field.
Note: the number of space-time streams (NSTS) for a user can be calculated from the NSS for that user and the STBC flag:
- STBC not in use: NSTS = NSS
- STBC in use: NSTS = 2*NSS
The coding field encodes the FEC for up to four users:
bitmask |
definition |
notes |
0x01 |
Coding for user 0 |
Set to 0 for BCC. |
0x02 |
Coding for user 1 |
Set to 0 for BCC. |
0x04 |
Coding for user 2 |
Set to 0 for BCC. |
0x08 |
Coding for user 3 |
Set to 0 for BCC. |
0xf0 |
(unused) |
|
The coding for a user is only valid if the NSS (in the mcs_nss field) for that user is nonzero.
The group_id field contains the group ID.
Note: the group ID can be used to differentiate between SU PPDUs (group ID is 0 or 63) and MU PPDUs (group ID is 1 through 62).
The partial_aid field contains the partial AID. Only applicable to SU PPDUs.
Vendor Namespace
- Bit Number
not applicable, bit 30 in every it_present word
- Structure
- u8 OUI[3], u8 sub_namespace, u16 skip_length
- Required Alignment
- 2
This field is reserved in all namespaces and every it_present word, the standard radiotap namespace as well as all vendor namespaces. It is mutually exclusive with the Reset to Radiotap Namespace field, setting both is undefined.
The Vendor Namespace Field contains three sub-fields. The first sub-field is 3 bytes long. It contains the vendor's IEEE 802 Organizationally Unique Identifier (OUI). The fourth byte is a vendor-specific "namespace selector."
Before it resumes interpretation of presence bits in the following 32-bit presence words, if any, the interpreter shall reset its presence-bitmap index to 0, and change to the vendor namespace specified by the OUI and selector.
The fifth and sixth bytes, skip_length, comprise a 16 bit little-endian value that tells the interpreter how many bytes of data after the end of the Vendor Namespace Field can only be interpreted according to the vendor namespace. If a radiotap header changes to a namespace that the interpreter does not understand, and back, the interpreter may resume interpretation in the new namespace by skipping skip_length data bytes after the end of the Vendor Namespace Field. If a radiotap header changes from a vendor namespace to another vendor namespace, the 6-byte data describing the new vendor namespace shall not be accounted for in skip_length.
dB TX attenuation
- Bit Number
- 9
- Structure
- u16
- Required Alignment
- 2
- Unit
- dB
Transmit power expressed as decibel distance from max power set at factory calibration. 0 is max power. Monotonically nondecreasing with lower power levels.
dB antenna noise
- Bit Number
- 13
- Structure
- u8
- Unit
- dB
RF noise power at the antenna, decibel difference from an arbitrary, fixed reference. This field contains a single unsigned 8-bit value.
dB antenna signal
- Bit Number
- 12
- Structure
- u8
- Unit
- dB
RF signal power at the antenna, decibel difference from an arbitrary, fixed reference. This field contains a single unsigned 8-bit value.
dBm TX power
- Bit Number
- 10
- Structure
- s8
- Required Alignment
- 1
- Unit
- dBm
Transmit power expressed as dBm (decibels from a 1 milliwatt reference). This is the absolute power level measured at the antenna port.