mac80211框架基础
Last updated
Was this helpful?
Last updated
Was this helpful?
To be able to control wireless drivers from userspace, some IPC communication processes between kernel and userspace are used.
At first ioctl with vendor dependent APIs was used.
In 1996, Jean Tourrilhes creates (WE or WEXT).
The Wireless Extension (WE) is a generic API allowing a driver to expose to the user space configuration and statistics specific to common Wireless LANs.
In 2006, John Linville creates and Johannes Berg creates and . Together it is intended to replace wireless extensions.
nl80211
is the interface between user space software (iw
, wpa_supplicant
, etc.) and the kernel (cfg80211
and mac80211
kernel modules, and specific drivers).
The WiFi drivers and hardware could be Full-MAC or Soft-MAC (see Wireless_network_interface_controller).
cfg80211_ops
is a set of operations that Full-MAC drivers and mac80211
module register to cfg80211 module.
ieee80211_ops
is a set of operations that Soft-MAC drivers register to mac80211
module.
An important point is that nl80211/cfg80211/mac80211 no longer use ioctl, they use .
So, tools like , or the use some netlink libraries (like or ) and the netlink interface public header which is of course .
There is not so much documentations, but I advice you to read the and then the (because iw use libnl).