This is an old revision of the document!
Atheros Fast-Frames Support
Overview
Atheros Fast-Frames support is a Vendor specific extension which concatenates two frames into a single 802.11 MPDU.
It's negotiated as part of the beacon IE and station probe request (TODO: add exactly what).
Details
The net80211 layer intercepts frames destined for a fast-frame capable node and throws them on a per-node, per-AC staging queue.
If a second frame comes in soon enough, it's concatenated with the first frame and has some fast-frames header glue added before it's pushed up to the driver to encapsulate.
The fast-frame format is just an 802.3 frame with some specific Atheros-isms:
- Ethertype: 0x88bd
- SNAP header code: 00:03:7f
There's also some rounding/alignment padding going on.
Please see ieee80211_ff_encap() for more details.
Implementation
The fast frames implementation is in sys/net80211/ieee80211_superg.[ch].
Any driver which supports transmitting and receiving frames up to 3066 bytes (and I'd say a bit more for things like 4-address format support.) Currently this is just ath(4), but I'm sure other drivers support it.
Frame decapsulation is done via ieee80211_ff_decap().
Frame encapsulation is done via ieee80211_ff_encap().
The driver is responsible for calling ieee80211_ff_age() and ieee80211_ff_flush() periodically to ensure that frames on the staging queue do get purged.
Issues
- It would be nice to implement this for some other drivers as a proof of concept.
- It doesn't currently work for WDS (and unless someone has a need for the kind of improvement it adds for non-802.11n networks, it likely won't grow this).