我想详细了解一下nl80211和cfg80211是如何工作的。功能流,nl80211如何与wpa_supplicant、iw等网络工具交互。
请推荐一些有用的链接或书籍给我参考。
发布于 2014-01-30 22:38:54
为了能够从用户空间控制无线驱动程序,内核和用户空间之间使用了一些IPC通信进程。
ioctl中使用了依赖于供应商的API。无线扩展(WE)是一个通用的
,它允许驱动程序向用户空间公开常见无线局域网的配置和统计数据。
+---+|用户空间|+---+^---| nl80211 v+---+| cfg80211 |+-++-+| mac80211 || driver |driver
重要的一点是nl80211/cfg80211/mac80211不再使用ioctl,它们使用netlink。
因此,像iw、hostapd或wpa_supplicant这样的工具使用一些netlink库(如libnl或libnl-tiny)和netlink接口公共头,当然也就是nl80211.h。
这里没有太多的文档,但我建议您先阅读libnl documentation,然后再阅读iw source code (因为我使用libnl)。
发布于 2015-10-09 14:56:33
更详细地描述nl80211和cfg80211如何与系统的其他部分(user space、kernel和hardware)协同工作。
nl80211是用户空间软件(iw、wpa_supplicant等)之间的接口以及内核(cfg80211和mac80211内核模块,以及特定的驱动程序)。cfg80211_ops是全MAC驱动程序和mac80211模块注册到cfg80211的一组操作module.ieee80211_ops是软MAC驱动程序注册到mac80211模块的一组操作。

发布于 2015-10-09 22:20:28
请看我对How to learn the structure of Linux wireless drivers (mac80211)?的回复
在wpa_supplicant中,您可以遵循src/drivers/driver_nl80211.c中的代码。这是一个wpa_supplicant驱动程序(不是内核驱动程序,而是wpa_supplicant代码中使用的抽象),它使用libnl与内核cfg80211模块通信。例如,当wpa_supplicant发出扫描命令时,就会调用wpa_driver_nl80211_scan。它使用名为NL80211_CMD_TRIGGER_SCAN的命令和扫描所需的所有参数构建netlink消息。
https://stackoverflow.com/questions/21456235
复制相似问题