Die Wireless Extension (WE) ist eine generische API, die es einem Treiber ermöglicht, die Konfiguration des Benutzerbereichs und Statistiken zu zeigen, die für gängige Wireless LANs spezifisch sind.
2006 kreiert John Linville mac80211 und Johannes Berg kreiert cfg80211 und nl80211. Zusammen soll es drahtlose Nebenstellen ersetzen.
Ein wichtiger Punkt ist, dass nl80211/cfg80211/mac80211 ioctl nicht mehr verwenden, sie verwenden Netzverbindung.
Also Werkzeuge wie iw, hostapd oder der wpa_supplicant Verwenden Sie einige Netlink-Bibliotheken (wie z libnl oder libnl-winzig) und den öffentlichen Header der Netlink-Schnittstelle, der natürlich ist nl80211.h.
Es gibt nicht so viele Dokumentationen, aber ich rate Ihnen, die zu lesen libnl-Dokumentation und dann die iw-Quellcode (weil ich libnl verwende).
nl80211 fungiert als Schnittstelle zwischen Userspace und Kernelspace. Ich habe Schwierigkeiten zu verstehen, an welchem Punkt der Kontrollfluss vom Userspace zum Kernelspace geht
– Raffal
3. Februar 2014 um 4:15 Uhr
Hast du gelesen Dies. Netlink kann mit einem Socket zwischen dem Kernel und dem User Space verglichen werden. So kann der Benutzer es auf Anfrage-Antwort-Weise verwenden (z iw dev wlan0 link) und/oder auf Event-Weise (zB iw dev wlan0 event).
– jmlemetayer
3. Februar 2014 um 10:33 Uhr
danke für den Link, aber ich habe diese Seite durchgesehen … für die Interaktion zwischen Benutzer und Kernel-Space wird ein Socket erstellt … aber wenn es darum geht, den Code zu verfolgen, kann ich ihn nicht vom User-Space zum Kernel-Space verfolgen ….wenn jemand helfen kann, antworten Sie bitte bald
– Raffal
4. Februar 2014 um 4:58 Uhr
Sie können in der suchen linux-wireless-Mailingliste oder versuchen Sie sogar, sie zu fragen. Wenn Sie eine Antwort erhalten haben, posten Sie sie bitte, ich bin sehr daran interessiert und habe jetzt nicht genug Zeit dafür!
Ein etwas detaillierteres Bild davon, wie nl80211 und cfg80211 mit anderen Teilen des Systems arbeiten (user space, kernelund hardware).
nl80211 ist die Schnittstelle zwischen Userspace-Software (iw, wpa_supplicantusw.) und der Kernel (cfg80211 und mac80211 Kernel-Module und spezifische Treiber).
cfg80211_ops ist eine Reihe von Operationen, die Full-MAC-Treiber und mac80211 Modul anmelden cfg80211 Modul.
ieee80211_ops ist eine Reihe von Operationen, bei denen sich Soft-MAC-Treiber registrieren mac80211 Modul.
lspci -k | grep -A 3 -i “network” gibt mir “Kernel driver in use: iwlwifi” zurück. Dann modinfo iwlwifi | grep hängt davon ab, gibt mir “cfg80211” zurück. Aber wie kann ich nach nl80211 und mac80211 suchen. Woher weiß ich auch, ob der Treiber den AP-Modus unterstützt oder nicht?
– Informationen verstopft
19. März 2017 um 12:56 Uhr
eyalsch
Siehe meine Antwort auf How to Learn the Structure of Linux Wireless Drivers (mac80211)?
Im wpa_supplicantkönnen Sie dem Code folgen src/drivers/driver_nl80211.c. Dies ist ein wpa_supplicant-Treiber (kein Kernel-Treiber, sondern eine Abstraktion, die in wpa_supplicant Code), der verwendet libnl mit dem Kernel zu kommunizieren cfg80211 Modul. Wann wpa_supplicant gibt dann zum Beispiel einen Scan aus wpa_driver_nl80211_scan wird angerufen. Es baut die netlink Nachricht mit einem aufgerufenen Befehl NL80211_CMD_TRIGGER_SCAN und mit allen für den Scan erforderlichen Parametern.
Ich habe ein grundlegendes Code-Flussdiagramm für den Wireless-Stack in Linux erstellt,
den ganzen Weg von wpa_supplicant > cfg80211 > mac80211 > ath9k_htc.
Der Code wurde für den Linux-Kernel 5.4.31 verfolgt.
Diese Frage ist off-topic. Siehe Hilfecenter
– Sigissaft
18. März 2017 um 6:27 Uhr