Для управления беспроводными драйверами из пользовательского пространства используются некоторые процессы обмена сообщениями IPC между ядром и пользовательским пространством.
- Сначала использовался
ioctl
с зависимыми от поставщика API.
- В 1996 году Jean Tourrilhes создает wireless extensions (МЫ или WEXT).
беспроводного Extension (мы) является общим API, что позволяет водитель подвергать конфигурации пространства пользователя и статистику, характерные для общих беспроводных локальных сетей.
В 2006 году Джон Linville создает mac80211 и Йоханнес Берг создает cfg80211 и nl80211. Вместе он предназначен для замены беспроводных расширений.
+-------------+
| |
| Userspace |
| |
+-------------+
^
- - - | - - - -
| nl80211
v
+-------------+
| |
| cfg80211 |
| |
+-------------+
+-------------+
| |
| mac80211 |
| driver |
| |
+-------------+
Важным моментом является то, что nl80211/cfg80211/mac80211 больше не использовать IOCTL, они используют netlink.
Таким образом, инструменты, такие как iw, hostapd или wpa_supplicant использовать некоторые NETLINK библиотеки (как libnl или libnl-tiny) и NETLINK интерфейса общественного заголовка, который конечно nl80211.h.
Существует не так много документов, но я советую вам прочитать libnl documentation, а затем iw source code (поскольку iw использует libnl).
Этот вопрос не по теме. См. [Help/on-topic] – sigjuice