This shows you the differences between two versions of the page.
— |
en:developers:documentation:radiotap [2015/01/26 09:49] (current) |
||
---|---|---|---|
Line 1: | Line 1: | ||
+ | |||
+ | |||
+ | |||
+ | ===== About Radiotap ===== | ||
+ | |||
+ | Radiotap is a [[wp>de_facto|de facto]] standard for 802.11 frame injection and reception. Details of radiotap can be found on its new website. | ||
+ | |||
+ | [[http://www.radiotap.org/|http://www.radiotap.org/]] | ||
+ | |||
+ | |||
+ | ===== Linux support ===== | ||
+ | |||
+ | Linux has started to embrace radiotap on its drivers and driver APIs. Relevant files: | ||
+ | |||
+ | XXX: move ieee80211_radiotap.h to kerneldoc | ||
+ | * [[http://git.kernel.org/?p=linux/kernel/git/linville/wireless-2.6.git;a=blob;f=include/net/ieee80211_radiotap.h;hb=HEAD|include/net/ieee80211_radiotap.h]] - Our definitions for its support | ||
+ | * [[http://git.kernel.org/?p=linux/kernel/git/linville/wireless-2.6.git;a=blob;f=include/net/cfg80211.h;hb=HEAD|include/net/cfg80211.h]] ([[en/developers/Documentation/cfg80211/kerneldoc|kerneldoc]])- iterator support for possible radiotap arguments | ||
+ | * [[http://git.kernel.org/?p=linux/kernel/git/linville/wireless-2.6.git;a=blob;f=include/net/mac80211.h;hb=HEAD|include/net/mac80211.h]] ([[en/developers/Documentation/mac80211/kerneldoc|kerneldoc]]) - mac80211 support for radiotap | ||
+ | |||
+ | |||
+ | ===== mac80211 support for radiotap ===== | ||
+ | |||
+ | mac80211 supports receiving radiotap headers before the actual 802.11 frame. The driver informs mac80211 when it adds a radiotap header by enabling the //RX_FLAG_RADIOTAP// flag on //flag// member of //struct ieee80211_rx_status//. When a driver is done with a frame it passes it to mac80211 via //ieee80211_rx//. | ||
+ | |||
+ | mac80211 informs drivers it wants radiotap headers in its received skbs during //ieee80211_open()//, the device's open routine (dev->open). It does this when the type of interface being opened is of type //NL80211_IFTYPE_MONITIR//, a monitor interface. It informs the driver by enabling IEEE80211_CONF_RADIOTAP on //struct ieee80211_hw//s //struct ieee80211_conf// //flags// Sequentially, mac80211 will disable this flag during //ieee80211_stop()// (dev->stop) for //NL80211_IFTYPE_MONITOR// interface types. | ||