Picture this: You have a clean RF environment, and the client has an excellent signal strength, with data being received at the highest MCS rates, yet the throughput doesn’t reasonably match with your expectation.
One possible reason which could lead to this scenario is poor aggregation. Frame aggregation in Wi-Fi is used to improve the transmission efficiency by sending multiple data frames in one go, instead of sending them individually.
Aggregation works in two ways. A-MPDU aggregation combines multiple MPDUs under a common PHY header, while A-MSDU aggregation packs multiple MSDUs under a common MAC header. APs can perform A-MSDU aggregation, A-MPDU aggregation, or sometimes both.
I tested which aggregation is commonly used at various throughput values in downlink direction with UDP traffic (Wi-Fi link is 802.11ax, 160MHz bandwidth, 2x2 NSS and 2.4Gbps PHY rate). Key highlights:
Low load (~10 Mbps):
Aggregation is mostly absent. Only a small fraction of frames use A-MSDU, and A-MPDU is absent.
Moderate load (20–50 Mbps):
Limited aggregation appears. A-MSDU is used moderately (typically 2–5 MSDUs per A-MSDU), while A-MPDU usage remains minimal.
High load (100–500 Mbps):
A-MSDU becomes dominant. Most A-MSDUs carry 7 MSDUs, producing frame sizes over 10,000 bytes. A-MPDU usage also increases, with most A-MPDUs containing 2–10 MPDUs.
Very high load (1–2 Gbps):
A-MSDU dominance keeps increasing, over 85% of A-MSDUs carry 7 MSDUs. A-MPDU aggregation increases further too, typically aggregating 2–40 MPDUs. At 2 Gbps throughput, around 10% of A-MPDUs exceed 100 MPDUs.
This AP prioritizes A-MSDU aggregation so heavily in good RF conditions. The maximum MPDU size defined by the AP is 11542 bytes and it is making the most of it at 2Gbps throughput, with an MPDU carrying 7 MSDUs sized at 10,784 bytes. However, from A-MPDU aggregation standpoint, the maximum agreed buffer size in the block ack setup is 256, yet only a few percent of the frames carry over 100 MPDUs in an A-MPDU.
Have you seen APs doing the other way, with moderate use of A-MSDU and aggressive A-MPDU aggregation while running peak throughput? Share your aggregation stories in the comments!
LinkedIn: ![]()

