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.«BR»Set to 0 if no spatial streams of any user has STBC.«BR»Set to 1 if all spatial streams of all users have STBC. |
| 0x02 | TXOP_PS_NOT_ALLOWED | Valid only for AP transmitters.«BR»Set to 0 if STAs may doze during TXOP.«BR»Set to 1 if STAs may not doze during TXOP or transmitter is non-AP. |
| 0x04 | Guard interval. | Set to 0 for long GI.«BR»Set to 1 for short GI. |
| 0x08 | Short GI NSYM disambiguation | Valid only if short GI is used.«BR»Set to 0 if NSYM mod 10 != 9 or short GI not used.«BR»Set to 1 if NSYM mod 10 = 9. |
| 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).«BR»Set to 0 otherwise. |
| 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. If the NSS field for a user is non-zero, but the MCS is not known (for example due to receiving only data for a single user), the MCS shall be set to 15. 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.«BR»Set to 1 for LDPC. |
| 0x02 | Coding for user 1 | Set to 0 for BCC.«BR»Set to 1 for LDPC. |
| 0x04 | Coding for user 2 | Set to 0 for BCC.«BR»Set to 1 for LDPC. |
| 0x08 | Coding for user 3 | Set to 0 for BCC.«BR»Set to 1 for LDPC. |
| 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.