NOTE: this page is for archival only, see the note at the end of the page.

Driver API tracing

Enabling

Since 2.6.32 mac80211 includes a tracing framework, and since 3.2 it is always enabled if possible (which means if EVENT_TRACING is enabled).

To be able to use it on kernels before 3.2, enable CONFIG_MAC80211_DRIVER_API_TRACER (requires tracing and CONFIG_MAC80211_DEBUG_MENU).

CONFIG_MAC80211_DRIVER_API_TRACER:

Say Y here to make mac80211 register with the ftrace
framework for the driver API -- you can see which
driver methods it is calling then by looking at the
trace.

If unsure, say N.

Symbol: MAC80211_DRIVER_API_TRACER [=y]
Prompt: Driver API tracer
  Defined at net/mac80211/Kconfig:209
  Depends on: NET && WIRELESS && MAC80211_DEBUG_MENU && EVENT_TRACING
  Location:
   -> Networking support (NET [=y])
     -> Wireless (WIRELESS [=y])

Now recompile your kernel (modules) and reboot/insert the modules.

Using trace-cmd

The easiest way to give a trace to other people is to use trace-cmd, see https://lwn.net/Articles/341902/. To record a trace with trace-cmd, use

trace-cmd record -e mac80211

This will record until you hit Ctrl-C to abort. The result is stored in a file "trace.dat" which you can send around for analysis.

To analyse a file, use

trace-cmd report -i trace.dat | less

Driver tracing

In addition to mac80211, some drivers include tracing as well.

iwlwifi

For iwlwifi, set the IWLWIFI_DEVICE_TRACING Kconfig option. You can then get new trace subsystems:

iwlwifi
the commands exchanged between driver and device
iwlwifi_io
the device IO accesses and interrupt information
iwlwifi_ucode
uCode events (not sure they're useful today)

trace-cmd record -e mac80211 -e iwlwifi

This is a static dump of the wiki, taken after locking it in January 2015. The new wiki is at https://wireless.wiki.kernel.org/.
versions of this page: last, v7, v6, v5, v4, v3, v2, v1