So I’ve been trying to wrap my head around the Linux mac80211 stack. As part of this I created a flow diagram of the TX path for the normal push TX (where the mac80211 stack pushes packets into the driver).

Of course, it turns out that the really interesting stuff requires that the ‘pull’ TX path is used (where there’s intermediate software queueing in mac80211). So I guess that’s next (along with trying to understand the ath9k driver).

Anyway, this is the diagram in all it’s glory:

Flow diagram of the mac80211 TX path for push TX (Linux 4.4). Click to view the full-size SVG.

Flow diagram of the mac80211 TX path for push TX (Linux 4.4). Click to view the full-size SVG.