My sniffer decoded 95% of what the client transmitted and 49% of what the access point transmitted. Same capture. Same signal level.
That gap is not noise, and it is not a bad adapter. It is transmit beamforming doing exactly what it was designed to do.
Beamforming shapes the transmitted signal so it arrives strongest at one specific receiver. Your capture adapter, sitting a meter away on the desk, is not that receiver. It is off-axis by design.
In one capture, 32k+ 802.11ax frames. Every 802.11 frame carries a checksum called the FCS, and a frame whose FCS does not verify is a frame your analysis never sees. I split the frames by the beamforming bit the radio reports.
Not beamformed: 5.1% of frames failed the FCS check. Beamformed: 50.8% failed.
It was 0.3% against 39.6%. Same signal, same room, same adapter, same time.
Now the part that should worry anyone who analyzes captures. Beamforming is overwhelmingly a downlink behavior. In this capture 87% of access point frames were beamformed and 93% of client frames were not. So the loss is not spread evenly across your file. It lands almost entirely on the direction coming toward the client.
Which means throughput, retry rate, airtime, aggregation depth, anything you compute from downlink frames, is measuring how lucky your sniffer got. Uplink looks healthy. Downlink looks broken. Neither reading is about the network.
I nearly published a confident number built on exactly this, with a tidy explanation attached to it. The explanation was good. The number was an artifact of my own capture.
Two things that help. When capture fidelity matters more than realism, turn beamforming off on the access point under test. When you cannot, stop counting downlink frames and read downlink volume from the uplink acknowledgments instead, because those you do receive.
If you analyze captures: how do you know the frames missing from your file are missing at random, rather than missing in one direction?