Go back –> IEEE-802.11 standards
Review of IEEE-802.11n
IEEE-802.11n was designed to allow transmissions of up to 100Mbps, thanks to this work devices are theoretically capable of transmitting at rates of up to 600Mbps (PHY data rate). This section tries to summarize what 802.11n for developers.
Contents
Spatial streams
802.11n capable hardware can have more than one spatial stream. You can think of each spatial stream hardware designated for generation of traffic for TX or RX. The idea is you can have multiple spatial streams all capable of transmitting and receiving concurrently. Each stream can use multiple RX or TX chains. Streams are different than chains, each TX or RX chain consists of a dedicated radio and at least one antenna (a chain can also use antenna diversity). One stream can use one chain or move between them intelligently (this is called selection diversity). Theoretically you can use however many chains for one stream. This differs from the notion of antenna diversity on 802.11abg hardware, for example, in that with antenna diversity you are switching which antenna you use to TX or RX dynamically.
The NxM nomenclature tells us about the number of TX/RX chains, and has nothing to do with streams. It should be noted that each stream increase the overall throughput. See below for nSS on the table.
MCS Rates
With 802.11n you can use a new set of rates designed specifically for high throughput (HT). Below are the HT Modulation and Coding Schemes (MCS) rates and its dependent symbols. These come from section 20.6 form 802.11n D5.
Legend
nSS |
number of spacial streams |
R |
coding rate |
nBPCSS(iSS) |
Number of coded bits per signal carrier for each spatial stream, iSS = 1..., nSS |
nSD |
Number of complex data numbers per spatial stream per ODFM symbol |
nSP |
Number of pilot values per OFDM symbol |
nCBPS |
Number of coded bits per OFDM symbol |
nDBPS |
Number of data bits per OFDM symbol |
HT20 rates
HT20 mode uses 20 MHz width channels.
MCS Index |
nSS |
Modulation |
R |
nBPCSS(iSS) |
nSD |
nSP |
nCBPS |
nDBPS |
Mbps (800 ns GI) |
Mbps (400 ns GI) |
0 |
1 |
BPSK |
1/2 |
1 |
52 |
4 |
52 |
26 |
6.5 |
7.2 |
1 |
1 |
QPSK |
1/2 |
2 |
52 |
4 |
104 |
52 |
13.0 |
14.4 |
2 |
1 |
QPSK |
3/4 |
2 |
52 |
4 |
104 |
78 |
19.5 |
21.7 |
3 |
1 |
16-QAM |
1/2 |
4 |
52 |
4 |
208 |
104 |
26.0 |
28.9 |
4 |
1 |
16-QAM |
3/4 |
4 |
52 |
4 |
208 |
156 |
39.0 |
43.3 |
5 |
1 |
64-QAM |
2/3 |
6 |
52 |
4 |
312 |
208 |
52.0 |
57.8 |
6 |
1 |
64-QAM |
3/4 |
6 |
52 |
4 |
312 |
234 |
58.5 |
65.0 |
7 |
1 |
64-QAM |
5/6 |
6 |
52 |
4 |
312 |
260 |
65.0 |
72.2 |
8 |
2 |
BPSK |
1/2 |
1 |
52 |
4 |
104 |
52 |
13.0 |
14.4 |
9 |
2 |
QPSK |
1/2 |
2 |
52 |
4 |
208 |
104 |
26.0 |
28.9 |
10 |
2 |
QPSK |
3/4 |
2 |
52 |
4 |
208 |
156 |
39.0 |
43.3 |
11 |
2 |
16-QAM |
1/2 |
4 |
52 |
4 |
416 |
208 |
52.0 |
57.8 |
12 |
2 |
16-QAM |
3/4 |
4 |
52 |
4 |
416 |
312 |
78.0 |
86.7 |
13 |
2 |
64-QAM |
2/3 |
6 |
52 |
4 |
624 |
416 |
104.0 |
115.6 |
14 |
2 |
64-QAM |
3/4 |
6 |
52 |
4 |
624 |
468 |
117.0 |
130.0 |
15 |
2 |
64-QAM |
5/6 |
6 |
52 |
4 |
624 |
520 |
130.0 |
144.0 |
16 |
3 |
BSSK |
1/2 |
1 |
52 |
4 |
156 |
78 |
19.5 |
21.7 |
17 |
3 |
QPSK |
1/2 |
2 |
52 |
4 |
312 |
156 |
39.0 |
43.3 |
18 |
3 |
QPSK |
3/4 |
2 |
52 |
4 |
312 |
234 |
58.5 |
65.0 |
19 |
3 |
16-QAM |
1/2 |
4 |
52 |
4 |
624 |
312 |
78.0 |
86.7 |
20 |
3 |
16-QAM |
3/4 |
4 |
52 |
4 |
624 |
468 |
117.0 |
130.0 |
21 |
3 |
64-QAM |
2/3 |
6 |
52 |
4 |
936 |
624 |
156.0 |
173.3 |
22 |
3 |
64-QAM |
3/4 |
6 |
52 |
4 |
936 |
702 |
175.5 |
195.0 |
23 |
3 |
64-QAM |
5/6 |
6 |
52 |
4 |
936 |
780 |
195.0 |
216.7 |
24 |
4 |
BPSK |
1/2 |
1 |
52 |
4 |
208 |
104 |
26.0 |
28.9 |
25 |
4 |
QPSK |
1/2 |
2 |
52 |
4 |
416 |
208 |
52.0 |
57.8 |
26 |
4 |
QPSK |
3/4 |
2 |
52 |
4 |
416 |
312 |
78.0 |
86.7 |
27 |
4 |
16-QAM |
1/2 |
4 |
52 |
4 |
832 |
624 |
156.0 |
173.3 |
28 |
4 |
16-QAM |
3/4 |
4 |
52 |
4 |
832 |
624 |
156.0 |
173.3 |
29 |
4 |
64-QAM |
2/3 |
6 |
52 |
4 |
1248 |
832 |
208.0 |
231.1 |
30 |
4 |
64-QAM |
3/4 |
6 |
52 |
4 |
1248 |
936 |
234.0 |
260.0 |
31 |
4 |
64-QAM |
5/6 |
6 |
52 |
4 |
1248 |
1040 |
260.0 |
288.9 |
HT40 rates
MCS Index |
nSS |
Modulation |
R |
nBPCSS(iSS) |
nSD |
nSP |
nCBPS |
nDBPS |
Mbps (800 ns GI) |
Mbps (400 ns GI) |
0 |
1 |
BPSK |
1/2 |
1 |
108 |
6 |
108 |
54 |
13.5 |
15.0 |
1 |
1 |
QPSK |
1/2 |
2 |
108 |
6 |
216 |
108 |
27.0 |
30.0 |
2 |
1 |
QPSK |
3/4 |
2 |
108 |
6 |
216 |
162 |
40.5 |
45.0 |
3 |
1 |
16-QAM |
1/2 |
4 |
108 |
6 |
432 |
216 |
54.0 |
60.0 |
4 |
1 |
16-QAM |
3/4 |
4 |
108 |
6 |
432 |
324 |
81.0 |
90.0 |
5 |
1 |
64-QAM |
2/3 |
6 |
108 |
6 |
648 |
432 |
108.0 |
120.0 |
6 |
1 |
64-QAM |
3/4 |
6 |
108 |
6 |
648 |
486 |
121.5 |
135.0 |
7 |
1 |
64-QAM |
5/6 |
6 |
108 |
6 |
648 |
540 |
135.0 |
150.0 |
8 |
2 |
BPSK |
1/2 |
1 |
108 |
6 |
216 |
108 |
27.0 |
30.0 |
9 |
2 |
QPSK |
1/2 |
2 |
108 |
6 |
432 |
216 |
54.0 |
60.0 |
10 |
2 |
QPSK |
3/4 |
2 |
108 |
6 |
432 |
324 |
81.0 |
90.0 |
11 |
2 |
16-QAM |
1/2 |
4 |
108 |
6 |
864 |
432 |
108.0 |
120.0 |
12 |
2 |
16-QAM |
3/4 |
4 |
108 |
6 |
864 |
648 |
162.0 |
180.0 |
13 |
2 |
64-QAM |
2/3 |
6 |
108 |
6 |
1296 |
864 |
216.0 |
240.0 |
14 |
2 |
64-QAM |
3/4 |
6 |
108 |
6 |
1296 |
972 |
243.0 |
270.0 |
15 |
2 |
64-QAM |
5/6 |
6 |
108 |
6 |
1296 |
1080 |
270.0 |
300.0 |
Note that MCS 16-76 exist going up to 600 Mbps but too lazy to write that from the docs, feel free to expand. These rates also require the addition of another entry in the table, the nES (number of BCC encoders for the DATA field).
Block Acks
The idea with Block Acks is to let you acknowledge a set of frames with a single new modified type of ACK. This is extremely useful when you use aggregation. If a transmitter did not get a block ack back it will send a block ack request to the receiver after a period of time.
Aggregation
802.11n introduces two types of aggregation to increase throughput.
A-MPDU
This is the most common form of aggregation supported and used by drivers. mac80211 has full support for this type of aggregation. With it you pack together frames and each frame has its own dedicated CRC. The receiver can send a BlockAck with a bitmap of each successful frame. In the bitmap it can also specify which frame failed to force the transmitter to retransmit the single unsuccessful frame.
A-MSDU
This is not commonly used, but the standard and WiFi certification requires support for receiving A-MSDUs. mac80211 has support for this, so drivers don't need to do anything. With A-MSDUs you cannot check each individual frame as each of them does not have a dedicated CRC. If a frame is corrupt you will have to retransmit the entire aggregate.