FRAME AGGREGATION - A-MSDU vs A-MPDU - IEEE 802.11-2020 §9.3.2.2 / §9.75 rows#
| Concept | Structure / Rule | Engineering Notes |
|---|---|---|
| A-MSDU (MSDU aggregation) | Multiple MSDUs packed into ONE MPDU: each subframe = DA(6)+SA(6)+Length(2)+payload, padded to 4-byte boundary. One FCS, one sequence number, one retransmission unit for the whole bundle. | Efficient (least header overhead) but fragile: one bit error retransmits everything. Signaled by A-MSDU Present bit in QoS Control. Max sizes: 3839 or 7935 B (11n caps), 11454 B (VHT/HE with Max MPDU 11454). |
| A-MPDU (MPDU aggregation) | Multiple complete MPDUs (each with own MAC header + FCS) in ONE PPDU. Each preceded by 4-byte MPDU Delimiter: EOF(1b)+reserved+MPDU Length(14b)+CRC(8b)+Signature 0x4E ("N"). Subframes padded to 4 bytes. | The workhorse. Per-MPDU FCS → selective retransmission via Block Ack. Delimiter signature lets receiver re-sync scanning after a corrupted subframe. 11n requires all same TID; A-MSDU inside A-MPDU allowed (two-level aggregation = highest efficiency). |
| Max A-MPDU length | 11n: 65,535 B (2^(13+3)-1). 11ac: 1,048,575 B (2^(13+7)-1). 11ax: 6,500,631 B. 11be: 15,728,640 B (practically bounded by max PPDU time). | Real bound is ALWAYS max PPDU duration 5.484 ms - at low MCS you run out of time long before bytes. Max A-MPDU exponent advertised in HT/VHT/HE/EHT Capabilities. |
| MPDU density / spacing | Min time between MPDU starts (0-16 µs) advertised in HT caps - receiver decrypt/processing limit. | TX inserts null delimiters to honor it. Ignoring density = silent drops on weak receivers. |
| Max MSDU / MPDU sizes | MSDU: 2304 B (why Wi-Fi fits 1500-byte Ethernet easily). MPDU max: 3895 / 7991 / 11454 B (VHT Max MPDU field values). | Jumbo frames beyond 2304 need A-MSDU encapsulation. |
BLOCK ACK LIFECYCLE - IEEE 802.11-2020 §10.246 rows#
| Concept | Structure / Rule | Engineering Notes |
|---|---|---|
| Phase | Mechanism | Troubleshooting Notes |
| ADDBA Setup | Originator sends ADDBA Request (Action, Block Ack category): TID, Buffer Size (requested reorder window), BA timeout, A-MSDU-supported bit. Recipient answers ADDBA Response with status + granted buffer size. | Session is PER (TA,RA,TID). Status 37 decline → sender must use normal ACK (throughput collapses). Buffer size haggling: client may request 256, AP grant 64. |
| Operation | Originator bursts A-MPDU with Ack Policy=Block Ack → recipient tracks per-MPDU status in scoreboard → BAR (or implicit) solicits BA frame carrying Starting Sequence Number + bitmap; originator retransmits holes only. | Compressed BA bitmap: 64 MPDUs (8 B). 11ax Extended: 256 (32 B). 11be: up to 1024. Multi-STA BlockAck (11ax): one frame acks many users after trigger-based UL. |
| Reorder buffer & timeout | Recipient holds out-of-order MPDUs until holes filled or BA timeout - then flushes upward. | Symptom of BA problems: bursty jitter/TCP stalls exactly at reorder timeout; wlan.ba.bm shows persistent holes. |
| DELBA / teardown | Either side sends DELBA (reason code) to kill session; also implicit teardown on timeout/inactivity. | Frequent ADDBA/DELBA cycling in captures = driver interop issue - a classic escalation signature. |
| Wireshark filters | wlan.fc.type_subtype==24 (BAR), ==25 (BA); ADDBA: wlan.fixed.category_code==3. Delimiters visible in monitor-mode radiotap A-MPDU captures. | Check granted buffer sizes in ADDBA Resp when investigating throughput asymmetry. |